• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于捆綁式的文件加密技術(shù)及實現(xiàn)

      2012-08-15 00:49:04王小剛
      關(guān)鍵詞:解密校驗密碼

      王小剛

      (山西水利職業(yè)技術(shù)學(xué)院,山西 太原 030027)

      現(xiàn)在大部分的加密軟件只是針對某種特殊的文件進(jìn)行處理,并且只是使用簡單的加密手段,很容易被解密者破解;有一些高強(qiáng)度的加密軟件要求有昂貴硬件設(shè)備予以支持,這樣加密后的文件很不方便在別的機(jī)器上對文件進(jìn)行解密操作;還有一些加密軟件是在利用系統(tǒng)的漏洞進(jìn)行加密,一旦這些漏洞被修補(bǔ),極易造成文件的丟失。

      計算機(jī)病毒是指編制者在計算機(jī)程序中插入的破壞計算機(jī)功能或者破壞數(shù)據(jù),影響計算機(jī)使用并且能夠自我復(fù)制的一組計算機(jī)指令或者程序代碼。試想可以用計算機(jī)病毒的原理,把插入的破壞計算機(jī)功能或數(shù)據(jù)的代碼換成具有解密特定數(shù)據(jù)能力的代碼,被注入病毒的文件可以看作是已加密好的數(shù)據(jù),重新排列解密代碼和被加密數(shù)據(jù)的位置,只要有執(zhí)行能力的代碼可以引導(dǎo)數(shù)據(jù)正確的解密,那么這種方法是行得通的。而且被加密的數(shù)據(jù)看成了一個整體,使用時將加密文件分離,這樣就不會有特定文件類型的限制了,再在這個基礎(chǔ)上輔以特定的加密算法,就可以對文件進(jìn)行更強(qiáng)的保護(hù)了,杜絕了上面所屬加密方法的不足。

      由于是將具有執(zhí)行能力的文件注入到已加密好的文件中,運(yùn)行時將它們分離,我們就把這種方法叫做捆綁的方法。利用這種方法就可以對文件進(jìn)行加密了。

      捆綁是將幾個東西用繩索等綁在一起,用在軟件中就是這樣的:想實現(xiàn)運(yùn)行一個文件同時運(yùn)行其他多個文件,必須要把多個文件“組合”成一個文件,而這一個文件還必須有“分解”的能力,這樣才能把捆綁起來的文件分離出來,使之正常運(yùn)行。而“組合”也可以有多種形式,比如把要捆綁的文件一個一個地加到文件末尾,或者以資源形式組合到一個文件中,還有復(fù)雜一點(diǎn)的利用專用的安裝打包工具組合?;诶壥降奈募用苁褂玫氖堑谝环N組合方式,也稱為傳統(tǒng)式捆綁機(jī)。

      這里把起捆綁并加密文件作用的程序叫做加密程序,它是一個可執(zhí)行文件;要加密的文件經(jīng)加密程序加

      一、捆綁

      密后捆綁在事先寫好的具有解密能力的解密程序文件尾部,此時的文件稱為解密程序,具有解密引導(dǎo)功能的程序稱為解密引導(dǎo)程序。解密時,先執(zhí)行具有解密能力的解密程序,從自身中分離出捆綁的那個需要解密的文件。

      1.軟件設(shè)計

      如何保護(hù)自己的文件不被非授權(quán)盜用的問題,始終困擾著每一個人?,F(xiàn)在市面上充斥著各式各樣的加密軟件,用這些加密軟件可以加密用戶的文件,它通常是將待加密的文件作為純數(shù)據(jù)處理,加密后還需一個特定的解密軟件來針對這個加密后的文件進(jìn)行解密,這樣做的缺點(diǎn)是顯而易見的:解密時需要解密程序存在,不易于在未裝有解密程序的平臺上解密,通用性差,一旦解密程序丟失,加密后的文件是難以恢復(fù)的;大量的加密軟件僅僅是針對PE可執(zhí)行文件的,使得許多的其他文件沒法保護(hù);另外,還有些軟件對數(shù)據(jù)的加密是利用系統(tǒng)的漏洞,這樣對數(shù)據(jù)是很不全的。這里通過捆綁的方法將解密程序同加密的數(shù)據(jù)作為一個整體,加密后的文件將生成一個可執(zhí)行文件,而不是一個單純的數(shù)據(jù)亂碼,單純的數(shù)據(jù)很難判斷自身是否完整,這樣就使用戶確定文件的完整。當(dāng)文件使用時,要求用戶擁有正確的密碼,開始使用時能夠和使用普通文件一樣使用,使用完畢以后該文件依然保持加密狀態(tài),下次使用依然需要輸入密碼,解除了重復(fù)加解密的過程。

      2.捆綁式加密技術(shù)實現(xiàn)語言及需解決的問題

      Visual Basic軟件的功能極為強(qiáng)大,深受程序員喜歡。VB的P-code方式編譯的程序很難破解,因為我們跟蹤用這種方式編譯的程序時,看不到程序作者寫的程序,只能看到VB的程序,我們只能在微軟設(shè)計好的VB程序里面兜圈子,但是在兜圈子的過程中,作者的程序已經(jīng)在執(zhí)行了,并且由于它的開發(fā)速度快,適合于捆綁式文件加密技術(shù)的實現(xiàn)。

      實現(xiàn)捆綁式的文件加密方法,需解決的幾個問題:(1)如何加入密碼檢測;(2)如何隱藏文件密碼;(3)

      二、軟件環(huán)境及需求

      對正常用戶而言,不應(yīng)造成使用不便。

      3.運(yùn)行需求

      正常使用時不應(yīng)出錯,若運(yùn)行時遇到不可恢復(fù)的系統(tǒng)錯誤,也必須保證數(shù)據(jù)完好無損,要求系統(tǒng)運(yùn)行時能夠保證正確性、可靠性。

      三、詳細(xì)設(shè)計

      (一)加密程序設(shè)計

      1.用戶界面設(shè)計

      基于捆綁式的文件加密程序采用了易上手的向?qū)浇缑?,擁有較強(qiáng)的交互性。用戶依照步驟瀏覽找到待加密的文件,指定加密后文件的存儲位置以及文件名,最后設(shè)置文件的密碼。在用戶輸入密碼時,軟件系統(tǒng)將自動判斷密碼的強(qiáng)度,這樣可以幫助用戶選擇合適強(qiáng)度的密碼。

      2.加密過程實現(xiàn)

      當(dāng)用戶選擇好加密的文件和加密后的文件位置之后,并輸入要設(shè)置的密碼后就可以進(jìn)行程序的加密了。程序加密時,首先將要加密的文件以二進(jìn)制的形式讀入一個文件大小的p1Array緩沖中,然后以用戶輸入的密碼作密匙對數(shù)組p1Array用事先寫好的算法進(jìn)行數(shù)據(jù)加密,加密后的數(shù)據(jù)仍放在數(shù)組p1Array中。為了日后解密的方便,將解密引導(dǎo)程序放在p1Array的前面,用捆綁的形式,在我們運(yùn)行解密程序時就可以對附在后面的數(shù)據(jù)文件進(jìn)行解密了。為了達(dá)到跨機(jī)運(yùn)行,就不得不把密碼寫入加密后的文件中,這里為了演示清楚,以“[Password]”為密碼存放開始的標(biāo)志,將加密后的密碼信息放在“[Password]”后面,這樣還不夠,將來解密文件后,仍要保持文件的類型,將文件的擴(kuò)展名放在“[FN]”后面,最后將解密引導(dǎo)程序+加密后的文件數(shù)據(jù)+[Password]+加密后的密碼+[FN]+未加密的文件擴(kuò)展名保存為加密后的文件的尾部。

      3.密碼加密的保存

      若將密碼以明文的形式保存在加密文件中,很容易通過查看加密文件獲得密碼,那么這樣對加密文件是十分危險的,我們就必須對密碼進(jìn)行加密保存。這里用MD5對密碼進(jìn)行加密,這樣做的好處是它將產(chǎn)生一個固定長度為128位的信息摘要,有利于解密時密碼正確與否的判斷。

      4.加密后加密文件完整性的判斷

      加密后的文件很容易被那些破解者通過文件編輯器編輯,修改特定的代碼,以達(dá)到破解的目的,那么就必須預(yù)防這種破解手段,實現(xiàn)軟件代碼校驗,以防止被修改,比如用CRC或者M(jìn)D5進(jìn)行自身代碼完整性檢測。加密程序是加密文件的程序,同時也是一個用于在文件末尾增加stCRC特征碼的程序。特征碼用于保存所需的校驗標(biāo)志位和校驗碼信息,在解密時將判斷校驗信息,經(jīng)過這一處理,修改任何一處,解密軟件運(yùn)行后會自動退出,給用戶程序沒有運(yùn)行的假象,對于校驗信息的判斷將在解密引導(dǎo)程序中討論。

      (二)解密引導(dǎo)程序設(shè)計

      1.用戶界面及解密過程

      因為加密后的文件是可執(zhí)行的,只要雙擊就進(jìn)入到了解密程序的引導(dǎo)界面,在這個界面中完成密碼驗證工作。當(dāng)用戶輸入正確的解密密碼后就會觸發(fā)文件的解密的事件。解密程序從自身的程序中分解出經(jīng)加密后的文件數(shù)據(jù),然后把這些數(shù)據(jù)放入緩沖vbArray中,再對這一緩沖數(shù)組進(jìn)行解密,最后將解密后的數(shù)據(jù)寫入預(yù)定的文件。在加密程序的設(shè)計中,已經(jīng)對加密后的文件引入了文件完整性的校驗標(biāo)志,那么解密程序執(zhí)行時,首先就要判斷文件是否完整,如果校驗信息與標(biāo)志不一致,就停止解密以保證數(shù)據(jù)安全。

      2.加密文件的進(jìn)一步保護(hù)

      通過加密程序加密后的文件,它的加密強(qiáng)度還不是很強(qiáng)。由于解密引導(dǎo)程序同被加密的數(shù)據(jù)是捆綁在一起的,要保護(hù)加密的數(shù)據(jù),就還要對解密引導(dǎo)程序進(jìn)行一些安全處理,以防破解者通過跟蹤解密引導(dǎo)程序的方法得知解密密碼,所以對加密文件的進(jìn)一步保護(hù)就等同于對解密引導(dǎo)程序的保護(hù)。以下是筆者對解密引導(dǎo)程序設(shè)計的一些保護(hù)方法:

      (1)反調(diào)試Anti-Debug

      檢測父進(jìn)程反RING3調(diào)試器,我們知道WIN32系統(tǒng)一般軟件的父進(jìn)程都是EXPLORE,而OllyDbg等RING3調(diào)試器對軟件進(jìn)行調(diào)試時都是將它們的進(jìn)程設(shè)為它的子進(jìn)程,我們只要讓程序檢查父進(jìn)程是否為EXPLORE.EXE就行,如果發(fā)現(xiàn)父進(jìn)程不是EXPLORE.EXE,就自動退出。

      (2)反靜態(tài)反匯編

      對加密程序和解密引導(dǎo)程序加殼,增加程序的安全性,就會使靜態(tài)反匯編程序不能對程序進(jìn)行匯編,從而保護(hù)代碼不被泄漏。

      四、使用說明及測試

      (一)使用說明

      該軟件能在WindowsXP以及以上的WINDOWS操作系統(tǒng)平臺下運(yùn)行,由于Windows操作系統(tǒng)使用的廣泛性,使得這一方法可以被廣泛地使用。它可以對任何想加密的文件(*.txt)、圖像文件(*.jpg,*.gif,*.bmp)、音樂文件、可執(zhí)行文件等幾乎一切的文件進(jìn)行加密。也就是說,你可以用它對各種文件進(jìn)行加密,文本文件軟件使你要加密的文件最終生成一個可執(zhí)行文件,當(dāng)文件使用時,要求您輸入正確的密碼,文件使用時和使用普通文件一樣使用該文件,使用完畢以后該文件依然保持加密狀態(tài),下次使用依然需要輸入密碼,該軟件解除了需要重復(fù)加解密的過程。

      軟件充分考慮了用戶的操作,通過簡單幾步的界面選擇便可以達(dá)到加密文件的目的。

      (二)測試分析及效果

      1.用加密程序Server加密WINDOWS自帶的記事本Notepad.exe后的生成的文件記為NotepadJM.exe,運(yùn)行加密后的文件并輸入正確的密碼可以成功地解密,并運(yùn)行程序,軟件基本功能實現(xiàn)。

      2.用Ultra Edit打開NotepadJM.exe文件,任意修改一個字節(jié),然后運(yùn)行該程序,一旦運(yùn)行程序退出,程序的完整性檢查成功。

      3.用目前流行的OllyDBG動態(tài)調(diào)試工具加載并運(yùn)行NotepadJM.exe,調(diào)試器運(yùn)行并使EIP指針轉(zhuǎn)到結(jié)束代碼,使得無法跟蹤軟件的解密過程,程序的反動態(tài)調(diào)試成功。

      [1][美]Bruce Schneier.應(yīng)用密碼學(xué)[M].吳世忠,祝世雄,張文政,等譯.北京:機(jī)械工業(yè)出版社,2000.

      [2]武新華.加密解密全攻略(第3版)[M].北京:中國鐵道出版社,2010.

      [3][美]Collberg,C.軟件加密與解密[M].北京:人民郵電出版社,2012.

      [4]李良俊.Visual-Basic程序設(shè)計語言[M].北京:科學(xué)出版社,2011.

      猜你喜歡
      解密校驗密碼
      解密“熱脹冷縮”
      密碼里的愛
      解密“一包三改”
      少先隊活動(2020年9期)2020-12-17 06:17:31
      密碼疲勞
      英語文摘(2020年3期)2020-08-13 07:27:02
      炫詞解密
      爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
      密碼藏在何處
      奪命密碼
      大型電動機(jī)高阻抗差動保護(hù)穩(wěn)定校驗研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗方法
      岱山县| 收藏| 保山市| 手游| 措美县| 高雄市| 乳山市| 凉山| 奉贤区| 通道| 方正县| 荥经县| 申扎县| 集贤县| 望谟县| 锦屏县| 黄梅县| 元谋县| 筠连县| 宝应县| 宽甸| 乐都县| 松潘县| 滕州市| 应城市| 全南县| 屯昌县| 澄迈县| 贡觉县| 井陉县| 长岛县| 临桂县| 安平县| 日喀则市| 宜良县| 宜春市| 华亭县| 平湖市| 沿河| 临澧县| 马公市|