对称密钥加密机制即对称密码体系,也称单玥密码体系和传统密码体系。对称密码体系通常分为两大类:分组密码(如DES、AES算法),另一类为序列密码(如RC4算法)。
对称密码体系加密和解密时所用的密钥是相通的或者是类似的,即由加密密钥很容易推导出解密密钥,反之亦然。对称密钥加密,最大的优势是加/解密速度快,适合对大数据量进行加密,但密钥管理困难。
对于普通的对称密码学,加密运算与解密运算使用同样的密钥。通常使用的对称密钥加密算法比较简单高效,密钥剪短,破译极其困难,由于系统的保密性主要取决于密钥的安全性,,所以在公开的计算机网络上安全的传送和保护密钥时一个严峻的问题。而且由于对称密码学中双方使用相同的密钥,因此无法实现数据签名和不可否认性等功能。
DES加密流程
对于任意长的铭文,DES首先对其进行分组,使得每一组的长度为64位,然后分别对每个64位的铭文分组进行加密。对于每个64位长度的明文分组的加密过程如下:
1、初始置换:输入分组按照初始置换表重排次序,进行初始置换。
2、16轮循环:DES对经过初始置换的64位铭文进行16轮类似的子加密过程。每一轮的子加密过程要经过DES的f函数,其过程如下:
- 将64位明文在中间分开,划为2部分,每部分32位,左半部分记为L,右半部分记为R,以下的操作都是对有半部分数据进行。
- 扩展置换:扩展置换将32位的输入数据根据扩展置换表扩展称为48位输出数据。
- 异或运算:将48位的明文数据与48位的子密钥进行异或运算。
- S盒置换:S盒置换是非线性的,48位输入数据根据S盒置换表置换成为32位输出数据。
- 直接置换:S盒置换后的32位输出数据根据直接置换表进行直接置换。
- 经过直接置换的32位输出数据与本轮的L部分进行异或运算,结果作为下一轮子加密过程中的R部分。本轮的R部分直接作为下一轮子加密过程中的L部分。然后进行下一轮子加密过程,直到16轮全部完成。
3、终结置换:按照终结置换表进行终结置换,64位输出就是密文。
DES加密流程详解
DES的分组过程
DES是一种分组加密算法,所谓分组加密算法就是对一定大小的明文后密文来做加密或解密动作。在DES加密系统中,每次加密或解密的分组大小均为64位,所以DES没有密文扩充的问题。对大于64位的明文只要按每64位的一组进行切割,而对于小于64位的明文只要在后面补“0”即可。
DES所用的加密或解密密钥也是64位大小,但因其中有8个位时奇偶校验位,所有64位中真正起密钥作用的只有56位,密钥过短也是DES最大的缺点。
初始置换
经过分组后的64位明文分组将按照初始置换表重新排列次序,进行初始置换,置换方法如下:初始置换表从左到右,从上到下读取,如第一行第一列为58,意味着将原文分组中的第58位置换到第一位,初始置换表下一个数位50,意味着将原明文分组的第50位置置换到第2位,依次类推,将原明文分组的64位全部置换完成。
表1.1初始化置换表
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
---|---|---|---|---|---|---|---|
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
扩展置换
32位的有半部分明文数据首先要进行扩展置换,扩展置换将32位输入数据扩展成为48位的输出数据,他有三个目的:第一,它产生了与子密钥同长度的数据以进行异或运算;第二,它提供劳务更长的结果,使得在以后的子加密过程中能进行压缩;第三,它产生雪崩效应,这也是扩展置换最主要的目的,使得输入的一位将影响两个替换,所以输出对输入的依懒性将传播的更快(雪崩效应)。其实我只明白第一和第三点。。。
扩展置换的置换方法与初始置换相同,只是置换表不同,扩展置换表如下所示:
表1.2 扩展置换表
32 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
4 | 5 | 6 | 7 | 8 | 9 |
8 | 9 | 10 | 11 | 12 | 13 |
12 | 13 | 14 | 15 | 16 | 17 |
16 | 17 | 18 | 19 | 20 | 21 |
20 | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | 30 | 31 | 32 | 1 |
异或运算
扩展置换的48位输出数据与相应的子密钥进行按位异或运算。异或以后的48位结果将继续进行S盒置换。
S盒置换
S盒置换是DES算法中最重要的部分,也是最关键的步骤,因为其他运算都是线性的,只有S盒置换是非线性的,它比DES中任何一步都提供了更好的安全性。
经过异或运算得到的48位输出数据要经过S盒置换,置换由8个盒完成,记为S盒,每个S盒都有6位输入,4位输出。这8个S盒是不同的,每个S盒置换方法如下图所示。使用方法如下:48位的输入分成8组,每组6位分别进入8个S盒。将每组的6位输入记为B0、B1、B2、B3、B4、B5,那么表中的行号由B0B5决定,而列号由B1B2B3B4决定。例如第一个分组位111000要进入第一个S盒S1,那么行号位B0B5,即10,化为十进制即2,即第二行;列号位1100(B1B2B3B4),即为第12列,第2行第12列在下表中的S1中查找位数据3,所有这个S和的4位输出就是3,化为二进制即0011.
表1.3 盒置换表
直接置换
S盒置换后的32位输出数据将进行直接置换,该置换把每个输入位映射到输出位,任意一位不能映射两次,不能略去。
终结置换
终结置换与初始置换相对应,都不影响DES的安全性,主要目的是为了更容易的将明文和密文数据以字节大小放入des的f算法或者DES芯片中。
总结
刚刚看计算机网络安全相关知识,这一部分不太明白,所以查了一下,自己顺便记录一下,有什么不对的,大家纠正。