内容提要

密码学技术基础

数据加密体制与原理

一、密码学技术基础

密码学(Cryptography)就是研究密码的科学,具体包括加密和解密变换。

密码学的重要性不仅体现在保护信息安全、‌促进信息安全领域的研究上,‌还在于其对数学领域和其他相关学科的推动作用,‌以及与人工智能等技术的交叉影响,‌使得密码学成为维护信息安全、‌促进社会发展的重要基石。我们非常有必要了解并掌握基本密码技术。

1.1 密码学基本概述

1、密码学的发展

(1)传统密码学阶段

(2)计算机密码学阶段

(3)现代密码学阶段

2、密码学的相关概念

(1)明文P(PlainText):信息的原文。

(2)密文C(CipherText):加密后的信息。

(3)加密(Encryption):将明文转变为密文的过程。

(4)解密(Decryption):将密文转换为明文的过程。

(5)密码算法

用于加密和解密的变换规则,多为数学函数。通常情况下,密码算法包括加密算法(加密时使用的算法)和解密算法(解密时使用的算法)

(6)密钥(Key)

密钥是进行加密或解密时包含在算法中的参数。同样,密钥也分为加密密钥和解密密钥。

3、密码的分类

(1)按密码的历史发展阶段与应用技术分类

手工密码、机械密码、电子机内乱密码和计算机密码

(2)按密码转换的操作类型区分分类

替代密码和移位密码

(3)按明文加密时的处理方法分类

分组密码和序列密码

(4)按密钥的类型分类

对称密钥密码和非对称密钥密码

4、典型密码

(1)摩尔斯电码

(2)四方密码

(3)希尔密码

(4)波雷费密码

(5)仿射密码

1.2 传统密码技术

传统密码技术一般是指在计算机出现之前所采用的密码技术,主要由文字信息构成。

在计算机出现前,密码学是由基于字符的密码算法所构成的。不同的密码算法主要是由字符之间互相代换或互相之间换位所形成的算法。

传统加密方法加密的对象是文字信息。文字由字母表中的字母组成,在表中字母是按顺序排列的,可赋予它们相应的数字标号,可用数学方法进行变换。

1、替代密码

替代变换要先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串(密文),替代密码的密钥就是替换表。

根据密码算法加密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码。

2、移位密码

移位密码是指将明文的字母保持不变,但字母顺序被打乱后形成的密码。

移位密码的特点是只对明文字母重新排序,改变字母的位置,而不隐藏它们,是一种打乱原文顺序的替代法。

3、一次一密钥密码

一次一密钥密码是指一个包括多个随机密码的密码字母集,这些密码就好像一个记事本,其中每页上记录一条密码。

其使用方法类似日历的使用过程,每使用一个密码加密一条信息后,就将该页撕掉作废,下次加密时再使用下一页的密码。因此,一次一密钥密码是一种理想的加密方案。

二、数据加密体制

2.1 对称密钥密码体制及算法

2.1.1 对称密钥密码算法

对称密钥密码算法也叫做传统密钥密码算法。在该算法中,加密密钥和解密密钥相同或相近,由其中一个很容易得出另一个,加密密钥和解密密钥都是保密的。

在大多数对称密钥密码算法中,加密密钥和解密密钥是相同的,对称密钥密码的算法是公开的,其安全性完全依赖于密钥的安全。

1、对称密钥密码体制的优点

算法简单

加密/解密速度快

便于用硬件实现

2、对称密钥密码体制的缺点

密钥位数少

保密强度不够

密钥管理(密钥的生成、保存和分发等)复杂

3、在计算机网络中广泛使用的对称加密算法

DES、TDEA、IDEA、AES

2.1.2 DES对称加密算法

DES(Data Encryption Standard,数据加密标准)算法最初是由IBM公司所研制,于1977年由美国国家标准局颁布作为非机密数据的数据加密标准,并在1981年由国际标准化组织作为国际标准颁布。

DES算法采用的是以56位密钥对64位数据进行加密的算法。

1、DES算法原理

在DES算法中有Data、Key、Mode三个参数。其中Data代表需要加密或解密的数据,由8字节64位组成;Key代表加密或解密的密钥,也由8字节64位组成;Mode代表加密或解密的状态。

在DES算法中加密和解密的原理是一样的,只是因为Mode的状态不同,适用密钥的顺序不同而已。

2、DES算法的加密过程

DES算法的加密过程如图所示。

初始置换(Initial Permutation,IP)是对输入的64位数据按照规定的矩阵改变数据位的排列顺序的换位变换,此过程与密钥无关。

子密钥生成是由64位外部输入密钥通过置换和移位操作生成加密和解密所需的16组(每组56位)子密钥的过程。

乘积变换过程非常复杂,是加密过程的关键。该过程通过16轮重复的替代、移位、异或和置换操作打乱原输入数据。

逆初始置换(IP-1)与初始置换过程相同,只是置换矩阵是初始置换的逆矩阵。

(1)初始置换(IP)

将64位明文按照初始置换表(如表6.1)的规则进行置换。其置换过程为:将输入明文的第58位置换到第1位,第50位置换到第2位,第12位置换到第3位,依此类推……,最后第7位置换到第64位。

(2)子密钥生成

输入的密钥K是64位数据,但其中第8、16、24、32、40、48、56、64位用于奇偶校验,实际使用的密钥位只有56位。子密钥Ki的生成流程如图所示。

第1步:PC1变换。

将56位密钥按置换选择1(PC-1)的规律(见表)进行置换,变换后分为左右两路(C0、D0)各28位。

第2步:数据左移。

将两个28位的C0和D0按表中的规则进行循环左移。表中第1行表示迭代轮次,第2行表示左移的位数。左移的规律是将C0和D0所有的位按表中规定的位数循环左移。

第3步:PC2变换和子密钥生成。

C0和D0左移1位后得到C1和D1,再将C1和D1数据组合后(56位)按照PC2变换的要求变换得到48位的子密钥K1,在进行第1轮迭代时使用K1;

同理,将C1和D1左移1位得到C2和D2,再将C2和D2数据组合后按照PC2变换的要求变换得到48位的子密钥K2;……;依此类推,就可以得到K3、K4…..K16。PC2变换如表6.4所示。PC2变换是将输入的56位数据变换为48位输出,该变换是一种压缩变换。

根据不同轮数分别进行左移和压缩变换,分别得到16个48位的子密钥K1, K2,…, K16。

(3)乘积变换

初始置换后的数据分为各32位的两部分,左部分为L0,右部分为R0,这样,L0 = D58D50D12….D8,R0 = D57D49D41…D7。

乘积变换过程就是将L0和R0按照乘积变换运算公式进行迭代运算,最后得出L16和R16。如图所示。

第1步:E变换。

E变换是一个扩展变换,其过程是将32位的数据Ri-1变换成48位,变换规则如表所示。

第2步:异或变换。

将E变换输出的48位数据与48位的子密钥Ki进行异或运算,得到48位的S盒数据。

第3步:S盒变换。

将48位的S盒数据均分为8部分,每部分为6位,用8个S盒S1~S8表示。每个S盒的输入为6位,变换后输出为4位,即经过8个S盒S1~S8变换后输出为32位,如图。

S盒的变换规则:以S1盒为例,将6位输入数据(a1a2a3a4a5a6)的中间4位(a2a3a4a5)对应的数值作为列,两端的2位(a1a6) 对应的数值作为行,找到如表6.6所示的S1转换表中相应的位,得到的数值再转换成二进制形式的4位数据,此即为S1盒的输出。

第4步:P变换。

P变换的过程是将S盒输出的32位数据进行位置变换得到一个新的32数据组,因此P变换为线性变换,其变换规则如表所示。

第5步:异或变换。

P变换输出的32位数据与32位的Li-1异或后输出32位数据,此数据就是Ri。当i≤15时,Ri与Li各32位数据将被用来进行下一轮迭代变换。

(4)逆初始置换(IP-1)

将第16轮迭代变换的输出R16与L16组合在一起构成64位数据组,作为逆初始置换(IP-1)的输入。逆初始置换的变换规则如表所示,置换完成后的数据即为64位密文。

3、DES算法的解密过程

lDES的解密算法与加密算法相同,解密密钥也与加密密钥相同,区别仅在于进行16轮迭代运算时使用的子密钥顺序与加密时是相反的,即第1轮用子密钥K16、第2轮用K15、…,最后一轮用子密钥K1。

4、DES算法的安全性

lDES是世界上使用最为广泛和流行的一种分组密码算法,被公认为世界上第一个实用的密码算法标准。

lDES的缺点是密钥位数太短(56位),而且算法是对称的,使得这些密钥中还存在一些弱密钥和半弱密钥,因此容易被采用穷尽密钥方法解密

由于DES算法完全公开,其安全性完全依赖于对密钥的保护,必须有可靠的信道来分发密钥。

2.1.3 其他对称加密算法

1、TDEA算法

TDEA(Triple Data Encryption Algorithm,三重DES)算法,其本质和DES算法是一致的。它是为了解决DES算法密钥过短的而出现的。

在TDEA算法中,使用三个密钥,执行三次DES算法,该算法的总密钥长度为168位(56位的三倍)。

2、AES算法

AES(Advanced Encryption Standard,高级加密标准)算法是一个非保密的、全球免费使用的分组加密算法,并被确定为替代DES的数据加密标准。

Rijndael算法具有加密强度高、可抵御所有已知攻击、运算速度快和灵活性好等特点,成为AES最合适的选择。

3、IDEA算法

IDEA(International Data Encryption Algorithm,国际数据加密算法)是瑞士著名学者提出的。该算法是在DES算法的基础上发展起来的,类似于三重DES,也是一种分组密码算法,分组长度为64位,但密钥长度为128位。

该算法就是用128位密钥对64位二进制码数据进行加密的,同样用128位密钥对64位密文进行解密变换。

2.1.4 对称密钥加密算法比较

2.2 公开密钥密码体制及算法

1、公开密钥密码算法

公开密钥密码算法也叫做非对称密钥密码算法。在该算法中,信息发送方和接收方所使用的密钥是不同的,即加密密钥与解密密钥不同,且由其中的一个很难导出另一个。

常用的公钥加密算法有:RSA算法、ElGamal算法、背包算法、拉宾(Rabin)算法和散列函数算法(MD4、MD5)等。

2、RSA算法

RSA算法是典型的公开密钥密码算法,利用公开密钥密码算法进行加密和数字签名的大多数场合都使用RSA算法。

(1)RSA算法的原理

RSA算法是建立在素数理论(Euler函数和欧几里德定理)基础上的算法。

(2)RSA算法的安全性

RSA算法的安全性建立在难于对大数进行质因数分解的基础上,因此大数n是否能够被分解是RSA算法安全的关键。

由于用RSA算法进行的都是大数运算,使得RSA算法无论是用软件实现还是硬件实现,其速度要比DES慢得多。因此,RSA算法一般只用于加密少量数据。

更多精彩内容请关注本站!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐