彩虹表的攻擊與防禦

2022-10-10 15:27:14 字數 2364 閱讀 5790

hash一般翻譯做「雜湊」,也有直接音譯為「雜湊」的,就是把任意長度的輸入(又叫做預對映pre-image)通過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。後文所說的md5演算法是常用雜湊演算法之一,類似的還有md5演算法,sha-1演算法。

rainbowcrack:生成彩虹表的工具,是philippe oechslin 更快的時間記憶權衡技術的一般簡易實現。能夠實現:

1.全時間記憶體權衡工具套件,包括彩虹表生成,排序,轉換和查詢

2.支援任何雜湊演算法的彩虹表

3.支援任何字符集的彩虹表

4.支援原始檔案格式(.rt)和壓縮檔案格式(.rtc)的彩虹表

5.計算多核處理器支援

6.使用nvidia gpu進行gpu加速(cuda技術)

7.採用amd gpu的gpu加速(opencl技術)

8.具有多個gpu的gpu加速

9.以及相應的系統相容

md5訊息摘要演算法(md5 message-digest algorithm):一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。md5由美國密碼學家羅納德·李維斯特(ronaldlinn rivest)設計,於2023年公開,用以取代md4演算法。

1)理解雜湊演算法的概念。

2)理解彩虹表攻擊的原理以及進行相應實戰。

3)掌握針對彩虹表攻擊的防禦要點。

1.以防禦者的視角,編寫對於4位密碼進行md5加密的指令碼,來抵禦攻擊者對密碼的嗅探。

2.以攻擊者的視角,通過生成相應的彩虹表來對4位數字密碼md5密文進行破解。

3.以防禦者的視角,通過某種措施來抵禦彩虹表破解或者使攻擊者的破解難度和成本大大增加。

使用命令:rtgen md5 numeric 4 4 0 3000 400000  0

mdk_numeric#4-4_0_3000×400000_0.rt           //顯示了生成後的檔名

紅框顯示了生成相應彩虹表所用時間

rtsort .
切勿中斷rtsort程式; 否則被分類的彩虹表可能會被損壞。

如果可用記憶體大小小於正在排序的彩虹表的大小,則需要與彩虹表大小一樣大的臨時硬碟空間來儲存中間結果。

我們生成的這錶太小,所以瞬間就完成了排序.

破解單個雜湊

rcrack . -h 之前python加密的值

rcrack_cuda . -h 之前python加密的值

rcrack_cl . -h 之前python加密的值

破解多個雜湊

//彩虹表破解成功

//類似的,還可以通過同樣的思路破解sha1等雜湊演算法

如果將使用者密碼後新增一段隨機字串,然後將隨機字串和雜湊後的雜湊值儲存在密碼資料庫中。彩虹表將不得不計算出鹽化後的密碼,而鹽化後的密碼會大大增加雜湊前的長度,從而使密碼集合過大而變得不可能生成彩虹表。

示例:我們直接在之前『2244』的md5值後面增加』aaaa』的鹽值,試試能不能通過彩虹表破解

作業:

1.彩虹表的效率方面是否可以進一步得以改進?

能得以改進

演算法的改進

字典攻擊 彩虹表攻擊與防禦

其實彩虹表攻擊只是批處理字典攻擊的一種具體實現,它的主要特點是 以時間換空間 意思是查表時間變長了,但所需儲存空間減少了。公開鹽值使得破解大量密碼時更加耗時。使用公開鹽的情況下,在輸入密碼時,隨機選擇n位鹽s,通過測試h pw,sa ha驗證a的pw。攻擊者必須為每個使用者重新遍歷雜湊字典。批處理字...

高效的密碼攻擊方法 彩虹表

為了保護賬號安全,幾乎所有 都不會儲存使用者的密碼,而是用雜湊加密演算法對密碼進行計算,將得到的雜湊串儲存在資料庫中,每次使用者登入時會將使用者提交的密碼用同樣的演算法計算,並將結果與資料庫中儲存的雜湊串比對以驗證使用者身份。前面的文章中講過,黑客可以採用密碼字典的方式對雜湊密碼進行 撞庫 破解,這...

CSRF攻擊與防禦

csrf是乙個偽造使用者請求的操作,所以需要構造使用者請求的所有引數才構成攻擊。表單token通過在請求引數中增加隨機數的辦法來阻止攻擊者獲得所有請求的引數 在頁面表單中增加乙個隨機數為token,每次響應頁面的token都不一樣,從正常頁面提交的請求會包含該token,而偽造者的請求無法獲得該值,...