DES加密算法原理

DES(Data Encryption Standard):数据加密标准。美国国家标准局(NBS),即现在的国家标准与技术研究所(NIST)于1973年5月向社会公开征集标准加密算法,1974年8月27日,NBS开始第二次征集,IBM提交了由Feistel团队研究开发的采用64位分组和128位密钥的LUCIFER算法,IBM用改版的LUCIFER参加竞争,最终获胜,成为数据加密标准DES。1976年11月23日被采纳为联邦标准,批准用于非军事场合的政府机构,1977年1月15日,数据加密标准正式发布。

DES是分组密码的典型代表,是第一个被公布的加密标准算法;现代大多数对称分组密码也是基于Feistel密码结构

设计要求

  1. 提供高度的安全性
  2. 提供详细的说明易于理解
  3. 安全性取决于密钥不依赖于算法
  4. 适用于所有用户和不同应用场合
  5. 高效、经济
  6. 能被证实有效

Feistel密码结构

DES加密算法原理_第1张图片

算法原理:先把明文分为两个部分,在进行一轮加密时,右边部分的明文Ri-1直接等于下一轮的左边部分Li,而左边部分Li-1经过与F(Ri-1,Ki)的值进行异或运算后得到下一轮的右边部分Ri,Ki为第i轮的密钥。

DES里明文为64位,经过初始化置换打乱重排后分成左右两半:L(32位)和R(32位);K为子密钥,由64位密钥生成的16个48位子密钥。

由于左右两半为32位,子密钥为48位,所以无法直接进行计算;先将R进行扩展置换E即E(R),将其由32位扩展位48位,在计算完后,进行S盒代换,总共8个S盒(6进4出),将其由8*6(48位)变为8*4(32位)

子密钥的生成

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

在64位密钥中(如上表),标红的部分做校验位,其余的56位为有效密钥即有效密钥长度为56位,经过置换选择1后生成上下两半的密钥C0(28位)和D0(28位),通过不断的循环左移生成C1~C15、D1~D15,Ci与Di循环左移后的值通过置换选择2便生成了Ki+1(48位);循环左移参照循环移位表,置换选择1参照给定PC-1表,置换选择2参照给定的PC-2表。

DES加密过程

1、初始化置换

DES加密算法原理_第2张图片 初始化IP置换表

明文按照上表进行位置置换,按上下分为两半即L0和R0(上半部分为偶数部分,下半部分为奇数部分),置换后即可开始16轮加密。

2、F函数

DES加密算法原理_第3张图片

上图为F函数的运算步骤,根据Feistel密码结构可知,DES加密算法的核心就在于F函数,F函数的输入数据为32位的Ri-1和48位的子密钥Ki,但32位数据不能与48位数据直接进行运算,所以有一步置换E的步骤将Ri-1变为48位的数据,具体如何实现的,参考下表进行位置变换:

DES加密算法原理_第4张图片 扩展置换E表

置换后得到48位的E(Ri-1),与子密钥Ki进行异或运算;运算结果要经过S盒操作,S盒的输入为6位输出为4位,总共有8个S盒,设输入S盒的6个数据为b1、b2、b3、b4、b5、b6,其中b1和b6为作为行号,b2、b3、b4、b5作为列号,例如:S1的输入为011000,则00(0)作为行,1100(12)作为列,在下图S1盒中找到0行12列的数5,二进制表示为0101,即完成了6进4出的S盒变换。

DES加密算法原理_第5张图片 S1盒

S盒的特点:每行均为0~15不重复的数字。

根据F函数的步骤,在S盒变换后还要进行最后一步置换运算P,参照下图置换运算P表对S盒结果进行位置置换。

DES加密算法原理_第6张图片 置换运算P

将最终结果与Li-1进行异或运算得到Ri,而Li直接等于Ri-1,这样重复16轮得到R16和L16,将R16L16拼接,得到16轮F函数的最终输出结果

3、逆初始置换

对F函数的最终结果进行逆初始置换,参照下图逆初始置换表进行位置变换,得到最终加密好的密文;该步骤为DES加密的最后一步。

DES加密算法原理_第7张图片 逆初始置换表

4、补充

可以看到在整个DES加密过程中,最开始和结束的地方有两个特殊的操作,初始置换和逆初始置换。

初始置换与逆初始置换的关系:

例如:初始置换表为:26314857,现有原文M:abcdefgh,经初始置换后结果为M‘:bfcadheg;逆初始置换表则要求能将M’置换为M,所以逆初始置换表为:41357286,M‘经逆初始置换后结果为:abcdefgh。

你可能感兴趣的:(信息安全)