1、1消息认证数字签名口令保护入侵检测伪随机数MD5、SHA-512、SHA-3输入变长输入变长输出固定输出固定抗原像抗原像攻击攻击抗弱碰撞抗弱碰撞抗强碰撞抗强碰撞伪随机检测穷举攻击碰撞:生日攻击密码分析Hash结构压缩函数f100|原始长度数据SHA-3:10*、10*1压缩函数fSHA-3的海绵函数:吸水、挤压2MAC实例3对认证的需求p可能的攻击:可能的攻击:1. 泄密:将消息透漏给未授权方泄密:将消息透漏给未授权方2. 传输分析:分析通信双方的通信模式传输分析:分析通信双方的通信模式3. 伪装:欺诈源向网络中插入一条消息伪装:欺诈源向网络中插入一条消息4. 内容修改:对消息内容的修改内容修
2、改:对消息内容的修改5. 顺序修改:对通信双方消息顺序的修改顺序修改:对通信双方消息顺序的修改6. 计时修改:对消息的延时和重播计时修改:对消息的延时和重播7. 发送方否认:对消息否认发送方否认:对消息否认8. 接收方否认:对消息否认接收方否认:对消息否认MAC实例4认证的实现方式p 下层:产生认证符的函数。认证符:用来认证消息的值。p 上层:上层协议将函数作为原语使接收方可以认证消息真实性。p 实现方式:pHash:将任意长消息映射为定长的hash值作为认证符。p消息加密:消息的密文作为认证符。p消息认证码:消息和密钥的公开函数,产生定长的值作为认证符。 MAC: message authe
3、ntication code MAC实例5认证方式:消息加密p 把原始消息加密后产生的密文作为它的消息认证码;p对称密码,既可以提供认证又可以提供保密性,但不是绝对的。p只有消息具有适当的结构、冗余或含有校验和,接收方才可能对消息的任何变化进行检测。p否则,认证难以完成。MAC实例6认证方式:消息加密p对称密码p无冗余的情况,无法提供验证p很多情况下判断明文结构比较困难p解决方案:错误检验码、帧校验序列(FCS)、校验和p执行顺序很关键p内部错误控制p外部错误控制pTCP/IPMAC实例7认证方式:消息加密p公钥密码p加密不能提供对发送方的认证(公钥是公开的)p发送方可用自己的私钥进行签名p接
4、收方可用发送方的公钥进行验证p保密性和可认证性 MAC实例8认证方式:消息加密p公钥密码p加密不能提供对发送方的认证(公钥是公开的)p发送方可用自己的私钥进行签名p接收方可用发送方的公钥进行验证p保密性和可认证性 MAC实例9认证方式:消息加密MAC实例10认证方式:消息认证码p 一种认证技术p 利用密钥密钥来生成一个固定长度的短数据块固定长度的短数据块(MAC),并将该数据块附加在消息之后。p MAC的值依赖于消息和密钥MAC = Ck(M)pMAC函数于加密类似,但MAC算法不要求可逆性不要求可逆性,而加密算法必须是可逆的。p 接收方进行同样的MAC码计算并验证是否与发送过来的MAC码相同
5、消息认证MAC实例11认证方式:消息认证码pMAC的特性p MAC码是一个密码校验和MAC = CK(M)p消息M的长度是可变的p密钥K是要保密的,且收发双方共享。p产生固定长度的认证码p MAC算法是一个多对一的函数p多个消息对应同一MAC值p但是找到同一MAC值所对应的多个消息应该是困难的。消息认证MAC实例12认证方式:消息认证码pMAC的应用过程消息认证MAC实例13认证方式:消息认证码pMAC的作用,如果验证通过1. 接收方可以相信消息未被修改2. 接收方可以相信消息来自真正的发送方3. 如果消息中含有序号,消息的顺序是正确的p 为什么使用MACp有些情况只需要认证(如广播、数据无需
6、保密的情况等)p通信某一方处理负荷大p程序认证、认证和保密分离使结构更为灵活p文档的持续保护(例如解密后的保护)pp 由于收发双方共享密钥,所以MAC不能提供数字签名消息认证MAC实例14认证方式:消息认证码p对MAC的要求p 抗多种攻击p 穷举攻击,对MAC的攻击难于对称密码加密p 密码分析:例如 MAC(K, M)=E(K, M) 电码本DESp 为了防止密码分析,MAC还需要满足:1. 已知一条消息和MAC, 构造出另一条具有同样MAC的消息是不可行的2. MACs应该是均匀分布的3. MAC应该依赖于消息的所有比特位n对于M和M的任意变换,MAC相同的概率为2-n消息认证MAC实例15
7、认证方式:消息认证码p对MAC的安全性p 穷举攻击p 抗计算性:已知多对,计算在计算上不可行p 离线穷举密钥p 在线穷举MACp 穷举代价:min(2k, 2n)p 密码分析p 研究较少消息认证MAC实例16认证方式:消息认证码pMAC的应用类型消息认证MAC实例17认证方式:消息认证码pMAC的应用类型消息认证MAC实例18MAC实例:基于Hash的MACp利用hash函数设计MAC:p 不用分组密码,而用hash函数来产生MAC的原因p因为hash函数一般都较快p有许多共享的Hash函数代码库p hash函数不依赖于密钥,所以不能直接用于MACp 建议:KeyedHash = Hash(
8、Key | Message ) 图11.3(c) 消息认证码消息认证19MAC实例1:HMACpHMAC简介p 当前获得广泛应用的构造带密钥的Hash函数的方案是HMAC(keyed-hashing for message authentication code),p 它是Bellare等人于1996年提出,并于1997年作为RFC2104标准发表, 并被很多因特网协议(如IPSEC、SSL)所使用。p HMAC算法利用已有的Hash函数,使用不同的Hash函数,就可以得到不同的HMAC,p 例如选用MD5时的HMAC记为HMAC-MD5,选用SHA-1时的HMAC记为HMAC-SHA1。消息
9、认证码消息认证20MAC实例1:HMACpHMAC的设计目标 可不经修改而使用不经修改而使用现有的Hash函数,特别是那些易于软件实现的、源代码可方便获取且免费使用的Hash函数; 其中嵌入的Hash函数可易于替换易于替换为更快或更安全的Hash函数; 保持保持嵌入的Hash函数的最初性能最初性能,不因用于HMAC而使其性能降低; 以简单方式使用和处理密钥; 在对嵌入的Hash函数合理假设的基础上,易于分析易于分析HMAC用于鉴别时的密码强度密码强度。消息认证码消息认证21MAC实例1:HMACpHMAC概览消息认证码消息认证22MAC实例1:HMACpHMAC概览HMACK = Hash(K
10、+ XOR opad)| Hash(K+ XOR ipad)|M)p其中其中 K+ 为在为在K左边填充左边填充0后所得的后所得的b位长的结果(位长的结果(b为每一为每一消息分组的位数)消息分组的位数)popad, ipad 都是指定的填充常量都是指定的填充常量p多执行了多执行了3次次hash压缩函数压缩函数p算法可用于算法可用于MD5, SHA-1, RIPEMD-160中的任何一中的任何一个个消息认证码消息认证23 在密钥K的右边填充一些0,使其成为长度为b比特的比特串,记为K+ ; 计算Si=K+ ipad ,其中ipad(inner pad)是HMAC算法中规定的一个长度为b比特的比特模
11、式串,它等于将00110110(16进制的36)重复b/8次后得到的比特串; 把HMAC的输入报文y=y1 y2yL-1附加在Si的右端,得到Si y1 y2yL-1 ,将该比特串作为Hash函数h的输入,得到n比特的输出h (Si|y) ; 计算So=K+ opad ,其中opad(outter pad)是HMAC算法中规定的另一个长度为b比特的比特模式串,它等于将01011100(16进制的5C)重复b/8次后得到的比特串; 将第3步得到的h(Si|y)填充到b比特后附加在So的右端,并以该比特串作为Hash函数h的输入,得到n比特的输出; 将第5步的输出作为HMAC算法的最终输出结果,即
12、为消息x的消息认证码HMACk(y)。 消息认证码消息认证24MAC实例1:HMACpHMAC概览消息认证码消息认证25MAC实例1:HMACpHMAC的安全性p 建立在嵌入Hash函数基础上的所有MAC,其安全性在某种程度上都依赖于该Hash函数的强度。p 对于HMAC,可以给出HMAC的强度与所嵌入Hash函数强度之间的关系。消息认证码消息认证26MAC实例1:HMACpHMAC的安全性p Bellare等人(1996年)已经证明,如果攻击者已知若干(时间、消息-MAC)对,则成功攻击HMAC的概率等价于对所嵌入Hash函数的下列攻击之一: 即使对于攻击者而言,IV是随机的、秘密的和未知的
13、,攻击者也能计算Hash函数的压缩函数的输出。 即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰撞。p 攻击HMAC需要下列之一:p 对密钥进行穷举攻击p 生日攻击p 从速度与安全制约,选择恰当的hash函数消息认证码消息认证27MAC实例2:DAA和CMACp基于对称密码的MACp 采用分组密码的密文分组链接(CBC)模式,并把最后分组作为MACp Data Authentication Algorithm (DAA) 是一个广泛使用的数据认证算法,基于DES-CBC(FIPS PUB113,ANSI X9.17)p 将数据按64分组,最后一个分组用0填充其后以补足64位分组p 用D
14、ES的密文分组链接模式CBC加密消息p 把最后一个分组(全部或部分)作为MAC发送p或者取最后分组的左边M bits (16M64) p 但是对于安全性来说,最终的MAC还是太小了消息认证码消息认证28MAC实例2:DAA和CMACp基于对称密码的MAC:DAAp 采用分组密码的密文分组链接(CBC)模式,并把最后分组作为MACp 将CBC换作ECB、CFB、OFB、CTR可以吗?消息认证码消息认证29MAC实例2:DAA和CMACpDAA的安全性问题的安全性问题p 一个分组的消息X,以及T=MAC(K, M)p 伪造:X|(XT)p 解决方法:再加入1条(2条)密钥CMACp CMAC适用于
15、AES和3DES消息认证码消息认证1122133211(,)(,)(,).(,)()nnnTlennCE K MCE K MCCE K MCCE K MCKTMSBC12(,.,)nM MM为n个消分组,k位加密密钥和n位的常数K1T为消息认证码,也称为tag;Tlen是T的位长度;MSBs(X)是位串的X最左边的s位。30MAC实例3:CCM和GCMp 在通信中同时提供保密性和认证性的加密系统:认证加密认证加密p 提供认证和加密的通用方案提供认证和加密的通用方案p HtE:先:先Hash再再加密加密 HEp MtE:先:先MAC再再加密加密 AE,SSL/TLS使用使用p EtM:先加密再:
16、先加密再MAC,EA,IPsec使用使用p E&M:独立进行加密和:独立进行加密和MAC,E+A,SSH使用使用消息认证码消息认证(,(| )E KMh()hH M1(,)TMAC K M2(,(|)E KMT2(,)CE KM1(,)TMAC K C( , )C T2(,)CE KM1(,)TMAC K M( , )C T31MAC实例3:CCM和GCMp 在通信中同时提供保密性和认证性的加密系统:认证加密认证加密p 提供认证和加密的通用方案提供认证和加密的通用方案p HtE:先:先Hash再再加密加密 HEp MtE:先:先MAC再再加密加密 AE,SSL/TLS使用使用p EtM:先加密
17、再:先加密再MAC,EA,IPsec使用使用p E&M:独立进行加密和:独立进行加密和MAC,E+A,SSH使用使用消息认证码消息认证(,(| )E KMh()hH M1(,)TMAC K M2(,(|)E KMT2(,)CE KM1(,)TMAC K C( , )C T2(,)CE KM1(,)TMAC K M( , )C T32MAC实例3:CCM和GCMpE&A:CCMp CCM算法构成:AES的CTR模式、CMACp 三个输入:p 明文Pp 需要认证但无需加密的数据A,例如协议头p 临时量N,对于每条消息,N唯一,防止重播攻击消息认证码消息认证33MAC实例3:CCM和GCMpE&A:
18、CCMp CCM算法构成:AES的CTR模式、CMACp 三个输入:P、A、Np MAC码生成:码生成:p 输入:N、A、Pp AES-CBCp 最后一轮加K1或K2消息认证码消息认证34MAC实例3:CCM和GCMpE&A:CCMp CCM算法构成:AES的CTR模式、CMACp 三个输入:P、A、Np 加密过程:加密过程:p P、T独立输入p AES-CTR消息认证码消息认证35MAC实例3:CCM和GCMpGCMp 并行化设计p MAC生成过程生成过程(GHASH):p H位密钥变形p H=E(K, 0128) p 作用方式:相乘(2128域)p Ym可变形为:p 实现并行计算消息认证码
19、消息认证36MAC实例3:CCM和GCMpGCMp 并行化设计p 加密过程加密过程(GCTR):p 密钥为K,CTR模式消息认证码消息认证37MAC实例3:CCM和GCMpGCMp 并行化设计p GCM过程过程p GHASH和和GCTRp 输入:输入:K、Pp 初始向量初始向量IVp 附加认证信息附加认证信息A消息认证码消息认证38MAC应用实例4:密钥封装p密钥封装目的:密钥封装目的:为通信双方安全地交换对称密钥,安全地交换对称密钥,需要事先共享一组密钥加密密钥。密钥加密密钥。p 为何要用密钥生成密钥?p 不同层次的密钥使用频率不同不同层次的密钥使用频率不同p 为何需要新的工作模式?p 用于密钥长度比分组长度长的加密算法用于密钥长度比分组长度长的加密算法p 多次使用容易产生漏洞多次使用容易产生漏洞消息认证码消息认证39MAC应用实例4:密钥封装消息认证码消息认证40MAC应用实例4:密钥封装消息认证码消息认证41MAC应用实例4:密钥封装消息认证码消息认证42MAC应用实例4:密钥解封 加密的同时带有认证加密的同时带有认证消息认证码消息认证43MAC应用实例5:伪随机数pHash:种子pHMAC:K+种子(本质上都是种子)pHMAC安全性似乎更高消息认证码消息认证44MAC应用实例5:伪随机数消息认证码消息认证45作业:作业:思考题:思考题:12.3、12.6习题习题12.6