前言

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

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

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

時間成本

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

一些經(jīng)典的 Hash 算法,例如 MD5、SHA256 等,計算速度是非??斓?。如果口令 Hash 用了這類函數(shù),將來攻擊者跑字典時,可達(dá)到非常高的速度。那些強度不高的口令,很容易被破解。

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

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

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

網(wǎng)友評論