Cryptanalysis

僅使用偽隨機函式來驅動許多確定性鍵

  • August 30, 2016

我的問題與:

偽隨機值可以用作安全密鑰嗎?

但在這裡我只使用偽隨機函式。


假設我們有一個偽隨機函式, $ PRF $ . 我們有一個真正隨機的主密鑰: $ mk $ 用於 PRF 功能。

我想確定性地生成 $ n $ 鍵,所以我這樣做:

$ \forall i, 1\leq i\leq n: k_i=PRF(mk,i) $ .


問題:使用每個密鑰是否安全 $ k_i $ 生成 $ m $ 偽隨機值?例如 $ \forall j, 1\leq j\leq m : k_{i,j}=PRF(k_i,j) $ .

是否有任何協議使用這種方案(如果該方案是安全的)?

是的,您的建議本質上是SP 800-108 (pdf) 第 5.1 節中定義的“計數器模式下的 KDF”。這顯示瞭如何像您一樣在計數器模式下使用 PRF 導出一長串“派生密鑰材料”。它包括一些用於區分域分離的派生密鑰的上下文和長度的輸入。您可以使用這些,但如果您使用這一密鑰派生過程,您可以跳過它們。

同一文件的第 7.3 節指出,您可以根據需要劃分密鑰的派生材料,只要它們不重疊:

在沒有依賴應用程序可能施加的限制的情況下,可以指定具有所需長度的派生密鑰材料的任何片段用作密鑰,但受以下限制:當多個密鑰(或任何其他類型的秘密參數,例如秘密初始化向量)是從派生的密鑰材料中獲得的,它們應從KDF 輸出的不相交(即非重疊)段中選擇。

我想不出一個協議可以做到這一點。例如,TL​​S 使用更複雜的密鑰派生函式,直到 1.3 應該使用 HKDF。

說到,你可能想使用HKDF只是因為它更標準,但你所做的也很好。

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