Sha-256

用 Keccak 替換 PBKDF2 中的 PRF

  • May 9, 2017

我無法找到一個可靠的、經過測試的庫,用於一個像樣的基於密碼的密鑰派生函式,例如我正在使用的程式語言中的 Scrypt,但我有一個可靠的 PBKDF2 庫(預設情況下使用 SHA2-256),它也允許我替換散列函式以改用 Keccak-256 (C=512)。

將 SHA2 換成 Keccak 以用於 PBKDF2有什麼問題嗎?例如,也許 Keccak不是為這種用途而設計的?

它會被認為是比 SHA2更好的 PRF 嗎?

我知道這不是一個記憶硬功能,因此在減慢嚴重攻擊者的速度方面不如 Scrypt 有效,但是我可以通過將密碼長度限制為至少 30 個字元和 100,000 次左右的迭代來彌補這一點。

將 SHA2 換成 Keccak 以用於 PBKDF2 有什麼問題嗎?

有2個主要問題。性能和實施。

表現

性能問題來自攻擊者 - 防御者場景,攻擊者能夠提供 FPGA 或 ASIC 資源。在這種情況下,Keccak 比 SHA-2 快幾倍。我將對 SHA-256 使用 Blake 比較,因為它們的性能相似。Blake 和 SHA-2 都是 ARX 類型的散列函式。

STM 90nm ASIC

Keccak-256 = 33333 Mbit/s @ 51 Kgates,Blake-256 = 4763 Mbit/s @ 37K 門,7X 性能優勢,37% 面積劣勢,5.1X 整體優勢

UMC 90nm ASIC

Keccak-256 = 43011 Mbit/s @ 50 Kgates,Blake-256 = 6966 Mbit/s @ 47.5K gates,性能優勢為 6.17X,面積劣勢為 5%,整體優勢為 5.86X

Xilinx Virtex 5 FPGA

Keccak-256 = 12817 Mbit/s @ 1272 個切片,Blake-256 = 2245 Mbit/s @ 1523 個切片,5.7 倍的性能優勢和 20% 的面積優勢,6.83 倍的整體優勢

可以看出,具有硬體資源的攻擊者平均比 Blake 具有 6 倍的性能優勢。在軟體方面,Keccak 在相同安全級別下平均可以達到 SHA-512 一半的速度,並且可以比 SHA-256 更快。這取決於消息大小,因為塊大小不同。

較新的處理器還將包含額外的指令來提高 SHA-256 散列的性能,改進的程度還有待確定。

執行

主要的實現問題集中在 HMAC 的設計和目的上。

HMAC 專為 SHA 和 MD5 等 MD 類型的雜湊函式而設計。其目的是將初始值更改為規範中的值以外的值。MD 類型的散列像塊密碼一樣工作,消息是密鑰,初始值是明文。密文就是雜湊摘要。對於較長的消息,密碼在 OFB 模式下工作,但會更改密鑰。最終的密文塊就是雜湊。HMAC通過騎自行車工作 $ [key \oplus ipad] $ 進行 1 次迭代以獲得新的秘密 IV,然後處理該消息。然後將輸出作為新消息使用 $ [key \oplus opad] $ 生成不同的秘密 IV。

Keccak 不是一個 MD 類型的散列函式,所以 HMAC 的全部目的都失去了。Keccak 使用具有較大內部狀態的海綿結構進行工作。一般規則是簡單地為消息添加密鑰前綴,以創建密鑰散列結構。建議這實際上比 HMAC 更強,因為內部狀態很大,保密,而 HMAC 攻擊者可以看到整個狀態,除非有截斷。

在 HMAC 結構中使用 Keccak 當然是可能的,但會比密鑰前綴慢得多,並且可能沒有安全優勢。

另一個實現問題是程式碼大小。在 32 位系統上,SHA-256 將比 Keccak 具有巨大優勢,因為 blitsliced Keccak 更大且更複雜。在 64 位系統上,SHA-512 更適合,而本機 64 位程式碼中的 Keccak 非常緊湊。可以在執行時導出輪常數這一事實是一個優勢,但通常僅在需要小程式碼時使用,例如 RFID 卡。

國家安全域

我猶豫著把這部分放在這裡,但由於這個問題的評論是一個熱門話題,我認為它會是中肯的。

僅僅因為美國國家安全域設計了一些東西,並不意味著它是壞的,或者秘密的後門。國家安全域不是什麼超級惡魔,僱員是人,他們的電腦需要遵守熱力學定律。他們不能輕易地被加密社區偷偷摸摸。幾乎每個人都懷疑 Dual_EC_DRBG 被污染了,並建議不要使用它,甚至在它成為標準之前。它被使用的唯一原因是賄賂或無能。

我知道沒有人對 SHA-2 有同樣的懷疑。此外,SHA 是研究最廣泛的雜湊家族之一,經過世界各地密碼學家數十年的分析,包括俄羅斯人、中國人、伊朗人等,它經受住了時間的考驗,優於 MD5 和 RIPEMD。唯一可利用的問題是所有 MD 類型散列函式共有的問題,如果在 HMAC 中使用,它們大多無關緊要。美國政府自信地使用 SHA-2 來保護國家機密免受敵人的侵害。

如果您想使用 PBKDF 並且仍然不相信加密社區對 SHA-2 的看法以及出於任何原因的所有公開分析,請改用 Blake-512。它具有遠低於攻擊者優勢的數量、出色的軟體性能和經過充分分析的安全性。我喜歡截斷輸出,我只會保留 256 到 320 位。

我假設 SHA3 可以比 SHA2更好地保留鹽和密碼中的熵

不足以彌補攻擊者的性能優勢,即使是這樣。

在撰寫本文時,如果您的客戶獲得美國政府資助或遵守 HIPAA/HITECH 法案,則仍需要 PBKDF2 作為唯一批准的密碼雜湊算法。如果您不能使用它並希望獲得報酬,那麼任何其他系統是否更好都無關緊要。

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