Key-Derivation

為什麼 NIST SP 800 `KDF in Counter Mode’ 規範需要 PRF 而不是 PRP?

  • December 18, 2019

這是NIST SP 800 KDF 的計數器模式規範。

計數器模式下的 KDF

在哪裡 $ K_I $ 是輸入鍵, $ [i]_2 $ 是計數器值,Label 和 Context 是固定長度的字元串,並且 $ [L]_2 $ 是輸出大小,每個塊的 PRF 的輸入 $ i\in n $ 如下

$$ K(i) := \operatorname{PRF} (K_I, [i]_2 \mathbin\Vert \mathit{Label} \mathbin\Vert \mathrm{0x00} \mathbin\Vert \mathit{Context} \mathbin\Vert [L]_2) $$ 我試圖理解為什麼

本建議書批准使用在$$ 8 $$或在中指定的基於密碼的消息驗證碼 (CMAC)$$ 7 $$作為偽隨機函式。

為什麼不在這裡使用像 AES 這樣的簡單 PRP?如果固定輸入數據的寬度正確,我不明白為什麼要在構造中添加使用即 CMAC PRF 的複雜性。

此外,查看 NIST CMAC 規範並將其調整為單塊固定長度輸入,似乎唯一的區別是將第二個密鑰與 PRP 的輸入進行異或。

這些 KDF 結構的基本目標(標準並未真正說明)是轉換非結構化輸入短輸出 PRF $ f $ 結構化輸入長輸出 PRF $ \operatorname{KDF-}!f $ , 其 PRF 優勢對 $ f $ .

如果標籤、上下文、計數器等都足夠短,您可以使用 PRP 而不是 PRF 來實例化它 $ f $ ,並且您會在安全邊界上產生標準的 PRP-for-PRF 成本。使用 CMAC,您可能不需要支付這筆費用——儘管我還沒有進行分析以確定。

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