Block-Cipher

分組密碼的奇偶攻擊

  • October 26, 2020

我的誤解都是關於“弗格森、施奈爾和科諾的密碼學工程”中提到的奇偶攻擊。

大多數現代分組密碼的分組大小為 128 位,但它們對 32 位字進行操作。他們從許多 32 位操作中建構加密函式。這已被證明是一種非常成功的方法,但它有一個副作用。從小操作中建構奇數排列是相當困難的;結果,幾乎所有分組密碼都只生成偶數排列。

我仍然不知道奇偶攻擊會在多大程度上有所幫助。為什麼只有理想密碼才有奇排列?有人可以舉個例子,為什麼奇數排列需要更多的操作,為什麼在目前硬體只能進行 32 位操作的情況下很難實現?

在這個問題上,我並沒有被這個論壇上的另一個文章弄得精明。

在處理大塊大小的塊密碼時,文本在問題中顯示為引號

大多數現代分組密碼的分組大小為 128 位,但它們對 32 位字進行操作。他們從許多 32 位操作中建構加密函式。這已被證明是一種非常成功的方法,但它有一個副作用。從小操作中建構奇數排列是相當困難的;結果,幾乎所有分組密碼都只生成偶數排列。

只是理論上的攻擊。這本書第 3 章承認了這一點:

這種攻擊沒有任何實際意義。

這是因為知道由一個理想的分組密碼實現的排列的奇偶性 $ b $ - 位塊和一些固定密鑰只有在對手獲得後才能幫助他們 $ 2^b-2 $ 明文/密文對:最後兩個明文/密文對由該奇偶校驗顯示。在該門檻值之前,沒有任何可操作的資訊來自那一點資訊。

例如,與 $ b=3 $ , 在對手獲得明文/密文對0/ 1, 1/ 6, 2/ 5, 3/ 0, 4/ 2, 5/7後,我們可以

      0   1   2   3   4   5   6   7

      1   6   5   0   2   7   ?   ?

將其想像為,如果已知排列是偶數,那麼對手可以確定¹剩餘的對是6/ 3, 7/ 4(而不是6/ 4, 7/ 3)。但在對手獲得5/之前7,知道排列是偶數對預測是否5映射到34或沒有幫助7

即使已知 128 位分組密碼可以實現任何密鑰的均勻排列,這也不是可利用的弱點。它確實允許建立與理想密碼的理論區分,但只有在進行了這麼多查詢之後( $ 2^{128}-1 $ ) 到加密或解密 oracle²,它不被視為對通常或合理的安全定義的攻擊。

引用的文字有些誇大了從小操作中建構奇數排列的難度;看到雨披的這些評論

小塊 Feistel 密碼的標準技巧是在每一輪中使用模加法,而不是異或;這樣一來,這一輪,因此排列,有 0.5 的機率是奇數。(…) 如果 Feistel 狀態的兩半是 $ a, b $ ,然後更新 $ a\gets a+F(k,b) $ 可能很奇怪;事實上,如果有奇數個 $ F(k,b) $ 值是奇數(固定 $ k $ , 在所有可能的值上 $ b $ ).


¹ 證明:從0123456716502734可以用偶數個排列來完成,例如01234567102345671623450716534207165042371650243716502734

² 挑戰者隨機選擇一個理想隨機密碼或偶數隨機密碼,區分者嘗試猜測該選擇。它需要 $ 2^{128}-1 $ 查詢以確定密碼是偶數還是奇數,如果奇數輸出“理想”,否則輸出“偶數”。它有可能成功 $ 3/4 $ .

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