1、Chapter 12 消息认证码消息认证码n消息认证需求n 消息认证函数n消息认证码n基于Hash函数的MACn基于分组密码的MAC:DAA和CMAC2022-1-20华中农业大学信息学院22022-1-20华中农业大学信息学院3n可能的攻击:可能的攻击:q1. 泄密:将消息透漏给未授权方泄密:将消息透漏给未授权方q2. 传输分析:分析通信双方的通信模式传输分析:分析通信双方的通信模式q3. 伪装:欺诈源向网络中插入一条消息伪装:欺诈源向网络中插入一条消息q4. 内容修改:对消息内容的修改内容修改:对消息内容的修改q5. 顺序修改:对通信双方消息顺序的修顺序修改:对通信双方消息顺序的修改改q6
2、. 计时修改:对消息的延时和重播计时修改:对消息的延时和重播q7. 发送方否认:对消息否认发送方否认:对消息否认q8. 接收方否认:对消息否认接收方否认:对消息否认2022-1-20华中农业大学信息学院4n消息认证:验证所收到的消息消息认证:验证所收到的消息确实确实是来自真是来自真实的发送方且未被修改的消息,它也可验证实的发送方且未被修改的消息,它也可验证消息的顺序和及时性。消息的顺序和及时性。n数字签名:是一种数字签名:是一种认证技术认证技术,其中的一些方,其中的一些方法可用来抗发送方否认攻击。(接收者可验法可用来抗发送方否认攻击。(接收者可验证但不能伪造)证但不能伪造)消息认证 数字签名n
3、消息认证函数是实现消息认证的基础消息认证函数是实现消息认证的基础n其工作原理和通信领域常见的差错控制编码函数类似,其工作原理和通信领域常见的差错控制编码函数类似,都是通过对原始报文进行某种运算,产生一个定长的输都是通过对原始报文进行某种运算,产生一个定长的输出,这个输出是原始报文的出,这个输出是原始报文的“冗余信息冗余信息”,即消息认证,即消息认证码,有时也被称为密码校验和。码,有时也被称为密码校验和。2022-1-20华中农业大学信息学院5常用的消息认证函数包括如下两类:常用的消息认证函数包括如下两类: 利用加密函数作为消息认证函数:这种方法把原利用加密函数作为消息认证函数:这种方法把原始报
4、文加密后产生的密文作为它的消息认证码;始报文加密后产生的密文作为它的消息认证码; 专用的消息认证函数:以原始报文和密钥作为输专用的消息认证函数:以原始报文和密钥作为输入,产生定长的输出,这个输出就是原始报文的消入,产生定长的输出,这个输出就是原始报文的消息认证码。可以利用运行于息认证码。可以利用运行于CBC模式下的常规加密模式下的常规加密算法或带密钥的算法或带密钥的Hash函数(函数(HMAC)来构造消息)来构造消息认证函数。认证函数。2022-1-20华中农业大学信息学院62022-1-20华中农业大学信息学院712.2 认证函数认证函数n两层:产生认证符两层:产生认证符 验证验证n产生认证
5、符的函数类型:产生认证符的函数类型:q消息加密:消息的密文作为认证符。消息加密:消息的密文作为认证符。q消息认证码:消息和密钥的公开函数,产生定长消息认证码:消息和密钥的公开函数,产生定长的值作为认证符。的值作为认证符。 MAC: message authentication code qHash函数:将任意长消息映射为定长的函数:将任意长消息映射为定长的hash值值作为认证符。作为认证符。2022-1-20华中农业大学信息学院812.2.1 消息加密消息加密n消息加密也能提供一种认证的方法消息加密也能提供一种认证的方法n对称密码,既可以提供认证又可以提供保对称密码,既可以提供认证又可以提供保
6、密性,但不是绝对的。密性,但不是绝对的。q只有消息具有适当的结构、冗余或含有校验和,只有消息具有适当的结构、冗余或含有校验和,接收方才可能对消息的任何变化进行检测。接收方才可能对消息的任何变化进行检测。q否则,认证难以完成。否则,认证难以完成。2022-1-20华中农业大学信息学院92022-1-20华中农业大学信息学院102022-1-20华中农业大学信息学院11消息加密消息加密n公钥体制中公钥体制中:q加密不能提供对发送方的认证(公钥是公开的)加密不能提供对发送方的认证(公钥是公开的)q发送方可用自己的私钥进行签名发送方可用自己的私钥进行签名q接收方可用发送方的公钥进行验证接收方可用发送方
7、的公钥进行验证q保密性和可认证性保密性和可认证性 2022-1-20华中农业大学信息学院122022-1-20华中农业大学信息学院132022-1-20华中农业大学信息学院142022-1-20华中农业大学信息学院1512.2.2 消息认证码消息认证码 (MAC)n一种认证技术一种认证技术n利用密钥来生成一个固定长度的短数据块(利用密钥来生成一个固定长度的短数据块(MAC),),并将该数据块附加在消息之后。并将该数据块附加在消息之后。nMAC的值依赖于消息和密钥的值依赖于消息和密钥 MAC = Ck(M)=C(M,K)qMAC函数于加密类似,但函数于加密类似,但MAC算法算法不要求不要求可逆可
8、逆性,而加密算法必须是可逆的。性,而加密算法必须是可逆的。n接收方进行同样的接收方进行同样的MAC码计算并验证是否与发送过码计算并验证是否与发送过来的来的MAC码相同码相同2022-1-20华中农业大学信息学院16MAC 特性特性nMAC码是一个密码校验和码是一个密码校验和MAC = CK(M)=C(K, M)q消息消息M的长度是可变的的长度是可变的q密钥密钥K是要保密的,且收发双方共享。是要保密的,且收发双方共享。q产生固定长度的认证码产生固定长度的认证码nMAC算法是一个多对一的函数算法是一个多对一的函数q多个消息对应同一多个消息对应同一MAC值值q但是找到同一但是找到同一MAC值所对应的
9、多个消息应该是值所对应的多个消息应该是困难困难的。的。2022-1-20华中农业大学信息学院17Message Authentication Code2022-1-20华中农业大学信息学院18n若相同,则有:若相同,则有:q接收方可以相信消息未被修改。接收方可以相信消息未被修改。q接收方可以相信消息来自真正的发送方。接收方可以相信消息来自真正的发送方。q接收方可以确信消息中含有的序列号是正确接收方可以确信消息中含有的序列号是正确的。的。n为什么需要使用为什么需要使用MAC?q有些情况只需要认证(如广播)有些情况只需要认证(如广播)q文档的持续保护(例如解密后的保护)文档的持续保护(例如解密后的
10、保护)qn由于收发双方共享密钥,所以由于收发双方共享密钥,所以MAC不能不能提供数字签名提供数字签名2022-1-20华中农业大学信息学院19n对对MACs的要求:的要求:q抗多种攻击(例如穷举密钥攻击)抗多种攻击(例如穷举密钥攻击)q且满足且满足:1.已知一条消息和已知一条消息和MAC, 构造出另一条具有同样构造出另一条具有同样MAC的消息是不可行的的消息是不可行的2.MACs应该是均匀分布的应该是均匀分布的3.MAC应该依赖于消息的所有比特位应该依赖于消息的所有比特位2022-1-20华中农业大学信息学院202022-1-20华中农业大学信息学院212022-1-20华中农业大学信息学院2
11、212.3 HMACn密码密码hash函数作为函数作为MAC:q不用分组密码,而用不用分组密码,而用hash函数来产生函数来产生MACn因为因为hash函数一般都较快函数一般都较快n没有出口限制,(分组密码有出口限制)没有出口限制,(分组密码有出口限制)qhash函数不依赖于秘密钥,所以不能直接用于函数不依赖于秘密钥,所以不能直接用于MACq建议建议:KeyedHash = Hash( Key | Message ) 2022-1-20华中农业大学信息学院23利用带密钥的利用带密钥的HashHash函数实现消息认证函数实现消息认证2022-1-20华中农业大学信息学院24当前获得广泛应用的构造
12、带密钥的当前获得广泛应用的构造带密钥的Hash函数的方案是函数的方案是HMAC(keyed-hashing for message authentication code),它是),它是Bellare等人于等人于1996年提出,并于年提出,并于1997年作年作为为RFC2104标准发表,标准发表, 并被很多因特网协议(如并被很多因特网协议(如IPSEC、SSL)所使用。)所使用。HMAC算法利用已有的算法利用已有的Hash函数,使用函数,使用不同的不同的Hash函数,就可以得到不同的函数,就可以得到不同的HMAC,例如选用,例如选用MD5时的时的HMAC记为记为HMAC-MD5,选用,选用SH
13、A-1时的时的HMAC记为记为HMAC-SHA1。HMAC的设计目标是:的设计目标是:2022-1-20华中农业大学信息学院25 可不经修改而使用现有的可不经修改而使用现有的Hash函数,特别是那些易函数,特别是那些易于软件实现的、源代码可方便获取且免费使用的于软件实现的、源代码可方便获取且免费使用的Hash函数;函数; 其中嵌入的其中嵌入的Hash函数可易于替换为更快或更安全的函数可易于替换为更快或更安全的Hash函数;函数; 保持嵌入的保持嵌入的Hash函数的最初性能,不因用于函数的最初性能,不因用于HMAC而使其性能降低;而使其性能降低; 以简单方式使用和处理密钥;以简单方式使用和处理密
14、钥; 在对嵌入的在对嵌入的Hash函数合理假设的基础上,易于分析函数合理假设的基础上,易于分析HMAC用于鉴别时的密码强度。用于鉴别时的密码强度。2022-1-20华中农业大学信息学院26HMAC算法的流程图算法的流程图 2022-1-20华中农业大学信息学院27HMACn作为作为RFC2104 nHMACK = Hash(K+ XOR opad)| Hash(K+ XOR ipad)|M)n其中其中 K+ 为在为在K左边填充左边填充0后所得的后所得的b位长的结果(位长的结果(b为每为每一消息分组的位数)一消息分组的位数)nopad, ipad 都是指定的填充常量都是指定的填充常量n多执行了多
15、执行了3次次hash压缩函数压缩函数n算法可用于算法可用于MD5, SHA-1, RIPEMD-160中的任何一个中的任何一个2022-1-20华中农业大学信息学院28HMAC算法的具体执行步骤如下:算法的具体执行步骤如下: 在密钥在密钥K的右边填充一些的右边填充一些0,使其成为长度为,使其成为长度为b比特的比特串,记为比特的比特串,记为K+; 计算计算Si=K+ ipad,其中,其中ipad(inner pad)是)是HMAC算法中规定的一算法中规定的一个长度为个长度为b比特的比特模式串,它等于将比特的比特模式串,它等于将00110110(16进制的进制的36)重复)重复b/8次后得到的比特
16、串;次后得到的比特串; 把把HMAC的输入报文的输入报文x=x1 x2xL附加在附加在Si的右端,得到的右端,得到Si|x =Si|x1 x2xL,将该比特串作为,将该比特串作为Hash函数函数h的输入,得到的输入,得到l比特的输出比特的输出h (Si|x); 计算计算So=K+ opad,其中,其中opad(outter pad)是)是HMAC算法中规定的算法中规定的另一个长度为另一个长度为b比特的比特模式串,它等于将比特的比特模式串,它等于将01011100(16进制的进制的5C)重复重复b/8次后得到的比特串;次后得到的比特串; 将第将第3步得到的步得到的h(Si|x)填充到填充到b比特
17、后附加在比特后附加在So的右端,并以该比特串的右端,并以该比特串作为作为Hash函数函数h的输入,得到的输入,得到l比特的输出;比特的输出; 将第将第5步的输出作为步的输出作为HMAC算法的最终输出结果,即为消息算法的最终输出结果,即为消息x的消息的消息认证码认证码HMACk(x)。 2022-1-20华中农业大学信息学院29 建立在嵌入建立在嵌入Hash函数基础上的所有函数基础上的所有MAC,其安全性在某种程,其安全性在某种程度上都依赖于该度上都依赖于该Hash函数的强度。对于函数的强度。对于HMAC,可以给出,可以给出HMAC的强度与所嵌入的强度与所嵌入Hash函数强度之间的关系。函数强度
18、之间的关系。Bellare等人等人(1996年)已经证明,如果攻击者已知若干(时间、消息年)已经证明,如果攻击者已知若干(时间、消息-MAC)对,则成功攻击对,则成功攻击HMAC的概率等价于对所嵌入的概率等价于对所嵌入Hash函数的下列函数的下列攻击之一:攻击之一: 即使对于攻击者而言,即使对于攻击者而言,IV是随机的、秘密的和未知的,攻击是随机的、秘密的和未知的,攻击者也能计算者也能计算Hash函数的压缩函数的输出。函数的压缩函数的输出。 即使即使IV是随机的和秘密的,攻击者也能找到是随机的和秘密的,攻击者也能找到Hash函数的碰函数的碰撞。撞。2022-1-20华中农业大学信息学院30HM
19、AC 概览概览 2022-1-20华中农业大学信息学院31 2022-1-20华中农业大学信息学院32HMAC 的安全性的安全性nHMAC的安全性依赖于的安全性依赖于hash算法的安全性算法的安全性 n攻击攻击HMAC需要下列之一需要下列之一:q对密钥进行穷举攻击对密钥进行穷举攻击q生日攻击生日攻击n从速度与安全制约,选择恰当的从速度与安全制约,选择恰当的hash函数函数2022-1-20华中农业大学信息学院3312.6 基于分组密码的基于分组密码的MACp DAA:数据认证算法:数据认证算法p CMAC:基于密码的消息认证码:基于密码的消息认证码2022-1-20华中农业大学信息学院34用对
20、称密码产生用对称密码产生MACsn采用分组密码的链接工作模式,并把最后分组采用分组密码的链接工作模式,并把最后分组作为作为MACnData Authentication Algorithm (DAA) 是一个广是一个广泛使用的数据认证算法,基于泛使用的数据认证算法,基于DES-CBC(FIPS PUB113,ANSI X9.17)qIV=0且最后一个分组用且最后一个分组用0填充其后以补足填充其后以补足64位分组位分组q用用DES的密文分组链接模式的密文分组链接模式CBC解密消息解密消息q把最后一个分组作为把最后一个分组作为MAC发送发送n或者取最后分组的左边或者取最后分组的左边M bits (
21、16M64) n但是对于安全性来说,最终的但是对于安全性来说,最终的MAC还是太小了还是太小了2022-1-20华中农业大学信息学院35Data Authentication Algorithm基于基于DES实现的数据认证算法实现的数据认证算法 2022-1-20华中农业大学信息学院36 置置IV = 0,并把报文的最后一个分组用,并把报文的最后一个分组用0填充成填充成64比特;比特; 采用采用DES的的CBC模式加密报文;模式加密报文; 抛弃加密的中间结果,只将最后一组密文(或最后一组抛弃加密的中间结果,只将最后一组密文(或最后一组密文的左边密文的左边M (16M64)比特)作为原始报文的比
22、特)作为原始报文的MAC。2022-1-20华中农业大学信息学院3712.6.2 CMACn适用于AES和3DES的CMAC1122133211(,)(,)(,).(,)()nnnTlennCE K MCE K MCCE K MCCE K MCKTMSBC12(,.,)nM MM为n个消分组,k位加密密钥和n位的常数K1T为消息认证码,也称为tag;Tlen是T的位长度;MSBs(X)是位串的X最左边的s位。12.7 认证加密认证加密2022-1-20华中农业大学信息学院38n在通信中同时提供保密性和认证性的加密系统在通信中同时提供保密性和认证性的加密系统n提供认证和加密的通用方案提供认证和加
23、密的通用方案qHtE:先:先Hash再加密,再加密,qMtE:先:先MAC再加密,再加密,SSL/TLS使用使用qEtM:先加密再:先加密再MAC,IPsec使用使用qE&M:加密并且:加密并且MAC,SSH使用使用(,(| )E KMh()hH M1(,)TMAC K M2(,(|)E KMT2(,)CE KM1(,)TMAC K C( , )C T2(,)CE KM1(,)TMAC K M( , )C T12.7 认证加密认证加密2022-1-20华中农业大学信息学院39n12.7.1 分组密码链接-消息认证码q略n12.7.2 Galois/计数器q略12.8 使用使用Hash函数和函数和MAC产生伪随机数产生伪随机数n略2022-1-20华中农业大学信息学院402022-1-20华中农业大学信息学院41小小 结结n消息认证码消息认证码q消息加密消息加密qHMACqCMAC2022-1-20华中农业大学信息学院42作业作业n思考题:思考题:12.1 12.6
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。