當(dāng)前個人信息泄露已經(jīng)成為了非常嚴(yán)重的問題,對于個人信息的隱私是一種侵犯,只有對隱私數(shù)據(jù)進(jìn)行加密保護(hù)才可以防止個人信息被竊取。如今成熟的加密算法都已經(jīng)得到了大規(guī)模的應(yīng)用,其算法也相對較為復(fù)雜,開銷也很大。對個人數(shù)據(jù)而言,可以應(yīng)用密碼學(xué)進(jìn)行簡單保護(hù),現(xiàn)有的一些文件加密程序過于簡單,很容易被破解,造成個人信息泄露,在時間和資源充足的條件下容易被破解或恢復(fù)。只有設(shè)計并實(shí)現(xiàn)了一種增強(qiáng)型的文件加密程序,加解密均可用同一程序來完成,并可安全高效地對任意類型的文件進(jìn)行加解密。實(shí)驗(yàn)結(jié)果顯示,增強(qiáng)型的文件加密程序能準(zhǔn)確地對文件進(jìn)行加解密,且執(zhí)行效率高,實(shí)用性強(qiáng)。
關(guān)鍵詞:信息安全,數(shù)據(jù)保護(hù),文件加解密
當(dāng)前,互聯(lián)網(wǎng)個人信息泄露問題已經(jīng)非常嚴(yán)重。據(jù)統(tǒng)計,78.2%的網(wǎng)民個人身份信息曾被泄露,包括姓名、家庭住址、身份證號及工作單位等[1]。通常采用兩種方法防止信息泄露:一是做好敏感和隱私數(shù)據(jù)的保護(hù)工作,防止信息被盜取;二是對敏感和隱私數(shù)據(jù)進(jìn)行加密,即使萬一泄露也不會被非法讀取。事實(shí)上,想要完全做到數(shù)據(jù)的保護(hù)十分困難,因此對敏感和隱私數(shù)據(jù)進(jìn)行加密顯得尤為重要。
標(biāo)準(zhǔn)化的加密算法如AES、RSA等是面向大規(guī)模應(yīng)用的,其算法比較復(fù)雜,運(yùn)行開銷也較大,并不適用于日常個人信息的保護(hù)。本文運(yùn)用密碼學(xué)的基本原理,自行設(shè)計并實(shí)現(xiàn)了一種簡單、高效的加密算法來保護(hù)網(wǎng)民的個人信息。
已有的一些加密程序設(shè)計過于簡易,有的程序?qū)τ脩糨斎氲拿荑€長度沒有任何限制,且讀取密鑰后未進(jìn)行任何處理即直接用于加密。用戶輸入的密鑰長度過短將很難抵抗統(tǒng)計攻擊,直接用原始密鑰加密則容易暴露密鑰的內(nèi)在規(guī)律性。此類算法在時間和資源充足的條件下容易被破解。本文提出的算法對用戶輸入的密鑰有最短長度限制,同時對原始密鑰進(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平臺下編譯通過并成功運(yùn)行。
1 算法設(shè)計
本程序主要分為3大模塊:預(yù)處理模塊、加解密模塊與后處理模塊。
預(yù)處理模塊主要進(jìn)行加密前的準(zhǔn)備工作,其主要流程為:①讀取用戶輸入的需要加密的文件名,檢查是否正確,如不正確給出錯誤提示;②建立臨時文件以備加解密模塊使用,如創(chuàng)建失敗,則給出錯誤提示并終止程序;③讀取用戶輸入的密碼,檢查長度是否符合要求,如不符合則提示重新輸入。
加解密模塊是程序的核心模塊,其主要流程為:①對用戶輸入的密碼(也即密鑰)按一定規(guī)則進(jìn)行置換,目的是打亂用戶輸入密碼中各字符之間的規(guī)律性,使密鑰更加隨機(jī);②設(shè)置白化密鑰,長度為8bit,目的是進(jìn)一步增加密鑰隨機(jī)性并增強(qiáng)加密強(qiáng)度,使加密后的文件更難被破解;③逐個字節(jié)讀取要加密的文件內(nèi)容,將此字節(jié)與加密密鑰及白化密鑰異或,以達(dá)到加密目的,直至文件末尾,其中加密密鑰根據(jù)用戶輸入的長度循環(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)容;③將臨時文件重命名為原文件名。
2 編程實(shí)現(xiàn)
2.1 原始密鑰置換
2.2 加密實(shí)現(xiàn)
加密過程為利用C語言的文件操作函數(shù)逐字節(jié)讀取要加密的文件內(nèi)容,將此字節(jié)與加密密鑰及白化密鑰異或,直至文件最后一個字節(jié)。其中加密密鑰根據(jù)用戶輸入的長度循環(huán)使用,例如,若用戶輸入密鑰長度為6,則加密第7個字節(jié)時所用密鑰與第1個字節(jié)相同。以此類推,加密第6n+1個字節(jié)與加密第1個字節(jié)所用密鑰相同,其中n為整數(shù)。為保證加密強(qiáng)度,本程序強(qiáng)制要求用戶輸入的密鑰不得少于6個字符。同時,根據(jù)實(shí)際應(yīng)用情況考慮,限制長度不多于18個字符。本部分實(shí)現(xiàn)代碼如下,其中01010001為指定的白化密鑰,可根據(jù)需要進(jìn)行修改。
2.3 刪除實(shí)現(xiàn)
加密完成后需要刪除原始文件,如果對原始文件不加處理直接刪除,則利用常見的數(shù)據(jù)恢復(fù)軟件如Easy Recovery、Final Data等很容易將已刪除的文件還原,進(jìn)而獲取原始文件,如此加密便毫無意義。為防止這種情況發(fā)生,本程序在刪除原始文件前,利用隨機(jī)產(chǎn)生的垃圾數(shù)據(jù)以1 024字節(jié)為單位對原始文件填充覆蓋3遍,以保證即使文件被還原也無法獲取其原始內(nèi)容。本部分實(shí)現(xiàn)代碼如下:
2.4 程序執(zhí)行實(shí)例
以下是本程序執(zhí)行實(shí)例截圖。圖1為程序運(yùn)行時的界面,圖2為原始文件,圖3為加密后的文件,圖4為解密后的文件。從實(shí)例中可以看出,本程序準(zhǔn)確實(shí)現(xiàn)了加解密運(yùn)算,解密后的文件和原始文件完全相同,對于段落中的空格、換行和字母上方的標(biāo)注符號以及·等特殊符號均能準(zhǔn)確進(jìn)行加解密。
3 程序執(zhí)行效率分析
考慮到實(shí)際應(yīng)用情況,選取100kB大小(約5萬字符)與1MB大小(近40萬字符,相當(dāng)于一本普通書籍的字?jǐn)?shù))的文本文檔和6MB大小圖片(約為常用專業(yè)相機(jī)拍攝照片的大小)的文本文檔進(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í)行加解密速度非常快,對于6MB左右的常見圖片文件,加解密平均僅需約150ms。此外,對于120MB左右的視頻文件也進(jìn)行了加解密實(shí)驗(yàn),所需時間大約為2.4s,也在可接受的范圍內(nèi)。
4 結(jié)語
針對現(xiàn)有一些文件加密程序存在的問題和缺陷,本文提出并實(shí)現(xiàn)了一種增強(qiáng)型的文件加密程序,能夠有效地對各種類型的文件進(jìn)行加解密,并增強(qiáng)了加密強(qiáng)度,實(shí)現(xiàn)了對原始數(shù)據(jù)的徹底清除。下一步工作是實(shí)現(xiàn)對批量文件的加解密,或者對滿足指定條件的文件進(jìn)行自動掃描并加解密。
參考文獻(xiàn):
[1] 新華網(wǎng).中國網(wǎng)民個人信息泄露問題嚴(yán)重,保護(hù)之網(wǎng)亟待編織 [EB/OL].
[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ù),2014,10(12):2730-2731.
[5] 余笑軒,余臘生.一種基于Caesar密碼的數(shù)據(jù)加密算法的研究[J].計算機(jī)安全,2013(4):57-60.
[6] 譚浩強(qiáng).C程序設(shè)計[M].第4版.北京:清華大學(xué)出版社,2010.
[7] 裴要強(qiáng),孟波.Windows黑客技術(shù)揭秘與攻防—C語言篇[M].北京:中國鐵道出版社,2010.
[8] WILLIAM STALLINGS. 密碼編碼學(xué)與網(wǎng)絡(luò)安全-原理與實(shí)踐[M].第6版.唐明,李莉,杜瑞穎,等,譯.北京:電子工業(yè)出版社,2015.
推薦閱讀:網(wǎng)絡(luò)隱私權(quán)的立法保護(hù)現(xiàn)狀及完善措施
在如今的網(wǎng)絡(luò)新時代,人們信息在快速流動,從而也出現(xiàn)了隱私空間被侵犯的情況,為此,怎樣防止網(wǎng)絡(luò)隱私權(quán)被侵犯的問題逐漸被重視。本文從當(dāng)前出現(xiàn)的隱私被侵犯的問題展開研究,結(jié)合我國現(xiàn)行立法的規(guī)定和其他關(guān)于隱私權(quán)的立法,為隱私權(quán)的保護(hù)提供相關(guān)建議。
論文指導(dǎo) >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >