Key-Derivation

可以將 32 字節的共享密鑰作為 HKDF-SHA512 的輸入嗎?

  • July 23, 2022

由於 sha512 的摘要大小為 512 位或 64 字節,使用低於 64 字節的值作為 hkdf 的輸入是否安全?我了解到 hkdf 在內部使用 hmac,建議 hmac-512 的輸入等於 64 字節的摘要大小。

對於HKDF-Extract,輸入密鑰材料 (IKM) 被輸入 HMAC 消息而不是密鑰,並且在RFC中沒有提及特定的 IKM 大小。但是,使用 256 位的 IKM 是明智的,因為通常不應再使用較小的密鑰。

相比之下,RFC聲明偽隨機密鑰 (PRK)HKDF-Expand的長度應至少與散列長度一樣長。據推測,這可能會阻止潛在的安全性降低。但是,在所有情況下,256 位密鑰都被認為是足夠的,而 512 位實際上是多餘的。

HKDF-Extract如果您先呼叫或呼叫DeriveKey同時執行兩者的函式,HKDF-Extract則PRK 將是 512 位 HKDF-SHA512 HKDF-Expand

對於共享密鑰,首先呼叫很重要,HKDF-Extract因為共享密鑰不會是完全隨機的。使用統一隨機密鑰(例如CSPRNG的輸出),您可以跳過這HKDF-Extract一步,只需執行HKDF-Expand.

輸出的鍵空間將是 $ \min(2^n,2^{512}) $ 對於輸入 $ n $ 一點點的熵。

一個 32 字節(256 位)的隨機輸入將產生一個鍵空間為 $ 2^{256} $ ,這就夠了。

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