前言

用過暴力破解工具 hashcat 的都知道,這款軟件的強大之處在于它能充分利用 GPU 計算,比起 CPU 要快很多。所以在破解諸如 WiFi 握手包、數據庫中的口令 Hash 值時,能大幅提高計算效率。

當然 GPU 仍屬于通用硬件,顯然還不是最優(yōu)化的。要是為特定的算法打造特定的硬件,效率更是高出幾個量級。比特幣礦機就是很好的例子。

硬件的仍在不斷進步,系統(tǒng)安全等級若不提高,暴力破解將會越來越容易。因此,一種能抵抗「硬件破解」的 Hash 算法,顯得很有必要。

時間成本

在探討如何對抗硬件之前,先來講解過去是如何對抗「暴力破解」的。

一些經典的 Hash 算法,例如 MD5、SHA256 等,計算速度是非??斓摹H绻诹?Hash 用了這類函數,將來攻擊者跑字典時,可達到非常高的速度。那些強度不高的口令,很容易被破解。

為了緩解這種狀況,密碼學家引入了「拉伸」的概念:反復 Hash 多次,從而增加計算時間。

例如 PBKDF2 算法就運用了這種思想。它的原理很簡單,對指定函數 F 反復進行 N 次:

function PBKDF2(F, ..., N)
    ...
    for i = 0 to N        
        
		

網友評論