張媛媛,蘇靈波,崔燕
摘要:針對傳統(tǒng)文件加密系統(tǒng)中加密算法單一、加密文件格式簡單、安全性相對較低的問題,結(jié)合對稱密碼算法中的DES、TripleDES、AES和單向散列算法SHA-256等算法,提出一種采用融合多種加密算法的文件動態(tài)多重加密方案。詳細地論述加密文件格式的設計、多種加密算法動態(tài)產(chǎn)生的方法、加密解密過程,以及數(shù)據(jù)完整性和安全性。通過實驗論證了其實用性,同時,對動態(tài)多重加密方案優(yōu)點與不足進行分析。
關(guān)鍵詞:多重加密;數(shù)字檔案;文件加密
Abstract: The traditional file encryption system-- encryption algorithm in single file format is simple and its safety is relatively low. In view of the above problems, combined with the symmetric cryptographic algorithm in DES, TripleDES, AES and one-way hash algorithm SHA-256 algorithm, we put forward a file dynamic scheme with multiple encryption to use fusion multiple encryption algorithm .This paper discusses in detail the encrypted file format design, a variety of encryption algorithms dynamically generated method, encryption and decryption process, and data integrity and security. The experiment proved its practicability, and analyzes its advantages and disadvantages.
Keywords:Multiple encryption;Digital archives; File encryption
1 引言
隨著檔案數(shù)字化和信息化建設步伐的加快,數(shù)字檔案館中的電子文件日益增多。但隨之而來的數(shù)字檔案文件安全問題成為業(yè)務發(fā)展和管理的重中之重。典型的數(shù)字文件安全問題包括非法篡改、違規(guī)拷貝、敏感文件失泄密、版權(quán)受侵害等。加密技術(shù)能為數(shù)字文件提供有效的安全保護,基于加密技術(shù)的數(shù)字簽名、數(shù)字水印等應用是保證數(shù)字文件的機密性、完整性的有效手段。
一般的做法是采用單一的加密算法對文件數(shù)據(jù)進行加密[1][2][3],加密代價低,部署實施便捷。但是,單一的加密算法易遭到諸如暴力破解、口令攻擊等手段的破壞,一旦該加密機制被密碼攻擊手段破解,則數(shù)字文件安全性無法保證,而且數(shù)字檔案管理機構(gòu)更換加密機制代價、工作量非常巨大。多重加密方法可有效防御各種密碼攻擊手段。本文提出一種面向數(shù)字檔案文件的多重加密方法,該方法按照特定的加密格式,對數(shù)字文件動態(tài)地采用多重加密算法進行加密,加密算法采用常用的對稱密碼算法DES、TripleDES、RC2、AES等,通過設計合理的加密格式,融合上述加密算法對數(shù)字文件進行多重加密。在實際使用過程中,該方法的加密速度和效率相比傳統(tǒng)單一加密機制并未有明顯降低,且具有更優(yōu)良的安全性。
2相關(guān)算法
本文的方法所采用的加密算法包括對稱加密算法和散列算法兩大類。前者主要包括DES、3DES、RC2、AES,后者主要是SHA-256散列算法。首先,簡介密碼系統(tǒng)的一般工作原理:明文借助加密算法中的密鑰形成密文,密文經(jīng)過信道傳輸?shù)浇邮照?,接收者依托解密算法中的解密密鑰成功提取明文。如圖1所示。
2.1對稱加密算法。DES使用64位的密鑰和64位的加密向量對文件明文進行加密,加密速度較快。該算法存在弱密鑰和半弱密鑰,但在本文的方法中使用的加密密鑰都經(jīng)過了篩選,避免出現(xiàn)弱密鑰和半弱密鑰。3DES是DES的改進版本,使用192位的密鑰和64位的加密向量對明文加密,安全性更高。RC2使用128位的密鑰和64位的加密向量對明文加密,其優(yōu)點是加密速度快,密文體積小。AES全稱為“高級加密標準”,采用對稱分組密碼體制,是一種迭代分組密碼算法,分組長度為128位,密鑰長度可指定為128位、192位或256位。AES針對4個字節(jié)的字進行操作,經(jīng)歷一系列線性和非線性變換,從而極大降低了破譯的可能。
2.2散列加密算法。本文使用的散列算法是SHA-256,SHA-256是SHA-1的改進,具有更大的數(shù)字指紋、更復雜的非線性函數(shù)和壓縮函數(shù)、每一步均有唯一的加法常數(shù)等,SHA-256具有更高的安全性。
2.3加密模式。分組加密算法可以使用四種加密模式[4],ECB是最基本的加密模式,相同的明文將永遠加密成相同的密文,無初始向量,容易受到密碼本重放攻擊,一般情況下很少使用。CBC是明文被加密前,要與前面的密文進行異或運算后再加密,因此,只要選擇不同的初始向量,相同的密文加密后會形成不同的密文,這是目前應用最廣泛的模式。CFB和OFB類似于同步序列密碼。本文使用CBC加密模式。
3多重文件加密方法
3.1加密文件格式設計。加密文件格式是指密文數(shù)據(jù)的文件存儲格式,設計是否合理,不僅會影響加密機制的安全性,還會對加解密的速度及效率造成不良影響。本文的加密文件格式設計如圖2所示。
整個加密文件分為文件頭和文件體兩部分,文件頭又分為未加密部分和加密部分;文件體部分就是文件數(shù)據(jù)加密后的密文數(shù)據(jù)。各部分含義如下:
·Ef 部分保存加密標識,用來標識文件是不是加密文件,標志字符串為“ENCRYPTEFLAGS”,長度為14字節(jié)。解密時,首先,會根據(jù)該加密標識來確定文件是不是一個加密文件。
·Et部分保存加密時間,格式為“yyyyMMddhhmmss”,長度為14字節(jié)。主要用來加密(解密)文件體H部分時選擇合適的加密(解密)算法,同時,也可以標識加密的具體時間。
·Lf部分保存原文件名長度,長度為2字節(jié),解密時,用來確定D部分中保存的原文件名的實際長度。
·Nf部分保存原文件名,長度為512字節(jié),存放原文件名,解密時,用來恢復原文件名。
·Ct部分保存文件創(chuàng)建時間,長度為14字節(jié),解密時,用來恢復原文件的創(chuàng)建時間。
·Fm部分保存文件修改時間,長度為14字節(jié),解密時,用來恢復原文件的最后修改時間。
·Cf部分保存壓縮標志,固定字符串,“COMPRESSEDFLAG”,長度為11字節(jié)。
·Ed部分保存分段的文件加密數(shù)據(jù)。
3.2文件加密方式。雖然,加密算法是文檔安全系統(tǒng)的核心,但加密算法以何種方式進行實現(xiàn),是決定文檔安全系統(tǒng)的關(guān)鍵。在文檔安全系統(tǒng)中,常用的實現(xiàn)方式有靜態(tài)加密方式和動態(tài)加密方式,靜態(tài)加密是指在加密期間,待加密的數(shù)據(jù)處于未使用狀態(tài)(靜態(tài)),這些數(shù)據(jù)一旦加密,在使用前,需首先通過靜態(tài)解密得到明文,然后,才能使用。目前,市場上許多加密軟件產(chǎn)品就屬于這種加密方式。與靜態(tài)加密不同,動態(tài)加密(也稱“實時加密”、“透明加密”等,其英文名為“Encrypt On-the-Fly”),是指數(shù)據(jù)在使用過程中(動態(tài))自動對數(shù)據(jù)進行加密或解密操作,無需用戶的干預,合法用戶在使用加密的文件前,也不需要進行解密操作即可使用。表面看來,訪問加密的文件和訪問未加密的文件基本相同,對合法用戶來說,這些加密文件是“透明的”,即好像沒有加密一樣,但對于沒有訪問權(quán)限的用戶,即使通過其他非常規(guī)手段得到了這些文件,由于文件是加密的,因此,也無法使用。由于動態(tài)加密技術(shù)不僅不改變用戶的使用習慣,而且,無需用戶太多的干預操作即可實現(xiàn)文檔的安全,因而,近年來,得到了廣泛的應用。由于動態(tài)加密要實時加密數(shù)據(jù),必須動態(tài)跟蹤需要加密的數(shù)據(jù)流,且其實現(xiàn)層次一般位于系統(tǒng)內(nèi)核中,因此,從實現(xiàn)的技術(shù)角度看,實現(xiàn)動態(tài)加密要比靜態(tài)加密難得多,需要解決的技術(shù)難點也遠超過靜態(tài)加密。
本文的動態(tài)文件加密方式設計如下:
加密時,首先,取得加密時間(當前時間),待加密文件的文件名、文件名長度、文件創(chuàng)建時間、文件修改時間,如果文件要先壓縮后加密,則Cf部分的值為“COMPRESSEDFLAG”,否則,為空值。然后,使用一個固定的32bytes長度的密鑰加密文件頭Et~Ct部分,加密向量取密鑰的前8 bytes。采用AES加密算法加密Et~Ct部分,把文件頭內(nèi)容按2.1節(jié)中定義的格式寫入加密文件。加密文件數(shù)據(jù)時,采用分塊加密的方式,實驗數(shù)據(jù)證明(如表1所示),4K bytes是一個合適的分塊值,這樣,可以加快數(shù)據(jù)處理速度,如果分塊太大或者太小,都會影響加密解密的速度。首先,把用戶輸入的密鑰做SHA-256運算,得到一個32 bytes的散列值,這個32字節(jié)的散列值就作為加密數(shù)據(jù)的密鑰;當采用DES算法時,取前8 bytes作為密鑰;當采用RC2算法時,取前16bytes作為密鑰;當采用TripleDES時,取前24 bytes作為密鑰;當采用AES時,32字節(jié)的散列值作為密鑰,四種算法的加密向量都是取前8 bytes數(shù)據(jù)。
若Cf部分的值為“COMPRESSEDFLAG”,則先對文件數(shù)據(jù)采用ZIP算法進行壓縮,然后加密。各個分塊采用哪種加密算法是根據(jù)加密時間動態(tài)產(chǎn)生的,產(chǎn)生的方式如圖3所示。如加密時間為“20120225171824”,每一位對4求模,結(jié)果為“2008112131020”。加密算法和每一位的模的對應關(guān)系為:0:DES;1:RC2;2:TripleDES:3:AES。根據(jù)這一對應關(guān)系,第1分塊采用TripleDES加密,第2、第3分塊采用DES加密,…,第14分塊采用DES加密,后面的分塊則重新按照第1到第14分塊的加密算法進行加密,依此類推,直到所有分塊都加密。因為當前時間值是不斷變化的,所以,各個分塊采用的加密算法根據(jù)加密的時刻不同而不同,是動態(tài)變化的,可有效地增強數(shù)據(jù)的安全性。
3.3文件解密。解密時,過程與加密時大致相反,先讀取加密標志,判斷文件是不是加密文件,若是,才解密。使用固定的密鑰解密文件頭Et~Ct部分,得到文件頭的數(shù)據(jù)。用戶輸入的密鑰,采用和2.2節(jié)中一樣的處理方式,得到用于解密的密鑰和解密向量。再按圖2中的方法,得到各個分塊的加密算法,對每一個加密數(shù)據(jù)分塊采用對應的加密算法、密鑰和解密向量進行解密。解密完成后,檢查Cf部分的值,若“COMPRESSEDFLAG”,則對解密的數(shù)據(jù)采用ZIP壓縮算法解壓縮。最后,根據(jù)Lf~Cf部分還原結(jié)果數(shù)據(jù)文件的文件名、文件創(chuàng)建時間、文件修改時間,得到最終解密的明文結(jié)果。
3.4數(shù)據(jù)完整性。對于文件頭的Ef部分,其長度在文件加密前后是不變的。對于Et~Ct部分文件頭數(shù)據(jù),加密前的長度是567bytes,采用AES算法加密后長度為576bytes。對于H部分的加密數(shù)據(jù),由于采用分塊加密的方式,分塊值為4096bytes,若采用DES、RC2和TfipleDES加密算法,加密后分塊的長度都為4104bytes。若采用AES加密算法,加密后分塊的長度為4112bytes。這樣,解密時,文件頭的長度是固定的,密文數(shù)據(jù)分塊數(shù)據(jù)解密正確。
4實驗驗證
將本文的加密方法與常用的加密工具(CryptoNet )進行加密效率測試,CryptoNet 采用單一的TfipleDES加密算法,本文采用動態(tài)多模式的加密算法,針對1兆、5兆、10兆大小的三個文件進行加密(同一計算機平臺,操作系統(tǒng)為Windows XP SP3,CPU為Intel Pentium4 2.8GHz,內(nèi)存2GB),測試結(jié)果如表2所示。
從測試結(jié)果來看,本系統(tǒng)和CryptoNet在加密數(shù)據(jù)時,效率差異相差不大,本系統(tǒng)盡管采用多種加密算法的文件加密方案,但在加密速度上并不慢。
5結(jié)束語
本文的多重加密方法基于特定的加密文件格式,在筆者所在的檔案管理業(yè)務部門得到廣泛的使用。需要強調(diào)的是,本文所提的方法在加解密過程中的容錯性還需進一步完善。加密密鑰依賴業(yè)務主管部門的人工管理,導致密鑰管理效率存在一定的問題。如何在安全性得到增強的同時,提高其加密解密的容錯性,并解決密鑰管理的問題,是本文進一步研究的方向。
參考文獻:
[1]甘新標,沈立,王志英.采用異或算子和橢圓曲線的混合加密機[J].西安交通大學學報,2010,44(12):28~31.
[2]張健.基于多層防御的數(shù)字檔案館安全體系[J].蘭臺世界,2008(16):16~17.
[3]劉雪梅.檔案信息交換過程中的安全手段[J].檔案管理,2004(2):39.
[4]Sehneier B. Applied euptography, protocols, algorithms and source code in C[M].Beijing: China Machine Press,2000:78~81.
(作者單位:解放軍61195部隊檔案館來稿日期:2012-08-10)