
【 摘 要 】 文章介紹了DES及3DES的補位加密方法,并指出二者在密文以及密鑰加密方面存在的密鑰長度過短和容易被選擇明文攻擊等方面的不足。通過代碼設計,文章給出了三種改進的補位加密方法:分組亂序、密鑰自身亂序以及插入補位法。通過分析三種方法的優缺點,文章提出了優化方案,并將該方案作為實際應用3DES加密時的參考。
【 關鍵詞 】 DES/3DES算法;數據補位;數據加密
【 中圖分類號 】 TP392
【 文獻標識碼 】 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)是針對64位數據的分組加密算法,每八位為一組,最高位為奇偶校驗碼即實際加密時有效密碼為56位[1]。DES加密時采用數據補位的方法:將數據按照八個字節為一組進行加密,不足八字節的部分用PKSC5Padding方法進行補足然后加密,最后將所有的分組結合在一起即為密文[2]。類似于數據補位,很多軟件也利用DES算法進行密碼加密,即用戶在輸入密碼后不足八字節的部分系統將自動填充進行加密。
3DES (Triple DES)是針對DES密碼長度過短,安全性略低而改進的算法,其核心是進行三次DES加密,方法為C=Ek3(Dk2(Ek1(P)))[3]。如果三個部分的密碼互不相等(k1!=k2!=k3),那么密碼長度將會是168位,安全性將會大大增強。如果要用3DES設置密碼,則需要24字節的密碼長度。如果設置的密碼長度過長,比如設置了一個12位密碼,那么DES運算次數就會減少,甚至會直接減少一大步DES加密運算,這樣3DES的安全性便會降低。很多人給出了DES的改進方法,比如S盒重構以及多重DES[1]。但是由于改變了DES算法中唯一的非線性變化的S盒,安全性無從可知;并且N重DES會使得加密變得拖沓,不太符合實際需要[1]。
所以,3DES應盡量在保持原有內部結構和密鑰長度的基礎上在數據補位上進行一些改進。本文將首先介紹分析DES的數據補位技術,然后介紹三種新的3DES的補位加密及解密方法并給出代碼,最后討論改進后的加密方法的優缺點并討論優化方案及實際中的應用。
2 DES與3DES的數據補位加密
2.1 ECB模式
2.2 補位方法的分析
DES是一個迭代分組密碼,使用16個循環,包括異或、置換、代換、移位四種運算方法。在ECB模式下,DES的數據補位就是把每一組進行加密后相連,最終實現的其實是每一組里數據的迭代加密,而無法從整體上建立數據之間的聯系;解密方法則是先對密文進行分組,然后逐組進行解密,將數據按順序連接便是解密后文件,最后刪除可能會含有的補足后的字節。
而在CBC模式下,DES的數據補位使得每組數據都要先與前一組加密過的數據進行異或運算再進行DES加密(第一組則先與一初始值進行異或運算),這一加密方法使得每組數據都鏈接在了一起,加強了數據的緊密性,較EBC模式復雜了許多。解密是加密的逆運算,步驟是先分組,然后對第一組先進行DES解密再和初始數據進行異或運算,接著第二組先進行DES解密再和第一組加密數據進行異或運算獲得源文件,每一組以此類推,刪除最后一組的補足字節后按順序連接便是源文件。CBC使用的是鏈接機制,密文對于明文的依賴性很強,因此對于數據的順序,完整度及對原文的修改等極為敏感[3]。所以,CBC模式對于原文的敏感性以及其使用密碼塊鏈接的方法,可能會讓解密出現問題,因為明文的改變會使密碼塊發生改變,而CBC的密碼塊是同步的。
3 優缺點分析
3.1 優點
密碼分組的亂序相較于其他兩種方法,思路更加清晰簡單,配合2.2設計的隨機字符補位方法,可以說是用最簡單的打亂方法實現優化。
密碼本身亂序的優勢在于即使密鑰所在分組被破解,也無法得到原密鑰,仍需要對其進行亂序還原,而文章給出的代碼只有兩步循環,在實際中還可以增加更多的亂序循還以增加安全性。插入補位法的優勢在于不同位數的密鑰有著不同的插入方法,這樣密鑰就更加地無規律可循,只能選擇將168位密鑰全部破解。
3.2 缺點
密碼本身亂序的缺點在于亂序算法沒有DES加密的安全性高,更容易被強行破解,而且密鑰長度過短會使得亂序的可能情況減少,降低其安全性。
插入補位法的缺點在于其在實際中的運用上,密碼分組的亂序以及密碼本身的亂序在實際中都可以應用在明文的加密上,而不僅僅是密鑰的加密;而由于文章設計的補位方法插入的字符數量有限,因此在明文加密中很容易就能被發現插入規律,尤其是對于中文文件。
由于這些算法對于原文進行了改變,可能使3DES無法適應CBC模式。但是分組的亂序實際上也是起到了從整體上鏈接明文的作用,密鑰自身的亂序以及插入補位法也打亂了每一組的規律,因此其安全性較原CBC模式下的DES加密并沒有降低太多。
4 優化方案與在實際中的運用
在現實生活中,信息的保護是人們越來越重視的問題,因此改進后的3DES補位加密法的運用建議可以作為一些信息加密的參考。由于3DES既可以作為明文加密的方法也可以作為密鑰加密的方法,所以其應用范圍非常的廣泛。對于不太重要的文件,三種補位法任選一種進行補位加密即可。而對于那些重要性高的文件,如果使用3DES加密,則最好選用三種補位方法聯合使用的優化方案。
優化方案為首先對原密鑰進行亂序運算,然后進行插入補位,最后對分組進行亂序,這樣三者的混合使用使得原密鑰“混亂無章”,黑客不得不選擇破解全部的168位密鑰。而這一優化使得明文加密更加安全有效,在文件被破解后,仍必須先復原分組,去除插入字符最后恢復亂序才可獲得原明文文件。這樣使得3DES算法更加牢固,文件也更不易被破解。
5 結束語
文章的目的是改進3DES補位加密方法,通過代碼設計最后實現了三種方式的變化:分組亂序、密鑰自身亂序后的補位加密以及插入補位法。改進后的補位加密方法使得加密文件的密鑰變得更加的混亂無規律,這使得想要強行破解密鑰的人不得不把3組共168位密鑰全部破解。這樣,3DES加密法便能夠充分發揮其較DES的進步性和安全性。很多軟件的用戶并不熟悉3DES的加密和破解方法,所以他們也不太清楚如何設置合適的密碼長度,這也是3DES的潛在不安全性。
本文提出的改進方法即解決了原3DES存在的這一問題,同時又使得應用3DES加密的軟件更加的人性化,可以更牢固地保護用戶信息。關于改進方法里提到的密鑰分組亂序,密鑰本身亂序和密鑰插位補足法,每一種都一定的優越性和局限性,而這些方法的綜合運用或許可以相互彌補以增加安全性,使得3DES加密可以更好地運用到實際中。
參考文獻
[1] 李紅芳,楊領軍,曹三省.基于密鑰長度的數據加密標準算法改進[J].太赫茲科學與電子信息學報,第11卷第1期,2013.2.
[2] 梁棟. JAVA加密與解密的藝術[J].脼峰資訊(第二部分),7.3.2,2010.11.
[3] 鄭東等.密碼學:密碼算法與協議[M].北京:電子工業出版社(2版),2014.8.
[4] 房祥超,李興保.基于一次密鑰的數據加密算法優化[J].計算機系統與應用,第22卷第9期,2013.
作者簡介:
王煜(1996-),男,江蘇徐州人,本科在讀,西交利物浦大學數學科學系;主要研究方向和關注領域:運籌學和信息管理。