Key-Derivation

為什麼建議使用秘密鹽對密碼進行雜湊處理?

  • July 15, 2018

NIST建議使用秘密鹽進行額外的一輪散列:

此外,驗證者應該使用一個秘密且只有驗證者知道的鹽值來執行密鑰派生函式的額外迭代。此鹽值(如果使用)應由經批准的隨機位生成器生成

$$ SP 800-90Ar1 $$並至少提供最新版本 SP 800-131A 中規定的最低安全強度(截至本出版物發布之日為 112 位)。秘密鹽值應與散列儲存的秘密分開儲存(例如,在像硬體安全模組這樣的專用設備中)。通過這種額外的迭代,只要秘密鹽值保持秘密,對散列記憶秘密的暴力攻擊是不切實際的。

關於這個的問題:

  1. 忽略這個建議是否安全?如果我們不進行此額外迭代,是否存在任何已知漏洞?
  2. 如果秘密鹽必須單獨儲存但在散列密碼時需要可用,我們應該如何實現這個額外的迭代?我們是否應該為秘密鹽使用專用伺服器,使用安全協議傳輸到驗證伺服器?秘鹽可能會留在驗證伺服器的記憶體中,這有關係嗎?

NIST文件第 5.1.1.2 節記憶的秘密驗證器。

該部分是“應該”而不是“應”。

標準做法是不將鹽保密,而是使用密碼散列驗證器保存它。

如果鹽不是秘密的,如果密碼很弱(例如在常用密碼列表中),則可以進行蠻力搜尋。此類頻繁密碼的一個範例來源是SecLists

如果鹽是秘密的,那麼這種蠻力搜尋將不會成功。注意:與散列記憶的秘密分開儲存(例如,在像硬體安全模組這樣的專用設備中),這樣的設備通常是不可用的。

引用自:https://crypto.stackexchange.com/questions/60756