Key-Derivation
hkdf如何生成2個密鑰?
嗨,我是密碼學新手,對HKDF如何從一個密鑰/密碼生成兩個單獨的密鑰感到困惑。是不是如下?
鍵 1: HKDF-Extract(salt, IKM) -> PRK
鍵 2: HKDF-Expand(PRK, info, L) -> OKM
或者是那個
鍵 1: HKDF-Extract(salt, IKM) -> PRK
關鍵 2:SHA-512(PRK)
密鑰 2 在哪裡是 HMAC 密鑰?
會不會是一個密鑰是使用 pb-kdf 派生的,而 hmac-key 是使用 hkdf 派生的?
HKDF的提取和展開步驟只是一個算法執行的兩個階段。PRK 創建我的提取步驟並不意味著用作密鑰(即使它不會成為安全問題)。
因此,如果您需要從一個 IKM 值派生兩個密鑰,則使用適當的資訊字元串(例如“key1”)執行整個算法(即:提取和擴展)一次,然後再執行整個算法使用相同的鹽和 IKM 但資訊字元串不同(如“key2”)的時間。
好的,我想我找到了答案。這取決於你如何使用它。因此,在我的情況下,我使用的是 codeIgnitor 庫,它生成兩個密鑰,如下所示:
密鑰 1:hkdf(key, ‘sha512’, NULL, key.length, ’encryption’) 密鑰 2: hkdf(key, ‘sha512’, NULL, NULL, ‘authentication’)
其中參數是:
$key (string) – 輸入密鑰材料
$digest (string) – SHA-2 系列摘要算法
$salt (string) – 可選鹽
$length (int) – 可選輸出長度
$info (string) – 可選的上下文/特定於應用程序的資訊