DES的设计思路.docx

上传人:b****0 文档编号:12837756 上传时间:2023-04-22 格式:DOCX 页数:16 大小:173.28KB
下载 相关 举报
DES的设计思路.docx_第1页
第1页 / 共16页
DES的设计思路.docx_第2页
第2页 / 共16页
DES的设计思路.docx_第3页
第3页 / 共16页
DES的设计思路.docx_第4页
第4页 / 共16页
DES的设计思路.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

DES的设计思路.docx

《DES的设计思路.docx》由会员分享,可在线阅读,更多相关《DES的设计思路.docx(16页珍藏版)》请在冰豆网上搜索。

DES的设计思路.docx

DES的设计思路

DES算法的研究

孙东波

新疆师范大学数理信息学院数学04-3班

摘要:

本文以简洁通俗的语言介绍了DES的可逆正确性的原因,以及由此所引起的DES的

各个部分的讨论,并找出了几个置换的数学表达式。

详细的讨论了DES的设计思想,并简

要介绍了基于DES的Blowfish算法。

关键词:

可逆正确性;

数学表达式;Blowfish算法;

DESalgorithmresearch

SunDongbo

XinjiangNormalUniversityInstituteofMathematicsofmathematicalinformationclasses04-3Abstract:

ThesimplecommonIanguageontheDESofthecorrectnessofthereasonsforthe

irreversible,andtheresultingcausedbyDESinvariouspartsofthediscussion,andfindafewreplacementofthemathematicalexpression.ThedetaileddiscussionDESdesignconcept,andintroducedbrieflybasedontheDESBlowfishalgorithm.

Keywords:

reversiblecorrectness;mathematicalexpression;Blowfishalgorithm;

DES算法的研究

DES简介:

1973年美国国家标准局(nationalbureauofstandards,NBS认识到建立

数据加密标准的迫切性,开始征集联邦数据加密标准。

1975年3月17日NBS公布了IBM公司提供的密码算法,经过两年多的公开讨论之后,1977年1月15日NBS宣布批准其作为联邦信息处理标准46号(即FIPS-46),同年7月15日开始生效。

这一算法被命名为数据加密标准(dataencryptionstandard,DES),供商业和非国防性政府部门使用。

本文主要讨论以下内容:

1、DES的加密为什么是同样的过程,即其可逆正确性的原因。

2、以SDES为例说明函数F中的几个问题。

3、DES中有关置换函数的规律。

4、DES的设计思想。

5、在DES基础上的blowfish算法。

由于DES算法规模过大,故先用SDES来讨论,之后再推广到DES中去。

1、可逆正确性的原因(以SDES为例)

我们知道任何算法的解密过程都必须是原算法的严格的逆才可以,但是

DES的解密过程与加密过程用相同的步骤相同的流程,唯一的区别就是在解密

时要先用K2后用K1。

为什么会出现这种现象呢?

首先请看下页的SDES的流程

图以及对照表:

由下表可以知道SDES中的解密过程是严格成立的。

因为任何数与其自身进行模2加后的结果都是0。

(主要表现在解密是函数F上)。

正由于其可逆是完全成立的,故F函数中的运算可以随意定义。

DES中的解密也和SDES中的一样,只不过是经过16轮的迭代,子密钥多几个而已,它们都因为模2加和严格

的逆而使得其加密和解密使用同一个流程。

密文

加密

解密(AL,AF为记号)逆序

对应

L0=IP(明文)

明文=IP-1(AL2,AR2)

IP-1=(IP)-1

R0=IP(明文)

AL2=AL1f(AL1,K1)

AL2=L0f(R0,K1)f(R0,K1

)=L0

L仁R0

AR2=AR1

AR2=L1=R0

R仁L0f(R0,K1)

AL1=AL0f(AR0,K2)

AL1=L1f(R1,K2)Lf(R1,K2

)=L1

R2=R1

AL1=AR0

AL1=AR0=R2;AL1=R1

L2=L1f(R1,K2)

AR0=IP(密文)

AL0=L2;AR0=R2

.、.、-1

密文=IP(L2,R2)

AL0=IP(密文)

-1-1

IP=(IP)

2、f函数

R0/R1

E/P扩展置换

41232341

SDES中的F函数的运算过程如上图所示。

首先是R0或R1进行扩展置换,然后再与Kn进行逐位异或运算,然后结果从中间分成两组,分别进入相应的S

盒,S盒的输入有4位,首尾合在一起构成相应的行,中间决定列,然后找出相应的正确的输出。

两组输出再进行P4置换后成为F的最终的输出结果。

S盒的查询分布由下表给出。

S盒所呈现出来的原因这里先不作讨论,放在后面DES

中的S盒的分布一起讨论。

S盒的分布

S1

00

01

10

11

S2

00

01

10

11

00

01

00

11

10

00

00

01

10

11

01

11

10

01

00

01

10

00

01

11

10

00

10

01

11

10

11

10

01

00

11

11

01

00

10

11

10

01

00

11

3、DES中的几个问题

首先看流程图:

K2

K16

 

逆初始置换IP

L16

R16

1

■1

密文

DES的加密过程如上图所示,我们可以看到它与SDES相差不大,其区别就是DES比SDES多了14轮的迭代。

它与SDES一样,都有

 

Li=Ri-i

Ri=Li-if(Ri-i,Ki)

i=1,216的结构。

所以其解密正确性毋庸置疑。

其IP置换以及IP逆置换由下表给出,观察这两个表我们不难看出IP表的规律为:

n为任一个元素的数值,n=8X+Y,Y|「[1,8];Y=2z+a,a[0,1]。

那么n的对应的位置为(8-x)行(z+5a洌。

直观的看就是按从上到下从右到左的顺序把1--64

初始置换IP

逆初始置换IP1

58

50

42

34

26

18

10

2

40

8

48

16

56

24

64

32

60:

52

44

36

28:

20

12

4

39

7

47

15

55

23

63

31

621

54

46

38

301

22

14

6

38

6

46

14

54

22

62

30

64

56

48

40

32

24

16

8

37

5

45

13

53

21

61

29

57

49

41

33

25

17

9

1

36

4

44

12

52

20

60

28

59

51

43

35

27

19

11

3

35

3

43

11

51

19

59

27

61

53

45

37

29

21

13

5

34

2

42

10

50

18

58

26

63

55

47

39

31

23

15

7

33

1

41

9

49

17

57

25

排成一个8$的方阵,列不动,把该列中双号元素提上,单号元素压下既成该

主密钥K

PC-1

IP矩阵。

C0

D0

LS1

LS1

C1

D1

PC-2―K1

LS2

LS2

C2

D2

PC-2

K2

LS16

LS16

C2

C2

PC-2

K16

 

IP-1的规律为:

设n为任意一个元素,n=8x+y,y[1,8],x=4z+b,z[0,1],那么元素n所对应的位置是(9-y)行,(2+2b-z)列。

直观的看就是把1---64这64个数字按从下到上从左到右的顺序排成8>8的方阵。

然后行不变,把1,2,3,4列插到5,6,7,8相应列的后面这就成了IP-1的方阵。

主密钥K生成子密钥Kn的过程如上图所示;首先主密钥K经过PC--1置换去掉逢8的位。

这些位是奇偶校验位,它用于检查密钥K在产生和分配过程中

可能发生的错误。

并重新排列,再从中间分为两部分C0和D0,再进行循环左

移变换LSn,再进行PC-2变换取其中的48位形成子密钥Kn。

PC-1,PC-2以及循环左移的位数如下表所示:

循环序号

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

PC-1,PC-2表

 

选择置换PC-1

选择置换PC-2

57

49

41

33

25

9

14

17

11

24

1

5

1

r58

50

42

p4

26

18

3

P281

15

6

:

21

10:

10

12

59

51

35|

27

23

119

12

4

126

81

19

11

3

60

52

44

36

16

7

27

20

13

2

63

55

47

39

31

23

15

41

52

31

37

47

55

7

:

62

54

46

:

38

30:

22

30

r40:

51

45

:

33

48:

14

16

61

53

(45

371

29

44

491

39

56

134

531

21

13

5

28

20

12

4

46

42

50

36

29

32

循环位表:

我们看循环左移的这个表,会发现这个表咼度对称且所有左移位数之和为

28,就是说C0,D0经过16轮的循环左移之后,又回到了初始的状态。

这就意味着这16轮左移把所有可能的情况都包括了。

对于任意一个n阶的有序元素集,

最多经过n次循环左(右)移后一定能出现和原来一样的序列,所以DES最多

可以选择28轮迭代能产生最多28个不同的子密钥Kn。

这28个子密钥可以是全部循环1位的,也可以是循环移动a位的,只要a满足(a,n)=1,也就是说循环左移位数与n是互素的。

观察PC-1置换,不难发现,其有如下规律:

Co、Do分别按从左到右,

从上到下的顺序排列,并按模除8余同且从大到小排列的顺序排列出来。

Co是

模1、2、3,Do是模7、&5;模4按相同的从大到小的顺序排在空缺的位置上即可。

Ri-1

EP

iJJJJIi

S1S2S3S4S5S6S7S8

亍十十tw

 

EP置换

置换函数P

32

1

2

3

4

5

16

7

20

21

4

5

6

7

r8

9:

29

12

28

17

8

9

10

11

P12

13n

1

15

23

26

12

13

14

15

16

17

5

18

31

10

16

17

18

19

20

21

2

8

24

14

20

21

22

23

r24

251

32

27

3

9

24

25

26

27

28

29

19

13

30

6

28

29

30

31

32

1

22

11

4

25

DES中的f函数如上图所示,32位的Ri-i经EP扩展置换后变成48位的。

然后与48位的子密钥Ki进行模2力□,其结果按从左到右每6位一组进入相应的S盒。

这6位首尾放一起作为行,中间4位作为列,来查S盒表。

S盒表的结构由于太大,参见毛明著《大众密码学》的P88-P89页或陈鲁生著《现代密码学》的

P47页的表。

每个S盒的输出为4位,共有32位,进入P盒置换后,作为函数f得输出。

观察EP置换,可以发现其满足以下规律。

设科为第i行第j列元素,贝U

Aij=(4(i-1)+(j-1))mod(32)

Aij=32(i=1且j=1,或i=8,j=5)

直观的看,就是按1-32按顺序排成8>4的矩阵,然后在该矩阵的左边盒右边各添加相邻的小一列和大一列元素而成(SDES中也有类似的情况)。

4、DES设计思想

DES是一个数据加密的方法,加密的原因就是让人难以破译,最好是不能破译。

这就要求我们把明文的统计特性隐藏在密文中,以防统计密码分析的攻击。

另外,明文分组和密钥都要具有一定的长度,以防穷举者的攻击。

总之要使明文

密文有最大限度的可能性,使密码破译者不知如何下手,只有用阶数很大的穷举方法来解密。

DES采用Feistel结构,而Feistel结构是几乎所有分组密码所常用的对称加

密算法。

Feistel结构的共性就是Li=Ri-1

Ri=Li-1+f(Ri-1,Ki)

所以由前面的讨论可知Feistel结构是可逆的。

DES是在Feistel结构的基础上加一个初始置换IP和逆初始置换IP-1在首尾。

我们可以看到他们两个也是互逆的,所以IP、IP-1也是可以自由定义的。

综上所述,DES中IP、IP-1可以自由定义,但必须是互逆的。

函数f也可以自由定义,但必须使得其输出的结果能与Ln进行相异或,确切的说,就是能

使这个程序继续下去。

F函数的一个条件就是对于相同的Rn-1和Kn再次输入f中要有相同的输出,不能变化,否则解密就不能再用这个流程了。

对f函数内的

EP扩展置换也是可以自主定义的,但条件是其扩展(缩小)后的位数要与子密钥Kn位数相同,以便继续下一步;进入S盒后,S盒也可以自由定义,条件是尽可能的使其呈现出随机性,S盒的构造一般是用布尔函数来确定的,具体S盒

的规律和性质已超出本文的范围,这里暂不作讨论;置换函数P也是可以自由定义条件是使运算的输出尽可能出现随机性。

我们现在用的DES中,S盒是通用

的,若第一轮到第十六轮分别用不同的S盒的话,那么解密时不仅要调整子密

钥的使用顺序,同时还要调整S盒的调用顺序,以便能达到使其逆成立。

在主密

钥生成子密钥的过程中PC-1,PC-2以及每一轮的循环左(右)移位数都可以自主定义,主要限制是要让主密钥的位数运用要尽量均衡,不能只用主密钥的一部分,而弃用其他位置的元素,这样才能给密码攻击者造成最大的困难。

我们可以看到DES中有这么多可以修改的地方,所以它被称为数据加密标准,也就是说它给我们提供了一种数据加密的流程,一种模式。

基于它的影响上

世纪后期又出现了IDEA(InternationalDataEncryptionAbgorithm国际数据加密算法)、三重DES、Blowfish、CAST128、RC2、RC5等常规加密算法。

这些算法的密码难度都比DES要高,其中以Blowfish的破译最为困难。

下面就简要的介绍下Blowfish的流程。

5、Blowfish算法

我们可以看到Blowfish的主加密过程和主解密过程和DES大同小异,Blowfish进行16轮的f函数运算,但却用了18个子密钥,又不影响其可逆解密的进行。

DES有IP和IP-1来打乱原明文的排列,而Blowfish却没有。

因为这一步产生的复杂度相对于Blowfish的子密钥、f函数、S盒而言,可谓九牛之一毛,所以可省略。

其f函数的构造如下图所示

f函数如上图所示,其中代表逐位异或,+代表模232相加。

我们发现Blowfish

所采用的4个S盒进行操作运算后,又进行了之间的运算作为输出。

这就使得雪崩效应一下增加了很多倍。

但是我们发现其S盒的输入为8位而输出却为32位。

所以它的S盒并不像DES那样简单。

事实上Blowfish的S盒的构造依靠主密钥。

下面就简要的介绍一下Blowfish由主密钥生成子密钥以及S盒的过程。

首先把主密钥放在一个K数组中K1、K2Kj(1呼<14),子密钥放在数组

P中,P1、P2P18;有4个S盒,每个有256个32Bit的项,(8X32)的形式,

S1,0、S1,1S1,255,S2,0,S2,1,S2,255……或表示为Siji[1,4]

j[0,255]其步骤如下:

1n的小数部分初始化P数组,然后顺次初始化4个S盒。

这样小数部分的最左边32比特就成了P1,再32比特为P2,依次下去,第19个32比特成S1,0,第1042个32比特为S4,255

2对P数组和K数组进行逐位异或,需要是用K数组。

也就是说,把主密钥K数组首尾连接成一个圈,把P数组展成一列,然后K数组在P数组上滚一边,逐位异或后,其结果为刷新后的P数组。

3使用当前的P和S数组对全零的64比特分组进行加法,把P1、P2用加密的输出取代

4使用当前最新的P和S数组对第三步的输出也就是P1P2进行加密,并用所得密文取代P3P4o再用最新的P数组和S数组对最新的输出进行加密,用其结果取代下两个32比特的P数组。

5重复上面的过程,直到所有的P数组和S数组全部更新为止。

这里实际是把P,S数组的连在P数组之后,依次进行下去的,最后的结果是P和S数组都不是n的小数部分形式。

这样就产生了最终的子密钥Pi和相应的S盒。

这个过程需要加密算法执行521次,也就是说,在加密一组明文之前首先要运行521次,这对解密者来说可

谓是难于上青天。

但是Blowfish不适合密钥经常改变的应用,为了快速期间,它的P数组和S数组可以预先存放好,而不是每次使用都从密钥中导出。

到此为止,我们可以看到Blowfish设计的巧妙之处,它采用DES的主加密流程,但使用的S盒却是从主密钥中导出的,并且环环相扣,雪崩效应可谓达到了顶点,它使用两种运算逐位异或和模232加,使得密码强度大大增强,故有没有DES中的IP和IP-1的置换扰乱对它来说意义不大。

所以到现在为止Blowfish没有发现

实际可用的弱点。

参考文献:

[1]毛明著•大众密码学•北京•高等教育出版社,2005年1月

[2]williamstallings•密码编码学与网络安全:

原理与实践•第二版•杨明等译•北

京・电子工业出版社,2001年4月

[3]陈鲁生沈世镒•现代密码学•北京•科学出版社,2002年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1