Key-Derivation
具有預定義 IV 的 HKDF
我可以從隨機生成的密鑰中生成,比如通過 HKDF 使用預定義的 IV 生成其他三個密鑰,例如。“蘋果”、“香蕉”、“梨”的 Sha-256?
我的案例是一個應用程序,它在開始時生成一個密鑰,使用 HKDF 為每個單獨的數據庫創建每個其他密鑰,每一代的 IV 是數據庫名稱的 SHA-256。因此,每個應用程序都有不同的主密鑰,但 DB 的 IV 是相同的。
本文說IV 需要是隨機的,但可以是公開的,但我不確定這是否意味著兩個應用程序不能將相同的 IV 用於不同的主密鑰,或者對於具有一個主密鑰的密鑰生成我不能使用一個IV 兩次(當然會產生相同的密鑰)。
HKDF 不使用任何 IV。HKDF 在提取期間使用 Salt,在擴展階段使用 Info 欄位。Salt 和 Info 欄位都是可選的。
如果您已經有一個隨機生成的秘密,那麼您只需要 HKDF-Expand,在這種情況下不使用鹽。只要您使用 128 位以上的密鑰並且不將密鑰用於其他任何事情(域分離),您就可以跳過 HKDF-Extract。
Info 欄位用於為特定實體和/或目的派生密鑰。在您的情況下,Info 欄位可能包含“apple”、“banana”或“pear”的 ASCII 編碼。
通常不需要散列 Info 欄位,因為它用作 HMAC(HKDF 內部)的消息輸入的一部分。這樣做的唯一原因是標籤和輸出都非常大,因為在這種情況下,雜湊函式將多次處理資訊。
salt 也可用於區分密鑰(最好是 salt >= 256 位),但通常如果您需要新的會話密鑰(具有相同的 Info 欄位),您會確保刷新輸入的密鑰材料。