王淦+劉桂花+王金才
摘要:
目前,個(gè)人信息泄露問題十分嚴(yán)重,對(duì)敏感和隱私數(shù)據(jù)進(jìn)行加密保護(hù)是防止個(gè)人信息被竊取的有效方法。已有的成熟加密算法如AES及RSA等均面向大規(guī)模應(yīng)用,其算法較為復(fù)雜,運(yùn)行開銷也較大。對(duì)個(gè)人數(shù)據(jù)而言,可以運(yùn)用密碼學(xué)基本原理設(shè)計(jì)并實(shí)現(xiàn)簡(jiǎn)單的文件加密器對(duì)其進(jìn)行保護(hù)。然而,現(xiàn)有的一些文件加密程序過于簡(jiǎn)易,有的程序甚至在實(shí)現(xiàn)上存在漏洞,在時(shí)間和資源充足的條件下容易被破解或恢復(fù)。設(shè)計(jì)并實(shí)現(xiàn)了一種增強(qiáng)型的文件加密程序,加解密均可用同一程序?qū)崿F(xiàn),并可安全高效地對(duì)任意類型的文件進(jìn)行加解密。實(shí)驗(yàn)結(jié)果顯示,該程序能準(zhǔn)確地對(duì)文件進(jìn)行加解密,且執(zhí)行效率高,實(shí)用性強(qiáng)。
關(guān)鍵詞:信息安全;數(shù)據(jù)保護(hù);文件加解密
DOIDOI:10.11907/rjdk.172115
中圖分類號(hào):TP309.7
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)012-0194-03
Abstract:At present, the leakage of personal information is very serious. Encrypting sensitive and private data is an effective method to prevent personal information from being illegal leaked and obtained. Existing mature encryption algorithms, such as AES and RSA, are oriented to large-scale applications, their algorithms are more complex and their operating costs are relatively large. For our personal data, we can design and implement and small-scale file encryptor using basic principles of cryptology. However, some of the existing programs are too simple and some of them even have bugs in implementation. These programs are easy to be broken and recovered.In this paper, we designed and implemented an enhanced file encryptor with the same program in encryption and decryption. This program can safely and efficiently encrypt and decrypt any type of files. The experimental results show that this program can encrypt and decrypt accurately, and its implementation efficiency is very high, and can be applied to actual situations.
Key Words:information security; data protection; file encryption and decryption
0 引言
當(dāng)前,互聯(lián)網(wǎng)個(gè)人信息泄露問題已經(jīng)非常嚴(yán)重。據(jù)統(tǒng)計(jì),78.2%的網(wǎng)民個(gè)人身份信息曾被泄露,包括姓名、家庭住址、身份證號(hào)及工作單位等[1]。通常采用兩種方法防止信息泄露:一是做好敏感和隱私數(shù)據(jù)的保護(hù)工作,防止信息被盜??;二是對(duì)敏感和隱私數(shù)據(jù)進(jìn)行加密,即使萬一泄露也不會(huì)被非法讀取。事實(shí)上,想要完全做到數(shù)據(jù)的保護(hù)十分困難,因此對(duì)敏感和隱私數(shù)據(jù)進(jìn)行加密顯得尤為重要。
標(biāo)準(zhǔn)化的加密算法如AES、RSA等是面向大規(guī)模應(yīng)用的,其算法比較復(fù)雜,運(yùn)行開銷也較大,并不適用于日常個(gè)人信息的保護(hù)。本文運(yùn)用密碼學(xué)的基本原理,自行設(shè)計(jì)并實(shí)現(xiàn)了一種簡(jiǎn)單、高效的加密算法來保護(hù)網(wǎng)民的個(gè)人信息。
已有的一些加密程序設(shè)計(jì)過于簡(jiǎn)易,有的程序?qū)τ脩糨斎氲拿荑€長(zhǎng)度沒有任何限制,且讀取密鑰后未進(jìn)行任何處理即直接用于加密。用戶輸入的密鑰長(zhǎng)度過短將很難抵抗統(tǒng)計(jì)攻擊,直接用原始密鑰加密則容易暴露密鑰的內(nèi)在規(guī)律性。此類算法在時(shí)間和資源充足的條件下容易被破解。本文提出的算法對(duì)用戶輸入的密鑰有最短長(zhǎng)度限制,同時(shí)對(duì)原始密鑰進(jìn)行置換后才作為加密密鑰使用。為進(jìn)一步增強(qiáng)加密強(qiáng)度,在加密過程中引入8位白化密鑰,使加密后的數(shù)據(jù)更難以破解。此外,現(xiàn)有的一些程序在實(shí)現(xiàn)上存在漏洞,例如有的程序加密完成后,直接通過系統(tǒng)調(diào)用將原始文件刪除,而通過常用的數(shù)據(jù)恢復(fù)軟件很容易將已刪除的文件還原出來,進(jìn)而得到原始文件數(shù)據(jù)。本文提出的程序在加密完成后,通過隨機(jī)填充的方式將原文件徹底覆蓋后再進(jìn)行刪除,從而保證了數(shù)據(jù)安全性。
C語言是廣泛應(yīng)用的一種編程語言,它具有使用靈活方便、目標(biāo)程序效率高、可移植性好等優(yōu)點(diǎn),適合于編寫系統(tǒng)軟件[6]。本算法通過C語言實(shí)現(xiàn),在Windows平臺(tái)下編譯通過并成功運(yùn)行。
1 算法設(shè)計(jì)
本程序主要分為3大模塊:預(yù)處理模塊、加解密模塊與后處理模塊。
預(yù)處理模塊主要進(jìn)行加密前的準(zhǔn)備工作,其主要流程為:①讀取用戶輸入的需要加密的文件名,檢查是否正確,如不正確給出錯(cuò)誤提示;②建立臨時(shí)文件以備加解密模塊使用,如創(chuàng)建失敗,則給出錯(cuò)誤提示并終止程序;③讀取用戶輸入的密碼,檢查長(zhǎng)度是否符合要求,如不符合則提示重新輸入。endprint
加解密模塊是程序的核心模塊,其主要流程為:①對(duì)用戶輸入的密碼(也即密鑰)按一定規(guī)則進(jìn)行置換,目的是打亂用戶輸入密碼中各字符之間的規(guī)律性,使密鑰更加隨機(jī);②設(shè)置白化密鑰,長(zhǎng)度為8bit,目的是進(jìn)一步增加密鑰隨機(jī)性并增強(qiáng)加密強(qiáng)度,使加密后的文件更難被破解;③逐個(gè)字節(jié)讀取要加密的文件內(nèi)容,將此字節(jié)與加密密鑰及白化密鑰異或,以達(dá)到加密目的,直至文件末尾,其中加密密鑰根據(jù)用戶輸入的長(zhǎng)度循環(huán)使用。
后處理模塊主要負(fù)責(zé)清理工作,其主要工作為:①以1 024字節(jié)為單位生成隨機(jī)數(shù)據(jù)并填充進(jìn)原文件,以達(dá)到覆蓋原文件的目的,此過程重復(fù)進(jìn)行3次,確保原文件數(shù)據(jù)被完全覆蓋,無法恢復(fù);②將隨機(jī)填充覆蓋后的原文件直接刪除(不經(jīng)回收站),由于刪除前已進(jìn)行了3遍隨機(jī)覆蓋,因此即使利用數(shù)據(jù)恢復(fù)軟件將已刪除的文件還原,也無法讀取其原始內(nèi)容;③將臨時(shí)文件重命名為原文件名。
2 編程實(shí)現(xiàn)
2.1 原始密鑰置換
2.2 加密實(shí)現(xiàn)
加密過程為利用C語言的文件操作函數(shù)逐字節(jié)讀取要加密的文件內(nèi)容,將此字節(jié)與加密密鑰及白化密鑰異或,直至文件最后一個(gè)字節(jié)。其中加密密鑰根據(jù)用戶輸入的長(zhǎng)度循環(huán)使用,例如,若用戶輸入密鑰長(zhǎng)度為6,則加密第7個(gè)字節(jié)時(shí)所用密鑰與第1個(gè)字節(jié)相同。以此類推,加密第6n+1個(gè)字節(jié)與加密第1個(gè)字節(jié)所用密鑰相同,其中n為整數(shù)。為保證加密強(qiáng)度,本程序強(qiáng)制要求用戶輸入的密鑰不得少于6個(gè)字符。同時(shí),根據(jù)實(shí)際應(yīng)用情況考慮,限制長(zhǎng)度不多于18個(gè)字符。本部分實(shí)現(xiàn)代碼如下,其中01010001為指定的白化密鑰,可根據(jù)需要進(jìn)行修改。
2.3 刪除實(shí)現(xiàn)
加密完成后需要?jiǎng)h除原始文件,如果對(duì)原始文件不加處理直接刪除,則利用常見的數(shù)據(jù)恢復(fù)軟件如Easy Recovery、Final Data等很容易將已刪除的文件還原,進(jìn)而獲取原始文件,如此加密便毫無意義。為防止這種情況發(fā)生,本程序在刪除原始文件前,利用隨機(jī)產(chǎn)生的垃圾數(shù)據(jù)以1 024字節(jié)為單位對(duì)原始文件填充覆蓋3遍,以保證即使文件被還原也無法獲取其原始內(nèi)容。本部分實(shí)現(xiàn)代碼如下:
2.4 程序執(zhí)行實(shí)例
以下是本程序執(zhí)行實(shí)例截圖。圖1為程序運(yùn)行時(shí)的界面,圖2為原始文件,圖3為加密后的文件,圖4為解密后的文件。從實(shí)例中可以看出,本程序準(zhǔn)確實(shí)現(xiàn)了加解密運(yùn)算,解密后的文件和原始文件完全相同,對(duì)于段落中的空格、換行和字母上方的標(biāo)注符號(hào)以及·等特殊符號(hào)均能準(zhǔn)確進(jìn)行加解密。
3 程序執(zhí)行效率分析
考慮到實(shí)際應(yīng)用情況,選取100kB大?。s5萬字符)與1MB大小(近40萬字符,相當(dāng)于一本普通書籍的字?jǐn)?shù))的文本文檔和6MB大小圖片(約為常用專業(yè)相機(jī)拍攝照片的大?。┑奈谋疚臋n進(jìn)行加解密實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境為3.30GHz CPU,4GB內(nèi)存,64位Windows 7家庭版操作系統(tǒng),編譯環(huán)境為Visual C++6.0。實(shí)驗(yàn)結(jié)果如表1所示。
由實(shí)驗(yàn)結(jié)果可以看出,本程序執(zhí)行加解密速度非??欤瑢?duì)于6MB左右的常見圖片文件,加解密平均僅需約150ms。此外,對(duì)于120MB左右的視頻文件也進(jìn)行了加解密實(shí)驗(yàn),所需時(shí)間大約為2.4s,也在可接受的范圍內(nèi)。
4 結(jié)語
針對(duì)現(xiàn)有一些文件加密程序存在的問題和缺陷,本文提出并實(shí)現(xiàn)了一種增強(qiáng)型的文件加密程序,能夠有效地對(duì)各種類型的文件進(jìn)行加解密,并增強(qiáng)了加密強(qiáng)度,實(shí)現(xiàn)了對(duì)原始數(shù)據(jù)的徹底清除。下一步工作是實(shí)現(xiàn)對(duì)批量文件的加解密,或者對(duì)滿足指定條件的文件進(jìn)行自動(dòng)掃描并加解密。
參考文獻(xiàn):
[1] 新華網(wǎng).中國(guó)網(wǎng)民個(gè)人信息泄露問題嚴(yán)重,保護(hù)之網(wǎng)亟待編織 [EB/OL]. http:∥news.xinhuanet.com/yuqing/2016-05/17/c_128989867.htm, 2016.
[2] 鄭紅艷.文件加密方法探析[J].軟件導(dǎo)刊,2008,7(8):198-199.
[3] 俞敏.基于C語言的文件加密與解密程序的實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2016(13):24-25,51.
[4] 王樹斌,趙楊杰.文件加密算法實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014,10(12):2730-2731.
[5] 余笑軒,余臘生.一種基于Caesar密碼的數(shù)據(jù)加密算法的研究[J].計(jì)算機(jī)安全,2013(4):57-60.
[6] 譚浩強(qiáng).C程序設(shè)計(jì)[M].第4版.北京:清華大學(xué)出版社,2010.
[7] 裴要強(qiáng),孟波.Windows黑客技術(shù)揭秘與攻防—C語言篇[M].北京:中國(guó)鐵道出版社,2010.
[8] WILLIAM STALLINGS. 密碼編碼學(xué)與網(wǎng)絡(luò)安全-原理與實(shí)踐[M].第6版.唐明,李莉,杜瑞穎,等,譯.北京:電子工業(yè)出版社,2015.
(責(zé)任編輯:黃 ?。〆ndprint