2016-07-02 31 views
0

我有一個數據庫,我正在從存儲純文本密碼轉換爲使用密碼哈希替換它們。建議採取額外的步驟使用SQL Server列加密來防止攻擊者提取哈希?哈希密碼和身份攻擊 - 最佳實踐

我試圖阻止的攻擊形式是攻擊者使用一個衆所周知的密碼列表與我的數據庫用戶表的副本結合在一起,並通過散列衆所周知的密碼列表並對結果進行比較來執行字典攻擊與存儲的散列。他們可能會獲得一定比例的成功,並且在用戶之間密碼重用的普通級別中,他們將能夠使用用戶電子郵件地址/登錄密碼破解來嘗試盜用身份。

最初我已經考慮過散列的密碼是足夠的,但不知道是否它的最佳做法然後加密哈希列以防止表的物理副本(通過任何迂迴手段)可以用於這種類型的攻擊。

我的問題是這是DBA中的「最佳還是最常見的做法」。這可能適用於已知數據字段的任何哈希存儲,但在此情況下,它保存在SQL Server數據庫中。

+0

「一定比例的成功」可能遠遠超過90%。密碼列表按發生順序排列,共有1000萬條。 Salting只消除了彩虹表,發現一個密碼哈希不會透露所有其他用戶使用相同的密碼。數據庫管理員不是要詢問安全性的小組,你需要詢問安全域專家。 – zaph

回答

2

使用隨機鹽對HMAC進行迭代大約持續100ms(鹽需要與散列一起保存)。使用諸如password_hash,PBKDF2,Bcrypt和類似函數的函數。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。

見OWASP(開放Web應用安全項目)Password Storage Cheat Sheet
有關Security Stackexchange,請參閱How to securely hash passwords, The Theory

只是哈希,即使使用隨機鹽HMAC是不夠的。在我的筆記本電腦上,我可以通過SHA-512運行一個20字節的密碼,並在1us之下進行比較,所以只需一個SHA-512散列,我可以每秒嘗試1,000,000個密碼。

欲瞭解更多信息,請參閱:
密碼列表在SecLists
Infosec password-cracking-tools
Arstechnica How I became a password cracker

+0

良好的交叉引用和密碼列表的來源。 – PhillipH