1. 程式人生 > >密碼安全存儲——PBKDF2、bcrypt、scrypt

密碼安全存儲——PBKDF2、bcrypt、scrypt

alt 存在 算法 ons 估計 緩存 如何選擇 滿足 優劣

密碼用單向哈希存儲保證了數據庫被脫後用戶密碼的安全。

由於彩虹表這種攻擊方式的存在,一般認為md5,SHA1等單向算法的安全性是不夠的。那如何選擇合適的加密算法?

下面介紹業界幾種高強度單向哈希算法,並比較其優劣。

PBKDF2

PBKDF2 是一個比較簡單的算法,它根據’iterations’參數大小,執行N次HMAC運算。

HW數據庫密碼存儲的最低安全要求是,1000次HMAC-SHA256計算,推薦的是1萬次。當然滿足最低要求前提下,到底多少次合適需綜合考慮性能要求。

使用GPU陣列、或FPGA來破解PBKDF2仍相對容易。註意這裏說的是相對,為了比較接下來提到的另外兩種算法。

BCrypt

BCrypt 在1999年發明,由於使用GPU、FPGA的破解是基於它們相對於CPU的並行計算優勢,因此BCrypt算法不僅設計為CPU運算密集,而且是內存IO密集。

然而隨著時間遷移,目前新的FPGA已經集成了很大的RAM(類型CPU緩存、大約幾十兆),解決了內存密集IO的問題。

Scrypt

Scrypt 於2009年產生,彌補了BCrypt的不足。它將CPU計算與內存使用開銷提升了一個層次,不僅CPU運算需要指數時間開銷,還需要指數內存IO開銷。

技術分享圖片

上圖摘自scrypt算法論文,粗略估計了破解上述每個算法需要的時間。

密碼安全存儲——PBKDF2、bcrypt、scrypt