《认证理论与技术.ppt》由会员分享,可在线阅读,更多相关《认证理论与技术.ppt(57页珍藏版)》请在三一办公上搜索。
1、第11章 认证理论与技术(1),认证、认证码、Hash函数,11.1认证与认证系统,认证(Authentication)是防止主动攻击的重要技术,对开发系统安全性有重要作用.认证的主要目的实体认证(发送者非冒充)消息认证(验证信息的完整性),11.1认证与认证系统(Cont.),网络环境中的攻击(认证的需求)1.泄漏2.通信量分析3.伪装(假报文)4.内容篡改(插入,删除,调换和修改)5.序号篡改(报文序号的修改)6.计时篡改(报文延迟或回放)7.抵赖(否认收或发某报文)1,2加密,36报文认证,7数字签名(36),保密和认证同时是信息系统安全的两个方面,但它们是两个不同属性的问题,认证不能自
2、动提供保密性,而保密性也不能自然提供认证功能。一个纯认证系统的模型如下图所示:,窜扰者,信宿,信源,认证编码器,认证译码器,信道,安全信道,密钥源,11.1认证与认证系统,三类产生认证码的函数报文加密以整个报文的密文为认证码;报文认证码(MAC)是报文和密钥的公共函数,产生一个定长值作为认证码;Hash函数一个将任意长度的报文映射为定长的Hash值的公共函数,以Hash值作为认证码;,11.2报文加密提供认证,常规加密问题:如果报文是任意比特的组合,接收方没有自动的方法确定报文的合法性.解决方案:强调明文的某种结构,这种结构是易于识别但不能复制且无需加密的.,对称加密与认证的关系,A-B:E(
3、K,M)提供保密(仅A和B共享密钥K)提供一定程度的认证仅来自A传输中不会被更改需要某种结构或冗余不提供签名接收者可以伪造报文发送者可以否认报文,下图的通信双方,用户A为发信方,用户B为接收方。用户B接收到信息后,通过解密来判决信息是否来自A,信息是否是完整的,有无窜扰。,常规加密:具有机密性,可认证,11.2报文加密提供认证(Cont.),公开密钥加密发送方用自己的私钥加密报文,接收方用发送方的公钥解密(与对称密钥加密原理相同,需要某种特定报文结构).该方案不提供加密.发送方先用自己的密钥加密以提供认证,然后使用接收方公钥加密提供保密性.缺点是效率不高.,公开密钥加密与认证的关系,A-B:E
4、(KUb,M)提供保密(仅B能解密)不提供认证A-B:E(KRa,M)提供认证和签名(仅有A可加密,需要某种结构和冗余,任何一方均能验证签名)A-B:E(KUb,E(KRa,M)可提供保密可提供认证和签名,KUb(B方的公钥),(1)公钥加密:具有机密性,(2)公钥加密:认证和签名,(3)公钥加密:机密性,可认证和签名,11.3 报文认证码(MAC),认证码(MAC,也称密码检验和)对选定报文,使用一个密钥,产生一个短小的定长数据分组,称认证码,并将它附加在报文中,提供认证功能.(MAC=Ck(M),其中M是可变长的报文,K是共享密钥,Ck(M)是定长的认证码.)应用认证码,如果只有收发方知道
5、密钥,同时收到的MAC与计算得出的MAC匹配:确认报文未被更改;确信报文来自所谓的发送者;如果报文包含序号,可确信该序号的正确性;,11.3 报文认证码(Cont.),报文认证码的基本用法1A-B:M|Ck(M)提供认证,因仅A和B共享K;,C,M,M,Ck(M),K,C,K,比较,源点,终点,11.3 报文认证码(Cont.),报文认证码的基本用法2A-B:Ek2(M|Ck1(M)提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;,C,M,Ek2(M|Ck1(M),K1,C,K1,比较,源点,终点,E,K2,D,K2,Ck1(M),11.3 报文认证码(Cont.),报文认证码的基
6、本用法3A-B:Ek2(M)|Ck1(Ek2(M)提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;,C,M,Ck1(Ek2(M),K1,C,K2,比较,源点,终点,E,K2,D,K1,Ek2(M),M,11.3 报文认证码(Cont.),为什么使用报文认证(而不是用常规加密)适用于报文广播(并不需要每个点都有密钥);报文加密解密的工作量比较大;某些应用不关心报文的保密而只关心报文的真实性;认证函数与保密函数的分离能提供结构上的灵活性(认证与保密可在网络协议的不同层次进行).认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当报文解密后,保护就失效了).,11.3 报文认证码
7、(Cont.),注意认证函数类似加密函数,但它是不可逆的,这个性质使其比加密函数更难破解;认证函数并不提供数字签名;认证码的信息论*G.J.Simmons发展的认证系统的信息理论,类似保密系统的信息理论,也是将信息论用于研究认证系统的理论安全性和实际安全性问题,指出认证系统的性能极限以及设计认证码必须遵循的原则,是研究认证问题的理论基础.,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的
8、比特长度;(抗选择明文攻击)报文M为M的某种已知代换,即M=f(M),则Ck(M)=Ck(M)的概率为2-n.,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),11.4 Hash函数(散列,哈希函数),Hash函数Hash函数是将任意长度的报文映射成一个较短的定长输出报文的函数.如下形式:h=H(M),M是变长的报文,h是定长的Hash值.Hash函数的目的是为文件、报文
9、或其它的分组数据产生“数字指纹”.,11.4 Hash函数(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),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
10、共享S)(f)A-B:Ek(M|H(M|S)提供认证和数字签名(仅A和B共享S)提供保密(仅A和B共享K),11.4 Hash函数(Cont.),为什么要避免加密的方法?(见方法(e)加密软件慢;加密硬件开销不可忽略;加密硬件是针对大长度数据进行优化的(换而言之,对小数据分组加密开销大);加密算法可能受专利保护;加密算法易遭美国政府的出口限制;,11.4 Hash函数(Cont.),Hash函数的需求H能用于任何大小的数据分组;H产生定长输出;对任意给定的x,H(x)要相对易于计算,使得软硬件实现都实际可行;对任意给定的码h,寻求x使得H(x)=h在计算上是不可行的(单向性);任意给定分组x,
11、寻求不等于x的y,使得H(y)=H(x)在计算上不可行(弱抗攻击性);寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可行(强抗攻击性);,11.4 Hash函数(Cont.),简单的Hash函数每个分组按比特异或:Ci=bi1bi2.bim其中,Ci是第i个比特的Hash码,1in;m是输入的n比特分组数;bij是第j分组的第i比特;(简单的奇偶校验)针对应用中的可预测数据格式,提出如下改进方案:,11.4 Hash函数(Cont.),简单的Hash函数的改进方案先将n比特的Hash值设置为0;按如下方式依次处理数据分组:将当前的Hash值循环左移一位.将数据分组与Hash值异或形成
12、新的Hash值.这将起到输入数据完全随机化的效果,并且将输入中的数据格式掩盖掉.,11.4 Hash函数(Cont.),生日攻击(基于生日悖论)在k个人中,找一个与某人生日相同的人的概率超过0.5时,只需k183;而在此人群中,至少有两个人生日相同的概率超过0.5,只需k23.,第12章 Hash算法,MD5和MD4安全Hash算法SHARIPEMD-160HMAC,b,Y0,n,IV=CV0,f,b,Y1,n,f,b,YL-1,n,CVL-1,f,CV1,n,n,IV=初始值CV=链接值Yi=第i 个输入数据块f=压缩算法n=Hash码的长度b=输入块的长度,安全Hash算法的一般结构,CV
13、L,CV0=IV=initial n-bit valueCVi=f(CVi-1,Yi-1)(1 i L)H(M)=CVL,MD5 算法,输入:任意长度的消息输出:128位消息摘要处理:以512位输入数据块为单位,MD5(RFC 1321)was developed by Ron Rivest(“R”of the RSA)at MIT in 90s.,报文,K bits,L512 bits=N 32bits,1000,Y0,512 bits,Y1,512 bits,Yq,512 bits,YL-1,512 bits,HMD5,IV,128,HMD5,CV1,128,HMD5,CVq,128,HM
14、D5,CVL-1,128,512,512,512,512,128-bit 摘要,MD5产生报文摘要的过程,MD5算法描述,步骤1:添加填充位(一个1 和若干个0)。在消息的最后添加适当的填充位使得数据位的长度满足length 448 mod 512。步骤2:添加长度。原始消息长度(二进制位的个数),用64位表示。如果长度超过264位,则仅取最低64位,即mod 264。到此为止,我们已经得到一个512位的整倍数长度的新的消息。可以表示为L个512位的数据块:Y0,Y1,YL-1。其长度为L512bits。令N=L16,则长度为N个32位的字。令M0N-1表示以字为单位的消息表示。,MD5算法描
15、述(Cont.),步骤3:初始化MD缓冲区。一个128位MD缓冲区用以保存中间和最终Hash函数的结果。它可以表示为4个32位的寄存器(A,B,C,D)。寄存器初始化为以下的16进制值。A=67452301B=EFCDAB89C=98BADCFED=10325476,MD5算法描述(Cont.),上述值的存储方式为:,Word A:01 23 45 67Word B:89 AB CD EFWord C:FE DC BA 98Word D:76 54 32 10,MD5算法描述(Cont.),步骤4:处理消息块(512位=16个32位字)。压缩函数是本算法的核心(HMD5)。它包括4轮处理。四轮
16、处理具有相似的结构,但每次使用不同的基本逻辑函数,记为F,G,H,I。每一轮以当前的512位数据块(Yq)和128位缓冲值ABCD作为输入,并修改缓冲值的内容。每次使用64元素表T164中的四分之一.,T表,由sin 函数构造而成。T的第i个元素表示为Ti,其值等于 232abs(sin(i),其中i是弧度。由于abs(sin(i)是一个0到1之间的数,T的每一个元素是一个可以表示成32位的整数。T表提供了随机化的32位模板,消除了在输入数据中的任何规律性的特征。,T1=D76AA478T2=E8C7B756T3=242070DBT4=C1BDCEEET16=49b40821,T49=F429
17、2244T50=432AFF97T51=AB9423A7T52=FC93A039T64=EB86D391,步骤5:输出结果。所有L个512位数据块处理完毕后,最后的结果就是128位消息摘要。CV0=IV CVq+1=SUM32(CVq,RFIYq,RFHYq,RFGYq,RFFYq,CVq)MD=CVL 其中:IV=ABCD的初始值(见步骤3)Yq=消息的第q个512位数据块 L=消息中数据块数;CVq=链接变量,用于第q个数据块的处理 RFx=使用基本逻辑函数x的一轮功能函数。MD=最终消息摘要结果 SUM32=分别按32位字计算的模232加法结果。,MD5算法描述(Cont.),F,T11
18、6,Xi16 steps,G,T1732,X2i16 steps,H,T3348,X3i16 steps,I,T4964,X4i16 steps,+,+,+,+,A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D,CVq,128,32,Yq,512,CVq+1,128,单个 512-bit 分组的MD5 处理过程,+is mod 232,MD5 压缩函数,每一轮包含对缓冲区ABCD的16步操作所组成的一个序列。ab+(a+g(b,c,d)+Xk+Ti)s)其中,a,b,c,d=缓冲区的四个字,以一个给定的次序排列;g=基本逻辑函数F,G,H,I之一;s=对32位字循环左移s位Xk=
19、Mq16+k=在第q个512位数据块中的第k个32位字Ti=表T中的第i个32位字;+=模 232的加;,逻辑函数的真值表,b c d F G H I0 0 0 0 0 0 10 0 1 1 0 1 00 1 0 0 1 1 00 1 1 1 0 0 11 0 0 0 0 1 11 0 1 0 1 0 11 1 0 1 1 0 01 1 1 1 1 1 0,A,B,C,D,A,B,C,D,+,+,+,CLSs,+,g,Xk,Ti,Function g g(b,c,d)1 F(b,c,d)(bc)(bd)2 G(b,c,d)(bd)(cd)3 H(b,c,d)bcd4 I(b,c,d)c(bd)
20、,2i=(1+5i)mod 163i=(5+3i)mod 164i=7i mod 16,基本MD5操作(单步),MD4(1990年10月作为RFC1320发表)by Ron Rivest at MIT,MD4的设计目标安全性:速度:32位体系结构下计算速度快.简明与紧凑:易于编程.有利的小数在前的结构(Intel 80 xxx,Pentium)MD4与MD5的区别MD4用3轮,每轮16 步,MD5用4轮,每轮16步.MD4中第一轮没有常量加;MD5中64步每一步用了一个不同的常量 Ti;MD5用了四个基本逻辑函数,每轮一个;MD4用了三个.MD5每轮加上前一步的结果;MD4没有.,SHA-1
21、算法逻辑,输入:最大长度为264位的消息;输出:160位消息摘要;处理:输入以512位数据块为单位处理;,SHA由美国国家标准技术研究所NIST开发,作为联邦信息处理标准于1993年发表(FIPS PUB 180),1995年修订,作为SHA-1(FIPS PUB 180-1),SHA-1基于MD4设计。,SHA-1 算法描述,步骤1:添加填充位(一个1 和若干个0)。在消息的最后添加适当的填充位使得数据位的长度满足length 448 mod 512。步骤2:添加长度。一个64位块,表示原始消息长度,64位无符号整数。步骤3:初始化MD缓冲区。一个160位MD缓冲区用以保存中间和最终Hash
22、函数的结果。它可以表示为5个32位的寄存器(A,B,C,D,E)。,初始化为:A=67452301B=EFCDAB89C=98BADCFED=10325476E=C3D2E1F0前四个与MD5相同,但存储为大数在前的形式.步骤4:以512位数据块为单位处理消息。四轮,每轮20步。四个基本逻辑函数:f1,f2,f3,f4步骤5:输出。全部L个512位数据块处理完毕后,输出160位消息摘要。,CV0=IVCVq+1=SUM32(CVq,ABCDEq)MD=CVL其中:IV=ABCDE的初始值;ABCDEq对第q轮消息数据块处理最后一轮所得的结果;L=数据块的个数 SUM32=对每一个输入对的字求加
23、模232 MD=最后的消息摘要值。,A,B,C,D,A,B,C,D,+,+,+,+,ft,E,E,S5,Wt,Kt,S30,基本SHA操作(单步),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。,f1,K,W01920 steps,f2,K,W203920 steps,f3,K,
24、W405920 steps,f4,K,W607920 steps,+,+,+,+,A,B,C,E,A,E,A,E,A,E,CVq,160,32,Yq,512,CVq+1,160,SHA-1 Processing ofa single 512-bit block,+is mod 232,D,B,C,D,B,C,D,B,C,D,+,StepFunction NameFunction Value(0 t 19)f1=f(t,B,C,D)(BC)(BD)(20 t 39)f2=f(t,B,C,D)BC D(40 t 59)f3=f(t,B,C,D)(BC)(BD)(CD)(60 t 79)f4=f(t
25、,B,C,D)BC D,Wt=S1(Wt-16 Wt-14 Wt-3),Yq,512bits,W0,W1,W15,W16,S1,XOR,W0 W2 W8 W13,Wt,S1,XOR,Wt-16 Wt-14 Wt-8 Wt-3,W79,S1,XOR,W63 W65 W71 W76,RIPEMD-160,输入:任意长度的消息输出:长度为160位的消息摘要处理:以512位数据块为单位,欧洲RACE Integrity Primitives Evaluation(RIPE)Project.最早为128位RIPEMD,后改进成为160位消息摘要。,RIPEMD-160 Logic,步骤1:添加填充位。1
26、00,满足length 448 mod 512,步骤2:添加长度。64位无符号整数,little-endian,步骤3:初始化MD缓冲区。A=67452301B=EFCDAB89C=98BADCFED=10325476E=C3D2E1F0,步骤4:处理512位消息数据块(16字)。10轮,每轮16步;基本逻辑函数:f1,f2,f3,f4,f5,比较:MD5SHA-1RIPEMD-160摘要长度 128位160位160位基本处理单位 512位512位512位步数 64(4 of 16)80(4 of 20)160(5 paired of 16)最大消息长度 无限264-1位264-1位基本逻辑函
27、数 445加法常数 6449Endianness Little-endianBig-endianLittle-endian,性能 32.4 Mbps14.4Mbps13.6Mbps,Http:/,HMAC(RFC 2104),基于hash函数的消息认证码(MAC)MAC for IP securitySSL,HMAC算法,H=嵌入Hash函数(MD5,SHA-1,RIPEMD-160)M=消息(包括Hash函数所需填充位)Yi=M的第i 个数据块,0 i L-1L=M的数据块数b=数据块的位数n=嵌入Hash函数产生的Hash码长度位数K=保密密钥。如果密钥长度大于b,则密钥送入Hash函数 形成一个n位的密钥;推荐程度大于等于nK+=K在左部添加0使得其长度为b位ipad=00110110重复 b/8次opad=01011010重复b/8次,HMACK=HK+opad)|H(K+ipad)|M,HMAC的结构,