- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 消息认证码
* 第七章 消息认证码 曹天杰 中国矿业大学计算机学院 7.1 消息认证码的构造 7.2 MAC函数的安全性 7.3 消息认证码的应用 如果用数学语言来描述,MAC实质上是一个双方共享的密钥k和消息m作为输入的函数,如将函数值记为MACk(m),这个函数值就是一个认证标记,这里用δ表示。 攻击者发起攻击的时候,能得到的是消息和标记的序列对(m1, δ1),(m2,δ2),…,(mq, δq)(其中δi=MACk(mi))。如果攻击者可以找到一个消息m,m不在m1, …, mq之中,并且能够得到正确的证标记δ=MAC(m)就说明攻击成功了。攻击者成功的概率就是其攻破 MAC的概率。 消息认证码的构造有多种方法,我们主要介绍两种构造方法:一种是基于分组密码的,另一种是基于带密钥的Hash函数的。 7.1 消息认证码的构造 CBC-MAC实际上就相当于对消息使用CBC模式进行加密,取密文的最后一块作为认证码。当取DES作为加密的分组密码时,称为基于DES的CBC-MAC,若需要产生认证码的消息为x,加密的DES密钥为K,则生成MAC的过程如下(如图7.1所示): 基于分组密码的MAC 1、CBC-MAC 图7.1 CBC-MAC的算法过程 (1)填充和分组。对消息x进行填充,将填充得到的消息分成t个n比特(基于的DES的CBC-MAC通常n=64)的分组,记为x1, x2, …, xt。 (2)密码分组链接。令EK表示以K为密钥的加密算法DES,用以下方式计算Hi: H1?EK(x1), Hi?EK(Hi?1?xi),2≤i≤t。 则Ht就是x的消息认证码,基于的DES的CBC-MAC的MAC为64比特。 XOR-MAC 有两种方式:无状态(XMACR)和有状态(XMACC)。这种算法在计算过程中引入索引值使得分组密码每次加密的明文各不相同,最后再将所有的密文异或。 2、XOR-MAC 假定| x |代表消息x的长度(即包含多少位),并且它是32的倍数。x=( x1, x2, …, xn ) 其中| xi |=32,i=1, .., n。假定n小于231。 i 是数字i的长度为b的二进制表示,代表块的索引号。发送者维持一个长度为63位的记数r,在XMACC 模式下它的初始值为0,每次增加1。在XMACR模式下,r是随机选取的一个长度为63位的串。他们的具体构造方式如下: 具体的构造方法描述如下。 可以将HMAC表示如下: HMACK=H[(K+ ? opad) || H[(K+ ? ipad) || M ]] HAMC算法过程如下:如图7.2。 基于带密钥的Hash函数的MAC 图7.2 HAMC的结构 (1)对密钥K的左端填充一些0生成一个b比特的串K+(例如,如果K的长度是160比特,而b=512,那么对K填充44个0字节0x00)。 (2)将K+与ipad按比特异或产生一个b比特的分组Si。 (3)将消息M附加到Si后。 (4)使用H计算第3步产生结果的散列值。 (5)将K+与opad按比特异或产生一个b比特的分组S0。 (6)将第4步产生的散列值附加到S0后面。 (7)使用H计算第6步产生结果的散列值,并输出这个结果。 其中: H=嵌入的散列函数(如MD5,SHA-1); M=HMAC的输入消息(包括嵌入散列函数所需的填充比特); Yi=M中的第i个分组,0≤i≤L-1; L=M中的分组数; B=一个分组的比特数; n=嵌入散列函数产生的散列码长度; K=密钥,如果密钥的长度大于b,该密钥输入散列函数产生一个n比特的密钥,一般情况下密钥长度大于等于n; K+=在K的左边填充0,使总长度等于b; ipad=复b/8次; opad=复b/8次; 7.2 MAC函数的安全性 当使用加密算法加密消息时,其安全性一般依赖于密钥的比特长度,攻击者可以使用穷举攻击法来尝试所有可能的密钥。对于MAC,情况则完全不同。 MAC函数一般是一个多对一的函数。MAC函数域由任意长度的消息组成,其中域值由所有可能的MAC和所有可能的密钥组成。如果使用一个长度为n比特的MAC,那么将有2n个可能的MAC,而可能有N个消息,其中N2n。此外,对一个长度为k的密钥,还将有2k个可能的密钥。 假设对手已获得消息的明文和相应的MAC。假定k>n,即密钥长度大于MAC长度。那么如果已知M1和MAC1,MAC1=Ck1(M1)。密码分
文档评论(0)