為什麼要使用多輪生成的子密鑰?
在 AES-128 中,10 輪與從 128 位密鑰生成的子密鑰一起使用。在 DES 中,從 56 位密鑰生成 48 位子密鑰。這在對稱加密中似乎很常見。
我問這個是因為我對熵和隨機性的理解。如果你要取一個隨機整數並通過一些函式來擴展它(AES標準中使用的術語),你不是讓它更可預測/更隨機嗎?
如果我要取一個隨機整數並將其用作 PRNG 的種子,那麼當我從中檢索值時,我不會從種子中得到任何不可預測的東西。當然,流與單獨的種子具有相同的隨機性。我會認為,假設原始密鑰是隨機的,或者至少我們不知道它是什麼,那麼多輪會導致使用多個低質量子密鑰進行加密,其隨機性明顯低於原始密鑰。
(這個 PRNG 和隨機性的類比可能是錯誤的;我只是想說你不能讓不可預測的值變得更大,並且像以前一樣不可預測,這是我的理解。)
請有人澄清為什麼使用多輪較低質量的子密鑰比使用整個密鑰的一輪更可取(在密鑰長度是塊長度的情況下)?
確實,設計不當的密鑰時間表會削弱密碼。
然而,要點是通過使用擴散技術“拉伸”所有子鍵的隨機性,同時僅使用 $ k $ 密鑰的隨機性位而不是 $ kr $ 如果所有輪密鑰都是獨立選擇的,則隨機性位。
這是可行的。AES 是一個很好的例子,其中密碼的組件用於密鑰調度。
更理論上,James Massey(以及他的一個學生,現在我已經忘記了他的名字)證明了一種稱為完美局部隨機化器的結構可以提取隨機外觀 $ k- $ 來自均勻分佈的元組(子密鑰位) $ n- $ 元組(隨機統一選擇的主密鑰)使得這些 $ k- $ 元組是局部均勻分佈的。該結構使用正交數組,可以在某些條件下從某些 MDS 碼中獲得。MDS 程式碼與 AES MixColumns 操作的分支編號密切相關,請參見例如 The answer to this question。
*編輯:*此外,一輪密碼不會有足夠的擴散,使線性和微分機率下降到安全的低水平,因為它通過多輪發生。