2009-11-18 67 views
12

嗨,大家好,我已經閱讀過關於密碼醃製的內容,但這聽起來有點奇怪。但是,我如何儲存和保護鹽。例如,在多輪胎架構中,我使用客戶端機器的GUID生成我的鹽,然後用戶被限制在一臺機器上,但如果我使用隨機鹽,它必須存儲在某個地方。幾天前,我看到一個示例應用程序,其中每當創建新用戶時在客戶端系統上生成哈希和鹽,然後將鹽漬密碼和哈希傳送到存儲在SQL服務器中的服務器。但是,如果我遵循這種方法並且數據庫受到威脅,那麼每個密碼的密碼和salt值將可供X人使用。那麼,我是否應該再次加密/加密密碼並在服務器端收到鹽?醃製的最佳做法是什麼?什麼是醃製和儲存鹽的最佳方式?

回答

22

在散列密碼旁邊的數據庫中存儲未加密的鹽不是問題。

鹽的目的不是保密的。每個散列(即隨機)的目的是不同的,並且足夠長以在攻擊者抓住數據庫時擊敗使用rainbow tables

關於這個問題,Thomas Ptacek看到這個excellent post

編輯@ZJR:即使鹽是完全公開的,它們仍然會打敗彩虹桌的好處。當你有一個鹽和散列數據,你能做的最好的扭轉是蠻力(前提是哈希函數加密安全)

編輯@ n10i:參見維基百科文章secure hash function。至於鹽的大小,流行的bcrypt.gensalt()實現使用128位。

+0

我想說的鹽的目的不是要** **公衆,無論是。 – ZJR 2009-11-18 01:39:57

+0

可以ü請解釋「哈希函數是密碼安全的」。對不起,我是密碼學的新手。在你的回覆中,你提到「足夠長的時間來擊敗彩虹桌的使用」鹽應該保持足夠長的時間? – Neel 2009-11-18 02:31:13

相關問題