由於SHA1的密碼分析有了顯着的進展,它應該被逐步淘汰,轉而採用SHA2(wikipedia)。SHA1在PBKDF2中作爲散列函數仍然安全嗎?
但是,作爲PBKDF2中的基礎散列函數,它基本上用作PRNG。因此,使用SHA1作爲PBKDF2的散列應該仍然安全,對吧?
由於SHA1的密碼分析有了顯着的進展,它應該被逐步淘汰,轉而採用SHA2(wikipedia)。SHA1在PBKDF2中作爲散列函數仍然安全嗎?
但是,作爲PBKDF2中的基礎散列函數,它基本上用作PRNG。因此,使用SHA1作爲PBKDF2的散列應該仍然安全,對吧?
對SHA-1目前已知的弱點沒有在它的安全性產生任何影響。對於這個問題,MD5也可以(但不是MD4)。但是,SHA-1不利於公共關係:如果在2011年使用SHA-1,那麼您必須準備好自己來證明這一選擇是正確的。另一方面,SHA-256是一個很好的「默認功能」,沒有人會質疑它。
PBKDF2沒有性能問題(PBKDF2包含一個「迭代計數」,意思是使其完全像需要的一樣慢),所以在這裏沒有什麼理由比SHA-256更喜歡SHA-1。但是,如果您有一個現有的,使用PBKDF2-SHA-1的已部署系統,則不需要立即「修復」它。
對SHA1的攻擊導致了大量的公共騷動,因此可以構造一條消息,它與另一條消息具有相同的哈希值。對於每個散列函數,這當然總是可能的(原則上),因爲散列函數具有比輸入位少的輸出位。但是,通常不可能偶然發生,故意做它應該在計算上不可行。
從「確保消息完整性」的角度來看,這可以被看作是一場災難。
另一方面,爲了生成隨機數的目的,這絕對沒有方向。
當然。如果您希望生成更多密鑰材料,則SHA-256或更大,可能會更有效。 但PBKDF2-HMAC-SHA1很好。同樣,標準HMAC的使用還沒有受到影響,但是同樣的情況下,更長的哈希原則上更安全。在PBKDF2使用時,HMAC,更不用說使用時
在[Stack Crypto](http://crypto.stackexchange.com/questions/15218/is-pbkdf2-hmac-sha1-really-broken)中也有一個很好的解釋。簡而言之,密碼衝突並不是一件壞事,它只是意味着惡意用戶(或有效用戶)可以使用一些不同的密碼登錄,而不能回到原來的「真實」密碼。 – 2017-03-09 16:12:12