關鍵調度功能是否需要是單向功能?
對於一些關鍵時間表 $ e_n(e_{n-1}(k)) $ (在哪裡 $ e_{n-1}(k) $ 是上一輪的結果),確實 $ e $ 需要是單向函式嗎?
在 DES 或 Rijndael 的情況下,密鑰計劃看起來並不像一個,因為對手只需反轉操作即可獲得輸入。
我的問題是這樣的:
在經過充分研究的 Rijndael 的案例中,
- 替換迭代計劃的含義是什麼 $ e_n() $ 具有單向功能 $ f $ ?
我的猜測是它會增加線性度,導緻密碼變弱。所以,
- 如果我們添加一個單向組件會怎樣 $ e $ 這樣
$$ e(x) \leftarrow s( r (f (x))) $$ 在哪裡 $ s() $ 和 $ r() $ 分別是 s-box 和 bit-shift 函式。
注意:我問的是 Rijndael,我真正的意思是任何安全的分組密碼,例如。Rijndael,但我不確定如何表達。
正如fgrieu 已經指出的那樣,以您描述的方式使用 OWF 會使密鑰調度無法有效地可逆(甚至根本不可逆),這意味著您需要更多的記憶體/晶片空間來儲存使用者輸入的密鑰以便有效地加密多個塊。
就其他含義而言,如果鍵狀態更新函式 $ e_n(\cdot) $ 是非滿射的,那麼後面的輪密鑰將比使用者輸入的密鑰具有更少的熵,因此可以比目前的 AES 密鑰計劃更省力地猜測。這可以使最後一輪更容易剝離。
然而,如果 $ e_n(\cdot) $ 是這樣的,每個輸出位都是每個輸入位的高度非線性函式,那麼任何這樣的熵損失都可能很難利用,並且可能會使相關的密鑰和 biclique 攻擊更加困難。
您還應該知道,OWF 可以以與您描述的方式不同的方式在密鑰調度中使用——即作為輪密鑰提取器而不是密鑰狀態更新函式。因此,您可能有一個排列(甚至可能是線性排列)來更新每輪之間的密鑰狀態,然後使用 OWF 從密鑰狀態中派生每個輪密鑰。作為一個具體(但速度較慢)的範例,您的鍵狀態更新函式可能是在每輪之間向使用者輸入鍵添加 1(或其他常量),然後通過散列鍵從中提取目前輪鍵-使用 SHA-256 等加密安全散列函式的狀態。作為一個更快的範例,Serpent 使用線性鍵狀態更新函式和非線性輪鍵提取器(儘管在這種情況下,它們是使用 Serpent s-box 而不是 OWF 的非線性排列)。