Feistel算法结构与DES加密算法

Feistel分组加密算法结构

Feistel算法结构是一种设计原则,而并非是某种加密算法,提出通过替代和置换交替的操作方式构造密码

加密:

  • 将明文分成左右两部分:明文 = (L0,R0)
  • 每一轮i=1,2,……,n计算:Li=Ri-1,Ri=Li-1⊕ F(Ri-1,Ki);其中F()是轮函数,Ki是子密钥
  • 密文 = (Ln,Rn)

解密:

  • 密文 = (Ln,Rn)
  • 每一轮i=n,n-1,……,1计算:Ri-1=Li,Li-1=Ri⊕F(Ri-1,Ki);其中F()是轮函数,Ki是子密钥
  • 明文 = (L0,R0)

Feistel算法结构的安全性:

  • 分组长度,分组长度越大,安全性越高,加密速度越慢,效率越低,目前常用的分组长度是64位
  • 子密钥的大小,子密钥的长度增加,安全性提高,加密速度降低
  • 循环次数,循环越多,安全性越高,加密效率越低
  • 子密钥的生成算法,生成算法越复杂,安全性越高
  • 轮函数,轮函数越复杂,安全性越高

Feistel算法结构最大的优点在于其加密过程和解密过程极其相似,所以有时候加密设备就是解密设备

 DES加密算法

DES(Data Encryption Standard),是16轮的Feistel结构的密码,也就是说这是一种包含16个阶段的“替代-置换”的分组加密算法,其分组长度为64位

64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列

密钥长度为56位,每轮的子密钥的长度为48位

其加密流程如下:

          

 其中的IP(Initial Permutation,初始置换)置换就是根据置换对64位的报文进行位置的交换。将64位的密文从1到64对每个比特进行编号,然后按照下表的顺序进行替换

16轮迭代运算中每一轮的具体流程如下图:

Ri-1先由32位经过扩展置换得到48位,扩展后的48位结果与48位的子密钥进行异或运算,得到一个48位的结果,然后再经过S盒替换,得到一个32位的结果,然后再经过P盒置换,再将结果与Li-1进行异或运算,最终得到Ri,而Li是直接由Ri-1不做任何变换得到的。

 第一步的扩展置换的置换表如下:

将原来的32位报文按顺序排入一个4×8的表格中(对应与上面的置换表的中间4行),然后再在左右两边各添加一列,新添加的列的序号规律是左边模32减一,右边模32加一,得到一个6×8的表格,最终就是48位的扩展结果。

得到的48位结果与48位的子密钥进行异或操作后,将运算得到的结果进行S盒置换,经过变换后得到一个32位的输出。DES加密的轮函数中共有8个S盒,每个S盒有4行8列,下表是一个S盒的置换规律

S盒的变换过程为:将48为的报文分为8个组,每组6个比特;每组作为一个S盒的输入。换句话说,一个S盒的输入只有6个比特,最终输出4个比特。

假设一个S盒的输入为:B=b1b2b3b4b5b6,则令r=b1b6,c=b2b3b4b5,将对应的二进制换算成十进制。那么b1b2b3b4b5b6输入对应的输出就是第 r 行第 c 列的整数换算成的4位二进制数

P盒变换就是根据置换表,对S盒输出的32位结果进行置换,最终得到的结果就是DES加密算法轮函数的输出结果

经过16轮的迭代运算后得到了一个64位的结果,最后再将这64位的结果进行逆初始置换最终即可得到密文,逆初始置换的置换规律如下

DES解密算法与共用相同的算法过程。两者的不同之处在于解密时的子密钥Ki的使用顺序与加密时的顺序相反。也就说,加密的子密钥使用顺序为K1K2……K16,那么解密时的使用顺序就是K16K15……K

子密钥的生成流程:

DES算法共需要16轮的迭代运算,每轮迭代运算使用一个子密钥,共需要16个子密钥。子密钥是从用户输入的64位初始密钥生成的。用户输入的密钥有64位,其中有8位用于奇偶校验,分别位于第8,16,24,32,40,48,56,64位。奇偶校验用于检查密钥K的产生和分配以及存储的过程中是否发生了置换的错误,所以DES实际的密钥长度只有56位

输入的种子密钥K(64bits)首先经过一个PC-1置换j进行重排。PC-1置换得到一个56位的输出,经过置换后将不会再有奇偶校验位并且顺序也被打乱,再将这个56位的结果的前28位作为C0,后28位作为D0

在计算第 i 轮迭代所使用的子密钥时,首先对Ci-1和Di-1进行循环左移,左移的位数与迭代的轮数对应与下表,分别得到Ci和Di

 再将得到的CiDi作为PC-2置换的输入,从56位中选取48位作为子密钥

DES算法的改进——3DES

多重DES就是使用多个密钥利用DES算法对明文进行多次加密,从而提高加密过程的安全性,大致流程如下

 

posted @ 2019-04-30 09:19  Hang3  阅读(2953)  评论(0编辑  收藏  举报