密码学基础——分组密码
文章目录
- 一、分组密码
-
- 1.分组密码定义
- 2.分组密码作用
- 3.分组密码设计原则
- 二、DES
-
- 1、DES基本原理
- 2、DES的基本结构
-
- (1)初始值化(IP)
- (2)加密处理
-
- 轮函数
-
- E扩展置换
- S盒压缩处理
- P盒置换
- (3)逆初始置换(IP^-1)
- 3、DES子密钥生成
- 4. DEC算法安全性分析
一、分组密码
1.分组密码定义
分组密码是将明文消息经过二进制编码后的序列分割为固定长度的组,用同一秘钥和算法对每一组加密。且通常情况是密文、明文等长。
2.分组密码作用
- 消息加密
- 消息认证和数据完整性的保护( 通过构造消息认证码(MAC)来实现)
- 构造伪随机数生成器(用于产业性能良好的随机数)
- 构造流密码(对称加密算法)
- 构造其他密码协议的基础模块 (如密码管理协议、身份认证协议)
3.分组密码设计原则
安全性原则
- 混淆:打乱密文、明文、秘钥之间的依赖关系,使得敌手获得密文和明文的统计规律,也无法求出秘钥。
- 扩散:让密文中的每一位受明文中的尽可能多位的影响。
如果明文变化一个比特时,密文中有些比特不可能发生变化,则这个明文与这些密文无关。
实现性原则
- 软件实现:将分组划分若干个块,使用子块于简单运算
- 硬件实现:高速率,加密解密可以使用同样的器件来实现
迭代分组密码
可以允许生成最大量的加密映射,来映射明文分组,即用加密和解密映射用表定义 对于n比特到n比特的可逆置换,共有2^n!种可能的置换表 秘钥的长度2n^n比特。
二、DES
1、DES基本原理
-
DES算法是属于对称密码的分组加密算法
-
秘钥长64位,56位参与运算,其余8位为效验位( 8 , 16 , 32 , 40 , 48 , 56 , 64 )
-
当n个64位明文数据块都经过DES加密处理后,所得到的n个64位密文数据块串在一起就是密文。
2、DES的基本结构
DES算法的基本流程如下图所示,对于一个64位的分组,首先对它进行初始置换,然后进行16圈的迭代,迭代中每一圈的密钥不同,之后对结果进行逆初始置换,得到密文。
(1)初始值化(IP)
将明文块进行换位,置换表示是固定的。使用64位秘钥将64位的明文输入块变成密文输出块。
(下表)第一位58表示该位置存放明文中的第58位字符。
58 | 50 | 42 | 34 | 26 | 18 | 10 | 02 |
---|---|---|---|---|---|---|---|
60 | 52 | 44 | 36 | 28 | 20 | 12 | 04 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 06 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 08 |
57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
59 | 51 | 43 | 35 | 35 | 27 | 11 | 03 |
61 | 53 | 45 | 37 | 37 | 29 | 13 | 05 |
63 | 55 | 47 | 39 | 39 | 31 | 15 | 07 |
由于初始置换是固定公开的函数,因此没有密码的意义。作用不大,它们的作用在于打乱原来输入x的ASCII码字划分的关系。经过初始置换之后,64位明文分成了两组L和R,各32位。由于这种方法软件实现较为麻烦,所有很多软件实现都删去了初始置换。经过初始置换,64位的输入得到了两个32位的输出。
例如:
64位明文输入块是 x1,x2…x64,经过初始置换后是x58,x50…x7,则 L0=x58,x50…x8;
R0=x57,x49…x7;
(2)加密处理
经过IP处理后,进行16轮完全相同的迭代运算。每一次迭代都要压缩秘钥参与。
轮函数
轮函数F由3个部分组成:扩展置换(E盒),非线性代换(S盒)和线性置换(P盒)。
E扩展置换
将32位输入扩展为48位输出
其扩展规则按下表进行:
经过扩展置换,32位的输入得到48位的输出。
例如:
S盒压缩处理
- 经过扩展的48位明文和48位秘钥进行异或运算后,再使用8个S盒压缩处理得到32位数据。
- 将48位输入等分为8块,将6位输入压缩为4位输出。
![在这里插入图片描述](https://img-blog.csdnimg.cn/51ada4353f2a4334958351cdf914d875.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oKfMjPvvIjvvIk=,siz
第三行15列对应上表(8个6进4出S盒)的值是13再转换为二进制1101,也就是说将111111—>1101。
P盒置换
S盒所得的结果再经过P盒置换。至此,一次轮函数操作完毕。
P盒作用只是进行简单的位置置换,把一位换成另一位。
(3)逆初始置换(IP^-1)
和初置换一样,将经过16轮变换后的明文从高到低编号(最高位为1号,最低位为64号),按照编号填在逆初始置换表中进行一次换位。
40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 |
---|---|---|---|---|---|---|---|
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 |
35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
初始置换和逆初始置换是互逆的,所以经过逆初始置换将换位后的64位二进制数变回原来的顺序。
3、DES子密钥生成
DES的初始64位密钥通过置换选择PC-1得到有效的56位密钥。这56位分为2个28位数据C0和D0。每轮迭代中Ci-1和Di-1分别循环左移1位或2位,移位后的值作为下一轮的输入,同时也作为置换选择PC-2的输入,通过置换选择PC-2产生一个48位的输出,即为一个子密钥。64位密钥生成了16个48位的子密钥。
例如:
PC-1表(用于置换选择)
移位次数表
PC-2(用于置换选择2)
4. DES算法安全性分析
一般来说,密码攻击手段有两种:蛮力攻击(穷尽密钥搜索)和分析攻击。DES算法遭受批评的原因主要有:
4. DEC算法安全性分析
密钥空间太小,易受蛮力攻击
S-盒设计准则保密的,有可能已经存在利用S-盒数学属性的分析攻击,但是只有DES设计者知道(详见DES历史)
然而到目前为止,尚未发现能高效破解DES的攻击方式,不过通过蛮力攻击的方式能够比较容易的破解单重DES,因此对大多数程序而言,单重DES已经不再使用,取而代之的是3DES和AES。
部分图片来源于网络,新手小白,如果有错误,请大佬指点。谢谢!