摘 要:結合對稱密碼算法中的DES、IDEA、AES和單向散列算法中的MD5、SHA1、SHA-256等算法,提出了一種在同一文件內部采用多模式加密的方案,該方案比傳統的單一模式加密的方案能更好地保證數據的完整性和安全性。詳細描述了該方案的算法實現,通過試驗驗證了其實用性,同時分析了該方案的優點和不足。
關鍵詞:對稱密碼; 散列算法; 文件加密
中圖分類號:TP309.7文獻標志碼:A
文章編號:1001-3695(2007)06-0121-02
信息技術和網絡通信的發展,尤其是Internet的高速發展,大大加快了全球信息化的進程,同時信息安全方面的問題越來越多,這也引起人們的高度重視。不解決信息安全問題,信息化將不可能健康地發展。數據加密是保證信息安全的基本技術。它以很小的代價為信息提供了一種有效的安全保護,國內外學者對比進行了有效的研究[1,2]。本文提出了一個基于多模式加密算法的文件保護方案來保證計算機中信息的安全。
為了保護文件的保密性和完整性,防止信息被竄改、偽造和假冒,傳統的方法是對同一個文件采用單一模式的加密方案。本文提出的文件保護方案是對同一文件不同內容用不同加密方法的多模式加密:采用128bits(16Bytes)密鑰,使用對稱密碼算法3DES、IDEA、AES中的一種(可選)和類似CBC(密碼分組鏈接)的加密模式對原文件進行加密以保證數據的安全;另外使用散列算法MD5、SHA1、SHA-256中的一種(可選)對原文件生成散列值,通過校對散列值檢測文件是否被更改,從而保證文件的完整性。該方案較傳統的方案有更高的安全性。
1 本文涉及的加密和散列函數算法
本文主要使用了對稱密碼算法3DES、IDEA、AES和類似CBC(密碼分組鏈接)的加密模式,散列算法采用了MD5、SHA1、SHA-256等對原文件生成散列值,通過校對散列值檢測文件是否被更改,下面分別進行簡單介紹。
1.1 加密算法
DES用56bits密鑰將64bits的明文轉換成64bits的密文。其中,密鑰總長為64bits,另外8bits是奇偶校驗位,詳見文獻[3]。DES的密鑰存在弱密鑰、半弱密鑰[3]等。實用中較多是它的改進型,即用最小密鑰進行三重加密[4]。IDEA算法基于“相異代數群上的混合運算”設計思想[5]。其密鑰長度為128bits,是DES密鑰的兩倍多,分組長度為64bits。一些文獻討論IDEA算法的不足[3,5],但目前尚未有進行有效攻擊的方法。AES 算法[1,7]其設計策略是寬軌跡策略(Wide Trail Strategy)。其使用128 、192 或256bits長度的密鑰,對于128、192或256bits的加密分組進行加密(密鑰跟加密分組長度無須相等共九種組合)。
1.2 密碼模式
分組加密算法在加密數據時可以分為四個模式[3]。ECB是最簡單和最快的分組密碼模式,當然也是最弱的。本文加密文件頭使用該模式。在CBC 模式下,每一個分組加密之前必須與前一個分組的密文進行一次XOR 運算,之后再進行加密。因此,每一個區塊的加密結果均會受到之前所有分組內容的影響。本文加密文件體系用該模式。
1.3 單向散列算法
本文所用的單向散列函數是消息摘要算法MD5 和安全散列算法SHA。MD5以512bits分組來處理輸入的消息,且每一分組又被劃分為16個32bits子分組,經過一系列的處理后算法的輸出由4個32bits分組組成,將這4個32bits分組級聯后將生成一個128bits的散列值。 其運算速度非??欤?]。SHA[7]設計思想和MD5 相似,但是比MD5 具有更長的散列值,因此更能夠抵抗攻擊。SHA1有160bits散列值。具備擴展轉換,并且為產生更快的雪崩效應而將上一輪的輸出送至下一輪。SHA-256是SHA1的改進:具有更大的數字指紋、更復雜的非線性函數和壓縮函數、每一步均有唯一的加法常數等。因此,SHA-256具有更高的安全性。
2 強加密算法文件保護方案的實現
下面介紹該文件保護方案的具體實現思想。主要包括文件的加密和解密兩個過程。
2.1 文件的加密過程(如圖1,IV為初始向量)
用戶選擇好要保護的文件、加密受保護文件頭部信息的密碼算法、加密原文件的密碼算法、散列算法、加密密鑰。圖1 受保護文件的制作過程
使用用戶選擇的散列算法求出原文件的散列值,然后連同原文件的長度、加密原文件的密碼算法、散列算法,這四部分作為受保護文件的頭部信息加密后寫入受保護文件。頭部信息的內容如下:前16Bytes包含了原文件的長度、加密原文件的密碼算法、散列算法,接下來的16或32Bytes則是原文件的散列值。其中MD5(128bits)為16Bytes,SHA-256(256bits)為32Bytes,而SHA1(160bits)為16Bytes,剩余的32bits放到前16Bytes空閑的第13-16Bytes中。
使用用戶選擇的加密受保護文件頭部信息的密碼算法對頭部信息以ECB(電子密碼本)模式進行加密。在這里需要注意的是無論選擇3DES、IDEA,還是AES,其密鑰長度均為128bits。IDEA的密鑰長度為128bits,可直接使用;AES的密鑰長度和分組長度都是可選的,在本方案中它使用128bits的密鑰和分組;對于3DES,它使用了文獻[3]介紹的方法,先用128bits的密鑰產生三個64bits的密鑰,再使用DES算法加密。在本方案里,T1、T2、T3 如下所示:
接下來,本文使用用戶選擇的加密原文件的密碼算法對原文件進行加密。在加密時用到了一個基于CBC模式,它可以下面的公式表示:Ci=E(PiIV);IV=IVCi;在這個加密模式中,第i個密文分組是由第i個明文分組與初始向量IV異或后再使用具體的密碼算法加密得到的,然后IV與第i個密文異或得到新的IV以備對第i+1個明文分組加密時使用。最初的初始向量IV是由受保護文件頭部的密碼算法產生的子密鑰的異或和,不同的密鑰產生不同的IV,不同的密碼算法產生不同的IV。在本方案中,各個密碼算法先產生128bits的IV,在加密原文件時再靈活使用(在加密原文件時,若用戶選擇了AES算法則128bits的IV可直接使用;若選擇了3DES或IDEA,則要將128bits的IV分為前后兩個64bits,再將它們異或得到一個64bits的IV來使用)。
各個密碼算法產生128bits初始向量IV的方法:AES產生44個子密鑰,長度為32bits。將其按順序分成四組異或得到128bits的初始向量IV,如圖2所示。DES先將128bits的密鑰分成兩個64bits的密鑰,生成64個子密鑰(DES產生16個子密鑰,長度為48bits,在本方案中一個48bits的子密鑰被分成兩個24bits的子密鑰),接著將64個子密鑰平均分成四組異或得到128bits的初始向量IV(圖略)。IDEA產生52個子密鑰,長度為16bits。在本方案中,使用前48個子密鑰將其合并成24個32bits的分組,然后按順序分成四組異或得到128bits的初始向量IV(圖略)。
圖2 AES的128bits初始向量IV的生成
最后要說明的是,由于DES、IDEA的分組長度為64bits,AES為128bits,若將原文件制作為受保護文件后,受保護文件的長度是64bits的倍數而不是128bits的倍數,那么密碼分析者即可確定加密原文件的密碼算法不是DES就是IDEA,這樣會降低破譯的難度。在加密完原文件后,將檢測受保護文件的長度是否為128bits的倍數,若不是128bits的倍數則再加上一些隨機數據使其為128bits的倍數(是128bits的倍數必然是64bits的倍數,那么密碼分析者將不能從文件長度中確定密碼算法了)。
2.2 文件的解密過程
(1)軟件根據用戶提供的解密密鑰、受保護文件的頭部信息密碼算法解密受保護文件的前16Bytes,獲取原文件的長度、加密算法、散列算法信息;
(2)根據散列算法產生的散列值的長度讀取受保護文件中相應的字節,將其解密得到原文件的散列值H1;
(3)根據解密受保護文件的前16Bytes時得到的原文件加密算法信息和原文件的長度,解密受保護文件剩余部分,將解密得到數據寫入文件;
(4)對上一步得到文件用解密受保護文件的前16Bytes時得到的散列算法信息求出該文件的散列值H2;
(5)比較H1與H2,若兩者相等則表示文件未被修改;若不等則表示文件已修改。
3 試驗結果和該方案的特點
對該方案的實用性進行如下試驗:分別對一個txt文件(49.7KB),一個MP3文件(4.95MB),一個exe文件(11.2MB)進行加密和解密試驗,使用的散列算法: SHA256,文件頭部用3DES加密,文件體分別用3DES、IDEA、AES進行加密,從試驗結果可看出該方案的執行時間并沒有大幅度的提高,但安全性有很大提高,數據如表1、2(CPU1.1GHz,256MB內存)。
其中,IV是受保護文件頭部的密碼算法產生的子密鑰的異
或和。這種加密模式保留了CBC的優點——增加了安全性,而且一旦密文遭到修改其錯誤將會擴散到修改點以后的全部密文,這樣可以更加容易地檢測到改動。這些方法較好保證了數據的完整性。在一定程度上將三種密碼算法混合起來,增加了破譯的難度。密文遭修改后,在解密時該錯誤會被擴大,可更加容易發現密文被改動。
該方案目前也存在著一些不足:密鑰過長(128bits),解密時需提供受保護文件頭部信息的密碼算法。加密保護文件頭部信息時只用了電子密碼本模式(ECB),降低了安全性。密文被修改后無法正確解密恢復原文,容錯性不理想。
4 結束語
該方案用多種模式加密算法對同一文件進行加密。它是對已有的加密方案的有效改進和整合。雖然該方案還有一些不足之處,但較傳統單一模式的加密方案其能更好保證文件的安全性和完整性。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。