Hash
HMAC和HKDF在特定情況下的區別
我想使用密鑰派生函式從另一個密鑰派生密鑰。
我認為 HKDF 在我的情況下是最簡單的解決方案。
這個解釋對HKDF給出了明確的定義。
如果從 KDF 請求的密鑰位數等於雜湊輸出長度(即
L = k
在定義中),我是否必須計算 2 個 HMAC:
PRK = HMAC(XTS, SKM)
和K(1) = HMAC(PRK, CTXinfo)
或者我可以直接計算:
K(1) = HMAC(SKM, CTXinfo)
?
當 SKM 值是使用某種確定性方法(例如密鑰交換)或從可能不完全受信任的來源導出時,HKDF 階段 1 很有用。SKM 可能比您想要的密鑰大得多,但熵可能不均勻分佈。階段 1 將熵壓縮並分配到一個大小適合於階段 2 中的散列函式的密鑰中。
如果你有一個真正的隨機數生成器的源密鑰,或者已經通過了強 KDF,你可以用 SKM 替換 PRK,並跳過第一個 HMAC 操作。