【 摘 要 】 文章介紹了DES及3DES的補(bǔ)位加密方法,并指出二者在密文以及密鑰加密方面存在的密鑰長(zhǎng)度過(guò)短和容易被選擇明文攻擊等方面的不足。通過(guò)代碼設(shè)計(jì),文章給出了三種改進(jìn)的補(bǔ)位加密方法:分組亂序、密鑰自身亂序以及插入補(bǔ)位法。通過(guò)分析三種方法的優(yōu)缺點(diǎn),文章提出了優(yōu)化方案,并將該方案作為實(shí)際應(yīng)用3DES加密時(shí)的參考。
【 關(guān)鍵詞 】 DES/3DES算法;數(shù)據(jù)補(bǔ)位;數(shù)據(jù)加密
【 中圖分類號(hào) 】 TP392
【 文獻(xiàn)標(biāo)識(shí)碼 】 A
【 Abstract 】 This paper introduces the DES and 3DES encryption method and points out that the key length is too short and easy to be chosen in the cipher text and key encryption in two aspects. Through the code design, the paper gives three kinds of improved encryption methods: packet scrambling, key self disorder and insertion. Through the analysis of the advantages and disadvantages of the three methods, the paper puts forward the optimization scheme, and as a reference for the practical application of 3DES encryption.
【 Keywords 】 des/ 3des algorithm; data mending; data encryption
1 引言
DES(Data Encryption Standard)是針對(duì)64位數(shù)據(jù)的分組加密算法,每八位為一組,最高位為奇偶校驗(yàn)碼即實(shí)際加密時(shí)有效密碼為56位[1]。DES加密時(shí)采用數(shù)據(jù)補(bǔ)位的方法:將數(shù)據(jù)按照八個(gè)字節(jié)為一組進(jìn)行加密,不足八字節(jié)的部分用PKSC5Padding方法進(jìn)行補(bǔ)足然后加密,最后將所有的分組結(jié)合在一起即為密文[2]。類似于數(shù)據(jù)補(bǔ)位,很多軟件也利用DES算法進(jìn)行密碼加密,即用戶在輸入密碼后不足八字節(jié)的部分系統(tǒng)將自動(dòng)填充進(jìn)行加密。
3DES (Triple DES)是針對(duì)DES密碼長(zhǎng)度過(guò)短,安全性略低而改進(jìn)的算法,其核心是進(jìn)行三次DES加密,方法為C=Ek3(Dk2(Ek1(P)))[3]。如果三個(gè)部分的密碼互不相等(k1!=k2!=k3),那么密碼長(zhǎng)度將會(huì)是168位,安全性將會(huì)大大增強(qiáng)。如果要用3DES設(shè)置密碼,則需要24字節(jié)的密碼長(zhǎng)度。如果設(shè)置的密碼長(zhǎng)度過(guò)長(zhǎng),比如設(shè)置了一個(gè)12位密碼,那么DES運(yùn)算次數(shù)就會(huì)減少,甚至?xí)苯訙p少一大步DES加密運(yùn)算,這樣3DES的安全性便會(huì)降低。很多人給出了DES的改進(jìn)方法,比如S盒重構(gòu)以及多重DES[1]。但是由于改變了DES算法中唯一的非線性變化的S盒,安全性無(wú)從可知;并且N重DES會(huì)使得加密變得拖沓,不太符合實(shí)際需要[1]。
所以,3DES應(yīng)盡量在保持原有內(nèi)部結(jié)構(gòu)和密鑰長(zhǎng)度的基礎(chǔ)上在數(shù)據(jù)補(bǔ)位上進(jìn)行一些改進(jìn)。本文將首先介紹分析DES的數(shù)據(jù)補(bǔ)位技術(shù),然后介紹三種新的3DES的補(bǔ)位加密及解密方法并給出代碼,最后討論改進(jìn)后的加密方法的優(yōu)缺點(diǎn)并討論優(yōu)化方案及實(shí)際中的應(yīng)用。
2 DES與3DES的數(shù)據(jù)補(bǔ)位加密
2.1 ECB模式
2.2 補(bǔ)位方法的分析
DES是一個(gè)迭代分組密碼,使用16個(gè)循環(huán),包括異或、置換、代換、移位四種運(yùn)算方法。在ECB模式下,DES的數(shù)據(jù)補(bǔ)位就是把每一組進(jìn)行加密后相連,最終實(shí)現(xiàn)的其實(shí)是每一組里數(shù)據(jù)的迭代加密,而無(wú)法從整體上建立數(shù)據(jù)之間的聯(lián)系;解密方法則是先對(duì)密文進(jìn)行分組,然后逐組進(jìn)行解密,將數(shù)據(jù)按順序連接便是解密后文件,最后刪除可能會(huì)含有的補(bǔ)足后的字節(jié)。
而在CBC模式下,DES的數(shù)據(jù)補(bǔ)位使得每組數(shù)據(jù)都要先與前一組加密過(guò)的數(shù)據(jù)進(jìn)行異或運(yùn)算再進(jìn)行DES加密(第一組則先與一初始值進(jìn)行異或運(yùn)算),這一加密方法使得每組數(shù)據(jù)都鏈接在了一起,加強(qiáng)了數(shù)據(jù)的緊密性,較EBC模式復(fù)雜了許多。解密是加密的逆運(yùn)算,步驟是先分組,然后對(duì)第一組先進(jìn)行DES解密再和初始數(shù)據(jù)進(jìn)行異或運(yùn)算,接著第二組先進(jìn)行DES解密再和第一組加密數(shù)據(jù)進(jìn)行異或運(yùn)算獲得源文件,每一組以此類推,刪除最后一組的補(bǔ)足字節(jié)后按順序連接便是源文件。CBC使用的是鏈接機(jī)制,密文對(duì)于明文的依賴性很強(qiáng),因此對(duì)于數(shù)據(jù)的順序,完整度及對(duì)原文的修改等極為敏感[3]。所以,CBC模式對(duì)于原文的敏感性以及其使用密碼塊鏈接的方法,可能會(huì)讓解密出現(xiàn)問(wèn)題,因?yàn)槊魑牡母淖儠?huì)使密碼塊發(fā)生改變,而CBC的密碼塊是同步的。
3 優(yōu)缺點(diǎn)分析
3.1 優(yōu)點(diǎn)
密碼分組的亂序相較于其他兩種方法,思路更加清晰簡(jiǎn)單,配合2.2設(shè)計(jì)的隨機(jī)字符補(bǔ)位方法,可以說(shuō)是用最簡(jiǎn)單的打亂方法實(shí)現(xiàn)優(yōu)化。
密碼本身亂序的優(yōu)勢(shì)在于即使密鑰所在分組被破解,也無(wú)法得到原密鑰,仍需要對(duì)其進(jìn)行亂序還原,而文章給出的代碼只有兩步循環(huán),在實(shí)際中還可以增加更多的亂序循還以增加安全性。插入補(bǔ)位法的優(yōu)勢(shì)在于不同位數(shù)的密鑰有著不同的插入方法,這樣密鑰就更加地?zé)o規(guī)律可循,只能選擇將168位密鑰全部破解。
3.2 缺點(diǎn)
密碼本身亂序的缺點(diǎn)在于亂序算法沒(méi)有DES加密的安全性高,更容易被強(qiáng)行破解,而且密鑰長(zhǎng)度過(guò)短會(huì)使得亂序的可能情況減少,降低其安全性。
插入補(bǔ)位法的缺點(diǎn)在于其在實(shí)際中的運(yùn)用上,密碼分組的亂序以及密碼本身的亂序在實(shí)際中都可以應(yīng)用在明文的加密上,而不僅僅是密鑰的加密;而由于文章設(shè)計(jì)的補(bǔ)位方法插入的字符數(shù)量有限,因此在明文加密中很容易就能被發(fā)現(xiàn)插入規(guī)律,尤其是對(duì)于中文文件。
由于這些算法對(duì)于原文進(jìn)行了改變,可能使3DES無(wú)法適應(yīng)CBC模式。但是分組的亂序?qū)嶋H上也是起到了從整體上鏈接明文的作用,密鑰自身的亂序以及插入補(bǔ)位法也打亂了每一組的規(guī)律,因此其安全性較原CBC模式下的DES加密并沒(méi)有降低太多。
4 優(yōu)化方案與在實(shí)際中的運(yùn)用
在現(xiàn)實(shí)生活中,信息的保護(hù)是人們?cè)絹?lái)越重視的問(wèn)題,因此改進(jìn)后的3DES補(bǔ)位加密法的運(yùn)用建議可以作為一些信息加密的參考。由于3DES既可以作為明文加密的方法也可以作為密鑰加密的方法,所以其應(yīng)用范圍非常的廣泛。對(duì)于不太重要的文件,三種補(bǔ)位法任選一種進(jìn)行補(bǔ)位加密即可。而對(duì)于那些重要性高的文件,如果使用3DES加密,則最好選用三種補(bǔ)位方法聯(lián)合使用的優(yōu)化方案。
優(yōu)化方案為首先對(duì)原密鑰進(jìn)行亂序運(yùn)算,然后進(jìn)行插入補(bǔ)位,最后對(duì)分組進(jìn)行亂序,這樣三者的混合使用使得原密鑰“混亂無(wú)章”,黑客不得不選擇破解全部的168位密鑰。而這一優(yōu)化使得明文加密更加安全有效,在文件被破解后,仍必須先復(fù)原分組,去除插入字符最后恢復(fù)亂序才可獲得原明文文件。這樣使得3DES算法更加牢固,文件也更不易被破解。
5 結(jié)束語(yǔ)
文章的目的是改進(jìn)3DES補(bǔ)位加密方法,通過(guò)代碼設(shè)計(jì)最后實(shí)現(xiàn)了三種方式的變化:分組亂序、密鑰自身亂序后的補(bǔ)位加密以及插入補(bǔ)位法。改進(jìn)后的補(bǔ)位加密方法使得加密文件的密鑰變得更加的混亂無(wú)規(guī)律,這使得想要強(qiáng)行破解密鑰的人不得不把3組共168位密鑰全部破解。這樣,3DES加密法便能夠充分發(fā)揮其較DES的進(jìn)步性和安全性。很多軟件的用戶并不熟悉3DES的加密和破解方法,所以他們也不太清楚如何設(shè)置合適的密碼長(zhǎng)度,這也是3DES的潛在不安全性。
本文提出的改進(jìn)方法即解決了原3DES存在的這一問(wèn)題,同時(shí)又使得應(yīng)用3DES加密的軟件更加的人性化,可以更牢固地保護(hù)用戶信息。關(guān)于改進(jìn)方法里提到的密鑰分組亂序,密鑰本身亂序和密鑰插位補(bǔ)足法,每一種都一定的優(yōu)越性和局限性,而這些方法的綜合運(yùn)用或許可以相互彌補(bǔ)以增加安全性,使得3DES加密可以更好地運(yùn)用到實(shí)際中。
參考文獻(xiàn)
[1] 李紅芳,楊領(lǐng)軍,曹三省.基于密鑰長(zhǎng)度的數(shù)據(jù)加密標(biāo)準(zhǔn)算法改進(jìn)[J].太赫茲科學(xué)與電子信息學(xué)報(bào),第11卷第1期,2013.2.
[2] 梁棟. JAVA加密與解密的藝術(shù)[J].脼峰資訊(第二部分),7.3.2,2010.11.
[3] 鄭東等.密碼學(xué):密碼算法與協(xié)議[M].北京:電子工業(yè)出版社(2版),2014.8.
[4] 房祥超,李興保.基于一次密鑰的數(shù)據(jù)加密算法優(yōu)化[J].計(jì)算機(jī)系統(tǒng)與應(yīng)用,第22卷第9期,2013.
作者簡(jiǎn)介:
王煜(1996-),男,江蘇徐州人,本科在讀,西交利物浦大學(xué)數(shù)學(xué)科學(xué)系;主要研究方向和關(guān)注領(lǐng)域:運(yùn)籌學(xué)和信息管理。