版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章认证理论与技术(1)认证、认证码、Hash函数第1页,共57页。11.1认证与认证系统认证(Authentication)是防止主动攻击的重要技术,对开发系统安全性有重要作用.认证的主要目的实体认证(发送者非冒充)消息认证(验证信息的完整性)第2页,共57页。H能用于任何大小的数据分组;提供保密(仅A和B共享K)A->B:E(KUb,M)Step FunctionName FunctionValue每一轮以当前的512位数据块(Yq)和128位缓冲值ABCD作为输入,并修改缓冲值的内容。T表,由sin函数构造而成。f2,K,W[20…39]T表,由sin函数构造而成。令N=L16,则长度某些应用不关心报文的保密而只关心报文的真实性;输出:160位消息摘要;其中:IV=ABCDE的初始值;MD4用3轮,每轮16步,MD5用4轮,每轮16步.SUM32=对每一个输入对的字求加模232D=1032547611.1认证与认证系统(Cont.)网络环境中的攻击(认证的需求)1.泄漏2.通信量分析3.伪装(假报文)4.内容篡改(插入,删除,调换和修改)5.序号篡改(报文序号的修改)6.计时篡改(报文延迟或回放)7.抵赖(否认收或发某报文)1,2加密,3~6报文认证,7数字签名(3~6)第3页,共57页。
保密和认证同时是信息系统安全的两个方面,但它们是两个不同属性的问题,认证不能自动提供保密性,而保密性也不能自然提供认证功能。一个纯认证系统的模型如下图所示:窜扰者信宿信源认证编码器认证译码器信道安全信道密钥源第4页,共57页。11.1认证与认证系统三类产生认证码的函数报文加密以整个报文的密文为认证码;报文认证码(MAC)是报文和密钥的公共函数,产生一个定长值作为认证码;Hash函数一个将任意长度的报文映射为定长的Hash值的公共函数,以Hash值作为认证码;第5页,共57页。11.2报文加密提供认证常规加密问题:如果报文是任意比特的组合,接收方没有自动的方法确定报文的合法性.解决方案:强调明文的某种结构,这种结构是易于识别但不能复制且无需加密的.第6页,共57页。对称加密与认证的关系A->B:E(K,M)提供保密(仅A和B共享密钥K)提供一定程度的认证仅来自A传输中不会被更改需要某种结构或冗余不提供签名接收者可以伪造报文发送者可以否认报文第7页,共57页。下图的通信双方,用户A为发信方,用户B为接收方。用户B接收到信息后,通过解密来判决信息是否来自A,信息是否是完整的,有无窜扰。信源信宿MEEk(M)DMA方B方kkDk(Ek(M))
常规加密:具有机密性,可认证第8页,共57页。11.2报文加密提供认证(Cont.)公开密钥加密发送方用自己的私钥加密报文,接收方用发送方的公钥解密(与对称密钥加密原理相同,需要某种特定报文结构).该方案不提供加密.发送方先用自己的密钥加密以提供认证,然后使用接收方公钥加密提供保密性.缺点是效率不高.第9页,共57页。公开密钥加密与认证的关系A->B:E(KUb,M)提供保密(仅B能解密)不提供认证A->B:E(KRa,M)提供认证和签名(仅有A可加密,需要某种结构和冗余,任何一方均能验证签名)A->B:E(KUb,E(KRa,M))可提供保密可提供认证和签名第10页,共57页。KUb(B方的公钥)MEEKUb(M)DMA方B方KRb(1)公钥加密:具有机密性MEEKRa(M)DMA方B方KRaKUb(2)公钥加密:认证和签名第11页,共57页。MEEkRa(M)EEKUb(EkRa(M))A方KRaKUbDEkRa(M)DMB方KRbKUa(3)公钥加密:机密性,可认证和签名第12页,共57页。11.3报文认证码(MAC)认证码(MAC,也称密码检验和)对选定报文,使用一个密钥,产生一个短小的定长数据分组,称认证码,并将它附加在报文中,提供认证功能.(MAC=Ck(M),其中M是可变长的报文,K是共享密钥,Ck(M)是定长的认证码.)应用认证码,如果只有收发方知道密钥,同时收到的MAC与计算得出的MAC匹配:确认报文未被更改;确信报文来自所谓的发送者;如果报文包含序号,可确信该序号的正确性;第13页,共57页。11.3报文认证码(Cont.)报文认证码的基本用法1A->B:M||Ck(M)
提供认证,因仅A和B共享K;CMMCk(M)KCK比较源点终点第14页,共57页。11.3报文认证码(Cont.)报文认证码的基本用法2A->B:Ek2(M||Ck1(M))
提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;CMEk2(M||Ck1(M))K1CK1比较源点终点EK2DK2Ck1(M)第15页,共57页。11.3报文认证码(Cont.)报文认证码的基本用法3A->B:Ek2(M)||Ck1(Ek2(M))
提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;CMCk1(Ek2(M))K1CK2比较源点终点EK2DK1Ek2(M)M第16页,共57页。11.3报文认证码(Cont.)为什么使用报文认证(而不是用常规加密)适用于报文广播(并不需要每个点都有密钥);报文加密解密的工作量比较大;某些应用不关心报文的保密而只关心报文的真实性;认证函数与保密函数的分离能提供结构上的灵活性(认证与保密可在网络协议的不同层次进行).认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当报文解密后,保护就失效了).第17页,共57页。11.3报文认证码(Cont.)注意认证函数类似加密函数,但它是不可逆的,这个性质使其比加密函数更难破解;认证函数并不提供数字签名;认证码的信息论*G.J.Simmons发展的认证系统的信息理论,类似保密系统的信息理论,也是将信息论用于研究认证系统的理论安全性和实际安全性问题,指出认证系统的性能极限以及设计认证码必须遵循的原则,是研究认证问题的理论基础.第18页,共57页。11.3报文认证码(Cont.)MAC函数应有如下性质(攻击者没有K):有M和Ck(M),试图生成M’,使得Ck(M’)=Ck(M),这在计算上不可行;Ck(M)应能均匀分布;对于随机选取的报文M和M’,Ck(M)=Ck(M’)的概率为2-n其中n为MAC的比特长度;(抗选择明文攻击)报文M’为M的某种已知代换,即M’=f(M),则Ck(M)=Ck(M’)的概率为2-n.第19页,共57页。11.3报文认证码(Cont.)基于DES的报文认证码描述如下:被认证报文分成连续的64bit分组:D1,D2,…Dn(必要时用0填充).使用DES算法E,密钥K,数据认证码计算如下(16<=
M<=64):
C1=Ek(D1)C2=Ek(D2C1)...Cn=Ek(Dn
Cn-1)第20页,共57页。11.4Hash函数(散列,哈希函数)Hash函数Hash函数是将任意长度的报文映射成一个较短的定长输出报文的函数.如下形式:h=H(M),M是变长的报文,h是定长的Hash值.Hash函数的目的是为文件、报文或其它的分组数据产生“数字指纹”.第21页,共57页。11.4Hash函数(Cont.)使用Hash码提供报文认证的方式(a)A->B:Ek(M||H(M))提供保密(仅A和B共享K)提供认证(加密保护H(M))(b)A->B:M||Ek(H(M))提供认证(加密保护H(M))(c)A->B:M||EKRa(H(M))提供认证和数字签名(加密保护H(M),且仅A能生成EKRa(H(M))第22页,共57页。11.4Hash函数(Cont.)使用Hash码提供报文认证的方式(续.)(d)A->B:Ek(M||EKRa(H(M)))提供认证和数字签名提供保密(仅A和B共享K)(e)A->B:M||H(M||S)提供认证(S是通信双方共享的一个秘密值,仅A和B共享S)(f)A->B:Ek(M||H(M||S))提供认证和数字签名(仅A和B共享S)提供保密(仅A和B共享K)第23页,共57页。EKUb(EkRa(M))C1=Ek(D1)报文认证码的基本用法14Hash函数(Cont.对选定报文,使用一个密钥,产生一个短小的定长数据分组,称认证码,并将它附加在报文中,提供认证功能.Hash函数的目的是为文件、报文或其它的分组数据产生“数字指纹”.H,T[33…48],X[3i]以整个报文的密文为认证码;提供认证(S是通信双方共享的一个秘密值,仅A和B共享S)用户B接收到信息后,通过解密来将数据分组与Hash值异或形成新的Hash值.H能用于任何大小的数据分组;如果报文包含序号,可确信该序号的正确性;11.4Hash函数(Cont.)为什么要避免加密的方法?(见方法(e))加密软件慢;加密硬件开销不可忽略;加密硬件是针对大长度数据进行优化的(换而言之,对小数据分组加密开销大);加密算法可能受专利保护;加密算法易遭美国政府的出口限制;第24页,共57页。11.4Hash函数(Cont.)Hash函数的需求H能用于任何大小的数据分组;H产生定长输出;对任意给定的x,H(x)要相对易于计算,使得软硬件实现都实际可行;对任意给定的码h,寻求x使得H(x)=h在计算上是不可行的(单向性);任意给定分组x,寻求不等于x的y,使得H(y)=H(x)在计算上不可行(弱抗攻击性);寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可行(强抗攻击性);第25页,共57页。11.4Hash函数(Cont.)简单的Hash函数每个分组按比特异或:Ci=bi1bi2…...bim其中,Ci是第i个比特的Hash码,1in;m是输入的n比特分组数;
bij是第j分组的第i比特;(简单的奇偶校验)针对应用中的可预测数据格式,提出如下改进方案:第26页,共57页。11.4Hash函数(Cont.)简单的Hash函数的改进方案先将n比特的Hash值设置为0;按如下方式依次处理数据分组:将当前的Hash值循环左移一位.将数据分组与Hash值异或形成新的Hash值.这将起到输入数据完全随机化的效果,并且将输入中的数据格式掩盖掉.第27页,共57页。11.4Hash函数(Cont.)生日攻击(基于生日悖论)
在k个人中,找一个与某人生日相同的人的概率超过0.5时,只需k>183;而在此人群中,至少有两个人生日相同的概率超过0.5,只需k>23.第28页,共57页。第12章Hash算法MD5和MD4安全Hash算法SHARIPEMD-160HMAC第29页,共57页。bY0nIV=CV0fbY1nfbYL-1nCVL-1fCV1nnIV=初始值CV=链接值Yi=第i个输入数据块f=压缩算法n=Hash码的长度b=输入块的长度安全Hash算法的一般结构CVLCV0=IV=initialn-bitvalueCVi=f(CVi-1,Yi-1)(1iL)H(M)=CVL第30页,共57页。MD5算法输入:任意长度的消息输出:128位消息摘要处理:以512位输入数据块为单位MD5(RFC1321)wasdevelopedbyRonRivest(“R”oftheRSA)atMITin90’s.第31页,共57页。
报文KbitsL512bits=N32bits报文长度(Kmod264)填充(1to512bits)100…0Y0512bitsY1512bitsYq512bitsYL-1512bitsHMD5IV128HMD5CV1128HMD5CVq128HMD5CVL-1128512512512512128-bit摘要MD5产生报文摘要的过程第32页,共57页。MD5算法描述步骤1:添加填充位(一个1和若干个0)。在消息的最后添加适当的填充位使得数据位的长度满足length448mod512。步骤2:添加长度。原始消息长度(二进制位的个数),用64位表示。如果长度超过264位,则仅取最低64位,即mod264。到此为止,我们已经得到一个512位的整倍数长度的新的消息。可以表示为L个512位的数据块:Y0,Y1,…,YL-1。其长度为L512bits。令N=L16,则长度为N个32位的字。令M[0…N-1]表示以字为单位的消息表示。第33页,共57页。MD5算法描述(Cont.)步骤3:初始化MD缓冲区。一个128位MD缓冲区用以保存中间和最终Hash函数的结果。它可以表示为4个32位的寄存器(A,B,C,D)。
寄存器初始化为以下的16进制值。
A=67452301 B=EFCDAB89 C=98BADCFE D=10325476第34页,共57页。MD5算法描述(Cont.)上述值的存储方式为:WordA:01234567WordB:89ABCDEFWordC:FEDCBA98WordD:76543210第35页,共57页。MD5算法描述(Cont.)步骤4:处理消息块(512位=16个32位字)。压缩函数是本算法的核心(HMD5)。它包括4轮处理。四轮处理具有相似的结构,但每次使用不同的基本逻辑函数,记为F,G,H,I。每一轮以当前的512位数据块(Yq)和128位缓冲值ABCD作为输入,并修改缓冲值的内容。每次使用64元素表T[1…64]中的四分之一.第36页,共57页。T表,由sin函数构造而成。T的第i个元素表示为T[i],其值等于232abs(sin(i)),其中i是弧度。由于abs(sin(i))是一个0到1之间的数,T的每一个元素是一个可以表示成32位的整数。T表提供了随机化的32位模板,消除了在输入数据中的任何规律性的特征。
T[1]=D76AA478T[2]=E8C7B756T[3]=242070DBT[4]=C1BDCEEE...T[16]=49b40821T[49]=F4292244T[50]=432AFF97T[51]=AB9423A7T[52]=FC93A039...T[64]=EB86D391第37页,共57页。步骤5:输出结果。所有L个512位数据块处理完毕后,最后的结果就是128位消息摘要。
CV0=IV CVq+1=SUM32(CVq,RFI[Yq,RFH[Yq,RFG[Yq,RFF[Yq,CVq]]]]) MD=CVL
其中:IV=ABCD的初始值(见步骤3)
Yq=消息的第q个512位数据块
L=消息中数据块数;
CVq=链接变量,用于第q个数据块的处理
RFx=使用基本逻辑函数x的一轮功能函数。
MD=最终消息摘要结果
SUM32=分别按32位字计算的模232加法结果。MD5算法描述(Cont.)第38页,共57页。F,T[1…16],X[i]16stepsG,T[17…32],X[2i]16stepsH,T[33…48],X[3i]16stepsI,T[49…64],X[4i]16steps++++ABCDABCDABCDABCDCVq12832Yq512CVq+1128单个512-bit分组的MD5处理过程+ismod232第39页,共57页。MD5压缩函数每一轮包含对缓冲区ABCD的16步操作所组成的一个序列。ab+((a+g(b,c,d)+X[k]+T[i])<<<s)其中,a,b,c,d=缓冲区的四个字,以一个给定的次序排列;g=基本逻辑函数F,G,H,I之一;<<<s=对32位字循环左移s位X[k]=M[q16+k]=在第q个512位数据块中的第k个32位字T[i]=表T中的第i个32位字;+=模232的加;第40页,共57页。逻辑函数的真值表bcdFGHI00000010011010010011001110011000011101010111011001111110第41页,共57页。ABCDABCD+++CLSs+gX[k]T[i]Functiongg(b,c,d)1F(b,c,d)(bc)(bd)2G(b,c,d)(bd)(cd)3H(b,c,d)bcd4I(b,c,d)c(bd)2i=(1+5i)mod163i=(5+3i)mod164i=7imod16基本MD5操作(单步)第42页,共57页。MD4(1990年10月作为RFC1320发表)
byRonRivestatMITMD4的设计目标安全性:速度:32位体系结构下计算速度快.简明与紧凑:易于编程.有利的小数在前的结构(Intel80xxx,Pentium)MD4与MD5的区别MD4用3轮,每轮16步,MD5用4轮,每轮16步.MD4中第一轮没有常量加;MD5中64步每一步用了一个不同的常量T[i];MD5用了四个基本逻辑函数,每轮一个;MD4用了三个.MD5每轮加上前一步的结果;MD4没有.第43页,共57页。SHA-1算法逻辑输入:最大长度为264位的消息;输出:160位消息摘要;处理:输入以512位数据块为单位处理;SHA由美国国家标准技术研究所NIST开发,作为联邦信息处理标准于1993年发表(FIPSPUB180),1995年修订,作为SHA-1(FIPSPUB180-1),SHA-1基于MD4设计。第44页,共57页。SHA-1算法描述步骤1:添加填充位(一个1和若干个0)。在消息的最后添加适当的填充位使得数据位的长度满足length448mod512。步骤2:添加长度。一个64位块,表示原始消息长度,64位无符号整数。
步骤3:初始化MD缓冲区。一个160位MD缓冲区用以保存中间和最终Hash函数的结果。它可以表示为5个32位的寄存器(A,B,C,D,E)。 第45页,共57页。初始化为:
A=67452301 B=EFCDAB89 C=98BADCFE D=10325476 E=C3D2E1F0前四个与MD5相同,但存储为大数在前的形式.步骤4:以512位数据块为单位处理消息。四轮,每轮20步。四个基本逻辑函数:f1,f2,f3,f4步骤5:输出。全部L个512位数据块处理完毕后,输出160位消息摘要。第46页,共57页。CV0=IVCVq+1=SUM32(CVq,ABCDEq)MD=CVL其中:IV=ABCDE的初始值;
ABCDEq对第q轮消息数据块处理最后一轮所得的结果;
L=数据块的个数
SUM32=对每一个输入对的字求加模232
MD=最后的消息摘要值。第47页,共57页。ABCDABCD++++ftEES5WtKtS30基本SHA操作(单步)第48页,共57页。SHA-1压缩函数
A,B,C,D,E(E+f(t,B,C,D)+S5(A)+Wt+Kt),A,S30(B),C,D其中,
A,B,C,D,E=缓冲区的5个字;
t =步数,0<=t<=79; f(t,B,C,D)=步t的基本逻辑函数;
Sk =循环左移k位给定的32位字;
Wt=一个从当前512数据块导出的32位字;
Kt=一个用于加法的常量,四个不同的值,如前所述 + =加模232。第49页,共57页。f1,K,W[0…19]20stepsf2,K,W[20…39]20stepsf3,K,W[40…59]20stepsf4,K,W[60…79]20steps++++ABCEAEAEAECVq16032Yq512CVq+1160SHA-1Processingofasingle512-bitblock+ismod232DBCDBCDBCD+第50页,共57页。Step FunctionName FunctionValue(0t19) f1=f(t,B,C,D) (BC)(BD)(20t39) f2=f(t,B,C,D) BCD(40t59) f3=f(t,B,C,D) (BC)(BD)(CD)(60t79) f4=f(t,B,C,D) BCDWt=S1(Wt-16
Wt-14Wt-3)Yq512bitsW0W1W15W16
S1XORW0W2W8W13Wt
S1XORWt-16Wt-14Wt-8Wt-3W79
S1XORW63W65W71W76第51页,共57页。RIPEMD-160输入:任意长度的消息输出:长度为160位的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论