对称加密算法的设计与实现 精品.docx
《对称加密算法的设计与实现 精品.docx》由会员分享,可在线阅读,更多相关《对称加密算法的设计与实现 精品.docx(24页珍藏版)》请在冰豆网上搜索。
对称加密算法的设计与实现精品
学校代码:
10184
学号:
2094021629
延边大学
本 科 毕 业 论 文
本科毕业设计
(
题目:
基于DES的对称加密算法的设计与实现
学生姓名:
周莹冰
学院:
工学院
专业:
数字媒体技术
班级:
2009级
指导教师:
李永珍副教授
二〇一三年五月
摘要
随着信息时代的来临,信息的安全性变得尤为重要,而对数据进行加密是行之有效的能保证信息安全性的方法。
DES算法是众多数据加密算法中的一种,在过去的几十年中在数据加密领域有着举足轻重的地位,然而随着计算机技术的发展,DES算法的安全性也被大大地降低,针对DES的暴力破解所用的时间在逐年减少,为了能使DES这种优秀的加密算法能够重新使用,本文将针对就DES的暴力破解提供一种有效的解决方案:
基于DES算法迭代算法的改进,对DES的密钥长度进行了扩展。
使DES的安全性得到了增强,同时相较于DES算法的改进算法3DES算法,效率上会比3DES高,安全性上也不会逊色于3DES。
关键词:
DES;密钥扩展;迭代算法;
Abstract
Withthecomingofinformationage,informationsecurityhasbecomeespeciallyimportant,andtoencryptdataiseffectivetoensurethesecurityoftheinformation.DESalgorithmisoneofdataencryptionalgorithms,inthepastfewdecadeshasapivotalpositioninthefieldofdataencryption.however,withthedevelopmentofcomputertechnology,thesecurityofDESalgorithmalsohasbeengreatlyreduced,thetimeofbruteforceofDEShasbeenreducingyearbyyear,inordertomakethisgoodencryptionalgorithmcanbeusedagain,thisarticlewillfocusontheDESofbruteforcetoprovideaneffectivesolution:
basedoniterativealgorithmofDESalgorithm,andextendedthelengthofDESkey.TomakethesecurityofDESmoreenhanced,atthesametime,comparedwiththe3DESalgorithm,theefficiencywillbehigherthan3DES,andsecuritywillnotinferiorto3DES.
Keyword:
DES;keyexpansion;iterativealgorithm
引言
对称加密算法是使用比较早的一类数据加密算法,它具有加密速度快、加密效率高等优点,而数据加密标准(DES,DataEncryptionStandard)就是一种使用密钥加密的对称加密算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。
它基于使用56位密钥的对称算法。
这个算法因为包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议,因此DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。
DES是分组密码的典型代表.也是第一个被公布出来的标准算法。
由于DES算法的密钥长度过短,DES算法已经不再安全,目前DES已经被AES所取代。
但是,DES算法作为一种优秀的加密算法,为了能使DES继续发挥其作用,对DES的改进也是层出不穷。
本次对DES算法进行密钥扩充,主要采用两种方法来进行改进,两种方法大致的思想是一致的,都是同时使用两个密钥对两段明文进行加密,同时加密过程中对两个加密过程的中的一些数据进行一些可控的交流,不同的是一种方法是基于加密算法迭代过程中的加密结果进行交换,另一种是基于迭代过程中的子密钥进行交换。
理论上两种方法最终达到的效果是一致的,都是使DES算法的密钥长度得到了延长。
本文将对这两种改进方法做出实现,然后对这两种方法的安全性与效率进行研究,最终得出这种改进方法的可行性结果。
第一章对称加密算法
1.1对称加密算法简介
对称加密算法是应用较早的加密算法,技术相对来说比较成熟。
在算法中,加密方需要将明文与密钥进行特殊的加密算法处理,使其变成无法辨认的密文后传送出去。
接收方收到密文后,要想获得想要的明文,就必须通过相同的密钥,使用加密算法的逆运算,来对密文进行处理,从而才能得到相应的明文。
在对称加密算法中,通信的双方都是使用相同的密钥来进行加密和解密操作。
对称加密算法的特点是对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。
他的缺点是通信的双方都要维护一个只有他们知道的密钥,这就造成了密钥管理的难度,尤其是在多人通信的环境中,密钥的个数急剧增加,给密钥管理带来的巨大的负担。
对称加密算法主要有以下几种算法:
DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
本文中将具体对DES和3DES算法做深入的探讨。
1.2DES的历史
DES(DataEncryptionAlgorithm,DEA)加密算法是使用最广泛的数据加密体制,于1977年由美国国家标准局(NationalBureauofStandards,NBS),即现在的国家标准和技术协会(NationalInstituteofStandardsandTechnology,NIST)采纳为联邦信息处理标准46。
我们所讲的DES其实是指数据加密算法(DataEncryptionAlgorithm,DEA)。
年代简表
年份
日期
事件
1973
5月15日
NBS第一次征集加密算法标准
1974
8月27日
NBS第二次征集加密算法标准
1975
3月17日
DES在“联邦公报”上发布并征集意见
1976
8月
DES的第一次研讨会
1976
9月
第二次研讨会,讨论DES的数学基础
1976
11月
DES被确认为标准
1977
1月15日
DES被作为FIPS标准FIPSPUB46发布
1983
DES第一次延长标准期限
1986
HBO开始使用一个基于DES的电视卫星加密系统,Videocipher II
1988
1月22日
DES第二次延长标准期限,称为FIPS46-1,取代FIPSPUB46
1990
7月
毕汉姆和萨莫尔重新发现了微分密码分析,并将之应用到了一个15位的类DES密码系统
1992
毕汉姆和萨莫尔发布了第一个复杂性小于暴力破解的理论攻击方法:
微分密码分析。
然而,这种方法仍然需要不现实的247选择明文。
1993
12月30日
DES作为FIPS46-2第三次延长标准期限
1994
试验了第一个实验性的DES密码分析,线性密码分析
1997
6月
DESCHAL计划第一次公开破解了DES加密的信息
1998
7月
EFF的DES破解器(DeepCrack)在56小时内破解了DES密钥
1999
1月
DeepCrack和合作在22小时15分钟内破解了一个DES密钥
1999
10月25日
DES作为FIPS46-3第四次延长标准期限,其中规定优先使用3DES,而普通DES只允许在遗留的系统中应用
2001
11月26日
AES作为FIPS197发布
2002
5月26日
AES标准开始生效
2004
7月26日
“联邦公报”发布了FIPS46-3以及一系列相关标准被驳回的信息
2005
5月19日
NIST拒绝了FIPS46-3标准
2006
4月
德国鲁尔大学和基尔大学基于FPGA的价值$10,000的并行计算机COPACOBANA在9天内破解了DES在一年内,软件改进将平均时间降低到了6.4天。
2008
11月
COPACOBANA的下一代,RIVYERA将平均破解时间降低到了一天内
表1.1.1DES年代简表
DES自被确立为加密标准以来,已经过去了有30多年了,期间DES算法在未做改动的情况下标准的有效期被延期了3次,足以证明DES算法本身的有效性和安全性,但是随着电脑技术的发展和人们在加密领域研究的深入,DES算法的安全性不可避免的受到了威胁。
第4次延期时被要求优先使用DES的改进算法3DES来减少DES算法安全性缺失所带来的的不良效果,同时DES的替代算法也在紧锣密鼓的筹划中,第4次延期期间AES算法被提出,自此DES退出来了历史舞台。
1.3DES加密算法原理
DES算法是对称加密算法,加密时需要有两个输入:
明文和密钥。
明文的长度为64位,密钥的长度为64位(64密钥中只有56位是有效的,其他为校验位)。
图1.2.1DES算法流程示意图
上图1.2.1中表明了DES加密算法的整个加密机制。
图中可以看出,DES算法的明文处理共分了3个部分:
首先,64位明文经过初始值换(IP)矩阵改变排列顺序,然后与右边产生的子密钥进行16轮迭代运算,对明文进行了置换和替代。
16轮迭代运算结束后的结果对其左右两部分进行对换,产生一个预输出。
最后对预输出的结果进行初始逆置换(IP-1)产生64位密文。
图1.2.1中,右半部分是产生每轮迭代所需的子密钥的方法,首先是64位密钥经过置换选择1,长度变为56位,然后每轮都进行循环左移并通过置换选择2产生一个48位的子密钥。
图1.2.2DES详细算法示意图
上图1.2.2,更加详尽的给出了DES算法的实现细节,下面来对DES算法分步来进行分析。
1.3.1初始置换
表1.2.1和表1.2.2分别给出了初始置换和初始逆置换。
每个表中共有64个位子,对应了64位的数据,表中定义的是每一位的数据具体被哪一位的数据所置换。
58
50
42
34
26
18
10
2
60
52
44
36
28
20
12
4
62
54
46
38
30
22
14
6
64
56
48
40
32
24
16
8
57
49
41
33
25
17
9
1
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
63
55
47
39
31
23
15
7
表1.2.1初始置换表
40
8
48
16
56
24
64
32
39
7
47
15
55
23
63
31
38
6
46
14
54
22
62
30
37
5
45
13
53
21
61
29
36
4
44
12
52
20
60
28
35
3
43
11
51
19
59
27
34
2
42
10
50
18
58
26
33
1
41
9
49
17
57
25
表1.2.2初始逆置换表
1.3.2每轮变换的详细过程
图1.2.3单轮算法示意图
将图1.2.2中中间部分抽取出来就得到了图1.2.3,其中可以看到每轮运算的细节实现。
64位的明文被分成了左右两个32位的明文块L和R。
过程可以用公式简单的表达为:
Li+1=Ri
Ri+1=Li
F(Ri,Ki+1)
图1.2.4S盒示意图
上图1.2.4是具体F函数的操作细节:
对右边的明文块R使用E(表1.2.3)扩展置换为48位,再与48位的子密钥进行异或,得到的结果再通过S盒还原为32位的数据,最后通过置换函数P(表1.2.4)得到F函数的输出。
32
1
2
3
4
5
4
5
6
7
8
9
8
9
10
11
12
13
12
13
14
15
16
17
16
17
18
19
20
21
20
21
22
23
24
25
24
25
26
27
28
29
28
29
30
31
32
1
表1.2.3(E扩展置换)
16
7
20
21
9
12
28
17
1
15
23
26
5
18
31
10
2
8
24
14
32
27
3
9
19
13
30
6
22
11
4
25
表1.2.4(P置换函数)
如果仔细观察一下扩展置换矩阵E(表1.2.3)就会发现,他的作用其实是将32位数据块分成4位4位的8份,然后每组与前后两组的末尾和开头组成6位,形成新的一行。
例如有下面这么一些数据:
asdfqwerzxcvqwer
扩展置换后变为
Rasdfqfqwerzrzxcvqvqwera
在进行S盒变换的时候,每6位一组的外面2位代表着每个小S盒中4种可能中的一种,中间4位代表了这一行中具体选择哪一位来输出。
8个S盒的32位输出经过置换,使得每个S盒的输出在下一轮中尽可能的影响更多的其他数据位
S1
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
S2
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
S3
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
S4
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
S5
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
S6
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
S7
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
S8
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
表1.2.5(s盒)
1.3.3密钥的产生
下图1.2.5中指出的子密钥的产生过程,可以看出:
输入的初始密钥为64位的,但是其实真正使用的只有其中的56位被使用了,将64位划分成一个8X8矩阵,每行的第八位都是被舍去的,第8位是校验位。
得到的56位密钥首先要经过置换选择1(表1.2.6)处理,之后每轮产生子密钥时56位密钥被分为左右28位,每次各自进行循环左移(或旋转)1位到2位,移位后的值作为下一轮的输入。
同时对它们使用置换选择2(表1.2.7),得到本轮的一个子密钥。
图1.2.5密钥产生示意图
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
63
55
47
39
31
33
15
7
62
54
46
38
30
22
14
6
61
53
45
37
29
21
13
5
28
20
12
4
表1.2.6(PC-1表)
14
17
11
24
1
5
3
28
15
6
21
10
23
19
12
4
26
8
16
7
27
20
13
2
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32
表1.2.7(PC-2表)
第二章DES算法的安全性分析及改进
2.1DES算法基于对称加密算法的问题
DES是对称的分组密码算法。
对称的分组密码算法最主要的问题是:
由于加解密双方都要使用相同的密钥,因此在发送、接收数据之前必须完成密钥的分发,因而密钥的分发便成了该加密体系中的最薄弱风险最大的环节,各种基本的手段均很难保障安全地完成此项工作。
从而使密钥更新的周期加长,给他人破译密钥提供了机会。
同时在多人通信的过程中,密钥的分配和管理也是一个很大的问题。
如果大家采用的是同一个密钥,那么当这个密钥被破解的时候,整个通信都会变得不安全,如果大家采用的是不同的密钥,那么N个人参加通信的话就需要N(N-1)个密钥,如此多的密钥将会非常难以管理。
2.2DES算法的密钥
2.2.1密钥的长度
DES算法的密钥长度为56位,也就是说密钥存在2的56次方种可能,为72057594037927936个密钥。
在设计之初,这样的密钥长度的DES算法是相当安全的,假设一台没毫秒执行一次DES解密的计算机大约需要1000年才能破译出密文。
在1977年DES刚被认定为标准的时候,但是如果想在是10小时左右破译出密文的话,大约需要花费2000万美元,很显然这是得不偿失的,而随着计算机硬件能力的提升,破解的成本在逐年降低。
1993年,迈克尔·维纳设计了一部造价约1百万美元的破解器,大约可以在7小时内找到一个密钥。
但是这个机器并没有被真正制造。
1998年,电子前哨基金会(EFF,一个信息人权组织)制造了一台DES破解器,造价约250,000美元。
该破解器可以用稍多于2天的时间暴力破解一个密钥,它显示了迅速破解DES的可能性。
2006年德国的鲁尔大学与基尔大学的工作组建造了COPACOBANA,这个破解器成本比EFF的破解器低了有25倍左右,同时这台机器还可以通过重配置,来用于别的密码的破解,2008年,COPACOBANA的改进版出现,破解的时间被缩小到了1天以内。
DES算法本身存在一个缺陷:
(1)DES算法中存在简单关系。
简单关系可以用以下关系式表示:
如果
则有
而DES中存在下面的关系:
所以
Pi、Ci、Ki是P、C、K的逐位取补,这表明在DES中令K、P、C的逐位取补等于f、g、h就满足了简单关系,这个关系可以是DES的穷举破解的复杂性降低2个因子。
(2)由于DES具有互补性,在对DES进行穷举破解的时候,仅需要搜索其整个密钥空间的一半。
2.2.2存在弱密码
由于算法各轮的子密钥是通过改变初始密钥这种方式得到的,因此有些初始密钥成了弱密钥,初始密钥分成两部分每部分各自独立的移动如果每一部分的所有位都是0或1,那么算法的任意一个周期的子密钥都是相同的,当密钥是全0全1或者一半全0一半全1时会发生这种情况,下面以十六进制编码的方式给出了四种弱密钥
弱密钥值
实际密钥
01010