第十讲-密码Hash函数课件_第1页
第十讲-密码Hash函数课件_第2页
第十讲-密码Hash函数课件_第3页
第十讲-密码Hash函数课件_第4页
第十讲-密码Hash函数课件_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十讲密码Hash函数1谢谢您的观赏2019-8-29第十讲密码Hash函数1谢谢您的观赏2019-8-29本讲提要分类与架构基本构造修改发现码(MDC)

消息认证码(MAC)2谢谢您的观赏2019-8-29本讲提要分类与架构2谢谢您的观赏2019-8-291分类与架构

定义1Hash函数(在不严格意义下)是至少满足下列两条性质的函数h。(1)压缩:h将任意有限比特长度的输入x映射为固定长度为n的输出h(x)。(2)容易计算:给定h和输入x,容易计算出h(x)。1.1基本性质与定义3谢谢您的观赏2019-8-291分类与架构定义1Hash函数(在不严格意义下)1分类与架构(续)

密码中使用的Hash函数主要为两类:

(1)修改发现码(MDC):不带密钥的Hash函数,主要用于提供消息完整性检查。

(2)消息认证码(MAC):带密钥的Hash函数,主要用于认证消息源及保证其完整性。1.1基本性质与定义(续)4谢谢您的观赏2019-8-291分类与架构(续)密码中使用的Hash函数主要为两类1分类与架构(续)

定义2

修改发现码(MDC)是Hash函数h,对于输入x和x以及相应输出y和y满足如下性质:(1)原像不可逆:对于几乎所有的Hash输出不可能计算出其的Hash输入。也就是,在不知道输入的情况下给定任意一个输出y,找到任意一个输入x满足h(x)=y是计算不可能的。(2)二次原像不可逆:对于任何一个给定的输入x,找到另一个输入xx,且满足h(x)=h(x),在计算上不可能。(3)抵抗碰撞:找到两个不同的输入x和x,满足h(x)=h(x),在计算上不可能(注意:这里两个输入可以自由选择)。1.1基本性质与定义(续)5谢谢您的观赏2019-8-291分类与架构(续)定义2修改发现码(MDC)是H1分类与架构(续)定义1和定义2的说明:(1)“容易”和“计算上不可能”都留下来没有准确定义。“容易”意味着多项式时间和空间;“计算上不可能”意味着超越多项式的计算需求。(2)一般认为,抗原像单向;抗二次原像抗弱碰撞;抵抗碰撞抗强碰撞。1.1基本性质与定义(续)6谢谢您的观赏2019-8-291分类与架构(续)定义1和定义2的说明:1.1基本性1分类与架构(续)

定义3单向Hash函数(OWHF)是满足定义1以及定义2中(1)和(2)的Hash函数。定义4抗碰撞Hash函数(CRHF)是满足定义1以及定义2中(2)和(3)的Hash函数。

#虽然几乎所有实际使用的CRHF都有抗原像攻击的性质,但由于技术原因定义4并未给出。1.1基本性质与定义(续)7谢谢您的观赏2019-8-291分类与架构(续)定义3单向Hash函数(OWH

1.1基本性质与定义(续)

攻击者攻击MDC的主要目标如下:(1)给定Hash值y,发现原像x满足y=h(x);或者给定对(x,h(x))发现另一个像x满足h(x)=h(x)。(2)发现两个Hash输入x和x满足h(x)=h(x)。1分类与架构(续)8谢谢您的观赏2019-8-291.1基本性质与定义(续)1分类与架构(续)8谢谢您的1分类与架构(续)

定义5

消息认证码(MAC)算法是带有密钥k的函数族hk,其具有如下性质:(1)易于计算:对于任何已知函数hk,给定值k和输入x,值hk(x)容易计算出来。这个值被称做MAC值或MAC。1.1基本性质与定义(续)9谢谢您的观赏2019-8-291分类与架构(续)定义5消息认证码(MAC)算法是(2)压缩:函数hk可以将任意有限比特长度的输入x映射为固定n比特长度的位串。进一步,给出函数族h的算法描述,对于任何一个固定符合要求的密钥值k(攻击者不知其值),需要满足如下性质:(3)计算抵抗:给定0个或多个消息-MAC值对(xi,hk(xi)),找到任意消息-MAC值对(x,hk(x))满足xxi在计算上不可能(当然也包括某些i满足hk(x)=hk(xi)的可能性)。1分类与架构(续)1.1基本性质与定义(续)10谢谢您的观赏2019-8-29(2)压缩:函数hk可以将任意有限比特长度的输入x

评述.

(1)计算抵抗隐含了密钥k是不可恢复的性质,但密钥不可恢复并不意味着计算抵抗。

(2)定义5并没有显示攻击者知道密钥k的情况下是否要抗原像和抗碰撞,但对不知道密钥k的情况下,应该满足这些性质。1分类与架构(续)1.1基本性质与定义(续)11谢谢您的观赏2019-8-29评述.1分类与架构(续)1.1基本性质与定义(续)攻击者攻击MAC的目标为:在不知道密钥k的情况下,给定一个或多个消息-MAC值对(xi,hk(xi)),计算出一个或多个新消息-MAC值对(x,hk(x)),满足xxi。

攻击者潜在的能力有:(1)已知消息攻击。(2)选择消息攻击:掌握一个或多个由攻击者选择的xi对应的消息-MAC值对(xi,hk(xi))。(3)适应性选择消息攻击:允许根据前面的询问结果连续做出消息选择。1分类与架构(续)1.1基本性质与定义(续)12谢谢您的观赏2019-8-29攻击者攻击MAC的目标为:1分类与架构(续)1.1在实际中造成的破坏程度取决于攻击者控制消息x并伪造其MAC值的程度,依此可以做如下分类。(1)选择性伪造攻击:攻击者可以根据选择,控制消息的内容伪造出消息-MAC值对(或者至少为部分控制消息内容)。(2)存在性伪造攻击:攻击者虽然可以伪造出消息-MAC值对,但无法控制消息的内容。1分类与架构(续)1.1基本性质与定义(续)13谢谢您的观赏2019-8-29在实际中造成的破坏程度取决于攻击者控制消息x并伪与特定性质联系在一起的是开销,如CRHF一般比OWHF要难于构造,且其Hash值应是OWHF的比特长度的两倍。因此,考虑具体应用十分重要。假如可由不可信方控制Hash函数的输入的准确内容,则可能需要CRHF,如数字签名。假如只是可信方的单方应用,使用OWHF就足够了,如口令表的应用。1分类与架构(续)1.2特定应用需要的性质14谢谢您的观赏2019-8-29与特定性质联系在一起的是开销,如CRHF一般比OW

事实1

Hash函数的抗碰撞隐含抗二次原像。

事实2Hash函数抗碰撞不能保证抗原像。

事实3

Hash函数抗二次原像不能保证抗原像,抗原像也不能保证抗二次原像。事实4

hk是MAC,hk符合计算抵抗性质。若攻击者不知道密钥k,hk抗选择消息攻击,则应该抗二次原像、抗碰撞、抗原像。1分类与架构(续)1.3性质之间的关系15谢谢您的观赏2019-8-29事实1Hash函数的抗碰撞隐含抗二次原像。1MDC的其他应用

(1)知识确认。

(2)密钥产生。

(3)伪随机数发生。

#这些MDC可能需要满足一些超过之前定义的附加性质。1分类与架构(续)1.4其他应用16谢谢您的观赏2019-8-29MDC的其他应用1分类与架构(续)1.4其他应用12基本构造2.1迭代结构的一般模型高级视图输出可选输出变换迭代压缩函数任意长度输入固定长度输出17谢谢您的观赏2019-8-292基本构造2.1迭代结构的一般模型高级视图输出可选输出变2基本构造(续)2.1迭代结构的一般模型(续)详细视图fHash函数h初始输入x预处理附加长度分组附加填充比特迭代处理压缩函数fHiHi-1Htgxi输出h(x)=g(Ht)格式化输入x=x1x2…xt18谢谢您的观赏2019-8-292基本构造(续)2.1迭代结构的一般模型(续)详细视图f2基本构造(续)2.1迭代结构的一般模型(续)Hi表示第i步的部分结果,输入为x=x1x2…xt的迭代函数的一般模型为

H0=IV;Hi=f(Hi-1,xi),1it;h(x)=g(Ht)。

Hi-1表示第i-1步和第i步之间的n比特链变量,H0是预定义的开始值或初始值(IV)。最后一步用可选的输出变换g将n比特链变量映射为m比特结果g(Ht),通常g(Ht)=Ht。19谢谢您的观赏2019-8-292基本构造(续)2.1迭代结构的一般模型(续)H2基本构造(续)2.2实际安全需要的输出比特大小

事实5

一个n比特输出的不带密钥Hash函数是理想安全的,如果:(1)给定一个Hash输出,产生一个原像和二次原像需要大约2n次操作规模;(2)产生一个碰撞需要大约2n/2次操作规模。

事实6

假定n比特输出的Hash函数,280次操作在计算上不可能,则有:(1)OWHF要求n80;(2)CRHF要求n160;(3)MAC对大部分环境要求n64以及64-80比特的密钥,如果有特别控制,可小到n=32或64。20谢谢您的观赏2019-8-292基本构造(续)2.2实际安全需要的输出比特大小事在分组密码基础上建立Hash函数的主要动机是:如果系统已经拥有了非常有效的分组密码,那么以分组密码作为实现Hash函数的主要部件,将既可以提供Hash函数的功能,又能使额外开销最小。3无密钥密码Hash函数:MDC3.1基于分组密码的Hash函数:MDC-221谢谢您的观赏2019-8-29在分组密码基础上建立Hash函数的主要动机是:如果系统3.1基于分组密码的Hash函数:MDC-2(续)3无密钥密码Hash函数:MDC(续)22谢谢您的观赏2019-8-293.1基于分组密码的Hash函数:MDC-2(续)3无3.1基于分组密码的Hash函数:MDC-2(续)3无密钥密码Hash函数:MDC(续)23谢谢您的观赏2019-8-293.1基于分组密码的Hash函数:MDC-2(续)3无Eg(Hi-1)Eg'(Hi-1)MiCLiCRiCL'iCR'iCLiCR'iCL'iCRiHiH'i3无密钥密码Hash函数:MDC(续)3.1基于分组密码的Hash函数:MDC-2(续)24谢谢您的观赏2019-8-29Eg(Hi-1)Eg'(Hi-1)MiCLiCRiCL'iC3.2定制的Hash函数:SHA-1

安全Hash算法(SHA)是美国国家标准技术研究所(NIST)设计,并于1993年作为联邦信息处理标准(FIPS180)发布的。后做修改,于1995年再次公布修订后的SHA,通常称为SHA-1。3无密钥密码Hash函数:MDC(续)25谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1安全Hash算法3.2定制的Hash函数:SHA-1(续)

SHA-1算法的输入为小于264比特长的任意消息,输出为160比特的消息摘要,算法处理过程如下图。YL-13无密钥密码Hash函数:MDC(续)HSHAIV(160比特)Y0(512比特)HSHAY1CV1(160比特)…HSHACVqYq…CV2HSHACVL-1消息摘要26谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)

SHA-1消息处理过程:

(1)消息填充。填充使得消息的比特长度为512比特的某个倍数减64,即使原始消息已满足要求,仍要填充。这样填充的比特数在1到512。填充方式是第一位为1其他位是0。最后64比特位用来填充消息被填充前的长度。这形成了长度为512比特的一系列分组Y0,Y1,…,YL-1。需要产生Hash值的消息100…0消息长度K填充长度1-512比特K比特L×512比特3无密钥密码Hash函数:MDC(续)27谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)

(2)初始化。SHA-1使用160比特的缓冲区存储中间和最终Hash值,可用5个32比特寄存器A,B,C,D,E表示,初始值为(十六进制)A=67452301,B=efcdab89,C=98badcfe,D=10325476,E=c3d2e1f0。3无密钥密码Hash函数:MDC(续)28谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)(2)初3.2定制的Hash函数:SHA-1(续)

(3)处理。每个分组Yq经过压缩函数处理,压缩函数由4轮处理过程构成。每一轮又由20步迭代组成。4轮处理结构一样,但基本逻辑函数不同,分别为f1,f2,f3,f4。每轮处理消息分组Yq和缓冲区A、B、C、D、E的当前值,输出仍放在对应缓冲区。每一轮处理有一个加法常量Ki,其中t表示迭代步数,0≤t≤79。第4轮的输出与第1轮的输入CVq依5个缓冲区对应进行模232相加得到CVq+1。消息的L个分组都按上述计算处理完成后,最后一个分组的输出就是160比特消息摘要。3无密钥密码Hash函数:MDC(续)29谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)(3)3.2定制的Hash函数:SHA-1(续)3无密钥密码Hash函数:MDC(续)CVq160位Yq512位f1,K1,W[0…19]20步BADCEf2,K2,W[20…39]20步BADCEf3,K3,W[40…59]20步BADCEf4,K4,W[60…79]20步BADCE++++CVq+1160位+30谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)3无密钥密码H3.2定制的Hash函数:SHA-1(续)

SHA-1的压缩函数各个20步迭代运算的每一步运算可以表示为

A,B,C,D,E←(E+fi(B,C,D)+CLS5(A)+Wt+Ki),A,CLS30(B),C,D

其中,t是迭代的步数(0≤t≤79),+是模232相加,fi是i(1≤i≤4)轮的基本逻辑函数,CLSs表示循环左移s位,Wt是当前512比特分组导出的一个32比特字。3无密钥密码Hash函数:MDC(续)31谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)SHA-1的压缩函数(续)基本逻辑函数f1,f2,f3,f4分别定义为:f1(X,Y,Z)=(XY)(XZ)f2(X,Y,Z)=f4(X,Y,Z)=XYZf3(X,Y,Z)=(XY)(XZ)(YZ)其中,是与,是或,是异或,是非。3无密钥密码Hash函数:MDC(续)32谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-1的压缩3.2定制的Hash函数:SHA-1(续)

SHA-1的压缩函数(续)

加法常量(十六进制)

K1=5a827999,对应0≤t≤19

K2=6ed9eba1,对应20≤t≤39

K3=8f1bbcdc

,对应40≤t≤59

K4=

ca62c1d6,对应60≤t≤79

字扩展前16个字W0,W1,…,W15,直接由输入得到。其余由公式Wt=CLS1(Wt-3Wt-8Wt-14Wt-16)依次得到。3无密钥密码Hash函数:MDC(续)33谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-3.3定制的Hash函数:MD5

MD5是1992年由Rivest提出的无密钥Hash函数。MD5是MD4(1990年提出)的增强版本。MD5对任意长度的消息产生128比特的Hash值。MD4在280次压缩函数计算下已经找到了碰撞,因此,不在被推荐用做抗碰撞的Hash函数。近年来,MD5也发现了一些弱点。3无密钥密码Hash函数:MDC(续)34谢谢您的观赏2019-8-293.3定制的Hash函数:MD5MD5是1992年由3.3定制的Hash函数:MD5(续)MD5算法的输入为任意比特长的消息,输出为128比特的消息摘要,算法处理过程如下图。3无密钥密码Hash函数:MDC(续)HMD5IV(128比特)Y0(512比特)HMD5Y1CV1(128比特)…HMD5CVqYq…CV2HMD5CVL-1YL-1消息摘要35谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5算法的3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)MD5消息处理过程:

(1)消息填充。填充使得消息的比特长度为512比特的某个倍数减64,即使原始消息已满足要求,仍要填充。这样填充的比特数在1到512。填充方式是第一位为1其他位是0。最后64比特位用来填充消息被填充前的长度。如果消息长度大于264,则以264取模。这形成了长度为512比特的一系列分组Y0,Y1,…

,YL-1。需要产生Hash值的消息100…0消息长度Kmod264填充长度1-512比特K比特L×512比特=N×32比特36谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)

(2)初始化。MD5使用128比特的缓冲区存储中间和最终Hash值,可用4个32比特寄存器A,B,C,D表示,初始值为(十六进制)A=01234567,B=89abcdef,C=fedcba98,D=76543210。3无密钥密码Hash函数:MDC(续)37谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)(2)初始化3.3定制的Hash函数:MD5(续)

(3)处理。每个分组Yq经过压缩函数处理,压缩函数由4轮处理过程构成。每一轮又由16步迭代组成。4轮处理结构一样,但基本逻辑函数不同,分别为F,G,H,I

。每轮处理消息分组Yq和缓冲区A、B、C、D的当前值,输出仍放在对应缓冲区。每一轮处理有一个常量T[i],其中i表示迭代步数,1≤i≤64。第4轮的输出与第1轮的输入CVq依4个缓冲区对应进行模232相加得到CVq+1。消息的L个分组都按上述计算处理完成后,最后一个分组的输出就是128比特消息摘要。3无密钥密码Hash函数:MDC(续)38谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)(3)处理。3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)CVq128位Yq512位F,T[1…16],X[i],16步BADCBADCBADCBADC++++CVq+1128位G,T[17…32],X[p2(i)],16步H,T[33…48],X[p3(i)],16步I,T[49…64],X[p4(i)],16步39谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)MD5的压缩函数一步迭代压缩函数如下图。ACBD+++<<<s+RACBDX[k]T[i]

R表示函数F、G、H、I中的一个,它们依次在连续16步中使用<<<s表示循环左移s比特X[k]表示在第q个长度为512比特分组中的第k个32比特分组T[i]表示常数中的第i个字

+表示模232相加40谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)

MD5的压缩函数(续)逻辑函数F,G,H,I分别定义为:

F(X,Y,Z)=(XY)(XZ)G(X,Y,Z)=(XY)(YZ)H(X,Y,Z)=XYZI(X,Y,Z)=Y(XZ)

T[i]定义为:

T[i]=232|sin(i)|,i=1,2,…,64,这里,i是弧度。

3无密钥密码Hash函数:MDC(续)41谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5的压缩函3.3定制的Hash函数:MD5(续)

MD5的压缩函数(续)

MD5压缩的每个512比特消息分组要经过4轮处理,第1轮以其32比特连续分组的初始顺序使用,而第2至4轮处理按如下三个置换计算出的顺序使用:

p2(i)=(1+5i)mod16p3(i)=(5+3i)mod16

p4(i)=7imod16,这里i=0,1,…,15。3无密钥密码Hash函数:MDC(续)42谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5的压缩函3.3定制的Hash函数:MD5(续)

MD5的压缩函数(续)

4轮中每一步的循环左移位数见下表。3无密钥密码Hash函数:MDC(续)43谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5的压缩函4.1基于分组密码的Hash函数:CBC的MAC4带密钥密码Hash函数:MAC44谢谢您的观赏2019-8-294.1基于分组密码的Hash函数:CBC的MAC4带密钥4.1基于分组密码的Hash函数:CBC的MAC(续)M10EkH1M2EkH2…Ht-1MtEkHtEkDk'Ht可选4带密钥密码Hash函数:MAC(续)45谢谢您的观赏2019-8-294.1基于分组密码的Hash函数:CBC的MAC(续)M1

4.1基于分组密码的Hash函数:CBC的MAC(续)

评论.(1)

很明显,在生成CBC-MAC值(由运行CBC模式的分组密码构造的MAC)的计算中包括了不可求逆的数据压缩(本质上,CBC-MAC是整个消息的“短摘要”),因此CBC-MAC是一个单向变换。所有的分组密码加密算法的混合变换性质为这个单向函数变换增加了一个杂凑特点(也就是说,将MAC分布到MAC空间与分组密码加密算法将密文分布到密文空间同样均匀)。4带密钥密码Hash函数:MAC(续)46谢谢您的观赏2019-8-294.1基于分组密码的Hash函数:CBC的MAC((2)如果考虑穷举密钥搜索攻击,可以考虑最后仅输出n比特中的m比特作为MAC数值。

(3)单分组消息x1,x2的两个文本消息-MAC对(x1,H1)和(x2,H2)。对一个2分组的第三个消息x1||z请求MAC值M,产生文本消息-MAC对(x1||z,M)。由此,知新2分组的消息X=x2||(H1zH2)的MAC值也是M。(4)可选处理减少了穷举密钥搜索攻击的威胁,阻止了选择文本攻击的存在性伪造,由于没有在整个过程中使用三重加密,所以不会特别影响效率。4带密钥密码Hash函数:MAC(续)4.1基于分组密码的Hash函数:CBC的MAC(续)47谢谢您的观赏2019-8-29(2)如果考虑穷举密钥搜索攻击,可以考虑最后仅输出

由MDC算法构造MAC算法的一个建议是简单地把秘密密钥k作为MDC的输入的一部分。但因为MDC和MAC的定义并不完全一致,因此这种设计必须细致分析。

(1)消息为x=x1x2…xt和使用迭代函数f的迭代MDCh:定义H0=IV;Hi=f(Hi-1,xi),1it;h(x)=Ht。(1.1)如果建议的MAC对x的值是M=h(k||x),则攻击者可以计算M=h(k||x||y)=f(M||y)作为x||y的MAC值。(1.2)如果建议的MAC对x的值是M=h(x||k)输出是n比特,则产生x和x满足M=h(x||k)=h(x||k)的复杂度为O(2n/2),n是h函数的输出比特长度。4带密钥密码Hash函数:MAC(续)4.2由MDC构造的MAC48谢谢您的观赏2019-8-29由MDC算法构造MAC算法的一个建议是简单地把秘密密钥

(2)对密钥为k和MDC为h,可按如下方式计算消息x的MAC值hk(x)=h(k||p||x||k)。其中p将用于将k填充为一个分组长度,从而保证内部至少进行两次分组计算。

(3)对密钥为k和MDC为h,另一种计算消息x的MAC值的方式是hk(x)=h(k||p1||h(k||p2||x))。其中p1,p2用于将k填充为一个分组长度。4带密钥密码Hash函数:MAC(续)4.2由MDC构造的MAC(续)49谢谢您的观赏2019-8-29(2)对密钥为k和MDC为h,可按如下方式计算消息4带密钥密码Hash函数:MAC(续)4.3定制的MAC:MD5-MAC50谢谢您的观赏2019-8-294带密钥密码Hash函数:MAC(续)4.3定制的MAC4带密钥密码Hash函数:MAC(续)4.3定制的MAC:MD5-MAC(续)51谢谢您的观赏2019-8-294带密钥密码Hash函数:MAC(续)4.3定制的MAC4带密钥密码Hash函数:MAC(续)4.3定制的MAC:MD5-MAC(续)52谢谢您的观赏2019-8-294带密钥密码Hash函数:MAC(续)4.3定制的MAC谢谢!53谢谢您的观赏2019-8-29谢谢!53谢谢您的观赏2019-8-29第十讲密码Hash函数54谢谢您的观赏2019-8-29第十讲密码Hash函数1谢谢您的观赏2019-8-29本讲提要分类与架构基本构造修改发现码(MDC)

消息认证码(MAC)55谢谢您的观赏2019-8-29本讲提要分类与架构2谢谢您的观赏2019-8-291分类与架构

定义1Hash函数(在不严格意义下)是至少满足下列两条性质的函数h。(1)压缩:h将任意有限比特长度的输入x映射为固定长度为n的输出h(x)。(2)容易计算:给定h和输入x,容易计算出h(x)。1.1基本性质与定义56谢谢您的观赏2019-8-291分类与架构定义1Hash函数(在不严格意义下)1分类与架构(续)

密码中使用的Hash函数主要为两类:

(1)修改发现码(MDC):不带密钥的Hash函数,主要用于提供消息完整性检查。

(2)消息认证码(MAC):带密钥的Hash函数,主要用于认证消息源及保证其完整性。1.1基本性质与定义(续)57谢谢您的观赏2019-8-291分类与架构(续)密码中使用的Hash函数主要为两类1分类与架构(续)

定义2

修改发现码(MDC)是Hash函数h,对于输入x和x以及相应输出y和y满足如下性质:(1)原像不可逆:对于几乎所有的Hash输出不可能计算出其的Hash输入。也就是,在不知道输入的情况下给定任意一个输出y,找到任意一个输入x满足h(x)=y是计算不可能的。(2)二次原像不可逆:对于任何一个给定的输入x,找到另一个输入xx,且满足h(x)=h(x),在计算上不可能。(3)抵抗碰撞:找到两个不同的输入x和x,满足h(x)=h(x),在计算上不可能(注意:这里两个输入可以自由选择)。1.1基本性质与定义(续)58谢谢您的观赏2019-8-291分类与架构(续)定义2修改发现码(MDC)是H1分类与架构(续)定义1和定义2的说明:(1)“容易”和“计算上不可能”都留下来没有准确定义。“容易”意味着多项式时间和空间;“计算上不可能”意味着超越多项式的计算需求。(2)一般认为,抗原像单向;抗二次原像抗弱碰撞;抵抗碰撞抗强碰撞。1.1基本性质与定义(续)59谢谢您的观赏2019-8-291分类与架构(续)定义1和定义2的说明:1.1基本性1分类与架构(续)

定义3单向Hash函数(OWHF)是满足定义1以及定义2中(1)和(2)的Hash函数。定义4抗碰撞Hash函数(CRHF)是满足定义1以及定义2中(2)和(3)的Hash函数。

#虽然几乎所有实际使用的CRHF都有抗原像攻击的性质,但由于技术原因定义4并未给出。1.1基本性质与定义(续)60谢谢您的观赏2019-8-291分类与架构(续)定义3单向Hash函数(OWH

1.1基本性质与定义(续)

攻击者攻击MDC的主要目标如下:(1)给定Hash值y,发现原像x满足y=h(x);或者给定对(x,h(x))发现另一个像x满足h(x)=h(x)。(2)发现两个Hash输入x和x满足h(x)=h(x)。1分类与架构(续)61谢谢您的观赏2019-8-291.1基本性质与定义(续)1分类与架构(续)8谢谢您的1分类与架构(续)

定义5

消息认证码(MAC)算法是带有密钥k的函数族hk,其具有如下性质:(1)易于计算:对于任何已知函数hk,给定值k和输入x,值hk(x)容易计算出来。这个值被称做MAC值或MAC。1.1基本性质与定义(续)62谢谢您的观赏2019-8-291分类与架构(续)定义5消息认证码(MAC)算法是(2)压缩:函数hk可以将任意有限比特长度的输入x映射为固定n比特长度的位串。进一步,给出函数族h的算法描述,对于任何一个固定符合要求的密钥值k(攻击者不知其值),需要满足如下性质:(3)计算抵抗:给定0个或多个消息-MAC值对(xi,hk(xi)),找到任意消息-MAC值对(x,hk(x))满足xxi在计算上不可能(当然也包括某些i满足hk(x)=hk(xi)的可能性)。1分类与架构(续)1.1基本性质与定义(续)63谢谢您的观赏2019-8-29(2)压缩:函数hk可以将任意有限比特长度的输入x

评述.

(1)计算抵抗隐含了密钥k是不可恢复的性质,但密钥不可恢复并不意味着计算抵抗。

(2)定义5并没有显示攻击者知道密钥k的情况下是否要抗原像和抗碰撞,但对不知道密钥k的情况下,应该满足这些性质。1分类与架构(续)1.1基本性质与定义(续)64谢谢您的观赏2019-8-29评述.1分类与架构(续)1.1基本性质与定义(续)攻击者攻击MAC的目标为:在不知道密钥k的情况下,给定一个或多个消息-MAC值对(xi,hk(xi)),计算出一个或多个新消息-MAC值对(x,hk(x)),满足xxi。

攻击者潜在的能力有:(1)已知消息攻击。(2)选择消息攻击:掌握一个或多个由攻击者选择的xi对应的消息-MAC值对(xi,hk(xi))。(3)适应性选择消息攻击:允许根据前面的询问结果连续做出消息选择。1分类与架构(续)1.1基本性质与定义(续)65谢谢您的观赏2019-8-29攻击者攻击MAC的目标为:1分类与架构(续)1.1在实际中造成的破坏程度取决于攻击者控制消息x并伪造其MAC值的程度,依此可以做如下分类。(1)选择性伪造攻击:攻击者可以根据选择,控制消息的内容伪造出消息-MAC值对(或者至少为部分控制消息内容)。(2)存在性伪造攻击:攻击者虽然可以伪造出消息-MAC值对,但无法控制消息的内容。1分类与架构(续)1.1基本性质与定义(续)66谢谢您的观赏2019-8-29在实际中造成的破坏程度取决于攻击者控制消息x并伪与特定性质联系在一起的是开销,如CRHF一般比OWHF要难于构造,且其Hash值应是OWHF的比特长度的两倍。因此,考虑具体应用十分重要。假如可由不可信方控制Hash函数的输入的准确内容,则可能需要CRHF,如数字签名。假如只是可信方的单方应用,使用OWHF就足够了,如口令表的应用。1分类与架构(续)1.2特定应用需要的性质67谢谢您的观赏2019-8-29与特定性质联系在一起的是开销,如CRHF一般比OW

事实1

Hash函数的抗碰撞隐含抗二次原像。

事实2Hash函数抗碰撞不能保证抗原像。

事实3

Hash函数抗二次原像不能保证抗原像,抗原像也不能保证抗二次原像。事实4

hk是MAC,hk符合计算抵抗性质。若攻击者不知道密钥k,hk抗选择消息攻击,则应该抗二次原像、抗碰撞、抗原像。1分类与架构(续)1.3性质之间的关系68谢谢您的观赏2019-8-29事实1Hash函数的抗碰撞隐含抗二次原像。1MDC的其他应用

(1)知识确认。

(2)密钥产生。

(3)伪随机数发生。

#这些MDC可能需要满足一些超过之前定义的附加性质。1分类与架构(续)1.4其他应用69谢谢您的观赏2019-8-29MDC的其他应用1分类与架构(续)1.4其他应用12基本构造2.1迭代结构的一般模型高级视图输出可选输出变换迭代压缩函数任意长度输入固定长度输出70谢谢您的观赏2019-8-292基本构造2.1迭代结构的一般模型高级视图输出可选输出变2基本构造(续)2.1迭代结构的一般模型(续)详细视图fHash函数h初始输入x预处理附加长度分组附加填充比特迭代处理压缩函数fHiHi-1Htgxi输出h(x)=g(Ht)格式化输入x=x1x2…xt71谢谢您的观赏2019-8-292基本构造(续)2.1迭代结构的一般模型(续)详细视图f2基本构造(续)2.1迭代结构的一般模型(续)Hi表示第i步的部分结果,输入为x=x1x2…xt的迭代函数的一般模型为

H0=IV;Hi=f(Hi-1,xi),1it;h(x)=g(Ht)。

Hi-1表示第i-1步和第i步之间的n比特链变量,H0是预定义的开始值或初始值(IV)。最后一步用可选的输出变换g将n比特链变量映射为m比特结果g(Ht),通常g(Ht)=Ht。72谢谢您的观赏2019-8-292基本构造(续)2.1迭代结构的一般模型(续)H2基本构造(续)2.2实际安全需要的输出比特大小

事实5

一个n比特输出的不带密钥Hash函数是理想安全的,如果:(1)给定一个Hash输出,产生一个原像和二次原像需要大约2n次操作规模;(2)产生一个碰撞需要大约2n/2次操作规模。

事实6

假定n比特输出的Hash函数,280次操作在计算上不可能,则有:(1)OWHF要求n80;(2)CRHF要求n160;(3)MAC对大部分环境要求n64以及64-80比特的密钥,如果有特别控制,可小到n=32或64。73谢谢您的观赏2019-8-292基本构造(续)2.2实际安全需要的输出比特大小事在分组密码基础上建立Hash函数的主要动机是:如果系统已经拥有了非常有效的分组密码,那么以分组密码作为实现Hash函数的主要部件,将既可以提供Hash函数的功能,又能使额外开销最小。3无密钥密码Hash函数:MDC3.1基于分组密码的Hash函数:MDC-274谢谢您的观赏2019-8-29在分组密码基础上建立Hash函数的主要动机是:如果系统3.1基于分组密码的Hash函数:MDC-2(续)3无密钥密码Hash函数:MDC(续)75谢谢您的观赏2019-8-293.1基于分组密码的Hash函数:MDC-2(续)3无3.1基于分组密码的Hash函数:MDC-2(续)3无密钥密码Hash函数:MDC(续)76谢谢您的观赏2019-8-293.1基于分组密码的Hash函数:MDC-2(续)3无Eg(Hi-1)Eg'(Hi-1)MiCLiCRiCL'iCR'iCLiCR'iCL'iCRiHiH'i3无密钥密码Hash函数:MDC(续)3.1基于分组密码的Hash函数:MDC-2(续)77谢谢您的观赏2019-8-29Eg(Hi-1)Eg'(Hi-1)MiCLiCRiCL'iC3.2定制的Hash函数:SHA-1

安全Hash算法(SHA)是美国国家标准技术研究所(NIST)设计,并于1993年作为联邦信息处理标准(FIPS180)发布的。后做修改,于1995年再次公布修订后的SHA,通常称为SHA-1。3无密钥密码Hash函数:MDC(续)78谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1安全Hash算法3.2定制的Hash函数:SHA-1(续)

SHA-1算法的输入为小于264比特长的任意消息,输出为160比特的消息摘要,算法处理过程如下图。YL-13无密钥密码Hash函数:MDC(续)HSHAIV(160比特)Y0(512比特)HSHAY1CV1(160比特)…HSHACVqYq…CV2HSHACVL-1消息摘要79谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)

SHA-1消息处理过程:

(1)消息填充。填充使得消息的比特长度为512比特的某个倍数减64,即使原始消息已满足要求,仍要填充。这样填充的比特数在1到512。填充方式是第一位为1其他位是0。最后64比特位用来填充消息被填充前的长度。这形成了长度为512比特的一系列分组Y0,Y1,…,YL-1。需要产生Hash值的消息100…0消息长度K填充长度1-512比特K比特L×512比特3无密钥密码Hash函数:MDC(续)80谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)

(2)初始化。SHA-1使用160比特的缓冲区存储中间和最终Hash值,可用5个32比特寄存器A,B,C,D,E表示,初始值为(十六进制)A=67452301,B=efcdab89,C=98badcfe,D=10325476,E=c3d2e1f0。3无密钥密码Hash函数:MDC(续)81谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)(2)初3.2定制的Hash函数:SHA-1(续)

(3)处理。每个分组Yq经过压缩函数处理,压缩函数由4轮处理过程构成。每一轮又由20步迭代组成。4轮处理结构一样,但基本逻辑函数不同,分别为f1,f2,f3,f4。每轮处理消息分组Yq和缓冲区A、B、C、D、E的当前值,输出仍放在对应缓冲区。每一轮处理有一个加法常量Ki,其中t表示迭代步数,0≤t≤79。第4轮的输出与第1轮的输入CVq依5个缓冲区对应进行模232相加得到CVq+1。消息的L个分组都按上述计算处理完成后,最后一个分组的输出就是160比特消息摘要。3无密钥密码Hash函数:MDC(续)82谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)(3)3.2定制的Hash函数:SHA-1(续)3无密钥密码Hash函数:MDC(续)CVq160位Yq512位f1,K1,W[0…19]20步BADCEf2,K2,W[20…39]20步BADCEf3,K3,W[40…59]20步BADCEf4,K4,W[60…79]20步BADCE++++CVq+1160位+83谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)3无密钥密码H3.2定制的Hash函数:SHA-1(续)

SHA-1的压缩函数各个20步迭代运算的每一步运算可以表示为

A,B,C,D,E←(E+fi(B,C,D)+CLS5(A)+Wt+Ki),A,CLS30(B),C,D

其中,t是迭代的步数(0≤t≤79),+是模232相加,fi是i(1≤i≤4)轮的基本逻辑函数,CLSs表示循环左移s位,Wt是当前512比特分组导出的一个32比特字。3无密钥密码Hash函数:MDC(续)84谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-13.2定制的Hash函数:SHA-1(续)SHA-1的压缩函数(续)基本逻辑函数f1,f2,f3,f4分别定义为:f1(X,Y,Z)=(XY)(XZ)f2(X,Y,Z)=f4(X,Y,Z)=XYZf3(X,Y,Z)=(XY)(XZ)(YZ)其中,是与,是或,是异或,是非。3无密钥密码Hash函数:MDC(续)85谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-1的压缩3.2定制的Hash函数:SHA-1(续)

SHA-1的压缩函数(续)

加法常量(十六进制)

K1=5a827999,对应0≤t≤19

K2=6ed9eba1,对应20≤t≤39

K3=8f1bbcdc

,对应40≤t≤59

K4=

ca62c1d6,对应60≤t≤79

字扩展前16个字W0,W1,…,W15,直接由输入得到。其余由公式Wt=CLS1(Wt-3Wt-8Wt-14Wt-16)依次得到。3无密钥密码Hash函数:MDC(续)86谢谢您的观赏2019-8-293.2定制的Hash函数:SHA-1(续)SHA-3.3定制的Hash函数:MD5

MD5是1992年由Rivest提出的无密钥Hash函数。MD5是MD4(1990年提出)的增强版本。MD5对任意长度的消息产生128比特的Hash值。MD4在280次压缩函数计算下已经找到了碰撞,因此,不在被推荐用做抗碰撞的Hash函数。近年来,MD5也发现了一些弱点。3无密钥密码Hash函数:MDC(续)87谢谢您的观赏2019-8-293.3定制的Hash函数:MD5MD5是1992年由3.3定制的Hash函数:MD5(续)MD5算法的输入为任意比特长的消息,输出为128比特的消息摘要,算法处理过程如下图。3无密钥密码Hash函数:MDC(续)HMD5IV(128比特)Y0(512比特)HMD5Y1CV1(128比特)…HMD5CVqYq…CV2HMD5CVL-1YL-1消息摘要88谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5算法的3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)MD5消息处理过程:

(1)消息填充。填充使得消息的比特长度为512比特的某个倍数减64,即使原始消息已满足要求,仍要填充。这样填充的比特数在1到512。填充方式是第一位为1其他位是0。最后64比特位用来填充消息被填充前的长度。如果消息长度大于264,则以264取模。这形成了长度为512比特的一系列分组Y0,Y1,…

,YL-1。需要产生Hash值的消息100…0消息长度Kmod264填充长度1-512比特K比特L×512比特=N×32比特89谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)

(2)初始化。MD5使用128比特的缓冲区存储中间和最终Hash值,可用4个32比特寄存器A,B,C,D表示,初始值为(十六进制)A=01234567,B=89abcdef,C=fedcba98,D=76543210。3无密钥密码Hash函数:MDC(续)90谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)(2)初始化3.3定制的Hash函数:MD5(续)

(3)处理。每个分组Yq经过压缩函数处理,压缩函数由4轮处理过程构成。每一轮又由16步迭代组成。4轮处理结构一样,但基本逻辑函数不同,分别为F,G,H,I

。每轮处理消息分组Yq和缓冲区A、B、C、D的当前值,输出仍放在对应缓冲区。每一轮处理有一个常量T[i],其中i表示迭代步数,1≤i≤64。第4轮的输出与第1轮的输入CVq依4个缓冲区对应进行模232相加得到CVq+1。消息的L个分组都按上述计算处理完成后,最后一个分组的输出就是128比特消息摘要。3无密钥密码Hash函数:MDC(续)91谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)(3)处理。3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)CVq128位Yq512位F,T[1…16],X[i],16步BADCBADCBADCBADC++++CVq+1128位G,T[17…32],X[p2(i)],16步H,T[33…48],X[p3(i)],16步I,T[49…64],X[p4(i)],16步92谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)3无密钥密码Hash函数:MDC(续)MD5的压缩函数一步迭代压缩函数如下图。ACBD+++<<<s+RACBDX[k]T[i]

R表示函数F、G、H、I中的一个,它们依次在连续16步中使用<<<s表示循环左移s比特X[k]表示在第q个长度为512比特分组中的第k个32比特分组T[i]表示常数中的第i个字

+表示模232相加93谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)3无密钥密码Has3.3定制的Hash函数:MD5(续)

MD5的压缩函数(续)逻辑函数F,G,H,I分别定义为:

F(X,Y,Z)=(XY)(XZ)G(X,Y,Z)=(XY)(YZ)H(X,Y,Z)=XYZI(X,Y,Z)=Y(XZ)

T[i]定义为:

T[i]=232|sin(i)|,i=1,2,…,64,这里,i是弧度。

3无密钥密码Hash函数:MDC(续)94谢谢您的观赏2019-8-293.3定制的Hash函数:MD5(续)MD5的压缩函3.3定制的Hash函数:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论