分组密码——DES

数据加密标准(DES)

DES的设计目标是用于加密保护静态存储和传输信道中的数据,它综合运用了置换、代替、代数等多种密码技术。
DES是一种分组密码。明文、密文和密钥的分组长度都是64位。
DES是面向二进制的密码算法。因而能加解密任何形式的计算机数据。
DES是对合运算,因而加解密共用同一算法,从而使工程实现的工作量减半。
DES的密码结构属于Feistal结构

DES加密过程

  1. 64位密钥经子密钥产生算法生成16个子密钥:ki,i = 1,2,……,16,分别供第一次、第二次……第十六次加密迭代使用。
  2. 64位明文首先经过初始置换IP,将数据打乱分成左右两部分,左边32位构成L0,右边32位构成R0
  3. 由加密函数f实现子密钥k1对R0的加密,结果为32位的数据组f(R0,k1)。f(R0,k1)再与L0模2相加,有得到一个32位的数据组L0⨁f(R0,k1)。以此作为第二次加密迭代的R1,以R0作为第二次加密迭代的L1。至此,第一次加密迭代结束。
  4. 第二次加密迭代至第十六次加密迭代分别用子密钥K2……K16进行,其过程与第一次加密迭代相同。
  5. 第十六次加密迭代结束后,产生一个64位的数据组。以左边32位作为R16,以右边32位作为L16,两者合并再经过逆初始置换IP-1,将数据重新排列,便得到64位密文。至此加密过程全部结束。

小结:

1.每次加密64位明文,得到64位密文
2.16轮密钥加密
3.每轮密钥变换

加密过程的公式描述:
在这里插入图片描述
加密过程的总体流程图:
9nLmNzZG4ubmV0L3dlaXhpbl80MjMyNDMxMw==,size_16,color_FFFFFF,t_70)

DES的算法细节

子密钥的产生

64位密钥经过置换选择1、循环左移、置换选择2等变换,产生出16个48位长的子密钥。过程如图:
在这里插入图片描述

1.置换选择1

64位的密钥分为8个字节,每个字节的前7位是真正的密钥位,第8位是奇偶校验位。因此,DES真正的密钥只有56位。
置换选择1的作用有两个:一是从64位密钥中去掉8个奇偶校验位;二是把其余56位密钥位打乱重排。矩阵如下图所示:

C0(28位)=K57K49K41…K44K36

    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,

D0(28位)=K63K55K47…K12K4

    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
2.置换选择2

将Ci和Di合并成一个56位的中间数据,置换选择2从中选择出一个48位的子密钥Ki。
置换选择2的矩阵由下图给出,对应的是56位数据矩阵的位置。
在这里插入图片描述

初始置换IP

初始置换IP是DES的第一步密码变换。初始置换的作用在于将64位明文打乱重排,并分成左右两半。左边32位作为L0,右边32位作为R0,供后面的加密迭代使用。初始置换矩阵如下:

在这里插入图片描述

加密函数

加密函数是DES密码的核心部分。它的作用是在第i次加密迭代中用子密钥Ki对Ri-1进行加密。原理图如下:
在这里插入图片描述

选择运算E

矩阵图如下:
在这里插入图片描述

代替函数组S

S盒对48位中间结果做代换操作,是DES唯一的非线性变换,是DES安全的关键。
代替运算由8个不同的代替盒(S盒)完成。每个S-盒有6位输入,4位输出。

所以48位的输入块被分成8个6位的分组,每一个分组对应一个S-盒代替操作。

经过S-盒代替,形成8个4位分组结果。

注意:每一个S-盒的输入数据是6位,输出数据是4位,但是每个S-盒自身是64位!!

S-盒1:

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

S-盒2:

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

S-盒3:

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

S-盒4:

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

S-盒5:

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

S-盒6:

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

S-盒7:

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

S-盒8:

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

例:如输入110011,计算时取首尾各一位计算行号,中间4位计算列号。
收尾组成二进制11 = (3)10,中间4位1001 = (9)10
输出为s盒的3行,9列 (从0开始)
以S-盒1为例,得到(11)10 = 1011,所以输出为1011。

置换运算P

置换运算P将S盒输出的32位数据打乱重排,得到32位加密函数输出。用P置换来提供扩散,把S盒的混淆扩散开来。
在这里插入图片描述

逆初始置换IP-1

逆初始置换IP-1是初始置换IP的逆置换,它把第十六次加密迭代的结果打乱重排,形成64位密文。至此加密过程完全结束。逆初始置换的矩阵图如下:
在这里插入图片描述

DES解密过程

DES的加密和解密共用同一运算,只不过子密钥的使用顺序不同。
把64位密文当做明文输入,而第一次解密迭代使用子密钥K16,第二次解密迭代使用子密钥K15,……,第十六次解密迭代使用子密钥K1,最后输出便是64位明文。
解密过程的公式如下:
在这里插入图片描述

DES的可逆性和对合性

可逆性是对密码算法的基本要求。
在这里插入图片描述
T变换和F变换都是对合运算

DES密码的可逆性和对合性这里就不再做理论证明了。

DES的安全性

优点
  1. 对其设计目标DES是安全的。
  2. 具有良好的雪崩效应,明文或密钥的一点小变动就引起巨大的改变。
  3. 算法为对合运算,工程实现容易。
  4. 有很好的抗差分攻击和抗线性攻击。
缺点
  1. 密钥较短
  2. 存在弱密钥
  3. 存在互补对称性,全0或全1的探测下能够提高攻击的效率
  4. 经不起穷举攻击
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值