linux下3des加密算法实现的毕业论文.docx
《linux下3des加密算法实现的毕业论文.docx》由会员分享,可在线阅读,更多相关《linux下3des加密算法实现的毕业论文.docx(47页珍藏版)》请在冰豆网上搜索。

linux下3des加密算法实现的毕业论文
本科毕业论文(设计)
设计题目:
Linux下3DES加密算法的实现
学院:
_计算机科学与信息学院_
专业:
___信息安全____
班级:
___信息081___
学号:
__080806110211
学生姓名:
____杨彪___
指导教师:
___余珮嘉___
2012年6月04日
贵州大学本科毕业论文(设计)
诚信责任书
本人郑重声明:
本人所呈交的毕业论文(设计),是在导师的指导下独立进行研究所完成。
毕业论文(设计)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。
特此声明。
论文(设计)作者签名:
日期:
Linux下3DES加密算法的实现
摘要
近年来,随着计算机技术、通信技术的飞速发展,Linux的用户在快速的增长。
Linux是一种类似Unix的操作系统,并且它是开源的、免费的,而且比Windows操作系统更稳定。
可以说,今天这个完善并强大的Linux完全是一个热情、自由、开源的网络产物。
因此受到越来越多的用户的喜爱。
随着Linux操作系统在我国的不断普及和发展,它也面临着许多的安全问题。
随之而来的信息安全问题也日益突出。
所以我们不得不通过一些有效的办法来保证我们的信息的安全性。
3DES加密算法是一个可以有效解决这些问题的加密算法。
本文首先介绍了对称加密算法的研究意义和研究背景,由于3DES加密算法是基于DES的,换句话说,3DES的核心算法就是DES加密算法;接着分析DES加密原理,着重介绍了DES加密算法的原理步骤,核心算法主要分为子密钥的生成和加密流程循环,其中子密钥核心为置换和移位,DES加密过程主要包括16次迭代,F函数,S盒运算等。
关键词:
Linux下的加密,对称密码,DES,3DES,信息加密
UnderLINUX3DESencryptionalgorithmimplementation
Abstract
Inrecentyears,withtherapiddevelopmentofcomputertechnology,communicationstechnology,userofLinuxrapidgrowth.LinuxisaUnix-likeoperatingsystem,anditisopensource,free,andismorestablethantheWindowsoperatingsystem.ItcanbesaidthatthiscomprehensiveandpowerfulLinuxiscompletelyapassion,freedom,developmentofnetworkproducts.Thereforewelcomedbymoreandmoreusers.WiththegrowingpopularityoftheLinuxoperatingsystemisChinaanddevelopment,isalsofacesmanysecurityissues.Followedbyinformationsecurityissuesbecomeincreasinglyprominent.Sowehavesomeeffectivewaystoensurethesecurityofourinformation.3DESencryptionalgorithmisaneffectiveencryptionalgorithmtosolvetheseproblems.
Thispaperfirstintroducedthesymmetricalencryptionalgorithmresearchsignificanceandresearchbackground.BecauseofThree-DESencryptionalgorithmisbaseofDESencryptionalgorithm.Inotherwords,DESencryptionalgorithmisthecoreofThree-DES's.SothenanalysingDESencryptionprinciple,focusingontheprincipleandstepsoftheencryptionalgorithmofDES,Algorithmcoreisdividedintothesub-keygenerationandencryptionprocesscycle,whichkeyworkforreplacementandshift,themainstreamprocedureiscomposedof16iteration,Ffunction,Sboxofoperationandsoon.
KeyWords:
Linuxencryption,symmetriccryptography,DES,3DESmessageencryption
第一章前言
1.1课题背景
Linux是一种自由和开放源码的类Unix操作系统。
它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。
以后借助于Internet网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。
目前存在着许多不同的Linux,但它们都使用了Linux内核。
Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:
UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。
DES加密算法是由IBM公司研制的,美国国家标准局(NBS)于1977年公布,并批准把该算法作为非机要部门使用的数据加密标准(DataEncryptionStandard),简称DES。
自公布以来,它一直超越国界成为国际上商用保密通讯和计算机通讯的最常用的加密算法。
当时规定DES的使用期为10年。
后来美国政府宣布延长其使用期。
DES超期服役了很长时间,在国际通讯保密的舞台上活跃了20年。
DES持续了相当长的时间才过时,人们夜以继日、不惜一切代价地研究,后来终于被破,但是DES是很值得研究的,因为它代表了一类流行的密码算法,其很多核心的东西,后来的加密算法在一定程度上都有其踪迹。
为了增强DES算法应对差分或线性攻击的可能性,人们提出了采用增加密钥长度,可将分组密钥进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。
三重DES加密效果就很好,它可使密钥长度扩展到128位,在提高加密强度的同时,使得他的安全性得以提高,足以应对各种攻击。
3DES加密算法的核心也就是DES加密算法,三重DES加密算法只是将多个密钥以DES级联的方式来实现的。
1.2DES、3DES加密算法简介
DES是一个分组加密算法,他以64位为分组对数据加密。
64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。
加密的密钥位64位,实际长度为56位,DES算法的保密性取决于密钥。
DES对64位的明文进行操作。
首先通过一个初始置换IP,将64位的明文分成各32位的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。
在经过初始置换操作后,对得到的64位序列进行16轮的加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。
经过16轮运算后,左右两部分合在一起得到一个64位的输出序列,再将该序列经过一个IP逆置换后得到最终的加密结果。
3DES也是一个分组加密算法,在3DES加密算法中,加密过程用4种不同的模式,有密钥K1、K2和K3这3个密钥来实现加密,以及有密钥K1和K2这2个密钥来实现加密的对一个分组消息进行3次DES加密。
1.3课题研究的目的和意义
1.3.1研究的目的
信息在社会中的地位和作用越来越重要,已成为社会发展的重要战略资源。
如何保证信息在传送过程中不被黑客复制、插入、篡改、重排或重放,以及对已损坏的数据进行恢复,成为信息安全所研究一个重要内容。
随着科学技术的发展,信息交流己经深入到社会生活的各个角落,安全问题给用户或者国家造成了重大的损失。
为了杜绝或降低这种损失,利用加密技术对数据信息加密是一种有效的手段和方法。
而基于数据加密标准的DES的三重DES加密算法有着高强度的安全性能,虽然三重DES加密算法在速度上比不上DES加密算法但是其有着更好的安全性,有利于加密算法的研究和发展。
1.3.2研究的意义
目前,无论是对称密码体制还是非对称密码体制,都存在一定的缺陷。
首先,它们都是基于一个目前难以解决的数学问题,安全性局限于当前的计算能力;其次,经典密码体制中的密钥分发问题一直是个比较困难的问题,密钥分发后,没有充分的理由说明该密钥在传输过程中未被窃取、篡改或调换。
另外,由于Shor分解大数因子的量子算法和Grover随机数据库搜索等量子算法的发泄,对经典密码构成了很大的威胁。
可以毫不夸张的说,量子计算机面世之日,就是经典密码学土崩瓦解之时。
在这种情况下,虽然一次一密方法仍能保持完好的不可破的密码,但却存在着严重的密钥分配欺诈问题。
一般来说,只要消息保密,通信双方就共享一个密钥,但事实上无法确保。
本文在传统密码学的基础上,融入量子密码学的优越性,介绍了量子密钥分配的安全性,使经典密码与量子密码相结合,达到加密的高度可靠性,从而保证了密钥分配过程中信息的完整性。
第二章DES加密的详细描述
2.1DES加密的计算部件及其过程
2.1.1密钥的计算
DES的密钥是由一个64位的主密钥产生16轮48位的子密钥来对要加密的信息来加密的。
DES的加密算法的密钥扩展需要用到两个缩减变换PC-1(置换选择1(PC-1))和PC-2以及一个循环左移变换。
5749413325179
1585042342618
1025951433527
1911360524436
63554739312315
7625446383022
1466153455729
211352820124
图2-1置换选择1(PC-1)
上图2-1对输入的64位密钥进行缩减使其变为56位。
这个过程实际上就是去除原密钥的第8,16,24,32,40,48,56,64位,再按照一定的次序进行排列。
密钥中被缩减的位被用来作为奇偶校验位。
通过PC-1的置换,密钥种子的第56位作为输出的第1位,而密钥种子的49位作为输出的第2位等等以此类推直到密钥种子的第4位作为输出的第56位位置。
循环序号12345678910111213141516
转动比特数1122222212222221
图2-1左移调度
在PC-1置换以后对其输出的56位子密钥分为左28位和右28位,可将其分别记为A0和B0。
A0和B0分别循环左移2位得到A1和B1,然后A1和B1分别循环左移1位得到A2和B2依次类推进行16次移位操作,并得到Ai和Bi(i=1,2,3……16)。
然后将其作为置换选择(PC-2)的输入,在其移位的过程中,1、2、9、16左移的为数和上图2-1中“转动比特数”的值保持一致都为1位,其他位移动2位。
1417112415328
15621102319124
268167220132
4152313747553040
5145334844493956
3453464250362932
图2-3置换选择2(PC-2)
PC-2每次循环都将Ai和Bi(1……16)一起作为PC-2的16次置换的输入,通过PC-2置换得到16轮的48位子密钥记为Kn共16组。
如上图2-3通过PC-2的置换,Ai和Bi的第14位作为输出的第1位,第17位作为第2位等等以此类推,第32位作为输出的第56位。
通过PC-2置换后的输出就得到16轮的48位子密钥。
到这里就得到了16轮的48位子密钥。
2.1.2初始置换IP
如下图2-4:
初始置换(IP)是标准数据加密算法的第一个步骤。
它是将64位的明文按照一定的规则进行重新排列,也叫置换。
IP置换后的输出依然为64位的分组,其左边的32位组成L,右边的32位组成R。
L和R是F函数的初始输入。
其中R作为扩充E的初始输入,L作为置换P后面所要进行的左右异或的输入。
585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157
图2-4初始置换(IP)
2.1.3初始置换的逆IP-1
如下图2-4:
逆初始置换IP-1是数据加密标准算法的最后一个步骤,即通过它可以得到数据加密标准加密后的最终结果。
它的输入作为F函数的输出,加密过程中,数据通过初始置换,E扩展等一系列的包含F函数中的种种函数置换或缩减,或扩充,或移位得到的结果必须经过初始逆置换IP-1的变换才的出最终的加密信息。
408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725
图2-4逆初始置换(IP-1)
2.1.4F函数运算的原理
F函数包括了:
E扩展的置换选择,与密钥的异或,S盒的缩减选择,以及P置换选择和与上一轮的L(左)32位异或,从而形成了DES的16轮迭代中的每一轮。
下图为F函数运算图:
32位
48位
K[i]48位
48位
32位
图2-5F函数运算
1.扩充置换E
扩充置换E的作用是将32位的输入(即IP输出的右32位)进行操作使其变成48位的输出,并作为与相对应的48位子密钥异或的输入。
E扩充置换的规则是将输入的32位作为输出的第1位,输入的第1位作为输出的第2位。
图2-6扩展置换盒E
设输入为M,输出为C,那么有函数E(M)=C,则有C1=M32,C2=M1……如上图位置转换得出最终的扩充结果。
2.S盒置换
s盒置换的作用主要是对48位的输入进行缩减置换为32位输出,也是整个DES中唯一的非线性组件,是保证安全的关键所在。
其中每个s盒以6位输入,产生4位的输出结果。
对于s盒的选择函数是被一个事先指定的方式表示的,每个s盒是一个4*16的矩阵表示,下面就是8个s盒的具体叙述:
图2-7S1盒
图2-8S2盒
图2-9S3盒
图2-10S4盒
图2-11S5盒
图2-12S6盒
图2-13S7盒
图2-14S8盒
s盒选择规则:
输入到s盒的位数为48位,并将其分成8组,每组6位,用B表示每一组,用m表示每一位。
那么就有B1到B8这么8个组,其中每个组有6位分别为m1到m6。
每个组的Bi的第一位和第六位组成一个2进制数其值可能为:
00,01,10,11分别代表这个矩阵中的第1行,第2行,第3行,第4行。
而中间的4位就是0到15这16个数值,用它来选取这个矩阵的16列中的其中一列。
这样8个s盒就选出了4*8=32位的结果输出,这样就将48位的数据缩减为32位了。
3.P置换
167202129122817
11523265183110
282414322739
19133062211425
p置换的输入时s盒的32位输出,在进行p置换后输出结果依然为32位只是改变了置换前的顺序,置换规则如下图2-6:
图2-15P置换
将输入的第16位输出到第1位,将第7位输出到第2位,以此类推。
再将p置换后的数据与最初的左半部分进行异或,然后将其与右半部分进行交换后再进行下一轮。
2.1.5DES加密的原理
DES加密将传统的代替法和换位法进行多次组合,利用分散和错乱的相互作用得出了密码强度高的密文。
加密时,DES对以64位为分组的明文进行操作,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长,作为加密运算的初始输入。
然后进行16轮完全相同的运算,最后经过一个末置换(初始置换的逆置换),将64位的密文输出
图2-16输出交换
第N-1层和第N层的输出有如下关系:
式中⊕表示以2为模的逻辑异或运算。
为向第n层输入的48比特的轮密钥。
和
分别表示第n-1层的左右输出。
f是DES加密的关键,其为一个非线性函数,此非线性运算提供了很好的安全性,它由S盒来实现。
在f函数中,32为的明文先被扩展为48位,然后与48为轮密钥进行异或后分为6位一组,分别对应作为8个S盒的输入。
S盒有4行16列,每个行与列的交叉处有一个数值。
S盒的操作规则是将6位一组的输入中的第1位和第6位看作是选行信号,此两位二进制信息的组合可由0、1、2、3各行中选中一行;第2位至第5位看作是选列信号,共16种组合,故可由S盒的16列中选中一列,选中的行与列的交叉点的数即为S盒的输出,此数的值在0与15之间,正好以4比特的输出表示,8个S盒正好输出32位。
将得出的32位值作为置换P的输入,在与前一轮的Ln-1进行异或运算得出下一轮的Rn。
前一轮的Ri-1作为本轮的Ln。
这样经过16轮的运算得到L15和R15进行一次左右交换再进行逆初始置换得出最终的密文就完成了加密的过程。
过程如下图2-17:
图2-17加密过程
2.2DES解密的过程
2.2.1DES解密的原理
DES加密算法的解密与它本身的加密算法的原理是一样的,因为DES加密算法是对称加密算法,所以它在收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
所以DES解密的过程就是它对密文,用加密时所使用的密钥对密文进行加密而得到的结果,这个结果就是我们所加密之前的明文。
2.2.2DES解密的过程
在DES对密文进行解密之前,首先要对密文进行分组,将密文分别分为64Bit为一组来进行解密,在解密之后再将这些分组按照先后顺序组合起来。
在解密的时候将分好组的密文按照DES加密的过程来进行。
通过一个初始置换,将密文分组分成左半部分和右半部分,各32位长,作为加密运算的初始输入。
然后进行16轮完全相同的运算,将64位的密文分为左右2部分Li和Ri。
将Ri作为下一轮的Li+1的输入。
Ri经过E表将32位的密文扩展为48位,在将将其与经过置换选择2的密钥进行异或运算后,再经过S盒运算后将48位转换为32位,再经过P置换后与Li进行异或运算得出Ri+1。
经过这样的16轮运算后得出L15和R15,在经过位置交换最后经过一个末置换(初始置换的逆置换),将64位的明文输出。
过程如下图:
图2-18解密过程
第三章3DES加密原理
3.13DES加密算法简介
3.1.13DES加密算法简介
对于3DES加密过程而言其实质就是运用3次DES加密算法来实现的,3DES又称TripleDES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密。
根据使用的密钥数和加解密变换过程不同,三重DES有四种模型:
13DES-EEE3,使用三个不同的密钥,顺序进行三次加密
23DES-EDE3,使用三个不同的密钥,依次进行加密-解密-加密
33DES-EEE2,使用两个不同的密钥,其中K1=K3,顺序进行三次加密
43DES-EDE2,使用两个不同的密钥,其中K1=K3,依次进行加密-解密-加密
数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。
比起最初的DES,3DES更为安全。
3.23DES的加密过程
3.2.13DES-EEE3加密
3DES加密算法是以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:
设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,
3DES加密过程为:
C=Ek3(Ek2(Ek1(P)))如下图3-1:
图3-13DES-EEE3加密
3.2.23DES-EDE3加密
3DES加密算法是以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:
设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,
3DES加密过程为:
C=Ek3(Dk2(Ek1(P)))如下图3-2:
图3-23DES-EDE3加密
3.2.33DES-EEE2加密
3DES加密算法是以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:
设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,
3DES加密过程为:
C=Ek1(Ek2(Ek1(P)))如下图3-3:
图3-33DES-EEE2加密
3.2.43DES-EDE2加密
3DES加密算法是以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:
设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,
3DES加密过程为:
C=Ek1(Dk2(Ek1(P)))如下图3-4:
图3-43DES-EDE2加密
3.33DES的解密过程
3.2.13DES-EEE3解密
其对于3DES-EEE3解密来说,第一次用K1对初始数据解密,再用K2对K1解密后的数据解密,再用K3对K2加密后的数据进行解密,这样就实现了对数据的3DES解密算法的实现。
3DES-EEE3解密过程为:
P=Dk1((DK2(Dk3(C)))如下图3-5:
图3-53DES-EEE3解密
3.2