HMACSHA1 與 HMACSHA2(用於 PBKDF2)
我需要為 PBKDF2 選擇一個 HMAC 函式。
我正在使用.net,所以我沒有使用 SHA3 的選項。乍一看,根據Thomas Pornin 的回答, SHA512 似乎是最好的。
但是,我聽說與 SHA1 相比,SHA2 可能存在一些缺點。其中之一可能與量子電腦有關。(是的,我知道它們還不實用,但為什麼不選擇更好而不是更糟呢?)
所以底線是 - 我應該使用 HMACSHA1 還是 HMACSHA2 (512)?或者換句話說,上述答案是建議始終使用 SHA2 還是取決於某些因素?
$$ Also, I would like to verify that I understand correctly that in any case, I should only ask it for the native output (160 bits for HMACSHA1 and 512 for HMACSHA2-512 - right?). Right? $$ 更多(可能相關)資訊
我要求只使用 Microsoft 庫。而且我需要實現一個帶有回饋的密碼拉伸功能——該功能完成了多遠。所以我不能使用 Rfc2898DeriveBytes(它不提供回饋),也不能使用 SHA3(除非我自己寫。但我已經自己寫了 PBKDF2,寧願使用內置的 HMAC 而不是也寫。) .
與 SHA-1 相比,SHA-2 的唯一缺點是 SHA-2 速度稍慢。
在這種情況下,這沒有任何實際意義,因為您試圖使計算速度變慢,而這只是增加迭代次數以使其花費一定數量的串列位操作的問題。
但是,請考慮使用現代記憶體硬密碼雜湊 scrypt 或 argon2 而不是 PBKDF2,以限制具有高度並行低記憶體 GPU、FPGA 或 ASIC 的攻擊者可以比使用普通 CPU 的防御者獲得的優勢。
在 SHA-2 系列中,SHA-512 在具有本機 64 位整數運算的 CPU 上比 SHA-256 快一點,後者是當今絕大多數個人計算設備。因此,使用 SHA-512 而不是 SHA-256 為防御者提供了一個微小的優勢。