Block-Cipher
PRESENT 密碼的排列在每三輪後重複時如何影響所有輪次?
我聽說 PRESENT 中的排列僅在幾輪後就會影響所有位。然而,當我看著它時,這些位僅在三輪後就回到了原來的位置。例如,第 1 輪位 b1 —> b16,第 2 輪 b16 —> b4,第 3 輪 b4 —> b1;此後循環重複。這對於所有位都是相同的,除了 b0、b21、b42 和 b63 根本不移動。
所以我的問題是:在這種情況下,排列如何導致每個位影響其他位?
我確定我錯過了重點,因此非常感謝一個簡單的“數字”範例。
是的,您可能會認為這些位會回到原來的位置。但他們沒有,因為那些不是你正在尋找的位。他們變了。具體來說,您需要考慮 s-box 的影響。如果一個比特進入一個 s-box,這很自然意味著平均會有兩個比特出來。類似地,如果輸入三個位,平均仍會出現兩個位。這是 PRESENT 的替換部分。您只關注置換組件。要在整個替換/置換網路 (SPN) 中實現位的完全和適當的擴散,您需要兩個組件一起工作。
這種重複的替換和排列(香農稱之為混淆和擴散)通過內部狀態產生雪崩效應。如果這樣的網路碰巧有與其寬度相同數量的 s-box(即 8 個 8 位的框),那麼您將在兩輪中實現完全雪崩效果。如果比率與 PRESENT 的 4/16 結構不同,則在發生更多輪次之前不會發生完全雪崩。它是比率的函式。我不知道 PRESENT 需要多少輪,但它顯然發生在總數 31 之前。這些網路往往有一個非常慷慨和保守的輪數來幫助安全。
因此,s-box 的效果與排列相結合,確保所有位影響所有其他位。下圖是一個通用的 SPN,但說明了它的一些行程:-
1 位進入,正如預期的那樣,平均 8 位出來。如果您只考慮自己的排列,它根本行不通。