標 題: winrar加密分析
作 者: 天易love
時 間: 2009-10-02,06:33:10
鏈 接: http://bbs.pediy.com/showthread.php?t=98812
條件限制,用非智能手機發的,因而無法圖文並貌,請大家包涵。
一、加密檔案大體結構:
1、只加密檔案內容時。位移14-15h是對其後一直到檔案頭結束處也就是加密資料開始處的校正值。檔案頭中檔案名稱後至檔案頭結束處是八位元組的salt和5位元組的未知地區(功能暫不詳),加密資料後緊跟固定的結束字串c4 3d 7b 00 40 07 00。
2、頭和內容均加密時:位移14-15h是salt2,尾部還出現一次。緊跟的是加密的檔案頭(頭中尾部是salt1和5位元組的未知地區)和加密的檔案內容(壓縮後再進行aes加密),最後就是salt2和經過aes加密的固定結束字串。註:產生salt的函數調用了2次。
二、簡述salt演算法:
1、由SystemTime得到FileTime;
2、分別對FileTime的兩個DWORD進行hash_process;
3、hash_final後得到的digest的最前面的兩個DWORD就是salt。
三、加密過程:
1、先將salt接在unicode形式的密碼後再用hash_final產生aesinit、aeskey、10輪round key。
2、壓縮好的檔案內容分組長為每一個分組128bit,開始加密前先與前一個分組xor產生一個state參與aes加密,第一個分組與aesinit進行xor。
四、隱患:
由於salt是隨機產生,因而aeskey和round key也是隨機的,檔案加密結果就是隨機的。這個變數的使用給我們提供了利用空間。插一句,假如由加密後資料逆推得到aeskey但由於是經過hash得到,這是無法復原的,所以不可能知道密碼。唯一可行就是讓其加密過程中自己將密碼儲存到salt處最好用可逆向的密碼編譯演算法處理一下,這不會有任何影響,只是讓它多了層含義。
以上是我的一點膚淺的認識,望批評指正!
天易love
2009-10-2