【密码学原理】DES(Data Encryption Standard)加密和解密

使用最广泛的加密体制是数据加密标准DES,即现在的国家标准和技术协会(National Institute of Standards and Technology, NIST)采纳为联邦信息处理标准46。

DES加密的总体描述如图所示,两个输入为:64位明文,56位密钥。

明文处理过程:64位明文经过初始置换后被重新排列,然后进行16轮相同函数的作用,每轮作用都是置换和代替。最后一轮迭代的输出有64位,它是输入明文和密钥的函数。

密钥使用过程:密钥经过一个置换后,再经过循环左移和置换变换,得到各轮子密钥,每轮置换函数一样,但由于密钥循环左移,各轮子密钥不同。

下面详细介绍加密过程:初始置换,轮变换,密钥产生。

初始置换

初始置换中有两个置换表,一个是初始置换表,一个是逆初始置换表,分别如下:

                     

假设有M,经过初始置换后,X=IP(M),即为初始置换的输出,经过逆初始置换后,Y=IP^{-1}(X)=M,即恢复出明文。

轮变换

轮变换的内部结构如上图所示,其中L_i=R_{i-1},R_i=L_{i-1} \oplus F(R_{i-1},K_i),每一个轮变换与Feistel结构的轮变换相同。

首先将32位的R扩展为48位,扩展表为

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位与K异或得到的结果用一个代替函数作用后输出32位结果,在用置换表置换输出,其中置换表如下

16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,

2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25,

S盒在函数F中的作用如下图所示,代替函数由8个S盒组成,每个S盒都有6位输入,4位输出。

密钥产生

将1到64按8x8的行列依次排开,每行第8个位被忽略,首先用置换表1作用,置换表1如下

57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4

得到的56位密钥为C和D,然后C与D分别循环左移,左移位数如表所示

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

移位后的值作为下一轮的输入,同时作为置换选择2的输入,产生一个48位的输出作为函数F的输入,置换选择2的置换表如下

14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32

DES解密过程与加密过程类似,只是字密钥的使用次序相反。

雪崩效应

明文或者密钥的微小变化对密文能够产生很大的影响,是任何加密算法希望的。如果明文或密钥的某一位发生改变会导致密文的很多位发生变化,称为雪崩效应。如果想要的变化很小,可能会给分析者提供缩小搜索密钥或者明文空间的渠道。

DES的强度

DES安全性的讨论主要集中在密钥长度和算法本身上。

56位的密钥共有2^{56}种可能,用穷举的办法不太实际。

1998年7月,电子前哨基金会(EFF)宣布一台造价不到25万美元的特殊设计的机器“DES破译机”破译DES,破译花费时间不到3天,证明了DES是不安全的。

现在有很多DES的替代算法,比如AES和3DES。

至于DES算法本身,由于S盒的设计不公开,所以怀疑分析者知道S盒结构后能够破译,但是仍然没有人发现S盒的致命弱点。

猜你喜欢

转载自blog.csdn.net/m0_50984266/article/details/108826132