2012-04-19 85 views
1

我一直在安全地將密碼存儲在數據庫中進行大量的研究,並且bcrypt似乎作爲最安全的散列算法之一出現在所有地方,所以我可能會用它來存儲我的網站密碼(用PHP編寫)。其中一個主要賣點似乎是它非常緩慢,因此有助於減緩蠻力/字典攻擊。從字面上看,我讀過的每篇文章都提到bcrypt是多麼的棒,因爲它速度很慢,因此可以防止暴力攻擊。密碼保護 - bcrypt與登錄時強制延遲?

因此,我的問題是:使用PHP的sleep()無法手動讓我的代碼在登錄失敗後暫停一兩秒鐘?爲什麼bcrypt很慢很重要?我的印象是,我可以使用任何加密算法(讓我們假設它的加密和bcrypt一樣),在登錄失敗時添加一個PHP sleep(),並且對暴力/字典攻擊同樣有效bcrypt。

回答

2

bcrypt and 強制延遲登錄防止兩種不同的攻擊。

登錄時的強制延遲增加了針對在線攻擊的保護,攻擊者使用您的登錄頁面嘗試使用不同的密碼。

bcrypt增加保護,防止脫機攻擊,在攻擊者已經獲得訪問你的密碼散列值和可以嘗試哈希不使用登錄頁。

+0

這清理了很多東西,我看到我的困惑在哪裏。謝謝 – NZHammer 2012-04-19 18:15:55

+6

強制延遲還可以防止對服務器的CPU *拒絕服務*攻擊。 BCrypt的**是故意**昂貴的計算。讓用戶代理觸發您的Web服務器驗證數百,數千或數百萬個密碼,而不會中斷,可能導致服務器CPU資源匱乏。 – 2012-06-07 14:16:59

+0

@IanBoyd:好點! – 2012-06-07 19:22:47