zoukankan      html  css  js  c++  java
  • 消息认证概述

    在网络环境中的攻击类型

      消息保密性范畴:    1、泄密  2、传输分析  

      消息认证/数字签名:     3、伪装  4、内容修改 插入/删除/转换/修改(消息内容) 5、顺序修改 插入/删除/重排(以消息为单位) 6、计时修改  延时/重播

      数字签名:         7、发送方否认  8、接收方否认

    消息认证函数

      该函数用来产生认证符,可分成三类

      1、Hash函数--以Hash值为认证符

      2、消息加密--以整个信息加密后的密文作为认证符

      3、消息认证符(MAC)--以消息和密钥作输入,产生定长值作为认证符

     消息加密

      1、对称加密

        

        可行性:既提供了保密性,又提供了认证。保密性源自加密和密钥共享,认证则来自于密钥共享。

        不足:若明文合法性难以判定(如图片或二进制文件等),则仅满足保密性,却无法认证。根源在于没有能够识别的结构对明文合法性进行验证。

        解决办法:因为进行传输前只有发送方A知道明文M,A用函数F计算M生成错误检测码FCS,附在M后,然后一起加密发送给B。第三方在不能破解密文情况下不知道明文M,因此也就无法伪造出符合条件的FCS,而接收方也就能够根据FCS进行身份认证。

        

      2、公钥加密

        

         A用B的公钥加密,B用自己的私钥解密。由于任何人都能获取B的公钥,仅此无法判断消息是从哪里发过来的,即无法认证。

        

         A用自己的私钥加密或者签名,由于B只能用A的公钥解密(约定明文合法性),因此有认证和签名的功能。由于任何人都可以得到A的公钥,因此不具有保密性。

        

        A用自己的私钥签名,然后再用B的公钥加密。由于只有B能够用自己的私钥解密,因此保证了保密性。而又只有A的公钥能够验证签名,因此还有认证和签名的功能。

    消息认证码(MAC)   Message Authentication Codes

      MAC = C(K , M)

      M是输入消息;C是MAC函数;K是共享密钥;

      A计算出MAC后,将之附在不加密的明文M后面一起发送给B。B根据K和M重新计算MAC进行比对认证。

      MAC有以下三种基本模式:

      

      MAC函数与加密的区别:MAC算法不要求可逆,而加密算法必须可逆。

      MAC函数与Hash函数的区别:MAC算法的输入包含密钥,而Hash不包含。

      由于MAC基于共享密钥,因此不能提供数字签名。

      使用MAC的优点:

        1、MAC将加密性与认证分离开来,可以满足只需要认证不需要加密的需求。同时MAC使得层次结构更加灵活,如可以在传输的不同的层次来分别完成加密和认证。

        2、MAC不影响明文的读取,可以一直附在明文后面,在需要的时候灵活认证。也可以延长对消息的保护时间,而不仅仅只是在传输的时候。也正是基于这一点,上图b方案比c方案要更好一些。

      MAC的安全性:

      由于认证函数的数学性质,与加密相比,认证函数更不易被攻破。

      因为MAC函数是一种多对一的函数,在穷举攻击下,给定明文和MAC值,攻击者须遍历所有可能的K以重现MAC值。由于可能有许多K都可以重现MAC值,因而并不能确定具体的认证密钥,还必须再用新的明文MAC对再做验证,直到K只剩下一种可能。

      MAC函数应具有的性质:

        1、攻击者在已知M和MAC值以及MAC函数的情况下,要构造满足MAC(K , M') = MAC(K , M)的消息M'在计算上不可行

          该要求是防止攻击者不知道密钥的情况下也能够构造出与给定MAC匹配的新消息。

        2、对随机的消息M和M',MAC(K , M) = MAC(K , M')的概率是2-n,其中n是MAC的位数

          该要求是使MAC函数具有均匀分布的特点,对于选择明文的穷举攻击平均都需要2n-1步才能找到具有给定MAC的消息

        3、设M' = f(M),例如f可能是将M的一位或者多位取反,要求Pr[MAC(K , M) = MAC(K , M')] = 2-n

          该要求是认证算法不应对消息的某些部位比其他部位的处理不均匀。

      常见的MAC函数实现:

        1、基于Hash函数的MAC--HMAC

        2、基于分组密码的MAC--DAA和CMAC

        3、认证加密:CCM和GCM

      

  • 相关阅读:
    《滑动到顶部悬浮功能条》源代码学习整理笔记
    eclipse中Build Path-Add to Build Path相应到androidstudio的设置
    UML视图(九)部署图
    ios 字典转模型
    Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑
    oracle if then else
    setAnimationTransition:forView:cache: 运行动画时背景色问题
    数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据,解决图片恢复后打不开的问题
    ZOJ1109_Language of FatMouse(STL/map)
    navicat中文破解版,navicat破解版,navicat for mysql10.0.11简体中文破解版
  • 原文地址:https://www.cnblogs.com/block2016/p/5634808.html
Copyright © 2011-2022 走看看