Passwords
鹽所需的安全屬性是什麼?
我最近在考慮密碼雜湊(可能是由PHC進展引起的)。
我開始考慮更多,並陷入了這個問題:
密碼散列相關的鹽實際上需要哪些安全屬性?
我認為它們需要是全球唯一的(這就是我通常建構它們的方式)。這意味著任何人都不應該使用兩次相同的鹽。這意味著我必須選擇我的鹽來抗碰撞,從而產生 512 位長度和生成的 CSPRNG。
這是矯枉過正還是更短且防禦性更低的解決方案也安全?
(這與加粗的問題基本相同)如果您需要對方案做出假設,則應假設標準方案(不含胡椒),如 bcrypt、scrypt、Argon2、PBKDF2。
即使是全域唯一性,512 位也是過大的。256 位應該足夠了,有一個好的隨機數生成器:即使地球上每個人每納秒生成一個,也需要一百萬年才能達到生日界限。
但是,我同意全球唯一性是一個好主意。如果任何地方的任何人都使用相同的鹽和密碼雜湊(或其他使用鹽的算法),那麼理論上攻擊者可以在更短的時間內攻擊它們。
如果您有一個獨特的特定於應用程序的辣椒(所有使用者共享的額外鹽),您可以安全地使用僅在本地唯一的鹽,例如來自計數器的輸出。在某些情況下,這可能有助於節省空間。