资源预览内容
第1页 / 共102页
第2页 / 共102页
第3页 / 共102页
第4页 / 共102页
第5页 / 共102页
第6页 / 共102页
第7页 / 共102页
第8页 / 共102页
第9页 / 共102页
第10页 / 共102页
亲,该文档总共102页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 信息加密与鉴别 内容提要本章介绍密码学的根本概念。介绍加密领域中两种主流的加密技术:DES加密DataEncryptionStandardRSA加密Rivest-Shamir-Adleman并用程序实现这两种加密技术的算法。最后介绍目前常用的加密工具PGPPrettyGoodPrivacy,使用PGP产生密钥,加密文件和邮件。4.1 信息加密根底4.1.1信息加密的开展1、密码学概述密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。 密码技术简介 密码学的历史比较悠久,在四千年前,古埃及人就开始使密码学的历史比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。用密码来保密传递消息。 两千多年前,罗马国王两千多年前,罗马国王Julius Caesare恺撒就开始恺撒就开始使用目前称为使用目前称为“恺撒密码的密码系统。但是密码技术直到恺撒密码的密码系统。但是密码技术直到本本20世纪世纪40年代以后才有重大突破和开展。年代以后才有重大突破和开展。 特别是特别是20世纪世纪70年代后期,由于计算机、电子通信的广年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的开展。泛使用,现代密码学得到了空前的开展。中途岛之战 中途岛,陆地面积约中途岛,陆地面积约 5.2平方公里,有三条平方公里,有三条 交叉的飞机跑道。该岛交叉的飞机跑道。该岛 距美国旧金山和日本横距美国旧金山和日本横 宾均相距宾均相距2800海里,海里, 处于亚洲和北美之间的处于亚洲和北美之间的 太平洋航线的中途,太平洋航线的中途,故名中途岛。故名中途岛。中途岛海战中途岛海战日本海军联合舰队日本海军联合舰队日本海军联合舰队日本海军联合舰队司令山本五十六司令山本五十六司令山本五十六司令山本五十六 日本海军苍龙和飞龙号航空母舰日本海军苍龙和飞龙号航空母舰 美舰载美舰载美舰载美舰载40404040毫米高炮向毫米高炮向毫米高炮向毫米高炮向来袭日机猛烈开火来袭日机猛烈开火来袭日机猛烈开火来袭日机猛烈开火 美国海军上将美国海军上将美国海军上将美国海军上将尼米兹尼米兹尼米兹尼米兹 约瑟夫罗谢福特少校,美国密码专家,1940年,他帮助破解了日本海军的通讯密码JN-25,1942年中途岛战役前破译日军攻击目标。1942年6月,中途岛之战,美国军队和日本帝国海军作战的场面。中途岛海战中美、日损失比较中途岛海战中美、日损失比较 类别类别国家国家航空母舰航空母舰飞机飞机(架架)人员人员(人人)日本日本4赤城、加贺、苍赤城、加贺、苍龙、飞龙龙、飞龙3222000美国美国1约克顿号约克顿号147307偷袭珍珠港:1941年12月7日清晨,日本皇家海军的飞机和微型潜艇突然袭击美国海军基地珍珠港以及美国陆军和海军在夏威夷欧胡岛上的飞机场的事件。这次袭击最终将美国卷入第二次世界大战。2、根本概念1消息和加密遵循国际命名标准,加密和解密可以翻译成:“Encipher译成密码和“Decipher解译密码。也可以这样命名:“Encrypt加密和“Decrypt解密。消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,图说明了加密和解密的过程。明文 密文明文用MMessage,消息或PPlaintext,明文表示,它可能是比特流、文本文件、位图、数字化的语音流或者数字化的视频图像等。密文用CCipher表示,也是二进制数据。加密函数E作用于M得到密文C:EM=C。解密函数D作用于C产生明文M,DC=M。先加密后再解密消息,原始的明文将恢复出来:DEM=M必须成立。鉴别、完整性和抗抵赖性 除了提供机密性外,密码学需要提供三方面的功能:鉴除了提供机密性外,密码学需要提供三方面的功能:鉴别、完整性和抗抵赖性。别、完整性和抗抵赖性。 鉴别:消息的接收者应该能够确认消息的来源;入侵者鉴别:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。不可能伪装成他人。 完整性:消息的接收者应该能够验证在传送过程中消息完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。没有被修改;入侵者不可能用假消息代替合法消息。 抗抵赖性:发送消息者事后不可能虚假地否认他发送的抗抵赖性:发送消息者事后不可能虚假地否认他发送的消息。消息。2 算法和密钥 密钥用K表示。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为:EKM=CDKC=MDKEKM=M,如下图。有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:EK1M=CDK2C=M函数必须具有的特性是,DK2EK1M=M,如下图。4.2 传统加密技术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=3D E F G H I Y Z A B C1、 单表替代密码单表替代密码的优点:密钥简单、易记;单表替代密码的缺点:这种密码是很容易破译的,因为最多只需尝试25次即可轻松破译密码。凯撒密码的优点是密钥简单易记。但它的密码文与明码文的对应关系过于简单,故平安性很差2、 多表替代密码周期替代密码是一种常用的多表替代密码,又叫维吉尼亚密码。其加密表是以字母表移位为根底把26个英文字母进行循环移位,排列在一起,形成26*26方阵,称为维吉尼亚表。ABCDEFGHIJKLMNOPQRSTUVZABZABCDEFGHIJKLMNOPQRSTUVZBCDEFGHIJKLMNOPQRSTUVWA.ZABCDEFGHIJKLMNOPQRSTUY2、多表替代密码周期替代密码在实际使用时,往往把某个容易记忆的词或词组当作密钥,然后把密钥反复写在明文下方或上方。加密时,以明文字母选择列,以密钥字母选择行,两者的交点就是加密生成的密文字母;解密时做逆操作即可。重点难点:多表替代密码周期周期多表密码,每张表多表密码,每张表= =caesarcaesar密码密码密钥不断重复密钥不断重复密钥不断重复密钥不断重复密钥字母决定移位的次数密钥字母决定移位的次数密钥字母决定移位的次数密钥字母决定移位的次数假设密钥为假设密钥为假设密钥为假设密钥为deceptivedeceptive:key: de cep tivedecept ived eceptiveplaintext: we are discovered save yourselfciphertext: ZI CVT WQNGRZGVTW AVZH CQYGLMGJVigenreVigenre密码3. 换位密码1换位密码概述换位密码概述2列换位法列换位法3矩阵换位法矩阵换位法维吉尼亚密码的破解维吉尼亚密码(VigenereCipher)对字频信息的隐藏还不够彻底。在19世纪50年代,英国人查尔斯-巴贝奇对其的破解.其实其破解的根本思想如下:比方在密文中,经常出现了同一个子串(比方UPK),而且每个字串之间的距离都是3的整数倍.那么解密者就很容易推测出秘匙的长度为3.其原因也是十分简单的:当秘匙在重复了N次之后,其还是用第一个字母去加密UPK相应的明文.尤其是对THE,YOU,WHAT这类高频词汇当使用了弱秘匙的话,更容易遭受破解. 换位密码概述换位密码是采用移位法进行加密的。它把明文中的字母重新排列,本身不变,但位置变了。换位密码是靠重新安排字母的次序,而不是隐藏他们。换位加密方法有列换位法和矩阵换位法等。换位密码列换位法矩阵换位法1、 列换位法列换位法是将明文字符分割成假设干个例如3个一列的分组,并按一组后面跟着另一组的形式排好,不全的组用不常用的字符填满。最后取各列来产生密文。密钥为组中字符的个数。明文分组换位C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 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个密码进行解密。明文中可能会出现诸如perception(感觉)之类的词汇,明文只包含字母,没有空格。加密方法是列换位(Transposition)法,为了阅读方便,密文被分成5个字母一组。密文:IHADLHEIBDATEEAROLOVTPMVCNENEIRYEEPMOATOOAPRXTNUBUPTOY密文是矩阵的形式,因此可以根据密文的长度来分组。密文长度为54,而54=2*27=3*18=6*9分别对这三种形式进行分析,因为没有告知具体的密钥是多少,不能知道每一列具体的顺序,就先只是按照密文字母的顺序来排列每列。154=2*27这种形式的举证比较容易观察,只需写出前面几列密文,假设不能得到有意义的文字就可以排除。列序123452627IALEBPOHDHIDTY列序12INHEAIDRNOEY这两种形式的排列都没有有意义文字perception出现,故排除。254=3*18123456789101112131415161718IDEDEROPCNREOOPTBTHLIAEOVMNEYPAORNUOAHBTALTVEIEMTAXUPY排列都没有有意义文字perception出现,故排除。列序123IOOHVAATTDPOLMOHVAECPINRBEXDNTAENTIUERBEYUAEPRETOPOLMY 354=6*9列序123456IDONOTHAVEANATTITUDEPROBLEMYOUHAVEAPERCEPTIONPROBLEMXY排列中可以找到有意义文字perception,将文字依次读下去,即是一段有意义的文字:Idonthaveanattitudeproblem.Youhaveaperceptionproblem.后面多余的X、Y是明文分组后最后一局部的长度缺乏密钥长度时作为补齐字母的。解密案例对以下54个密码进行解密。明文只包含字母,没有空格。加密方法是列换位(Transposition)法,为了阅读方便,密文被分成5个字母一组。密文:ceylestdco,nofft,htenc,uiiee,osfer,srprs,siist,sooux,dneht,nacx明文:Confidenceinyourselfisthefirststepontheroadtosuccess2、 矩阵换位法矩阵换位法是将明文字符按给定的顺序排列在一矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。密钥为矩阵的行数、列数以及给定的置换矩阵。明文矩阵换位C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3 C4 C5 C6 C7 C8 C9 C1 C2 C3C4 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 对称算法基于密钥的算法通常有两类:对称算法和公开密钥算法非对称算法。对称算法有时又叫传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在平安通信之前,协商一个密钥。对称算法的平安性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对称算法的加密和解密表示为:EKM=CDKC=M4.3.1 DES对称加密技术DES(DataEncryptionStandard)算法创造人:IBM公司W.Tuchman和C.Meyer.根底:1967年美国HorstFeistel提出的理论;产生:美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,最终选定DES。2、 DES算法的原理 DES算法的入口参数有三个:Key、Data、Mode。其中:Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两种:加密或解密。3、 DES算法的实现步骤输入输入64比特明文数据比特明文数据初始置换初始置换IP在密钥控制下在密钥控制下16轮迭代轮迭代初始逆置换初始逆置换IP-1输出输出64比特密文数据比特密文数据交换左右交换左右32比特比特 DES算法一般描述64bitsplaintext56bitskey初始置换IP第1轮置换选择1循环左移置换选择2K1第2轮置换选择2循环左移K2第16轮K16置换选择2循环左移32bits 对换逆初始置换IP164bits cipher text48bits3、 DES算法的实现步骤第一步:变换明文。对给定的64位比特的明文X,首先通过一个置换IP表来重新排列X,从而构造出64位比特的X0,X0=IP(X)=L0R0,其中L0表示X0的前32比特,R0表示X0的后32位。第二步:按照规那么迭代。Li=Ri-1Ri=Lif(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盒的工作原理。DES对64位的明文分组进行操作,通过一个初始置换,将明文分组成左半局部和右半局部,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左,右半局部合在一起经过一个末置换,这样就完成了。1IP置换表和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 563 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 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 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 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 641IP置换表和IP-1逆置换表输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两局部,每局部各长32位。比方:置换前的输入值为D1D2D3D64,那么经过初始置换后的结果为:L0=D58D50.D8,R0=D57D49.D7。经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始值的逆运算,例如,第20位经过初始置换后,处于第14位,而通过逆置换IP-1,又将第14位换回到第20位。DES的一轮迭代F函数Li-1 32 bitRi-1 32 bit选择扩展运算选择扩展运算 E盒盒48bit存放器存放器48bit存放器存放器选择压缩运算选择压缩运算 S盒盒32bit存放器存放器置换运算置换运算 PRi =Li-1f(Ri-1,ki) 32 bit32 bit Li =Ri-1轮开始:轮开始:64bit分分成左右成左右两半两半子密钥子密钥Ki 48 bit扩展置换 E盒 (Expand Box)将输入的32bit块扩展到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盒 (Substitution Box)48bit块通过S盒压缩成32bit块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盒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=11a2a3a4a5=01011001S盒S3盒10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12S4盒7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14S5盒2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3S盒S6盒12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13S7盒4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12S8盒13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11S1S2S3S4S5S6S7S8D 0 12 3 01 23 0 12 3 01 23 0 12 3 01 23 0 12 3 01 2 30 14 04 15 15 13 0 13 10 13 13 1 7 13 10 3 2 14 4 11 12 10 94 4 13 1 6 13 1 7 21 4 15 1 12 1 13 14 8 0 76 10 13 8 6 15 12 11 2 8 1 15 13 3 11 04 11 2 15 11 12 13 7 14 8 84 7 10 9 04 13 14 11 90 4 21 12 10 4 15 2 2 11 11 13 8 13 4 143 1 48 2 14 7 11 1 14 99 0 35 06 1 12 11 7 15 2 5 12 14 7 13 8 48 1 74 2 14 13 4 6 15 10 3 6 38 6 06 12 10 7 4 10 1 97 29 15 4 12 1 6 10 9 45 15 26 9 11 2 4 15 3 4 15 9 6 15 11 1 10 7 13 14 2 12 85 0 93 4 15 3 12 106 11 13 2 1 38 13 4 15 63 8 90 7 13 11 13 7 2 69 12 15 8 17 10 11 7 14 87 8 1 11 7 4 14 12 5 10 0 7 10 3 13 8 6 18 13 85 3 10 13 10 14 7 14 2 138 3 10 15 5 9 12 5 11 1 2 11 4 14 15 9 8 5 15 6 06 7 11 3 14 10 9 10 12 0 159 10 6 12 11 70 86 13 81 15 27 14 5 09 15 13 1 0 14 12 3 15 5 95 6 210 6 12 9 3 21 12 7 12 52 14 82 35 3 15 12 0 3 13 41 9 56 0 36 10 911 12 11 7 14 13 10 6 12 7 14 12 3 5 12 14 11 15 10 5 9 4 14 10 7 7 12 8 15 14 11 13 012 5 93 10 12 6 90 11 12 5 11 11 1 5 12 13 36 10 14 0 16 5 20 14 50 15 313 9 5 10 0 09 35 4 11 10 5 12 10 27 0 93 4 7 11 13 0 10 15 5 2 0 14 3 514 0 35 6 5 11 2 14 2 15 14 2 4 14 82 14 80 5 53 11 8 6 89 3 12 9 5 615 7 80 13 10 5 15 9 8 17 12 15 9 4 14 9 6 14 3 11 8 6 13 1 62 12 72 8 11表表 选择函数选择函数S盒表盒表例例 S盒应用实例:设盒应用实例:设B1=101100,求,求S1(B1) 那么那么S1(B1)的值位于列号为的值位于列号为2的列和行号为的列和行号为6的行,即等于的行,即等于2, 因此因此S1(B1)的输出是的输出是0010。S盒DES中其它算法都是线性的,而S盒运算那么是非线性的,S盒不易于分析,它提供了更好的平安性;所以S盒是算法的关键所在;提供了密码算法所必需的混乱作用置换函数PPermutaionP置换的目的是:提供雪崩效应;明文或密钥的一点小的变动都引起密文的较大变化;P的功能是对输入进行置换,P换位表如表所示:1607202129122817011523260518311002082414322703091913300622110425DES中子密钥的生成假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。DES中子密钥的生成64bit64bit密钥密钥置换选择置换选择1 1C0C028bit28bitD0D028bit28bit循环左移循环左移循环左移循环左移C1C128bit28bitD1D128bit28bit循环左移循环左移循环左移循环左移置换选择置换选择2 2置换选择置换选择2 2循环左移循环左移1234567811222222091011121314151612222221密钥表的计算逻辑:密钥表的计算逻辑:CiCi28bit28bitDiDi28bit28bit(56bit(56bit) )(56bit(56bit) )K Ki i K K0 0 (48bit)(48bit)(48bit)(48bit)(56bit(56bit) )子密钥ki由于不考虑每个字节的第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。 置换选择-17*8置换选择-26*8 57 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位,但是其中第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码为:534543555249545916,转换成二进制:M=(0101001101000101010000110101010101010010010010010101010001011001)2;IP置换表:经过IP置换后的排列结果:11111111110110010100101010101111L000000000000000001010000000010101R0DES例题:K=“COMPUTER的ASCII码用二进制表示:434F4D505554455216K=01000011010011110100110101010000010101010101010001000101K加上第8、16、24、64位的奇同位检查码,并去掉末8位结果如下:K=(0100001110100111110100111010101100000100101010110101000110001010)2密钥是64位,参加8个奇同校验位,为72位,去掉字母R,变成64位密钥长度不是64的整数倍一般右补0x00;当然加密和解密应该实现同样的补位原那么。即当加密是右补0x00,解密时要把补位的0x00去掉就可以复原数据。在此,平安性肯定是不影响,但有一个问题就是要加密的数据中末尾有0x00的问题如何解决,这是应考虑用别的补位数据,如0xff等。DES例题:K经过PC-1置换后得到C0,D0C0=1010111001000101001010100100D0=1010111100010010101010000100因为是第一次迭代,故左移1位C0D0得到C1D1为:C1=0101110010001010010101001001D1=0101111000100101010100001001C1D1在经过PC-2置换得48位子密钥K1:K1=000001011100000100000111000000100011101111110001DES例题:将32位R0进行扩展置换后得48位:E(R0)=100000000000000000000001010100000000000010101010然后将E(R0)与K1进行异或得A:A=100001011100000100000110010100100011101101011011将结果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,查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=11110101100100110011001110101110进行置换P得:X0=10101100111000101110011110110011将L0与X0按位异或,形成R1:R1=01010011001110111000110100011100令L1=R0至此,求出第一轮迭代结果L1R1,依次类推可求出L16R16,在经过逆初始置换即可获得密文。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)(10110101)(00101011)(00111011)(01010101)(10001100)(11000111)将结果分成KL0及KR0:KL0=1100011010110101001010110011KR0=1011010101011000110011000111按照循环移位表分别向左移动一位:KL1=1000110101101010010101100111KR1=0110101010110001100110001111经过置换选择2,生成K1:K1=001011011101100011001110001101110111111101000000DES算法的平安性 DES算法具有比较高平安性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的方法。而56位长的密钥的穷举空间为256,如果一台计算机的速度是每一秒种检测一百万个密钥,那么它搜索完全部密钥就需要将近228.5年的时间。f函数S盒的设计原理未知;DESCHALLDES分组加密算法是美国政府于1977年公布的数据加密标准,已在银行业和金融业使用了近二十年,自从其公布起,DES就一直不断地被人们研究和攻击,它是世界上最知名的、使用最广泛的分组密码算法。目前攻击DES的最有效的方法是密钥穷举攻击,Verser设计了一个密钥穷举攻击程序,用以穷举所有可能的DES密钥,直至找到正确的那一个密钥,这个计算机程序可以从Internet上分发和下载。他把这项方案命名为DESCHALL,这项方案开始时只有几百人参与,最终吸引了数万名志愿者参加。每有一名新的志愿者参加,DESCHALL小组就为其分配一局部密钥空间让其测试,这样,正确的密钥最终会在某一名志愿者的计算机中出现。1997年1月28日,美国的RSA数据平安公司在RSA平安年会上公布了一项“秘密密钥挑战(Secret-KeyChallange)竞赛,分别悬赏$1000、$5000、$10000用于攻破不同密钥长度的RC5密码算法,同时还悬赏$10000破密钥长度为56bits的DES算法。美国克罗拉多州的程序员RockeVerser从97年3月13日起,在Internet上数万名志愿者的协同工作下,在RSA挑战赛公布之后的第140天、DESCHALL方案实施的第96天,6月17日的晚10点39分,盐湖城iNetZ公司的职员MichaelSanders在他那台主频为奔腾90Hz、16M内存的PC机上成功地解出了DES的明文,找到了正确的密钥。密钥长度(bit)穷举时间4078秒485 小时5659天6441年7210,696年802,738,199年88700,978,948年96179,450,610,898年11211,760,475,235,863,837年128770,734,505,057,572,442,069年DESCHALLDESCHALL搜索速度估算搜索速度估算搜索速度估算搜索速度估算4.4 非对称公开密钥算法 公开密钥算法非对称算法的加密的密钥和解密的密钥不同,而且公开密钥算法非对称算法的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。能计算出来。 之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥简称公钥,解密密钥叫做私人密钥简称私钥。叫做公开密钥简称公钥,解密密钥叫做私人密钥简称私钥。 公开密钥公开密钥K1加密表示为:加密表示为:EK1M=C。公开密钥和私人密钥是不。公开密钥和私人密钥是不同的,用相应的私人密钥同的,用相应的私人密钥K2解密可表示为:解密可表示为:DK2C=M。4.4.2 RSA 公开密钥加密技术公开密钥加密根本思想是利用求解某些数学难题的困难性。用户的加密密钥与解密密钥不再相同,理论上通过加密密钥求解解密密钥是不可能的。RSA是由MIT的Rivest,Shamir&Adleman在1977提出最著名的且被广泛应用的公钥加密体制,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。1. RSA算法描述加密:C=MemodN,where0MN解密:M=CdmodN公钥为e,N,私钥为d,N2. RSA 密钥产生过程随机选择两个大素数p,q计算N=p.q注意(N)=(p-1)(q-1)选择e使得1e(N),且gcd(e,(N)=1解以下方程求出de.d=1mod(N)且0dN公布公钥:KU=e,N保存私钥:KR=d,N3. RSA 的使用发送方要加密明文M:获得接收方的公钥KU=e,N计算:C=MemodN,where0MN接收方解密密文C:使用自己的私钥KR=d,N计算:M=CdmodN注意:M必须比N小RSA算法举例(1)选择两个素数p=7,q=17;(2)计算n=p*q=7x17=119;(3)计算(n)=(p-1)(q-1)=(7-1)(17-1)=96(4)选择一个随机整数e=5,且1e(n)=96,满足gcd(b,(n)=1;那么公钥Pk=5;(5)计算d,(d*e)mod(n)=1,即(d*5)mod96=1,d=77;那么私钥Sk=77;设明文P=19;加密:195mod119=66,传送密文C=66;解密:6677mod119=19,获得明文P=19。习题: 1取两个质数取两个质数p=11, q=13; 2得到得到 n=p*q=143 ; 3算出另一个数算出另一个数 (n) = (p-1)*(q-1)=120 ; 4再选取一个与再选取一个与(n) =120互质的数,如设互质的数,如设e=7, 满足:满足: e*d=1 mod (n) ,得到,得到d=103; 5 公开密钥公开密钥 7 ,143 秘密私钥秘密私钥103, 143 6加密:设明文加密:设明文x=85,用公开密钥加密得到密文,用公开密钥加密得到密文y: y=xe mod n = 857 mod 143 = 123 7解密:用秘密私钥计算:解密:用秘密私钥计算: x=yd mod n = 123103 mod 143 = 854.4.3 RSA算法的平安性分析 密码分析者攻击RSA体制的关键点在于如何分解n;假设分解成功,使n=pq那么可以算出(n)=(p-1)(q-1),然后由公开的e,解出秘密的d假设要RSA足够平安,p和q必须为足够大的素数,使分析者做大数分解非常困难;模数n必须选大一些;许多标准规定n至少为512比特位。RSA算法的速度 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。案例:PGP加密技术PGPPrettyGoodPrivacy加密技术是一个基于RSA公钥加密体系的邮件加密软件,提出了公共钥匙或不对称文件的加密技术。PGP简介 PGP加密技术的创始人是美国的PhilZimmermann。他的创造性把把RSA公钥体系和传统加密体系的结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为目前几乎最流行的公钥加密软件包。由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。收件人同样是用RSA解出随机密钥,再用IEDA解出原文。这样的链式加密既有RSA算法的保密性Privacy和认证性Authentication,又保持了IDEA算法速度快的优势。PGP加密软件PGP加密软件最新版本是,使用可以简洁而高效地实现邮件或者文件的加密、数字签名。的安装界面如下图。下面的几步全面采用默认的安装设置,因为是第一次安装,所以在用户类型对话框中选择“No,IamaNewUser,如下图。使用PGP产生密钥 因为在用户类型对话框中选择了“新用户,在计算机启动以后,自动提示建立PGP密钥,如下图。点击按钮“下一步,在用户信息对话框中输入相应的姓名和电子邮件地址,如下图。在PGP密码输入框中输入8位以上的密码并确认,如下图。然后PGP会自动产生PGP密钥,生成的密钥如下图。使用PGP加密文件 使用PGP可以加密本地文件,右击要加密的文件,选择PGP菜单项的菜单“Encrypt,如下图。系统自动出现对话框,让用户选择要使用的加密密钥,选中一个密钥,点击按钮“OK,如下图。目标文件被加密了,在当前目录下自动产生一个新的文件,如下图。翻开加密后的文件时,程序自动要求输入密码,输入建立该密钥时的密码。如下图。 使用PGP加密邮件 PGP的主要功能是加密邮件,安装完毕后,PGP自动和Outlook或者OutlookExpress关联。和OutlookExpress关联如下图。利用Outlook建立邮件,可以选择利用PGP进行加密和签名,如下图。4.7 数字签名数字签名是一个加密的消息摘要,它是附加在被签名消息之后或某一特定位置上的一段签名图样。数字签名建立在公开密钥加密和单向平安哈希函数算法的组合根底之上。数字签名的原理1.签名是可信的;2.其他任何人均不能伪造签名,也不能对接收或发送信息进行篡改,伪造或冒充;3.签名不可重用;4.签名后的文件是不可变的;5.签名不可抵赖。假设当当事双方对签名真伪发生争执时,能够在公证的仲裁者面前通过验证来确认其真伪。 报文分解函数也称散列函数,是适应数字签名技术的需要而产生的一种信息摘要技术。它是一个单向哈希函数,它能从任意长度的输入信息中产生一个固定长度的输出通常是128位。数据散列函数散列值数据摘要数字签名流程数字签名流程作业:试编程根据给出的密钥,用列换位法对一段给出的文字进行加密。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号