1.11k likes | 1.34k Views
第 2 章 数 据 加 密. 2.1 数据加密概述 2.2 对称密码体制 2.3 非对称密码体制 2. 4 密钥的管理 2. 5 散列函数与数字签名 2. 6 本章小结. 通过本章的学习,读者应该掌握以下内容: ( 1 )了解数据加密在网络安全中的重要作用; ( 2 )掌握对称密码体制的 DES 和 AES 算法; ( 3 )掌握非对称密码体制的 RSA 和椭圆曲线加密算法; ( 4 )熟悉密钥的管理。. 2.1 数字加密概述.
E N D
第 2 章 数 据 加 密 • 2.1 数据加密概述 • 2.2 对称密码体制 • 2.3 非对称密码体制 • 2.4 密钥的管理 • 2.5 散列函数与数字签名 • 2.6 本章小结
通过本章的学习,读者应该掌握以下内容: • (1)了解数据加密在网络安全中的重要作用; • (2)掌握对称密码体制的DES和AES算法; • (3)掌握非对称密码体制的RSA和椭圆曲线加密算法; • (4)熟悉密钥的管理。
2.1 数字加密概述 一个加密系统采用的基本工作方式称为密码体制,密码体制的基本要素是密码算法和密钥,其中密码算法是一些公式、法则或程序,而密钥是密码算法中的可变参数。密码算法分为加密和解密算法,前者是将明文变换成密文,后者是将密文变换成明文;密钥相应地也分为加密密钥和解密密钥。
一个加密系统数学符号描述如下: S={P,C,K,E,D} 其中P是明文空间,C是密文空间,K是密钥空间,E是加密算法,D是解密算法,当给定密钥k∈K时,加、解密算法分别记作Ek和Dk,并有: C=Ek(P) P=Dk(C)=Dk(Ek(P)), 或记为Dk=Ek–1且Ek=Dk–1
2.1.1 保密通信模型 首先来看一个保密通信系统的基本模型,如图2.1所示:A向B发送一报文,为了不被E窃听,A对报文进行加密,然后在通信信道上进行传输,B收到报文后进行解密,得到原来的报文。
2.1.2 经典加密方法 1.换位加密法(Transposition) (1)铁轨法(Railroad Method) 铁轨法是换位算法最基本的形式。首先,它要求明文的长度必须是4的倍数,不符合要求则在明文最后加上一些字母以符合加密的条件, 例如,明文“STRIKE WHILE THE IRON IS HOT”就不满足条件(空白不计),故在尾端加上字母“E”使明文的长度变成4的倍数,接着将明文以从上到下的顺序逐列写出,表示如下: S R K W I E H I O I H T T I E H L T E R N S O E
依序由左而右再由上而下地写出字母即为密文,表示如下: 依序由左而右再由上而下地写出字母即为密文,表示如下: • SRKWIEHIOIHTTITIEHLTERNSOE • 为方便起见,将密文每4个字母一数,其间用空格隔开: • SRKW IEHI OIHT TIRH LYRT NSOE
这就是为什么要使密文长度为4的倍数的原因了。接收方收到此密文后,因为知道加密的顺序,因此,接收方可将密文以一直线从中分为两个部分,如下所示: 这就是为什么要使密文长度为4的倍数的原因了。接收方收到此密文后,因为知道加密的顺序,因此,接收方可将密文以一直线从中分为两个部分,如下所示: • SRKW IEHI OIHT | TIRH LYRT NSOE • 然后左右两半依序轮流读出字母便可以还原成原来的明文了。 • 当然,在写明文时也可以写成三列或四列等。写法不同,则解法也相应不同。
S T R I K E W H I L E T H E I R O N I S H O T E (2)路游法 路游法可以说是一种铁轨法的推广。同样,此法也必须将明文的长度调整为4的倍数。之后将调整过的明文依由左而右由上而下的顺序(此顺序称之为排列顺序)填入方格矩阵中。依前例,可以得到如下矩阵。 图2.2游走路径
有了此矩阵后,便可以依照某一事先规定的路径(称为游走路径)来游走矩阵并输出所经过的字母,此即为密文。有了此矩阵后,便可以依照某一事先规定的路径(称为游走路径)来游走矩阵并输出所经过的字母,此即为密文。 如果以如图2.2所示的游走路径来走,则可以得到如下的密文: ETNETOEKILROHIIRTHESIHWS
(3)密钥法 密钥法最大的好处是就是将加密者和解密者双方所持有的加、解密信息具体化。密钥法大致来说与路游法相似,首先也是将明文填入一个矩阵(见路游法中的矩阵),接着,任意挑选一个密钥,如以“PREDIC”这个英文单字为加、解密双方所协议的共同密钥,然后,将密钥写于矩阵上方,如下所示。
接着依照加密密钥字母的顺序分别依序读出其相对应的列便可得到密文,即先读出字母C对应的列,再依次读出字母DEIPR对应的列,得到密文如下: E T N E I L R O R I I HKE O TSWH I H T ES
2.替换加密法(Substitution) 替换加密法与此思路完全相反,对于明文的每一个字母并不去改变它的位置,只是将它以别的字母或符号取代。
(1)旋转替换法 假设有一个由两个同心圆所组成的密码转盘,如图2.3所示。
图2.3 密码转盘图 图2.4 旋转后的密码转盘
(2)Lewis Carroll’s Vigenere代换法 首先,加解密双方必须同时握有如表2.1所示的表格,另外还必须商议出一把共同密钥,这里必须强调的是表2.1并非密钥的一部分,也就是说,即使表2.1被公开,也不会影响系统的安全性。假设通信双方均已握有表2.1,且已互相约定好一把秘密密钥“CRYPTOGRAPHY”,接着便可将明文“STRIKEWHILETHEIRONISHOT”加密了。
首先,将密钥重复地写在明文的上方。 CRYPTOGRAPHYCRYPTOGRAPH STRIKEWH IL ET HE IR ON IS HO T 然后以上下两个字母为指针去查表2.1,例如第一个字母对为(C,S),此即表示在表2.1中查找行为C且列为S为元素,即为U,此字母就是相对于明文S的密文,其他的明文字母转换成密文可依次类推,从而得到以下密文: UKPXDSCYIAIRJVGGHBOTHDA
2.1.3 现代密码体制 1.对称密码体制和非对称密码体制 对称密码体制又称为秘密密钥密码体制(或单密钥密码体制/隐蔽密钥密码体制),即加密密钥和解密密钥相同或一个可由另一个导出。 非对称密码体制又称为公开密钥密码体制,即加密密钥公开,解密密钥不公开,从一个推导出另一个是不可行的。
2.分组密码体制和序列密码体制 这是根据密码算法对明文信息的加密方式进行分类的方法。如果密文仅与给定的密码算法和密钥有关,与被处理的明文数据段在整个明文(或密文)中所处的位置无关,则称为分组密码体制。分组密码体制就是将明文分成固定长度的组,如64bit一组,用同一密钥和算法对每一组加密,输出也是固定长度的密文。 如果密文不仅与给定的密码算法和密钥有关,同时也是被处理的明文数据段在整个明文(或密文)中所处的位置的函数,则称为序列密码体制。
3.确定型密码体制和概率密码体制 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式也就惟一地确定,则称为确定型密码体制。前面提到的加密方法中,多数属于这一类。 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式仍是不确定的,最后产生出来的密文通过客观随机因素从一个密文集合中选出,则称为概率密码体制。 4.单向函数密码体制和双向变换密码体制
2.2 对称密码体制 • 2.2.1 美国数据加密标准(DES) • 美国数据加密标准(Data Encryption Standard,DES)是在20世纪70年代中期由美国IBM公司的一个密码算法发展而来的,1977年美国国家标准局公布DES密码算法作为美国数据加密标准。直到今日,尽管DES已经经历了20多个年头,但在已知的公开文献中,还是无法完全地、彻底地把DES给破解掉。换句话说,DES这套加密方法至今仍被公认是安全的。
1.DES算法 • DES属于分组加密算法。在这个加密系统中,其每次加密或解密的分组大小是64位,所以DES没有密文扩充的问题。就一般数据而言,无论明文或密文,其数据大小通常都大于64位。这时只要将明文/密文中每64位当成一个分组加以切割,再对每一个分组做加密或解密即可。当切割到最后一个分组小于64位时,要在此分组后附加“0”位,直到该分组大小成为64位为止。
另一方面,DES所用的加密或解密密钥(KEY)也是64位大小,但其中有8位是奇偶校验位,所以真正起密钥作用的只有56位,而DES加密与解密所用的算法除了子密钥的顺序不同之外,其他的部分则是完全相同的。 图2.5所示的是DES全部16轮(Round)的加密/解密结构图,其最上方的64位输入分组数据可能是明文也可能是密文,视使用者要做加密或解密而定,而加密与解密的不同之处,只在于如图2.5所示的最右边的16个子密钥的使用顺序不同,加密的子密钥顺序为K1,K2,…,K16,而解密的子密钥顺序正好相反,为K16,K15,…,K1。
表2.2 初始置换
2.子密钥的产生 • 在子密钥产生过程中,输入是使用者所持有的64位初始密钥。初始密钥首先经过密钥置换A,如表2.5所示,将8个奇偶校验位去掉,留下真正的56位密钥。接着,将这56位密钥分成两个28位的分组C0和D0,再分别经过一个循环左移函数,如表2.4所示,得到C1与D1。
C1与D1连接成56位数据,再按照密钥置换B做重排动作,如表2.6所示,这样就产生了子密钥K1。C1和D1,再分别经过一个循环左移函数得到C2与D2,C2与D2连结成56位数据,再按照密钥置换B做重排动作,这样就产生了子密钥K2。继续下去就依次生成了K3,K4,…,K16。其中需注意的是,密钥置换A的输入为64位,输出为56位;而密钥置换B的输入为56位,输出为48位。 C1与D1连接成56位数据,再按照密钥置换B做重排动作,如表2.6所示,这样就产生了子密钥K1。C1和D1,再分别经过一个循环左移函数得到C2与D2,C2与D2连结成56位数据,再按照密钥置换B做重排动作,这样就产生了子密钥K2。继续下去就依次生成了K3,K4,…,K16。其中需注意的是,密钥置换A的输入为64位,输出为56位;而密钥置换B的输入为56位,输出为48位。
3.DES算法的f函数 f函数是整个DES加密法中最重要的部分,而其中的重点又在S-盒(Substitution Boxes)上。f函数有两个输入数据:一个为32位的中间密文R,另一部分是48位的子密钥K。32位的中间密文R先经过扩展置换E扩增到48位,如表2.7所示
4.DES的安全性 (1)弱密钥(Weak Key) 所谓的弱密钥是指在所有可能的密钥中,有某几个特别的密钥会降低DES的安全性,所以使用者一定要避免使用这几个弱密钥。 (2)半弱密钥(Semi-weak Key) 除了上述的弱密钥之外,还有另外一种被称为半弱密钥的初始密钥。半弱密钥所产生的子密钥只有两种可能,每一种可能的子密钥刚好各出现8次。
(3)DES的互补性(Complement) 在DES的明文m,密文C与密钥K之间存在着互补的特性。如果以密钥K对明文m加密得到密文C,那么以密钥 对明文 加密,亦可到 。 (4)S-盒的设计原则 S-盒为整个DES加密系统安全性的关键所在,但其设计规则与过程一直因为种种不为人知的因素所限,未被公布出来。
(5)DES的16轮(Round) 超过8轮的DES,其密文和明文的关系就已经是随机关系了。 (6)差分分析法 差分分析法基本上属于选择明文攻击法。但在某些特定的情形下,也可用于已知明文攻击。这个方法简单地讲,就是分析特殊明文配对(Plaintext Pair)的差值对于其所相对应的密文配对(Ciphertext Pair)的差值所产生的影响。
2.2.2 国际数据加密算法(IDEA) 国际数据加密算法(International Data Encryption Algorithm,IDEA)是由瑞士联邦理工学院Xuejia Lai和James Massey的在1990年提出的。IDEA是最近几年提出的用来替代DES的许多算法中的一种,是一个对称分组密码算法。
1.设计原理 IDEA是一种使用128位密钥以64位分组为单位加密数据的分组密码算法。与此相对照,DES使用56位密钥以64位的分组为单位进行加密。IDEA的设计目标可以归结为与密码强度和使用的方便性两方面有关,其中密码强度包括分组长度、密钥长度、混淆(Confusion)和扩散(Diffusion);使用的方便性指方便硬件和软件实现。通过由超大规模集成电路(VLSI)进行的硬件实现的设计目标是取得高速度,而软件实现则有灵活和低价的优点。
2.数学基础 3.IDEA加密方法 IDEA加密方法包括8轮的重复运算,加上最后的输出变换运算(Transformation)。64位的明文分组在每一轮中都是被分成4份,每份16位为一单元来处理。每一轮中有6个不同的子密钥参与作用。
4.子密钥生成过程 从图2.6中可以看出,IDEA一次完整的加密运算需要52个子密钥。这52个16位的子密钥都是由一个128位的加密密钥产生的。将128位分成8份,每份16位,相当于Z1,Z2,…,Z8的子密钥,Z1的16位对应于加密密钥中最高有效(Most Significant)的16位,而Z8的16位对应于加密密钥中最低有效(Least Significant)的16位。将加密密钥循环左移25位以后,用同样的方法可以得到另外的8个子密钥Z8,Z9,…,Z16。重复同样的步骤,每循环25位,可以得到另外的新的8个子密钥。如此,Z1,Z2,…,Z52可以依此陆续生成。
5.IDEA解密方法 使用与加密算法同样的结构,可以将密文分组当作输入而逐步恢复明文分组解密过程。 与加密过程中惟一不同的是子密钥的生成方法。现在分析U1,U2,…,U52解密密钥如何从加密密钥Z1,Z2,…,Z52导出。