分組密碼的奇偶攻擊
我的誤解都是關於“弗格森、施奈爾和科諾的密碼學工程”中提到的奇偶攻擊。
大多數現代分組密碼的分組大小為 128 位,但它們對 32 位字進行操作。他們從許多 32 位操作中建構加密函式。這已被證明是一種非常成功的方法,但它有一個副作用。從小操作中建構奇數排列是相當困難的;結果,幾乎所有分組密碼都只生成偶數排列。
我仍然不知道奇偶攻擊會在多大程度上有所幫助。為什麼只有理想密碼才有奇排列?有人可以舉個例子,為什麼奇數排列需要更多的操作,為什麼在目前硬體只能進行 32 位操作的情況下很難實現?
在這個問題上,我並沒有被這個論壇上的另一個文章弄得精明。
在處理大塊大小的塊密碼時,文本在問題中顯示為引號
大多數現代分組密碼的分組大小為 128 位,但它們對 32 位字進行操作。他們從許多 32 位操作中建構加密函式。這已被證明是一種非常成功的方法,但它有一個副作用。從小操作中建構奇數排列是相當困難的;結果,幾乎所有分組密碼都只生成偶數排列。
這種攻擊沒有任何實際意義。
這是因為知道由一個理想的分組密碼實現的排列的奇偶性 $ 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
映射到3
、4
或沒有幫助7
。即使已知 128 位分組密碼可以實現任何密鑰的均勻排列,這也不是可利用的弱點。它確實允許建立與理想密碼的理論區分,但只有在進行了這麼多查詢之後( $ 2^{128}-1 $ ) 到加密或解密 oracle²,它不被視為對通常或合理的安全定義的攻擊。
引用的文字有些誇大了從小操作中建構奇數排列的難度;看到雨披的這些評論:
小塊 Feistel 密碼的標準技巧是在每一輪中使用模加法,而不是異或;這樣一來,這一輪,因此排列,有 0.5 的機率是奇數。(…) 如果 Feistel 狀態的兩半是 $ a, b $ ,然後更新 $ a\gets a+F(k,b) $ 可能很奇怪;事實上,如果有奇數個 $ F(k,b) $ 值是奇數(固定 $ k $ , 在所有可能的值上 $ b $ ).
¹ 證明:從
01234567
到16502734
可以用偶數個排列來完成,例如01234567
→10234567
→16234507
→16534207
→16504237
→16502437
→16502734
。² 挑戰者隨機選擇一個理想隨機密碼或偶數隨機密碼,區分者嘗試猜測該選擇。它需要 $ 2^{128}-1 $ 查詢以確定密碼是偶數還是奇數,如果奇數輸出“理想”,否則輸出“偶數”。它有可能成功 $ 3/4 $ .