密码技术基础.ppt

上传人:本田雅阁 文档编号:2627491 上传时间:2019-04-24 格式:PPT 页数:100 大小:2.43MB
返回 下载 相关 举报
密码技术基础.ppt_第1页
第1页 / 共100页
密码技术基础.ppt_第2页
第2页 / 共100页
密码技术基础.ppt_第3页
第3页 / 共100页
亲,该文档总共100页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《密码技术基础.ppt》由会员分享,可在线阅读,更多相关《密码技术基础.ppt(100页珍藏版)》请在三一文库上搜索。

1、第2章 密码技术基础,2.1 密码技术的基本概念 2.2 古典加密技术 2.3 现代加密技术,2.1 密码技术的基本概念,采用密码方法可以隐藏和保护需要保密的信息,使未授权者不能获得该信息。加密技术是对传输过程中的数据进行保护的重要方法, 也是对存储在媒体上的数据内容加以保护的一种有效手段。加密已经成为实现网络安全的一种有效又必不可少的技术手段。 传统加密体制的整个过程如图2.1所示。此图是加密/解密的一个基本原理图,需要加密的信息称为明文(Plaintext), 这个明文信息由一个加密函数变换成密文 (Ciphertext), 这个函数以一个密钥(Key)作为参数, 所以可以用c=E(m,k

2、e)来表达这个加密过程。,解密过程基本类似,用一个解密函数和解密密钥对密文进行变换,成为明文,即m=D(c,kd),所以有m=D(E(m,ke), kd)。如果ke=kd,那么这种加密体制称为单钥或对称密码体制(One-Key or Symmetric Cryptosystem)。如果kekd, 那么这种加密体制称为双钥或非对称密码体制(Two-Key or Asymmetric Cryptosystem)。这是1976年由Diffie和Hellman等人所开创的新体制。 密钥是密码体制安全的关键,它的产生和管理是密码技术中的重要研究课题。,图 2.1 传统加密体制的基本过程,一般加密/解密的

3、函数(算法)是公开的,一个算法的强度(被称为破解的难度)除了依赖于算法本身以外,还往往与密钥长度有关。 通常密钥越长,强度越高, 这是因为密钥越长, 被猜出的可能性越低。所以,保密性在于一个强度高的算法加上一个长度长的密钥。,2.2 古典加密技术,2.2.1 置换密码 置换密码亦称换位密码。置换只不过是一个简单的换位。 每个置换都可以用一个置换矩阵来Ek表示。每个置换都有一个与之对应的逆置换Dk。置换密码的特点是仅有一个发送方和接收方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。,令明文m=m1, m2, , mL。

4、令置换矩阵所决定的置换为, 则加密置换,c=Ek(m)=(c1, c2, , cL)=m(1), m(2), ,m(L),解密置换,例,置换密码。,最后一段长不足5, 加添一个字母x。 将各段的字母序号按下述置换矩阵进行换位:,得到密文如下:,STIEH EMSLP STSOP EITLB SRPNA TOIIS IOPCN SHXRE,利用下述置换矩阵:,可将密文恢复为明文。,L=5时可能的置换矩阵总数为5!=120。一般为L!个。可以证明,在给定L下所有的置换矩阵构成一个L!对称群。,2.2.2 代换密码 令表示明文字母表,内有q个“字母”或“字符”。设其顺序号为:0, 1, , q-1,

5、可以将映射为一个整数集Zq=0, 1, 2, , q-1,在加密时常将明文信息划分为长为L的信息单元, 称为明文组。以m表示,如 m=(m0, m1, , mL), miZq,令表示明文字母表,内有q个“字母”或“字符”。 设其顺序号为: 0, 1, :, q-1, 可以将映射为一个整数集Z-q=0, 1, 2, :, q-1, 密文组为c=(c1, c2, cL-1), ciZq,代换密码的加密变换是由明文空间到密文空间的映射。,f: mc, m, c,假定函数f是一对一的映射,那么,给定密文c,有且仅有一个对应的明文组m,即对于f存在逆映射f-1,使 f-1(c)=f-1f(m)=m 加密

6、变换通常是在密钥控制下进行的,即 c=f(m, k)=Ek(m),1 单表代换密码 单表代换密码是对明文的所有字母都用同一个固定的明文字母表到密文字母表的映射, 即 f: ZqZq 若明文为m=m0, m1, , 则相应的密文为 c=c0, c1, .=f(m0), f(m1), ,1) 位移代换密码 位移代换密码是最简单的一种代换密码, 其加密变换为 Ek(i)=(i+k)j mod q 0i, jq, 0kq 密钥空间元素个数为q, 其中有一恒等变换, k=0, 解密变换为 D(j)=Eq-k(j)j+q-k(i+k)-ki mod q 例如, 凯撒密码变换是对英文26个字母进行位移代换的

7、密码, 即将每一字母向前推移k位。若q=26,如选择密钥k=5,则有下述变换: 明文: a b c d e f g h i j k l m n o p q r s t u v w x y z 密文: F G H I J K L M N O P Q R S T U V W X Y Z A B C D E,不同的k将得到不同的密文。 于是对于明文: m=caesar cipher is a shift substitution 经凯撒密码变换后得到的密文: cFDHVDU FLSKHU LV D VKLIW VXEVWLWXWLRQ 反向利用同一个对应表, 就可以很容易地从密文: cE(m)FDH

8、VDU FLSKHU LV D VKLIW VXEVWLWXWLRQ 中恢复出原来的明文: m = caesar cipher is a shift substitution,2) 乘数密码 乘数密码的加密变换为 Ek(i)=ikj mod q 0jq 这种密码也称采样密码, 是将明文字母表按序号每隔k位取出一个字母排列而成密文(字母表首尾相连)。显然,当(k,q)=1, 即k与q互素时才是一一对应的。若q为素数,则有q-2个可用密钥。,例如, 英文字母表q=26, 选k=9, 则由明文密文字母对应表 明文: a b c d e f g h i j k l m n o p q r s t u

9、v w x y z 密文: A J S B K T C L U D M V E N W F O X G P Y H Q Z I R 于是对明文:Multiplicativer cipher 有密文: EYVPUFVUSAPUHK SUFLKX。,3) 仿射密码 将移位密码和乘数密码进行组合就可以得到更多的选择方式获得密钥。按 Ek(i)=ik1+k0j mod q k1, k0Zq 其中, (k1, q)=1, 以k1, k0表示密钥。当k0=0时就得到乘数密码,当k1=1时就得到位移密码,q=26时可能的密钥数为 2612-1=311个。,2 多表代换密码 多表代换密码是一系列(两个以上)代

10、换表依次对明文信息的字母进行代换的加密方法。令明文字母表为Zq,令=(1, 2, )为代换序列,明文字母序列为m=m1,m2, , 则相应的密文字母序列为c=Ek(m)=(m)=1(m), 2(m), ,若为非周期的无限序列,则相应的密码为非周期多表代换密码,否则,为周期多表代换密码。 维吉尼亚是法国的密码专家,以他的名字命名的维吉尼亚密码加密算法是多表密码的典型代表。方法如下:,设密钥k=k1, k2, , kn,明文m=m1, m2, mn,加密变换为,Ek(m)=c1, c2, , cn,其中,cimi+ki mod q i=1, 2, , n,例如,令q=26,明文m=polyalph

11、abetic cipher,k=RADIO, 即周期为5。首先将m分解成长为5的序列: polya lphab eticc ipher 每一段用密钥 k=RADIO加密得密文: c=GOOGO CPKTP NTLKQ ZPKMF,表2.1是维吉尼亚代换方阵,利用它可进行加密和解密。 利用密钥k=RADIO对明文polya加密得GOOGO, 第一个G是在r行p列上,第二个O是在a行o列上,第三个O是在d行l列上,以此类推。解密时p是r行含G的列,同理o是a行含O的列。以此可以推出全部密文, 从而恢复明文。,表2.1 维吉尼亚密码代换方阵,表2.1 维吉尼亚密码代换方阵,2.3 现代加密技术,2.

12、3.1 对称加密技术 对称密码技术包括任何加密形式,其中同一个密钥既用于加密又用于解密所涉及的文本,被称为对称密码,这点也是对非对称密码而言的。下面介绍几种著名的对称密码技术。 1、分组加密 2、序列密码,1、分组加密 分组密码将定长的明文块转换成等长的密文,这一过程是在密钥的控制之下。使用逆向变换和同一个密钥来实现解密。 对于当前的许多分组密码,分组大小是 64 位,但这种长度可能会增加。,明文信息通常要比特定的分组大小长得多, 而且使用不同的技术或操作方式。这样的方式示例有:电子编码本(ECB)、 密码分组链接(CBC)或密码反馈(CFB)。ECB 使用同一个密钥简单地将每个明文块一个接一

13、个地进行加密; 在 CBC 方式中, 每个明文块在加密前先与前一密文块进行“异或”运算, 从而增加了复杂程度, 可以使某些攻击更难以实施。 “输出反馈”方式(OFB)类似 CBC 方式,但是进行“异或”的量是独立生成的。 目前CBC 受到广泛使用,例如在 DES(qv)实现中。,迭代的分组密码是那些在加密过程有多次循环的密码, 因此提高了安全性。在每个循环中,可以通过使用特殊的函数从初始密钥派生出的子密钥来应用适当的变换。该附加的计算需求必然会影响加密的速度, 因此在安全性需要和执行速度之间存在着一种平衡。天下没有免费的午餐,密码术也是如此;与其它地方一样,应用适当方法的技巧中有一部分是源于对

14、需要进行的权衡以及它们与需求平衡的关系如何的理解。 ,分组密码包括 DES、IDEA、SAFER、Blowfish 和 Skipjack 最后一个是“美国国家安全局(NSA, US National Security Agency)”限制器芯片中使用的算法。 下面介绍具体的分组密码的实现。,1)DES数据加密算法 DES数据加密算法(DEA, Data Encryption Algorithm)的数据加密标准(DES, Data Encryption Standard)是规范的描述,它出自IBM 的研究工作,并在1997年被美国政府正式采纳。它很可能是使用最广泛的密钥系统,特别是在保护金融数据

15、的安全中,最初开发的 DES 是嵌入硬件中的。通常,自动取款机(ATM, Automated Teller Machine)都使用 DES。,该算法利用一个56+8奇偶校验位(第8, 16, 24, 32, 40, 48, 56, 64位)=64位的密钥对以64位为单位的块数据进行加解密。 这是一个迭代的分组密码,使用称为 Feistel 的技术, 其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去, 但最后一个循环不交换。 DES 使用 16 个循环。,设明文m是0和1组成的长度为64 bit的符号串,密钥k也

16、是64 bit的0、1符号串,即 m=m1, m2, , m64(mi=0或1) k=k1, k2, , k64(ki=0或1) 其中,密钥k只有56 bit有效,k8, k16, k24, , k64是奇偶校验位,在算法中不起作用。加密过程为 DES(m)=IP-1 。T16 。T15 T2 。T1 。IP(m) IP是初始置换,IP-1是它的逆置换。,表2.2 IP的初始置换及逆置换,(1) DES的加密过程 将DES的加密过程用图2.2表示。初始化换位IP,是将输入的二进制明文块T 变换成T0=IP(T), 然后T0经过16次函数f的迭代,最后通过逆初始换位IP-1得到64位的二进制密文

17、输出。两次相邻的迭代之间的关系是,Li=Ri-1 Ri=Li-1f(Ri-1, ki),其中,表示按位做不进位的加法运算,即10=01=1, 0 0=11=0, ki表示48位的子密钥。,图 2.2 DES加密过程,(2)函数f(Ri-1, ki)的结构,Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8),P(Si(Bi),Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8),P(Si(Bi),图2.3中E是位选择表,用来为扩展,表 2.3 位选

18、择表,Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8),P(Si(Bi)),子密钥Ki,要由初始密钥生成,等下讲,Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8),P(Si(Bi),每个6位子块Bi都是选择(代换)函数Si的输入,表2.5 选择(替代)函数S,表2.5 选择(替代)函数S,表2.5 选择(替代)函数S,Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8

19、),P(Si(Bi),输出是一个4位的二进制块,Ri-1,48位 E(Ri-1),B1, B2, B8=kiE(Ri-1),S1(B1) S2(B2), , , S8(B8),P(Si(Bi),把这些子块合并成32位二进制块后,用置换表P置换,表 2.4 换位表,(3)子密钥ki生成算法 ki是由初始密钥推导得到的,初始密钥k是一个64位的二进制块, 其中8位是奇偶校验位,分别位于第8、16、64位。 Step1:子密钥换位函数PC-1 把这些奇偶校验去掉,并把剩下的56位进行换位,可参照实例。,(3)子密钥ki生成算法 Step2:换位后的结果PC-1(k)被分成两半C和D, 各有28位,令

20、Ci和Di分别表示推导ki时所用的C和D的值,变换公式如下 ,Ci=LS(Ci-1) Di=LS(Di-1),式中,LS是循环左移位变换,其中LS1, LS2, LS9, LS16是循环左移一位变换,其余的LSi是循环左移两位变换。C0,D0是C和D的初始值。,(3)子密钥ki生成算法 Step2: 通过子密钥变换函数PC-2(参照实例)得出,ki=PC-2(Ci, Di),(4)解密算法算法,解密算法和加密算法相同,但是它使用的子密钥顺序是相反的。第一次是用k16, 第2次迭代用k15, 最后一次用k1,这是因为最终换位IP-1是初始换位IP的逆变换且,Ri-1=Li Li-1=Rif(Li

21、, ki),注: DES代换使得输出成为输入的非线性函数, 换位扩展了输出对输入的依赖性。,(5)DES 加解密算法:举例 有明文M(64位) = 0123456789ABCDEF,即 M(64位) = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 L(32位) = 0000 0001 0010 0011 0100 0101 0110 0111 R(32位) = 1000 1001 1010 1011 1100 1101 1110 1111,有初始密钥K(64位) = 133457

22、799BBCDFF1,即 K(64位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 其中红色标注为奇偶校验位,即实际密钥为56位。,第一步:生成16个子钥(48位),对K使用PC-1(87) 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28

23、20 12 4,返回,K(64位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001,得到K+(56位) = 1111000 0110011,第一步:生成16个子钥(48位),从而,由K(64位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 得到K+(56位) = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111 进而

24、, C0(28位) = 1111000 0110011 0010101 0101111 D0(28位) = 0101010 1011001 1001111 0001111,第一步:生成16个子钥(48位),C1和D1分别为C0和D0左移1位。 C3和D3分别为C2和D2左移2位 ,返回,第一步:生成16个子钥(48位),从而得到C1D1 C16D16: C1 = 1110000110011001010101011111 D1 = 1010101011001100111100011110 C2 = 1100001100110010101010111111 D2 = 010101011001100

25、1111000111101 C3 = 0000110011001010101011111111 D3 = 0101011001100111100011110101 C4 = 0011001100101010101111111100 D4 = 0101100110011110001111010101 C15 = 1111100001100110010101010111 D15 = 1010101010110011001111000111 C16 = 1111000011001100101010101111 D16 = 0101010101100110011110001111,C0(28位) =

26、1111000 0110011 0010101 0101111 D0(28位) = 0101010 1011001 1001111 0001111,第一步:生成16个子钥(48位),Kn(48位) = PC-2( Cn Dn(56位) ) PC-2(86) 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32,第一步:生成16个子钥(48位),最终得到所有16个子钥,每个48位:

27、 K1 = 000110 110000 001011 101111 111111 000111 000001 110010 K2 = 011110 011010 111011 011001 110110 111100 100111 100101 K3 = 010101 011111 110010 001010 010000 101100 111110 011001 K4 = 011100 101010 110111 010110 110110 110011 010100 011101 K5 = 011111 001110 110000 000111 111010 110101 001110 1

28、01000 K6 = 011000 111010 010100 111110 010100 000111 101100 101111 K7 = 111011 001000 010010 110111 111101 100001 100010 111100 K8 = 111101 111000 101000 111010 110000 010011 101111 111011 K9 = 111000 001101 101111 101011 111011 011110 011110 000001 K10 = 101100 011111 001101 000111 101110 100100 01

29、1001 001111 K11 = 001000 010101 111111 010011 110111 101101 001110 000110 K12 = 011101 010111 000111 110101 100101 000110 011111 101001 K13 = 100101 111100 010111 010001 111110 101011 101001 000001 K14 = 010111 110100 001110 110111 111100 101110 011100 111010 K15 = 101111 111001 000110 001101 001111

30、 010011 111100 001010 K16 = 110010 110011 110110 001011 000011 100001 011111 110101,第二步:用子钥对64位数据加密,对明文M使用IP(88) 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7,第二步:

31、用子钥对64位数据加密,由于M(64位) =0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 对M运用IP,故有 IP(64位) = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010,第二步:用子钥对64位数据加密,由于M(64位) =0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 11

32、10 1111 对M运用IP,故有 IP(64位) = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010,对明文M使用IP(88) 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 1

33、5 7,第二步:用子钥对64位数据加密,IP(64位) = L0(32位) + R0(32位) 故 L0 (32位) = 1100 1100 0000 0000 1100 1100 1111 1111 R0 (32位) = 1111 0000 1010 1010 1111 0000 1010 1010,第二步:用子钥对64位数据加密,从L0和R0开始,循环16次,得出L1R1到L16R16,依据递推公式: Ln = R(n-1) Rn = L(n-1) + f (R(n-1),Kn) 其中除了Kn为48位,其他变量及函数均为32位。 其中+号表示异或XOR运算,函数f 从一个32位的数据块R(

34、n-1)和一个48位子钥Kn得到一个新的32位数据块。(算法从略),第二步:用子钥对64位数据加密,到此为止,我们得到了16对32位的数据块,即 L1R1, L2R2, L3R3, , L16R16 最后一对L16R16就是我们需要的。,第二步:用子钥对64位数据加密,继续对R16L16(64位)运用一次重排列: IP-1(88) 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 5

35、9 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25,第二步:用子钥对64位数据加密,即在 L16(32位) = 0100 0011 0100 0010 0011 0010 0011 0100 R16(32位) = 0000 1010 0100 1100 1101 1001 1001 0101 R16L16(64位) = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100 时,对R16L16运用IP-1,得 IP-1(64位) = 10000101 1110

36、1000 00010011 01010100 00001111 00001010 10110100 00000101 = 85E813540F0AB405 从而,经过以上步骤,最终从明文 M = 0123456789ABCDEF 得到密文 C = IP-1 = 85E813540F0AB405 以上为加密过程,要解密,依次反向计算即可。,2) IDEA 加密算法 IDEA 国际数据加密算法IDEA(International Data Encryption Algorithm)是由两位研究员 Xuejia Lai 和 James L. Massey 在苏黎世的 ETH公司开发的, 一家瑞士As

37、com systec 公司拥有专利权。IDEA 是作为迭代的分组密码实现的, 使用 128 位的密钥和 8 个循环。 这比 DES 提供了更多的安全性, 但是在选择用于 IDEA 的密钥时, 应该排除那些称为“弱密钥”的密钥。DES 只有四个弱密钥和 12 个次弱密钥, 而 IDEA 中的弱密钥数相当可观,有251个。但是,如果密钥的总数非常大,达到2128个, 那么仍有277个密钥可供选择。,2、序列密码 与分组密码相比,序列密码是非常快速的,尽管某些方式下工作的一些分组密码(如 CFB 或 OFB 中的 DES)可以与序列密码一样有效地运作, 但序列密码作用于由若干位组成的一些小型组,通常

38、使用称为密钥流的一个位序列作为密钥对它们逐位应用“异或”运算。有些序列密码基于一种称做“线性反馈移位寄存器(LFSR, Linear Feedback Shift Register)”的机制,该机制生成一个二进制位序列。,2. 3.2 非对称密码 非对称密码术相对于对称密码术的最大区别就在于它的加密和解密不是使用同一个密钥和算法。 在对称密码术中加密和解密都需要共享一个密钥, 这可能是使用密码术的对称密码体制的主要弱点。在非对称密码术或公钥密码术中没有这样的问题。 使用在数学上相关的两个密钥,并通过用其中一个密钥加密的明文只能用另一个密钥进行解密的方法来使用它们。通常,其中一个密钥由个人秘密持

39、有,因此几乎没有必要共享密钥,从而避免了对安全性的威胁。第二个密钥,即所谓的公钥,需要让尽可能多的人知道。,非对称密码体制提供的安全性取决于难以解决的数学问题。 例如,将大整数因式分解成质数。公钥系统使用这样两个密钥, 一个是公钥,用来加密文本; 另一个是安全持有的私钥,只能用此私钥来解密。 也可以使用私钥加密某些信息, 然后用公钥来解密,而公钥是大家都知道的,这样拿此公钥能够解密的人就知道此消息是来自持有私钥的人,从而达到了认证作用。对于认证的应用方式我们下面会给出几种常见的非对称密码加密算法。,1、Diffie-Hellman Diffie-Hellman 协议允许两个用户通过某个不安全的

40、交换机制来共享密钥, 而不需要首先就某些秘密值达成协议。它有两个系统参数,每个参数都是公开的,其中一个是质数p,另一个通常称为生成元,是比p小的整数;这一生成元经过一定次数幂运算之后再对p 取模,可以生成从 1 到p-1 之间任何一个数。,这一密钥交换协议容易受到伪装攻击,即所谓中间人(middleperson)攻击。 如果 A 和 B 正在寻求交换密钥, 则第三个人 C 可能介入每次交换。A 认为初始的公共值正在发送到 B,但事实上,它被 C 拦截,然后向 B 传送了一个别人的公共值, 然后 B 给 A 的消息也遭受同样的攻击,而 B 以为它给 A 的消息直接送到了 A。 这导致 A 与 C

41、 就一个共享秘钥达成协议而 B 与 C 就另一个共享秘钥达成协议。 然后, C 可以在中间拦截从 A 到 B 的消息, 并使用 A/C 密钥解密, 修改它们, 再使用 B/C 密钥转发到 B, B 到 A 的过程与此相反,而 A 和 B 都没有意识到发生了什么。,为了防止这种情况, 1992 年 Diffie 和其他人一起开发了经认证的 Diffie-Hellman 密钥协议。在这个协议中,必须使用现有的私钥公钥对以及与公钥元素的相关数字证书, 由数字证书验证交换的初始公共值 。,2、,2.3.3 散列函数 散列函数与公钥密码体制不同, 但因为散列函数通常用于消息摘要,因此在这里将它们视为认证

42、和数字签名的整个系统的一部分也是适宜的。 1) MD4 和 MD5 MD2、MD4 和 MD5 是由 Ron Rivest 开发的用于数字签名应用程序的消息摘要算法,在数字签名应用程序中将消息压缩成摘要, 然后由私钥加密。MD2 是为 8 位计算机系统设计的, 而 MD4 和 MD5 是为 32 位计算机系统开发的。 MD4 是在 1990 开发的,现在它被认为是不安全的。,哈希函数概念,哈希函数,也称为单向散列函数、杂凑函数或消息摘要算法。它通过把一个单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数据。 哈希函数H能用于任意大小的分组,产生定长的输出;对任何给定的x

43、,H(x)要相对易于计算,使得硬件和软件实现成为实际可能;单向性;弱抗冲突性;即强抗冲突性。,我们给出MD5的算法描述,对MD5算法简要的叙述可以为: MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 算法结构图如下:,在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bits length)将被扩展至n512+448,即n64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1

44、和无数个0, 直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制数表示的填充前信息长度。经过这两步的处理,现在的信息字节长度为n512+448+64=(n+1)512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。,MD5中有四个32位被称为链接变量(Chaining Variable)的整数参数,它们分别为:a=0x01234567,b=0x89abcdef, c=0xfedcba98,d=0x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。将上面四个链接变量

45、复制到另外四个变量中: a到a, b到b,c到c,d到d。 主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作, 每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量, 文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。以下是每次操作中用到的四个非线性函数(每轮一个)。,f(x,y,z)=(x i(x,y,z)=y(x|(z) 式中,&是与操作, |是或操作, 是非操作, 是异或操作。,这四个函数的说明:如果x、y和z的对应位是独立和均匀的, 那么结果的每一位也应

46、是独立和均匀的。f是一个逐位运算的函数。即,如果x为1,那么选择y位上的数据,否则选择z位上的数据。函数h是逐位奇偶操作符。 压缩过程如图2.4所示。,图 2.4,假设Tj表示消息的第j个子分组(从015), F(a,b,c,d,Tj,s,Xi) 表示 a=b+(a+(f(b,c,d)+Tj+Xi) G(a,b,c,d,Tj,s,Xi) 表示 a=b+(a+(g(b,c,d)+Tj+Xi) H(a,b,c,d,Tj,s,Xi) 表示 a=b+(a+(h(b,c,d)+Tj+Xi) I(a,b,c,d,Tj,s,Xi) 表示 a=b+(a+(i(b,c,d)+Tj+Xi),这四轮(64步)是:

47、第一轮 F(a,b,c,d,T0,7,0xd76aa478) F(d,a,b,c,T1,12,0xe8c7b756) F(c,d,a,b,T2,17,0x242070db) F(b,c,d,a,T3,22,0xc1bdceee) F(a,b,c,d,T4,7,0xf57c0faf) F(d,a,b,c,T5,12,0x4787c62a) F(c,d,a,b,T6,17,0xa8304613),F(b,c,d,a,T7,22,0xfd469501) F(a,b,c,d,T8,7,0x698098d8) F(d,a,b,c,T9,12,0x8b44f7af) F(c,d,a,b,T10,17,0x

48、ffff5bb1) F(b,c,d,a,T11,22,0x895cd7be) F(a,b,c,d,T12,7,0x6b901122) F(d,a,b,c,T13,12,0xfd987193) F(c,d,a,b,T14,17,0xa679438e) F(b,c,d,a,T15,22,0x49b40821),第二轮 G(a,b,c,d,T1,5,0xf61e2562) G(d,a,b,c,T6,9,0xc040b340) G(c,d,a,b,T11,14,0x265e5a51) G(b,c,d,a,T0,20,0xe9b6c7aa) G(a,b,c,d,T5,5,0xd62f105d) G(d,a,b,c,T10,9,0x02441453) G(c,d,a,b,T15,14,0xd8a1e681) G(b,c,d,a,T4,20,0xe7d3fbc8),G(a,b,c,d,T9,5,0x21e1cde6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1