2010-12-13 69 views
15

我一直在閱讀有關Gawker事件,並且有幾篇文章關於僅使用bcrypt來哈希密碼冒出來,我想確保我的哈希機制足夠安全避免切換到另一種方法。在我目前的應用程序中,我選擇了使用sha2-512和最少1000次迭代的PBKDF2實現。密碼加密:PBKDF2(使用sha512 x 1000)vs Bcrypt

我可以詢問關於使用PBKDF2與Bcrypt以及我是否應該實施更改的意見嗎?

回答

27

你對PBKDF2很好,不需要跳到bcrypt。

儘管在2000年推薦使用1000次迭代,但現在您還需要更多。

此外,你應該使用bcrypt時多加小心:

還值得一提的是,雖然bcrypt比PBKDF2強於大多數類型的密碼,它落後於長密碼短語;這是由於bcrypt無法使用密碼的前55個字符,而我們的估計成本和NIST的。密碼熵的估計表明bcrypt的55個字符的限制不是可能導致當前問題的系統,依賴於加密的系統的實現者可能被建議或者繞過這個限制(例如,通過「預處理」一個密碼,以使其適合55個字符的限制)或採取步驟 防止用戶在第56個字符和後續字符中放置太多密碼熵(例如,通過詢問網站的用戶將他們的密碼輸入到輸入 只有55個字符的空格)。

From scrypt paper [PDF]

這就是說,有也scrypt

任何比較將是不完整不脫離scrypt紙上面提到的表:

Estimated cost of hardware to crack a password in 1 year.

爲PBKDF2-HMAC-SHA256迭代計數使用有86000和4300000。

+5

「要求網站用戶將密碼輸入到只有55個字符的輸入框中。」我很抱歉,但這如何適用於現實世界?我幾乎不能提供8個字符的密碼。 – m33lky 2012-03-03 22:39:36

+6

我認識一個使用偉大的國際象棋遊戲序列作爲密碼的人。他將這些序列與玩家姓名,日期,所玩城市等進行了鹽化。我知道另一個使用史詩詩歌的人,並引入了故意的錯誤。有很多方法可以獲得長密碼。 – Cheeso 2012-06-08 06:24:47

+1

應該注意的是,scrypt文件中有一個錯誤,並且bcrypt的實際算法截止值爲72個字符。所以仍然有一個臨界值,但它有128位的熵。這是非常重要的。 – ircmaxell 2013-11-26 22:01:13

-7

評論(RE:標題):

  • 不要使用加密(可逆)來存儲密碼,除非你必須。
  • 既然你提出了一個哈希(不可逆)選項作爲替代,我假設你不需要可逆性。使用PBKDF2 VS Bcrypt

意見和 我是否應該實施 變化?

我的看法:

使用PBKDF2超過Bcrypt。 (我對SHA的信心比Blofish更強,無緣無故)

至於你是否應該「實施變更」,我不知道你在問什麼。

編輯更加清楚地分開加密/散列討論從陳述我的偏好w/r/t算法。

+0

「執行更改」意思是將腳本轉換爲使用bcrypt而不是PBKDF2算法。 – buggedcom 2010-12-14 08:22:37

+4

我不相信bcrypt是加密。它是基於BLOWFISH的單向哈希機制 – buggedcom 2010-12-14 08:23:37

+0

BCrypt *是一種哈希算法。 – 2010-12-15 20:03:21