Provable-Security
假設 Salsa20 是 PRP 是否安全?
通常在安全證明中,某個分組密碼被假定為偽隨機排列或 PRP。我想知道這是否也適用於流密碼,特別是 Salsa20。
如果我們將自己限制在一個 Salsa20 塊(64 字節)的範圍內,被輸入 64 字節的明文數據,是否可以安全地假設 $ Salsa20_{key,nonce} $ 成為(強大的)PRP 家庭?
我對為什麼或為什麼不進行推理非常感興趣,以及這是否擴展到其他流密碼。
Salsa20 是一種基於偽隨機函式的流密碼,而不是偽隨機排列。
對於固定鍵 $ k $ 和隨機數 $ n $ , 映射 $ PRF^{S20}_{k,n}: {0,1}^{64} \to {0,1}^{512} $ ,它將“流位置”映射到“密鑰流塊”,應該是一個偽隨機函式。它不應該是單射的(即排列,甚至更少,因為輸入/輸出大小不同),並且肯定沒有簡單的方法來產生原像,即使知道密鑰和隨機數。
您建議的是針對明文的第一個“塊”的 Salsa20 加密功能:
$$ \def\Enc{\operatorname{Enc}}\Enc^{S20}{k, n} : {0,1}^{512} \to {0,1}^{512} $$ $$ \Enc^{S20}{k, n}(P) = P \oplus PRF^{S20}_{k,n}(0) $$ 這顯然是雙射的(它是它自己的逆),即一個排列,但同時,它顯然不是一個*(偽)隨機*排列。除了 self-inverse-property 之外,它還具有例如two-time-pad 屬性:
$$ \Enc^{S20}{k, n}(P_1) \oplus \Enc^{S20}{k, n}(P_2) = P_1 \oplus P_2, $$ 沒有隨機排列。