Key-Derivation

hkdf如何生成2個密鑰?

  • September 1, 2017

嗨,我是密碼學新手,對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) – 可選的上下文/特定於應用程序的資訊

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