信息加密与鉴别_第1页
信息加密与鉴别_第2页
信息加密与鉴别_第3页
信息加密与鉴别_第4页
信息加密与鉴别_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 信息加密与鉴别 内容提要本章介绍密码学的基本概念。介绍加密领域中两种主流的加密技术:DES加密(Data Encryption Standard)RSA加密(Rivest-Shamir-Adleman)并用程序实现这两种加密技术的算法。4.1 信息加密基础 4.1.1 信息加密的发展1、密码学概述 密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。 密码技术简介 密码学的历史比较悠久,在四千年前,古埃及人就开始使密码学的历史

2、比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。用密码来保密传递消息。 两千多年前,罗马国王两千多年前,罗马国王Julius Caesare(恺撒)就开始(恺撒)就开始使用目前称为使用目前称为“恺撒密码恺撒密码”的密码系统。但是密码技术直到的密码系统。但是密码技术直到本本20世纪世纪40年代以后才有重大突破和发展。年代以后才有重大突破和发展。 特别是特别是20世纪世纪70年代后期,由于计算机、电子通信的广年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的发展。泛使用,现代密码学得到了空前的发展。中途岛之战 中途岛,陆地面积约中途岛,陆地面积约 5.2平方公里,有三条平

3、方公里,有三条 交叉的飞机跑道。该岛交叉的飞机跑道。该岛 距美国旧金山和日本横距美国旧金山和日本横 宾均相距宾均相距2800海里,海里, 处于亚洲和北美之间的处于亚洲和北美之间的 太平洋航线的中途,太平洋航线的中途,故名中途岛。故名中途岛。 中途岛海战中途岛海战 约瑟夫罗谢福特少校, 美国密码专家,1940年, 他帮助破解了日本海军的 通讯密码JN-25,1942年 中途岛战役前破译日军攻 击目标。 1942年6月, 中途岛之战, 美国军队和日 本帝国海军作 战的场面。 中途岛海战中美、日损失比较中途岛海战中美、日损失比较 类别类别国家国家航空母舰航空母舰飞机飞机(架架)人员人员(人人)日本日

4、本4赤城、加贺、苍赤城、加贺、苍龙、飞龙龙、飞龙3222000美国美国1约克顿号约克顿号147307偷袭珍珠港: 1941年12月7日清晨,日本皇家海军的飞机和微型潜艇突然袭击美国海军基地珍珠港以及美国陆军和海军在夏威夷欧胡岛上的飞机场的事件。这次袭击最终将美国卷入第二次世界大战 。2、基本概念 (1)消息和加密 遵循国际命名标准,加密和解密可以翻译成:遵循国际命名标准,加密和解密可以翻译成:“Encipher(译成密(译成密码)码)”和和“(Decipher)(解译密码)(解译密码)”。也可以这样命名:。也可以这样命名:“Encrypt(加密)(加密)”和和“Decrypt(解密)(解密)”

5、。 消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,图密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,图表明了加密和解密的过程。表明了加密和解密的过程。加密解密明文密文原始明文明文 密文 明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本文件、位图、数字化的语音流或者数字化的视频图像等。 密文用C(Cipher)表示,也是二进制数据。 加密函数E作用于M得到密文C:E(M)=C。 解密函数D作用于C产生明文M,D

6、(C)=M。 先加密后再解密消息,原始的明文将恢复出来: D(E(M)=M必须成立。鉴别、完整性和抗抵赖性 除了提供机密性外,密码学需要提供三方面的功能:鉴除了提供机密性外,密码学需要提供三方面的功能:鉴别、完整性和抗抵赖性。别、完整性和抗抵赖性。 鉴别:消息的接收者应该能够确认消息的来源;入侵者鉴别:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。不可能伪装成他人。 完整性:消息的接收者应该能够验证在传送过程中消息完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。没有被修改;入侵者不可能用假消息代替合法消息。 抗抵赖性:发送消息者事后不

7、可能虚假地否认他发送的抗抵赖性:发送消息者事后不可能虚假地否认他发送的消息。消息。(2) 算法和密钥 密钥用K表示。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为: EK(M)=C DK(C)=M DK(EK(M)=M,如图所示。加密解密明文密文原始明文密钥密钥 有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:EK1(M)=CDK2(C)=M 函数必须具有的特性是,DK2(EK1(M)=M,如图所示。加密解密明文密文原始明文加密密钥解密密钥4.2

8、 传统加密技术4.2.1 替代密码概述替代密码是通过密钥字母表用一组密文字母来代替一组明文字母以隐藏明文,但保持明文字母的位置不变。如果密钥字母表由一个字母表构成替代密码,称为单表替代密码,如果由多个字母表构成替代密码,称为多表替代密码。 替代密码单表替代密码多表替代密码2020世纪早期密码机1、 单表替代密码单表替代密码的代表是凯撒密码,又叫循环移位密码。其加密方法是把明文中的所有字母都用它右边的第k个字母替代,并认为Z后面又是A。其映射关系函数为:F(a)=(a+k) mod na明文字母;n字符集字母个数;k密钥A B C D E F V W X Y Z (k=3)D E F G H I

9、 Y Z A B C1、 单表替代密码单表替代密码的优点:密钥简单、易记;单表替代密码的缺点:这种密码是很容易破译的,因为最多只需尝试25次即可轻松破译密码。凯撒密码的优点是密钥简单易记。但它的密码文与明码文的对应关系过于简单,故安全性很差2、 多表替代密码周期替代密码是一种常用的多表替代密码,又叫维吉尼亚密码。其加密表是以字母表移位为基础把26个英文字母进行循环移位,排列在一起,形成26*26方阵,称为维吉尼亚表。 A B C D E F G H I J K L M N O P Q R S T U V ZABZ A B C D E F G H I J K L M N O P Q R S T

10、U V Z B C D E F G H I J K L M N O P Q R S T U V W A . Z A B C D E F G H I J K L M N O P Q R S T U Y2、多表替代密码周期替代密码在实际使用时,往往把某个容易记忆的词或词组当作密钥,然后把密钥反复写在明文下方或上方。加密时,以明文字母选择列,以密钥字母选择行,两者的交点就是加密生成的密文字母;解密时做逆操作即可。重点难点:多表替代密码周期周期多表密码,每张表多表密码,每张表= =caesarcaesar密码密码key: de cep tivedecept ived eceptiveplaintext

11、: we are discovered save yourselfciphertext: ZI CVT WQNGRZGVTW AVZH CQYGLMGJ维吉尼亚密码的破解 维吉尼亚密码(Vigenere Cipher) 对字频信息的隐藏还不够彻底。在19世纪50年代, 英国人查尔斯-巴贝奇对其的破解. 其实其破解的基本思想如下: 比如在密文中, 经常出现了同一个子串(比如UPK), 而且每个字串之间的距离都是3的整数倍. 那么解密者就很容易推测出秘匙的长度为3. 其原因也是十分简单的: 当秘匙在重复了N次之后, 其还是用第一个字母去加密UPK相应的明文. 尤其是对THE, YOU, WHAT

12、这类高频词汇当使用了弱秘匙的话,更容易遭受破解. 3. 换位密码(1)换位密码概述换位密码概述(2)列换位法列换位法(3)矩阵换位法矩阵换位法 换位密码概述换位密码是采用移位法进行加密的。它把明文中的字母重新排列,本身不变,但位置变了。换位密码是靠重新安排字母的次序,而不是隐藏他们。换位加密方法有列换位法和矩阵换位法等。换位密码列换位法矩阵换位法1、 列换位法列换位法是将明文字符分割成若干个(例如3个)一列的分组,并按一组后面跟着另一组的形式排好,不全的组用不常用的字符填满。最后取各列来产生密文。密钥为组中字符的个数。明文分组换位C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2

13、 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3C4 C5 C6C7 C8 C9C1C4C7C2C5C8C3C6C9C1 C4 C7C2 C5 C8C3 C6 C9C1 C4 C7C2 C5 C8C3 C6 C9密文加密案例 列换位法将明文字符分割成为五个一列的分组并按一组后面跟着另一组的形式排好。如明文是:WHAT YOU CAN LEARN FROM THIS BOOK 分组排列为: WHATYOUCANLEARNFROMTHISBOOKXXX密文为:密文为:WOLF HOHUE RIKAC AOSXT ARMBX YNNTO X列换位法解密案例 对下列54个密码进行解密。明文

14、中可能会出现诸如perception(感觉)之类的词汇,明文只包含字母,没有空格。加密方法是列换位 (Transposition)法,为了阅读方便,密文被分成5个字母一组。 密文:IHADL HEIBD ATEEA ROLOV TPMVC NENEI RYEEP MOATO OAPRX TNUBU PTOY 2、 矩阵换位法矩阵换位法是将明文字符按给定的顺序排列在一矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。密钥为矩阵的行数、列数以及给定的置换矩阵。明文矩阵换位C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3C4

15、 C5 C6C7 C8 C9C1C4C7C2C5C8C3C6C9密文C1C4C7C2C5C8C3C6C9C3 C1 C2C6 C4 C5C9 C7 C8 C3 C1 C2 C6 C4 C5 C9 C7 C8 .C3 C1 C2 C6 C4 C5 C9 C7 C8 .4.3 对称算法 基于密钥的算法通常有两类:对称算法和公开密钥算法(非对称算法)。对称算法有时又叫传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。 在大多数对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对

16、称算法的加密和解密表示为:EK(M)=CDK(C)=M4.3.1 DES对称加密技术 DES是从1975年被美国联邦政府确定为非敏感信息的加密标准,它利用56比特长度的密钥K来加密长度为64比特的明文,得到64比特长的密文. 1997年,由于计算机技术迅速发展,DES的密钥长度已经太短,NIST建议停止使用DES算法作为标准. 目前,二重DES和三重DES仍然广泛使用.DES算法的安全性 DES算法正式公开发表以后,引起了一场激烈的争论。1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机

17、器需要两千万美元。 1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间可以降到2.5小时。可见这种机制是不安全的。2、 DES算法的原理 DES算法的入口参数有三个:Key、Data、Mode。其中:Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两

18、种:加密或解密。3、 DES算法的实现步骤 输入输入64比特明文数据比特明文数据初始置换初始置换IP在密钥控制下在密钥控制下16轮迭代轮迭代初始逆置换初始逆置换IP-1输出输出64比特密文数据比特密文数据交换左右交换左右32比特比特 DES算法一般描述 64bits plain text 56bits key初始置换IP第1轮置换选择1循环左移置换选择2K1第2轮置换选择2循环左移K2第16轮K16置换选择2循环左移32bits 对换逆初始置换IP164bits cipher text48bits3、 DES算法的实现步骤第一步:变换明文。 对给定的64位比特的明文X,首先通过一个置换IP表来

19、重新排列X,从而构造出64位比特的X0,X0=IP(X)=L0R0,其中L0表示X0的前32比特,R0表示X0的后32位。 第二步:按照规则迭代。 Li = Ri-1 Ri = Li f(Ri-1,Ki) (i=1,2,316) 经过第一步变换已经得到L0和R0的值,其中符号 表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。f和Ki将在后面介绍。第三步:对L16R16利用IP-1作逆置换,就得到了密文y。加密过程如图所示。3、 DES算法的实现步骤 DES加密需要四个关键点: 1、IP置换表和IP-1逆置换表。 2、函数f。 3、子密钥Ki。 4、S

20、盒的工作原理。 DES对64位的明文分组进行操作,通过一个初始置换,将明文分组成左半部分和右半部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左,右半部分合在一起经过一个末置换,这样就完成了。 (1)IP置换表和IP-1逆置换表58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 56

21、3 55 47 39 31 23 15 740 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25输入的第58位作为第1位输入的第50位作为第2位输入的第7位作为第64位输入的第40位作为第1位输入的第8位作为第2位输入的第25位作为第64位IP与IP-1互逆M=(m1 , m2 ,.)1 2 3 4 5

22、 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2425 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4849 50 51 52 53 54 55 561 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2425 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4849 50 51 52 53 54 55

23、 56IP(M)=(m58 , m50 )=(m1 1 , m1 2 ,.)58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 161 58 45 37 29 21 13 563 55 47 39 31 23 15 740 8 48 16 56 24 64 32 39 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 29 36 4 44 12 52 20 60

24、 2834 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25IPIP-159 51 43 35 27 19 11 357 58 59 60 61 62 63 6435 3 43 11 51 19 59 2757 58 59 60 61 62 63 64(1)IP置换表和IP-1逆置换表 输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位。 比如:置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D58D50.D8,R0=D57D49.D7。 经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置

25、换,即得到密文输出。逆置换正好是初始值的逆运算,例如,第20位经过初始置换后,处于第14位,而通过逆置换IP-1,又将第14位换回到第20位。DES的一轮迭代(F函数)Li-1 (32 bit)Ri-1 (32 bit)选择扩展运算选择扩展运算 E盒盒48bit寄存器寄存器48bit寄存器寄存器选择压缩运算选择压缩运算 S盒盒32bit寄存器寄存器置换运算置换运算 PRi =Li-1 f(Ri-1,ki) (32 bit)(32 bit) Li =Ri-1轮开始:轮开始:64bit分分成左右成左右两半两半子密钥子密钥Ki (48 bit)扩展置换 E盒 (Expand Box)将输入的32bi

26、t块扩展到48bit的输出块;48bit的输出块再分成8个6bit块;01 02 03 0405 06 07 0809 10 11 1213 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3201 02 03 0405 06 07 0809 10 11 1213 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3232040812162024280509131721252901扩展置换函数扩展置换函数E扩展位扩展位扩展位扩展位固定位固定位压缩替代 S盒 (Substitut

27、ion Box)48bit块通过S盒压缩成32bit块;S盒将6个输入位映射为4个输出位48bit寄存器寄存器32bit寄存器寄存器 S1S2S3S4S5S6S7S86bit4bit共共8个个S盒盒将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入。S盒S1盒14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13S2

28、盒15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9作用:将6个输入位映射为4个输出位;方法:若定义a1a2a3a4a5a6,将a1a6组成2位二进制数,对应S盒表中的行号;将a2a3a4a5组成一个4位的2进制数,对应S盒表中的列号;映射到交叉点的数据就是该S盒的输出。 S1输入为101011的输出是?A1a6=11 a2a3a4a5=0101 10

29、01S1S2S3S4S5S6S7S8D 0 123012301230123012301 23012301230 14 04 15 15 13 0 13 10 13 13 17 13 10 32 14 4 11 12 10 944 13 16 13 17214 15 1 12 1 13 14 8076 10 13 86 15 12 11 281 15 13 3 11 04 11 2 15 11 12 13 7 14 8847 10 904 13 14 11 90421 12 10 4 15 22 11 11 13 8 13 4 1431 482 14 7 11 1 14 99035061 12

30、11 7 15 2 5 12 14 7 13 8481742 14 13 46 15 10 3638606 12 10 74 10 197 29 15 4 12 16 10 945 15 269 11 24 15 34 15 96 15 11 1 10 7 13 14 2 12 850934 15 3 12 106 11 13 2138 13 4 15 638907 13 11 13 7269 12 15 817 10 11 7 14 878 1 11 74 14 125 10 07 10 3 13 8618 13 85 3 10 13 10 14 7142 1383 10 15 59 12

31、5 11 12 11 414 15 985 15 606 7 11 3 14 10 9 10 12 0 159 10 6 12 11 7086 13 81 15 2714509 15 13 1 0 14 12 3 15 5956210 6 12 9321 12 7 12 52 14 82353 15 12 03 13 41956036 10 911 12 11 7 14 13 10 6 12 7 14 12 35 12 14 11 15 10 594 14 10 77 12 8 15 14 11 13 012 5 93 10 12 690 11 12 5 11 11 15 12 13 36 1

32、0 14 0 16520 14 50 15 313 9 5 10 009354 11 10 5 12 10 2709347 11 13 0 10 15 520 14 3514 0 3565 11 2 14 2 15 14 24 14 82 14 80553 11 86893 12 95615 7 80 13 10 5 15 9817 12 15 94 14 96 14 3 11 86 13 162 12 728 11表表 选择函数选择函数S盒表盒表例例 S盒应用实例:设B1=101100,求S1(B1) 则S1(B1)的值位于列号为2的列和行号为6的行,即等于2, 因此S1(B1)的输出是00

33、10。S盒 DES中其它算法都是线性的,而S盒运算则是非线性的,S盒不易于分析,它提供了更好的安全性;所以S盒是算法的关键所在; 提供了密码算法所必需的混乱作用置换函数P(Permutaion)P置换的目的是:提供雪崩效应;明文或密钥的一点小的变动都引起密文的较大变化;P的功能是对输入进行置换,P换位表如表所示:16 07 20 21 29 12 28 1701 15 23 26 05 18 31 1002 08 24 14 32 27 03 0919 13 30 06 22 11 04 25DES中子密钥的生成64bit64bit密钥密钥置换选择置换选择1 1C C0 0(28bit28bi

34、t)D D0 0(28bit28bit)循环左移循环左移循环左移循环左移C C1 1(28bit28bit)D D1 1(28bit28bit)循环左移循环左移循环左移循环左移置换选择置换选择2 2置换选择置换选择2 2循环左移循环左移1234567811222222091011121314151612222221密钥表的计算逻辑:密钥表的计算逻辑:C Ci i(28bit28bit)D Di i(28bit28bit)(56bit)(56bit)(56bit)(56bit)K Ki i K K0 0 (48bit)(48bit)(48bit)(48bit)(56bit)(56bit)子密钥k

35、i 由于不考虑每个字节的第8位,DES的密匙由64位减至56位,每个字节第8位作为奇偶校验确保密匙不发生错误。 假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。K的下标i的取值范围是1到16,用16轮来构造。 第一轮:对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。其中LS1是左移的位数,如表所示 第二轮:对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。如此继续,分别得到K3,K4K16。 置换选择-1(7*8)置换选择-2(6*8) 57

36、49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 25 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 20 12 4 14 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 8 16 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 48 44 49 39 56 34 5346 42 50 36 29 32假设密钥为K,长度为64位

37、,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位子密钥换位表PC-2给出了选择及选择后的次序,可以看出去掉了第9、18、22、25、35、38、43、54位函数f函数f有两个输入:32位的Ri-1和48位Ki,f函数的处理流程如图所示。DES例题: 明文M=“SECURITY”,密钥K=“COMPUTER”。 SECURITY的ASCII码为:53 45 43 55 52 49 54 5916,转换成二进制:M=(0101 0011 0100 0101 0100 0011 0101 0101

38、 0101 0010 0100 1001 0101 0100 0101 1001)2;IP置换表:经过IP置换后的排列结果:11111111 11011001 01001010 10101111 L000000000 00000000 10100000 00010101 R0DES例题:K=“COMPUTER”的ASCII码用二进制表示: 43 4F 4D 50 55 54 45 5216K=0100 0011 0100 1111 0100 1101 0101 0000 0101 0101 0101 0100 0100 0101K加上第8、16、24、64位的奇同位检查码, 并去掉末8位结果如

39、下:K=(0100 0011 1010 0111 1101 0011 1010 1011 0000 0100 1010 1011 0101 0001 1000 1010)2思考:56位密钥加上8位校验位,成为64位,又通过PC-1置换,去掉8位校验位,成为56位。 是否多此一举?密钥是64位,加入8个奇同校验位,为72位,去掉字母R,变成64位密钥长度不是64的整数倍 一般右补0 x00;当然加密和解密应该实现同样的补位原则。即当加密是右补 0 x00,解密时要把补位的0 x00去掉就可以还原数据。在此,安全性肯定是不影响,但有一个问题就是要加密的数据中末尾有0 x00的问题如何解决,这是应考

40、虑用别的补位数据,如0 xff等。 DES例题:K经过PC-1置换后得到C0,D0 C0=1010 1110 0100 0101 0010 1010 0100 D0=1010 1111 0001 0010 1010 1000 0100因为是第一次迭代,故左移1位C0D0得到C1D1为:C1=0101 1100 1000 1010 0101 0100 1001D1=0101 1110 0010 0101 0101 0000 1001C1D1在经过PC-2置换得48位子密钥K1: K1=0000 0101 1100 0001 0000 0111 0000 0010 0011 1011 1111 0

41、001DES例题:将32位R0进行扩展置换后得48位:E(R0)=1000 0000 0000 0000 0000 0001 0101 0000 0000 0000 1010 1010然后将E(R0)与K1进行异或得A:A= 1000 0101 1100 0001 0000 0110 0101 0010 0011 1011 0101 1011将结果A分为8组,A1=100001,查S1盒坐标(3,0)得B1=15;A2=011100,查S2盒坐标(0,14)得B2=5;A3=000100,查S3盒坐标(0,2)得B3=9;A4=000110,查S4盒坐标(0,3)得B4=3;A5=010100

42、,查S5盒坐标(0,10)得B5=3;A6=100011,查S6盒坐标(3,1)得B6=3;A7=101101,查S7盒坐标(3,6)得B7=10;A8=011011,查S8盒坐标(1,13)得B8=14DES例题:合并B1B2B8得数据B:B=1111 0101 1001 0011 0011 0011 1010 1110进行置换P得:X0=1010 1100 1110 0010 1110 0111 1011 0011将L0与X0按位异或,形成R1:R1=0101 0011 0011 1011 1010 1101 0001 1100令L1=R0至此,求出第一轮迭代结果L1R1,依次类推可求出L

43、16R16,在经过逆初始置换即可获得密文。例题:DES 密钥的产生K=science的ASCII码是: 73 63 69 65 6e 63 65其二进制表示是:(01110011) (01100011) (01101001) (01100101) (01101110) (01100011) (01100101) 共56個位元加入奇同位检查码结果如下:(01110011) (10110000) (11011010) (00101100) (01010111) (01110011) (10001100) (11001011) 共64位按照置换选择1矩阵进行排列:结果如下:(11000110) (1

44、0110101) (00101011) (00111011) (01010101) (10001100) (11000111)将结果分成KL0及KR0:KL0=11000110 10110101 00101011 0011KR0=10110101 01011000 11001100 0111按照循环移位表分别向左移动一位:KL1=10001101 01101010 01010110 0111KR1=01101010 10110001 10011000 1111经过置换选择2,生成K1:K1= 00101101 11011000 11001110 00110111 01111111 010000

45、00DES的解密过程的解密过程 DES的运算是对合运算(模2相加、异或),解密和加密可共用同一个运算。 不同点:子密钥使用的顺序不同。 第一次解密迭代使用子密钥 K16 ,第二次解密迭代使用子密钥 K15 ,第十六次解密迭代使用子密钥 K1 。 在数学中,对合函数是指函数 f(x) 满足 f(f(x)=x。 DES运算是对合运算,是指解密和加密可以共用同一运算(只是子密钥使用的顺序不同) DES算法的安全性 DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。 而56位长的密钥的穷举空间为256。 f函数(S盒)的设计原理未知;三重三重DES

46、三重DES 可以抵抗中途相遇攻击,被广泛采用的三重DES 如下图所示。设 是三个长度为56 比特的密钥. 给定明文x, 则密文为给定密文y, 则明文为DESCHALL DES分组加密算法是美国政府于1977年公布的数据加密标准,自从其公布起,DES就一直不断地被人们研究和攻击,它是世界上最知名的、使用最广泛的分组密码算法。 目前攻击DES的最有效的办法是密钥穷举攻击,美国克罗拉多州的程序员Rocke Verser 设计了一个密钥穷举攻击程序,用以穷举所有可能的DES密钥,直至找到正确的那一个密钥,这个计算机程序可以从Internet上分发和下载。他把这项计划命名为DESCHALL,这项计划开始

47、时只有几百人参与,最终吸引了数万名志愿者参加。每有一名新的志愿者加入,DESCHALL小组就为其分配一部分密钥空间让其测试,这样,正确的密钥最终会在某一名志愿者的计算机中出现。 1997年1月28日,美国的RSA数据安全公司在RSA安全年会上公布了一项“秘密密钥挑战”(Secret-KeyChallange)竞赛,分别悬赏$1000、$5000、$10000用于攻破不同密钥长度的RC5密码算法,同时还悬赏$10000破密钥长度为56bits的DES算法。 RockeVerser从97年3月13日起,在Internet上数万名志愿者的协同工作下,在RSA挑战赛公布之后的第140天、DESCHAL

48、L计划实施的第96天,6月17日的晚10点39分,盐湖城iNetZ公司的职员Michael Sanders在他那台主频为奔腾90Hz、16M内存的PC机上成功地解出了DES的明文,找到了正确的密钥。 分组密码的发展历史 1997年, 美国标准技术研究所(NIST)对DES进行再次评测并宣布:DES算法的安全强度已经不足以保障联邦政府信息数据的安全性, 所以NIST建议撤销相关标准. 同时, NIST开始征集新的数据加密标准-高级数据加密标准(Advanced Encryption Standard). 新算法的分组长度为128, 支持可变密钥长度128、192、256比特.分组密码的发展历史

49、1999年,NIST从提交的15个候选草案中选取了5个优良的算法作为AES的候选算法:MARS、RC6、Rijndael、Serpent和Twofish, 综合评价最终确定Rijndael算法为新的数据加密标准,2001年12月正式公布FIPS-197标准。4.4 非对称(公开)密钥算法 公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。能计算出来。 之所以叫做公开密钥算法,是因为加密密钥能

50、够公开,即陌生者能用之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥加密信息,但只有用相应的解密密钥才能解密信息。 两个密钥中的任一个都可以做加密而另一个做解密;即:用户拥有一两个密钥中的任一个都可以做加密而另一个做解密;即:用户拥有一个密钥对,一个公开,一个保密;个密钥对,一个公开,一个保密; 公开密钥公开密钥K1加密表示为:加密表示为:EK1(M)=C。公开密钥和私人密钥是不。公开密钥和私人密钥是不同的,用相应的私人密钥同的,用相应的私人密钥K2解密可表示为:解密可表示为:DK2(C)=M。4.4.2 RSA 公开密

51、钥加密技术 公开密钥加密基本思想是利用求解某些数学难题的困难性。用户的加密密钥与解密密钥不再相同,理论上通过加密密钥求解解密密钥是不可能的。 RSA是由MIT的 Rivest, Shamir & Adleman 在 1977 提出最著名的且被广泛应用的公钥加密体制 ,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 1. RSA算法描述 RSA使用两个密钥,一个公共密钥,一个专用密钥。如果用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时把明文分成块,块的大小可变。加密: C=Me mod N, where 0MN解密: M=Cd mod N 公钥为(e,N), 私钥为(d,N) 素数: 如果p仅有两个正因子1和p ,则p为一个素数; 互质(互素): 设a、b为整数,且不全为0;gcd( a,b )表示a和b的最大公因子;如果gcd( a,b ) = 1,称a和b互为素数(互素)即

温馨提示

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

评论

0/150

提交评论