Algorithm-Design
一個強大的輪函式可以免疫滑動攻擊嗎
維基百科關於幻燈片攻擊的文章摘錄如下:
…滑動攻擊對密碼起作用的唯一要求是它可以分解為多輪相同的 F 函式。這可能意味著它有一個循環密鑰計劃。F 函式必須容易受到已知明文攻擊…
和:
…一旦辨識出滑動對,密碼就會被破解,因為它容易受到已知明文攻擊。可以很容易地從這個配對中提取密鑰….
聲明:
下一步是收集 2^{n/2} 個明文-密文對。根據密碼的特性,更少可能就足夠了,但根據生日悖論,應該需要不超過 2^{n/2}。
讓我認為即使是真正隨機的預言機也會產生滑動對,因此似乎不可能消除滑動對的存在。
我的問題比較簡單。假設密碼的輪函式能夠抵抗已知明文攻擊(即已知明文不利於密鑰資訊的恢復)。這樣的密碼能否聲稱對滑動攻擊具有可證明的抵抗力?如果不是,滑動對會給攻擊者帶來什麼優勢?
維基百科是正確的:任何由重複數字組成的密碼 $ n $ 相同函式的迭代次數 $ F $ 容易受到滑動攻擊。一旦你找到一個滑動對,密碼的安全性就會降級為 $ F $ .
一般來說,1應用 $ F $ 不足以承受標準攻擊方法(例如,差分、線性等)。當你有一對滑動時 $ (x, F^n(x)), (F(x), F^{n+1}(x)) $ 例如,您可以攻擊 $ x $ 和 $ F(x) $ 直接,從而恢復密鑰。但是,您可以通過滑動攻擊精確執行的操作是特定於所討論的密碼的。
請注意,如果 $ F $ 本身是理想的,那麼滑動攻擊是無效的。但在那種情況下迭代 $ F $ 是沒有意義的,因為你可以使用 $ F $ 直接在 $ n $ 倍速!
有兩種簡單的方法可以防止滑動攻擊:
- 使您的塊大小足夠大。如果您的密碼有 256 位塊,則需要(在最佳情況下) $ 2^{128} $ 明文-密文對得到一個滑動對,在這種情況下,滑動攻擊是否適用並不重要。
- 讓每一輪都不一樣。這不需要大的修改;例如,Keccak置換只是簡單地異或一個不同的常數( $ \iota $ 功能)進入每輪結束時的狀態,這足以消除滑動攻擊。