Key-Derivation
可以將 32 字節的共享密鑰作為 HKDF-SHA512 的輸入嗎?
由於 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-SHA512HKDF-Expand
。對於共享密鑰,首先呼叫很重要,
HKDF-Extract
因為共享密鑰不會是完全隨機的。使用統一隨機密鑰(例如CSPRNG的輸出),您可以跳過這HKDF-Extract
一步,只需執行HKDF-Expand
.
輸出的鍵空間將是 $ \min(2^n,2^{512}) $ 對於輸入 $ n $ 一點點的熵。
一個 32 字節(256 位)的隨機輸入將產生一個鍵空間為 $ 2^{256} $ ,這就夠了。