Block-Cipher

給定塊大小,是否存在理論上的最大有用密鑰大小?

  • September 11, 2013

考慮一個分組密碼 $ F $ 與 $ N $ -位塊大小和 $ M $ -位密鑰大小。也就是說,如果 $ k $ 是一個 $ M $ -位密鑰, $ p $ 是一個 $ N $ - 純文字位塊和 $ c $ 是一個 $ N $ - 密文位塊,然後:

$$ F\left(k,p\right) = c $$ 每個純文字塊 $ N $ 位必須與密文塊一一對應 $ N $ 位。

我的問題是:理論上是否存在最大數量的不同鍵,使得在這樣的鍵集中,沒有兩個鍵 $ k_1 $ 和 $ k_2 $ 為此 $ F\left( k_1, p \right) = F\left( k_2,p\right) $ 對於所有值 $ p $ ?

例如,如果我們所能做的只是一個位排列和一個帶有從密鑰派生的遮罩的異或,那麼 $ M \le N + \lfloor\log_2 N!\rfloor $ 可能是這樣一個最大值。但是考慮到例如 AES 中的“MixColumns”和“SubBytes”步驟,更多不同的鍵是可能的。但是有理論上的上限嗎?

如果您要詢問理論分組密碼的真正理論限制(與實際可用的密碼相反,如 AES),您可以計算可能的密鑰數量,如下所示:

分組密碼和密鑰 $ k $ ( $ |k| $ = $ M $ ),描述了許多可能的隨機排列之一:對於每個明文塊,只有一個密文塊。可能的塊數很簡單 $ 2^M $ , 在哪裡 $ M $ 是塊的長度(以位為單位)。

的排列數 $ n $ 不同的對像是 $ n! $ ,所以對於我們的(非常不切實際的)分組密碼,最多可以有 $ 2^M! $ 鍵。其中許多在實踐中將無法使用(對於某些人來說,明文和密文僅在一個塊上有所不同),但它們都滿足您的條件,即它們在至少一個明文-密文對中與所有其他排列不同。

現在,在沒有任何優化的情況下指定所有可能的排列之一將需要瘋狂的位數來傳輸(排列中明文-密文對的數量,乘以排列的數量: $ 2^M\cdot2^M! $

為了能夠以比任何可以想像的消息更少的比特來實際傳輸密鑰,我們將密鑰空間限制為僅 $ N $ 位,或 $ 2^N $ 可能的排列。

如果您插入實際數字,我們會得到 $ 2^{256} $ AES-256 的可能密鑰,看起來很多(出於實際目的,確實如此),但 128 位塊的理論限制要高得多: $ 2^{128}\cdot2^{128}! $ .

更新: Avijit 在評論中指出,有一個簡單的優化允許用“only”列舉所有可能的排列 $ \lceil log_2 2^M!\rceil $ 位(它允許 $ 2^M! $ 鍵)。這要緊湊得多,但仍然比任何實際的密鑰大小都要大得多。

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