1、2022年12月17日3时04分计算机网络安全基础数据加密是计算机安全的重要部分。口令加密是防止文件中的密码被人偷看。文件加密主要应用于因特网上的文件传输,防止文件被看到或劫持。电子邮件给人们提供了一种快捷便宜的通信方式,但电子邮件是不安全的,很容易被别人偷看或伪造。为了保证电子邮件的安全,人们采用了数字签名这样的加密技术,并提供了基于加密的身份认证技术,这样就可以保证发信人就是信上声称的人。数据加密也使因特网上的电子商务成为可能。2022年12月17日3时04分计算机网络安全基础本章主要内容:本章主要内容:1数据加密概述2传统密码技术3数据加密4公用密钥私有密钥密码学5 安全传输方法6 验证
2、7 加密软件PGP2022年12月17日3时04分计算机网络安全基础7.1.1密码学的发展1加密的历史作为保障数据安全的一种方式,数据加密起源于公元前2000年。埃及人是最先使用特别的象形文字作为信息编码的人。随着时间推移,巴比伦、美索不达米亚和希腊都开始使用一些方法来保护他们的书面信息。2密码学的发展密码学的发展可以分为两个阶段。第一个阶段是计算机出现之前的四千年(早在四千年前,古埃及就开始使用密码传递消息),这是传统密码学阶段,基本上靠人工对消息加密、传输和防破译。第二阶段是计算机密码学阶段,包括:2022年12月17日3时04分计算机网络安全基础传统方法的计算机密码学阶段。解密是加密的简
3、单逆过程,两者所用的密钥是可以简单地互相推导的,因此无论加密密钥还是解密密钥都必须严格保密。这种方案用于集中式系统是行之有效的。包括两个方向:一个方向是公用密钥密码(RSA),另一个方向是传统方法的计算机密码体制数据加密标准(DES)。3什么是密码学?密码学包括密码编码学和密码分析学。密码体制的设计是密码编码学的主要内容,密码体制的破译是密码分析学的主要内容。密码编码技术和密码分析技术是相互依存、相互支持、密不可分的两个方面。2022年12月17日3时04分计算机网络安全基础7.1.2 数据加密数据加密的基本过程包括对称为明文的可读信息进行处理,形成称为密文或密码的代码形式。该过程的逆过程称为
4、解密,即将该编码信息转化为其原来的形式的过程。1为什么需要进行加密因特网是危险的,而且这种危险是TCPIP协议所固有的,一些基于TCPIP的服务也是极不安全的,另一方面,因特网把全世界连在了一起,走向因特网就意味着走向了世界。为了使因特网变得安全和充分利用其商业价值,人们选择了数据加密和基于加密技术的身份认证。2022年12月17日3时04分计算机网络安全基础2加密密钥加密算法通常是公开的,现在只有少数几种加密算法,如 DES和 IDEA等。一般把受保护的原始信息称为明文,编码后的信息称为密文。尽管大家都知道使用加密方法,但对密文进行解码必须要有正确的密钥,而密钥是保密的。(1)保密密钥和公用
5、私有密钥在保密密钥中,加密者和解密者使用相同的密钥,也被称为对称密钥加密。这种加密算法的问题是,用户必须让接收人知道自己所使用的密钥,这个密钥需要双方共同保密,任何一方的失误都会导致机密的泄露,而且在告诉收件人密钥过程中,还需要防止任何人发现或偷听密钥,这个过程被称为密钥发布。2022年12月17日3时04分计算机网络安全基础公用私有密钥,与单独的密钥不同,它使用相互关联的一对密钥,一个是公用密钥,任何人都可以知道,另一个是私有密钥,只有拥有该对密钥的人知道。如果有人发信给这个人,他就用收信人的公用密钥对信件进行过加密,当收件人收到信后,他就可以用他的私有密钥进行解密,而且只有他持有的私有密钥
6、可以解密。这种加密方式的好处显而易见。密钥只有一个人持有,也就更加容易进行保密,因为不需在网络上传送私人密钥,也就不用担心别人在认证会话初期截获密钥。公用密钥和私有密钥有两个相互关联的密钥;公用密钥加密的文件只有私有密钥能解开;私有密钥加密的文件只有公用密钥能解开。2022年12月17日3时04分计算机网络安全基础(2)摘要函数摘要是一种防止信息被改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。总之
7、,摘要算法从给定的文本块中产生一个数字签名(Fingerprint或Message Digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容。2022年12月17日3时04分计算机网络安全基础3密钥的管理和分发(1)使用同样密钥的时间范围一般强调仅将一个对话密钥用于一条信息或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。(2)保密密钥的分发建立了一个安全的、可信任的密钥分发中心(Key Distribution Center,KDC),每个用户只要知道一个和KDC进行通信的密钥就可以了,而不需要知道成百上千个不同的密钥。2022年12月17日3时0
8、4分计算机网络安全基础7.1.3 基本概念1消息和加密消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密(Encryption),被加密的消息称为密文,而把密文转变为明文的过程称为解密(Decryption)。2022年12月17日3时04分计算机网络安全基础使消息保密的技术和科学叫做密码编码学(Cryptography),从事此行的叫密码编码者(Cryptographer),密码分析者是从事密码 分 析 的 专 业 人 员,密 码 分 析 学(Cryptanalysis)就是破译密文的科学和技术,即揭穿伪装。密码学(Cryptology)作为数学的一个分支,包括密码编码学和密码分
9、析学两部 分,精 于 此 道 的 人 称 为 密 码 学 家(Cryptologist),现代的密码学家通常也是理论数学家。2022年12月17日3时04分计算机网络安全基础加密函数E作用于明文 M得到密文C,可用数学公式表示:E(M)=C相反地,解密函数D作用于C产生M:D(C)=M先加密后再解密,原始的文明将恢复,故下面的等式必须成立:D(E(M)=M2022年12月17日3时04分计算机网络安全基础2鉴别、完整性和抗抵赖除了提供机密性外,密码学通常还有其它的作用。(1)鉴别。消息的接收者应该能够确认消息的来源,入侵者不可能伪装成他人。(2)完整性。消息的接收者应该能够验证在传送过程中消息
10、没有被修改,入侵者不可能用假消息代替合法消息。(3)抗抵赖。发送者事后不可能虚假地否认他发送的消息。2022年12月17日3时04分计算机网络安全基础3算法和密钥密码算法(Algorithm)也叫密码(Cipher),是用于加密和解密的数学函数。通常情况下,有两个相关的函数,一个用作加密,另一个用作解密。密钥用 K表示。K可以是很多数值里的任意值。密钥 K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用 K作为下标表示),这样,加解密函数现在变成:EK(M)=C DK(C)=M这些函数具有的特性:DK(EK(M)=M 2022年12月17日3时04分计算机网络
11、安全基础单钥密加解密双钥加密解密 2022年12月17日3时04分计算机网络安全基础基于密钥的算法通常有两类:对称算法和公用密钥算基于密钥的算法通常有两类:对称算法和公用密钥算法法。4对称算法对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推导出来,反过来也成立。对称算法可分为两类。一次只对明文中的单个位(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组位进行运算,这些位组称为分组,相应的算法称为分组算法或分组密码。5公用密钥算法公用密钥算法(Public-Key Aalgorithm)也叫非对称算法,它是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密
12、密钥不能根据加密密钥计算出来。2022年12月17日3时04分计算机网络安全基础6密码分析密码分析学是在不知道密钥的情况下,恢复出明文的科学。成功的密码分析能恢复出消息的明文或密钥。密码分析也可以发现密码体制的弱点,最终得到上述结果。密钥通过非密码分析方式的丢失叫做泄露。常用的密码分析攻击有四类。(1)唯密文攻击(Cipher Text-Only Attack)。密码分析者有一些消息的密文,这些消息都用同一加密算法加密。密码分析者的任务是恢复尽可能多的明文,或者最好是能推算出加密消息的密钥来,以便可采用相同的密钥解出其他被加密的消息。2022年12月17日3时04分计算机网络安全基础(2)已知
13、明文攻击(Known-Plaintext Attack)。密码分析者不仅可得到一些消息的密文,而且也知道这些消息的明文。分析者的任务就是用加密信息推出用来加密的密钥或推导出一个算法,此算法可以对用同一密钥加密的任何新的消息进行解密。(3)选择明文攻击(Chosen-Plaintext Attack)。分析者不仅可得到一些消息的密文和相应的明文,而且他们也可选择被加密的明文。这比已知明文攻击更有效。因为密码分析者能选择特定的明文块去加密,那些块可能产生更多关于密钥的信息,分析者的任务是推出用来加密消息的密钥或导出一个算法,此算法可以对用同一密钥加密的任何新的消息进行解密。2022年12月17日3
14、时04分计算机网络安全基础(4)自适应选择明文攻击(Adaptive-Chosen-Plaintext Attack)。这是选择明文攻击的特殊情况。密码分析者不仅能选择被加密的明文,而且也能基于以前加密的结果修正这个选择。在选择明文攻击中,密码分析者还可以选择一大块被加密的明文,而在自适应选择密文攻击中,可选取较小的明文块,然后再基于第一块的结果选择另一明文块,依此类推。(5)选择密文攻击(Chosen-Cipher Text Attack)。密码分析者能选择不同的被加密的密文,并可得到对应的解密的明文,例如密码分析者存取一个防窜改的自动解密盒,密码分析者的任务是推出密钥。2022年12月17
15、日3时04分计算机网络安全基础(6)选择密钥攻击(Chosen-Key Attack)。这种攻击并不表示密码分析者能够选择密钥,它只表示密码分析者具有不同密钥之间的关系的有关知识。(7)软磨硬泡攻击(Rubber-Hose Cryptanalysis)。这种攻击是对密码分析者威胁、勒索,或者折磨某人,直到他给出密钥为止。行贿有时称为购买密钥攻击(purchase-key attack)。这些是非常有效的攻击,并且经常是破译算法的最好途径。2022年12月17日3时04分计算机网络安全基础7算法的安全性不同的密码算法具有不同的安全等级。如果破译算法的代价大于加密数据的价值,破译算法所需的时间比加
16、密数据保密的时间更长,用单密钥加密的数据量比破译算法需要的数据量少得多,那么这种算法可能是安全的。破译算法可分为不同的类别,安全性的递减顺序为:全部破译。全部破译。密码分析者找出密钥 K,这样 DK(C)=P。全盘推导。全盘推导。密码分析者找到一个代替算法在不知道密钥 K的情况下,等价于DK(C)=P。局部推导。局部推导。密码分析者从截获的密文中找出明文。信息推导。信息推导。密码分析者获得一些有关密钥或明文的信息。这些信息可能是密钥的几个位、有关明文格式的信息等。2022年12月17日3时04分计算机网络安全基础7.2.1 数据表示方法数据的表示有多种形式,使用最多的是文字,还有图形、声音、图
17、像等。这些信息在计算机系统中都是以某种编码的方式来存储的。传统加密方法的主要应用对象是对文字信息进行加密解密。7.2.2 替代密码替代密码(Substitution Cipher)是使用替代法进行加密所产生的密码。2022年12月17日3时04分计算机网络安全基础替代密码就是明文中每一个字符被替换成密文中的另外一个字符。接收者对密文进行逆替换就恢复出明文来。替代法加密是用另一个字母表中的字母替代明文中的字母。在替代法加密体制中,使用了密钥字母表。它可以由明文字母表构成,也可以由多个字母表构成。如果是由一个字母表构成的替代密码,称为单表密码。其替代过程是在明文和密码字符之间进行一对一的映射。如果
18、是由多个字母表构成的替代密码,称为多表密码。在经典密码学中,有四种类型的代替密码。简单代替密码、多名码代替密码、多字母代替密码 和多表代替密码。2022年12月17日3时04分计算机网络安全基础1单表替代密码单表替代密码的一种典型方法是凯撒(Caesar)密码,又叫循环移位密码。它的加密方法就是把明文中所有字母都用它右边的第k个字母替代,并认为Z后边又是A。这种映射关系表示为如下函数:F(a)=(a+k)mod n其中:a表示明文字母;n为字符集中字母个数;k为密钥。2022年12月17日3时04分计算机网络安全基础映射表中,明文字母中在字母表中的相应位置数为C,(如A=1,B=2,)形式如下
19、:设k3;对于明文PCOMPUTE SYSTEMS则f(C)=(3+3)mod 26=6=Ff(O)=(15+3)mod 26=18=Rf(M)=(13+3)mod 26=16=Pf(S)=(19+3)mod 26=22=V所以,密文C=Ek(P)=FRPSXRWHUVBVWHPV。2022年12月17日3时04分计算机网络安全基础除了凯撒密码,在其他的单表替代法中,有的字母表被打乱。比如,在字母表中首先排列出密钥中出现的字母,然后在密钥后面填上剩余的字母。如密钥是HOW,那么新的字母表就是:HOWABCDEFGIJKLMNPQRSTUVXYZ这个密钥很短,多数明文字母离开其密文等价字母,仅有
20、一个或几个位置。若用长的密钥字,则距离变大,因而便难于判断是何文字密钥。2022年12月17日3时04分计算机网络安全基础2多表替代密码周期替代密码是一种常用的多表替代密码,又称为维吉尼亚(Vigenere)密码。这种替代法是循环的使用有限个字母来实现替代的一种方法。若明文信息mlm2m3mn,采用n个字母(n个字母为B1,B2,Bn)替代法,那么,ml将根据字母Bn的特征来替代,mn+l又将根据B1的特征来替代,mn+2又将根据B2的特征来替代,如此循环。可见B1,B2,Bn就是加密的密钥。这种加密的加密表是以字母表移位为基础把26个英文字母进行循环移位,排列在一起,形成2626的方阵。该方
21、阵被称为维吉尼亚表。采用的算法为f(a)=(a+Bi)mod n (i=(1,2,n)2022年12月17日3时04分计算机网络安全基础例如:以YOUR为密钥,加密明码文HOWAREYOU。P=HOWAREYOUK=YOURYOURYEk(P)=FCQRPSSFS其加密过程就是以明文字母选择列,以密钥字母选择行,两者的交点就是加密生成的密码文字母。解密时,以密码字母选择行,从中找到密文字母,密文字母所在列的列名即为明文字母。2022年12月17日3时04分计算机网络安全基础7.2.3 换位密码换位密码是采用移位法进行加密的。它把明文中的字母重新排列,本身不变,但位置变了。如:把明文中的字母的顺
22、序倒过来写,然后以固定长度的字母组发送或记录。明文:computer systems密文:sm etsy sretupmoc(l)列换位法将明文字符分割成为五个一列的分组并按一组后面跟着另一组的形式排好。如明文是:WHAT YOU CAN LEARN FROM THIS BOOK分组排列为:2022年12月17日3时04分计算机网络安全基础密文则以下面的形式读出:WOFHOHURIKACOSXTAMBXYNTOX这里的密钥是数字5。WHATYOUCANFROMTHISBOOKXXX2022年12月17日3时04分计算机网络安全基础(2)矩阵换位法这种加密是把明文中的字母按给定的顺序安排在一个矩
23、阵中,然后用另一种顺序选出矩阵的字母来产生密文。如将明文ENGINEERING按行排在3*4矩阵中,如下所示:1234ENGINEERING24131234f给定一个置换:2022年12月17日3时04分计算机网络安全基础现在根据给定的置换,按第2列,第4列,第1列,第3列的次序排列,就得得到密文:NIEGERNEN IG在这个加密方案中,密钥就是矩阵的行数m和列数n,即m*n3*4,以及给定的置换矩阵。也就是:k=(m*n,f)1234NIEGERNENIG2022年12月17日3时04分计算机网络安全基础其解密过程是将密文根据3*4矩阵,按行、列的顺序写出,再根据给定置换产生新的矩阵,恢复
24、明文为:ENGINEERING1234NIEGERNENIG1234ENGINEERING2022年12月17日3时04分计算机网络安全基础7.2.4 简单异或 异或(XOR)在C语言中是“”操作,或者用数学表达式 表示。它是对位的标准操作,有以下一些运算:0 0=00 1=11 0=11 1=0也要注意:a a=0 a b b=a2022年12月17日3时04分计算机网络安全基础/*Usage:crypto_key input_file output_file*/#include stdio.hvoid main(int argc,char*argv)FILE*fi,*fo;char*cp;
25、int c;if(cp=argv1)&*cp!=0)if(fi=fopen(argv2,rb)!=NULL)if(fo=fopen(argv3,wb)!=NULL)while(c=getc(fi)!=EOF)if(!*cp)cp=argv1;c=*(cp+);putc(c,fo);fclose(fo);fclose(fi);2022年12月17日3时04分计算机网络安全基础7.2.5 一次密码本 有一种理想的加密方案,叫做一次密码本(One-Time Pad)。一次密码本是一个大的不重复的真随机密钥字母集,这个密钥字母集被写在几张纸上,并被粘成一个密码本。它最初的形式是用于电传打字机。发送者用
26、密码本中的每一密钥字母准确地加密一个明文字符。加密是明文字符和一次密码本密钥字符的模26加法。每个密钥仅对一个消息使用一次。发送者对所发送的消息加密,然后销毁密码本中用过的一页或磁带部分。接收者有一个同样的密码本,并依次使用密码本上的每个密钥去解密密文的每个字符。接收者在解密消息后销毁密码本中用过的一页或磁带部分。新的消息则用密码本中新的密钥加密。2022年12月17日3时04分计算机网络安全基础例如,如果消息是:ONE TIME PAD而取自密码本的密钥序列是:TBF RGFA RFM那么密文就是:IPK LPSF HGQ因为OT mode 26=INB mode 26=PEF mode 2
27、6=K2022年12月17日3时04分计算机网络安全基础对加密算法要求要达到以下几点:(1)必须提供高度的安全性;(2)具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又便于理解和掌握;(3)安全性应不依赖于算法的保密,其加密的安全性仅以加密密钥的保密为基础;(4)必须适用于不同的用户和不同的场合;(5)实现算法的电子器件必须很经济、运行有效;(6)必须能够验证,允许出口。2022年12月17日3时04分计算机网络安全基础7.3.1数据加密标准数据加密标准(Data Encryption Standard,DES)是美国国家标准局开始研究除国防部以外的其它部门的计算机系统的数据加密标
28、准。DES是一个分组加密算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一算法。密钥的长度为56位。(密钥通常表示为64位的数,但每个第8位都用作奇偶校验,可以忽略。)密钥可以是任意的56位的数,且可在任意的时候改变。其中极少量的数被认为是弱密钥,但能容易地避开它们。所有的保密性依赖于密钥。2022年12月17日3时04分计算机网络安全基础DES有16轮,这意味着要在明文分组上16次实施相同的组合技术。1加密过程DES使用56位密钥对64位数据块进行加密,需要进行16轮编码。2022年12月17日3时04分计
29、算机网络安全基础在每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。在每轮编码过程中,64位数据和每轮密钥值被输入到一个称为“S”的盒中,由一个压码函数对数位进行编码。另外,在每轮编码开始、过后以及每轮之间,64位数码被以一种特别的方式置换(数位顺序被打乱)。在每一步处理中都要从56位的主密钥中得出一个唯一的轮次密钥。最后,输入的64位原始数据被转换成64位看起来被完全打乱了的输出数据,但可以用解密算法(实际上是加密过程的逆过程)将其转换成输入时的状态。当然,这个解密过程要使用加密数据时所使用的同样的密钥。2022年12月17日3时04分计算机网络安全基础由于每轮之前、之间和之后
30、的变换,DES用软件执行起来比硬件慢得多,用软件执行一轮变换时,必须做一个64次的循环,每次将64位数的一位放到正确的位置。使用硬件进行变换时,只需用64个输入“管脚”到64个输出“管脚”的模块,输入“管脚”和输出“管脚”之间按定义的变换进行连接。这样,结果就可以直接从输出“管脚”得到。2算法概要DES对64位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。2022年12月17日3时04分计算机网络安全基础然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密钥结合。经过16轮后,左、右半部分合在一起,经过一个末置换(初始置换的逆置换),这
31、样该算法就完成了。在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个S盒将这48位替代成新的32位数据,再将其置换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果即成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,便实现了DES的16轮运算。2022年12月17日3时04分计算机网络安全基础一轮DES 2022年12月17日3时04分计算机网络安全基础假设Bi是第i次迭代的结果,Li和Ri是Bi的左半部分和右半部分,Ki是第i轮的48位
32、密钥,且f是实现代替、置换及密钥异或等运算的函数,那么每一轮就是:Li=Ri-1Ri=Li-1 f(Ri-1,Ki)2022年12月17日3时04分计算机网络安全基础3初始置换初始置换在第一轮运算之前执行,对输入分组实施如下表所示的变换。此表应从左向右、从上向下读。例如,初始置换把明文的第58位换到第1位的位置,把第50位换到第2位的位置,把第42位换到第3位的位置,等等。5850423426181026052443628201246254463830221466456484032241685749413325179159514335271911361534537292113563554739
33、31231572022年12月17日3时04分计算机网络安全基础4密钥置换一开始,由于不考虑每个字节的第8位,DES的密钥由64位减至56位,如下表所示。每个字节第8位可作为奇偶校验位以确保密钥不发生错误。在DES的每一轮中,从56位密钥产生出不同的48位子密钥(Sub Key),这些子密钥Ki由下面的方式确定。574941332517915850423426181025951433527191136052443663554739312315762544638302214661534537292113528201242022年12月17日3时04分计算机网络安全基础首先,56位密钥被分成两部分
34、,每部分28位。然后,根据轮数,这两部分分别循环左移l位或2位。下表给出了每轮移动的位数。轮12345678910111213141516位数11222222122222212022年12月17日3时04分计算机网络安全基础移动后,就从56位中选出48位。因为这个运算不仅置换了每位的顺序,同时也选择子密钥,因而被称作压缩置换。这个运算提供了一组48位的集。下表定义了压缩置换(也称为置换选择)。例如,处在第33位位置的那一位在输出时移到了第35位的位置,而处在第18位位置的那一位被略去了。141711241532815621102319124268167272013241523137475530
35、40514533484449395634534642503629322022年12月17日3时04分计算机网络安全基础因为有移动运算,在每一个子密钥中使用了不同的密钥子集的位。虽然不是所有的位在子密钥中使用的次数均相同,但在16个子密钥中,每一位大约使用了其中14个子密钥。5扩展置换这个运算将数据的右半部分Ri从32位扩展到了48位。由于这个运算改变了位的次序,重复了某些位,故被称为扩展置换。这个操作有两个方面的目的:它产生了与密钥同长度的数据以进行异或运算,它提供了更长的结果,使得在替代运算时能进行压缩。2022年12月17日3时04分计算机网络安全基础下图显示了扩展置换,有时它也叫做E盒。
36、对每个4位输入分组,第1和第4位分别表示输出分组中的两位,而第2和第3位分别表示输出分组中的一位。2022年12月17日3时04分计算机网络安全基础下表给出了哪一输出位对应于哪一输入位。例如,处于输入分组中第3位的位置的位移到了输出分组中第4位的位置,而输入分组中第21位的位置的位移到了输出分组中第30和第32位的位置。尽管输出分组大于输入分组,但每一个输入分组产生唯一的输出分组。32123454567898910111213121314151617161718192021202122232425242526272829282930313212022年12月17日3时04分计算机网络安全基础6
37、S盒代替压缩后的密钥与扩展分组异或以后,将48位的结果送入,进行代替运算。替代由8个代替盒,或 S盒完成。每一个S盒都有 6位输入,4位输出,且这8个S盒是不同的。(DES的这8个S盒占的存储空间为256字节。)48位的输入被分为8个6位的分组,每一分组对应一个S盒代替操作:分组1由S-盒1操作,分组2由S-盒2操作,依次类推。2022年12月17日3时04分计算机网络安全基础每个S盒是一个4行、16列的表。盒中的每一项都是一个4位的数。S盒的6个位输入确定了其对应的输出在哪一行哪一列。下面列出所有的8个S盒。144131215118310612590701574142131106121195
38、384114813621115129731050151282491751131410061315181461134972131205103134715281412011069115014711104131581269321513810131542116712051492022年12月17日3时04分计算机网络安全基础713143069101285111241513811565034721211014910690121171315131452843150610113894511127214100914631551131271142813709346102851412115113649815301
39、112125101471101306987415143115212S盒3:S盒4:2022年12月17日3时04分计算机网络安全基础1211015926801334147511101542712956113140113891415528123704101131164321295151011141760813212417101168531513014914112124713150151039864211110137815912563014181271142136150910453S盒5:S盒6:2022年12月17日3时04分计算机网络安全基础41121415081331297510611301
40、17491101435122158614111312371410156805926111381410795015142312S盒7:S盒8:13284615111109314501271151381037412561101492711419121420610131535821147410813151290356112022年12月17日3时04分计算机网络安全基础输入位以一种非常特殊的方式确定了S盒中的项。假定将S盒的6位的输入标记为b1、b2、b3、b4、b5、b6。则b1和b6组合构成了一个2位的数,从0到3,它对应着表中的一行。从b2到b5构成了一个4位的数,从0到15,对应着表中的一列
41、。例如,假设第6个S盒的输入(即异或函数的第31位到36位)为110011。第1位和最后一位组合形成了11,它对应着第6个S盒的第三行。中间的4位组合在一起形成了1001,它对应着同一个S盒的第9列。S盒6的第三行第9列处的数是14(记住,行、列的记数均从0开始而不是从1开始),则值1110就代替了110011。2022年12月17日3时04分计算机网络安全基础7P盒置换S盒代替运算后的32位输出依照P盒进行置换。该置换把每输入位映射到输出位,任意一位不能被映射两次,也不能被略去,这个置换叫做直接置换。下表给出了每位移到的位置。例如,第21位移到了第4位处,同时第4位移到了第31位处。最后,将
42、P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始另一轮。16720212912281711523265183110282414322739191330622114252022年12月17日3时04分计算机网络安全基础8末置换末置换是初始置换的逆过程,下表列出了该置换。应注意DES在最后一轮后,左半部分和右半部分并未交换,而是将R16与L16并在一起形成一个分组作为末置换的输入。40848 16 56 24 64 32 39747 15 55 23 63 3138646 14 54 22 62 30 37545 13 53 21 61 2936444 12 52 2
43、0 60 28 35343 11 51 19 59 2734242 10 50 18 58 26 33141949 17 57 252022年12月17日3时04分计算机网络安全基础9DES解密在经过所有的代替、置换、异或和循环移动之后,获得了这样一个非常有用的性质:加密和解密可使用相同的算法。DES使得用相同的函数来加密或解密每个分组成为可能,二者的唯一不同之处是密钥的次序相反。这就是说,如果各轮的加密密钥分别是K1,K2,K3,K16那么解密密钥就是K16,K15,K14,K1。为各轮产生密钥的算法也是循环的。密钥向右移动,每次移动个数为0,1,2,2,2,2,2,2,1,2,2,2,2,
44、2,2,1。2022年12月17日3时04分计算机网络安全基础10三重DESDES的唯一密码学缺点就是密钥长度较短。解决密钥长度的问题的办法之一是采用三重DES。三重DES方法需要执行三次常规的DES加密步骤,但最常用的三重DES算法中仅仅用两个56位DES密钥。设这两个密钥为K1和K2,其算法的步骤是:(1)用密钥K1进行DES加密;(2)用步骤(1)的结果使用密钥K2进行DES解密;(3)用步骤(2)的结果使用密钥K1进行DES加密。2022年12月17日3时04分计算机网络安全基础这个过程称为 EDE,因为它是由加密解密加密(Encrypt Decrypt Encrypt)步骤组成的。在
45、EDE中,中间步骤是解密,所以,可以使K1=K2来用三重DES方法执行常规的 DES加密。2022年12月17日3时04分计算机网络安全基础11DES举例已知明文m=computer,密钥k=program,用ASCII码表示为:m=01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010k=01110000 01110010 01101111 01100111 01110010 01100001 01101101因为k只有56位,必须插入第8,16,24,32,40,48,56,64位奇偶校验位,合成64位
46、。而这8位对加密过程没有影响。2022年12月17日3时04分计算机网络安全基础m经过IP置换后得到L0=11111111 10111000 01110110 01010111R0=00000000 11111111 00000110 10000011密钥k通过PC-1得到C0=11101100 10011001 00011011 1011D0=10110100 01011000 10001110 0110再各自左移一位,通过PC-2得到48位k1=00111101 10001111 11001101 00110111 00111111 00000110R0(32位)经E作用膨胀为48位,10
47、000000 00010111 11111110 10000000 11010100 000001102022年12月17日3时04分计算机网络安全基础再和k1作异或运算得到(分成8组)101111 011001 100000 110011 101101 111110 101101 001110通过S盒后输出位32比特,01110110 00110100 00100110 10100001S盒的输出又经过P置换得到01000100 00100000 10011110 10011111这时:所以,第一趟的结果是:00000000 11111111 00000110 10000011 101110
48、11 10011000 11101000 11001000 2022年12月17日3时04分计算机网络安全基础如此,迭代16次以后,得到密文:01011000 10101000 01000001 10111000 01101001 11111110 10101110 00110011明文或密钥每改变一位,都会对结果密文产生剧烈的影响。任意改变一位,其结果大致有将近一半的位发生了变化。2022年12月17日3时04分计算机网络安全基础7.3.2国际数据加密算法国际数据加密算法(International Data Encryption Algorithm)IDEA与DES一样,也是一种使用一个密
49、钥对64位数据块进行加密的常规共享密钥加密算法。同样的密钥用于将64位的密文数据块恢复成原始的64位明文数据块。IDEA使用128位(16字节)密钥进行操作,这么长的密钥被认为即使在多年后仍是有效的。IDEA算法通过一系列的加密轮次进行操作,每轮都使用从完整的加密密钥中生成的一个子密钥,使用一个称为“压码”的函数在每轮中对数据位进行编码。与DES不同的是IDEA不使用置换。2022年12月17日3时04分计算机网络安全基础7.3.3 Blowfish算法算法 Blowfish是Bruce Schneier设计的,可以免费使用。Blowfish是一个16轮的分组密码,明文分组长度为64位,使用变
50、长密钥(从32位到448位)。Blowfish算法由两部分组成:密钥扩展和数据加密。1数据加密2函数F 3密钥扩展2022年12月17日3时04分计算机网络安全基础2022年12月17日3时04分计算机网络安全基础7.3.4 GOST算法算法GOST是前苏联设计的分组密码算法,为前苏联国家标准局所采用,标准号为:28147-892022年12月17日3时04分计算机网络安全基础7.3.5 PKZIP算法算法PKZIP加密算法是一个一次加密一个字节的、密钥长度可变的序列密码算法,它被嵌入在PKZIP数据压缩程序中。该算法使用了三个32位变量的key0、key1、key2和一个从key2派生出来的