分组密码——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. 经不起穷举攻击
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值