XTS 基本上是最便宜的(安全)雙重加密形式嗎?
XTS,如下式所示,是一種主要針對全盤加密場景的操作模式。
順便說一下,它的工作方式也使密鑰長度加倍,儘管應用了中間相遇攻擊(通過列舉所有白化值)。然而,每個扇區只需要計算一次白化值。
那麼有什麼方法可以在比預期更少的時間和/或空間內打破 XTS 或其雙重應用?
標準 XTS 的預期時間是 time $ 2^{512} $ 對於 256 位 AES 和 $ 2^{513} $ 時間和 $ 2^{512} $ 雙重加密的空間。
與標題相關:
XTS 是將 256 位密碼轉換為 512 位模式的最知名/使用的方案。它以這樣一種方式做到這一點,即每個塊只需要一次有限域乘法和一次加密操作,並且每隔幾個塊(例如 32+)需要一次額外的加密操作,這意味著它應該是一種非常“便宜”的雙重加密方式。所以問題是:這和聽起來一樣好嗎?
$$ C_1=E_{K_1}(P_1\oplus(E_{K_2}(n)\otimes\alpha^i))\oplus(E_{K_2}(n)\otimes\alpha^i) $$ 和 $ C_1 $ 作為密文, $ P_1 $ 作為明文, $ K_1 $ 和 $ K_2 $ 作為鑰匙, $ n $ 作為行業指數, $ i $ 作為扇區內的塊索引, $ \oplus $ 表示按位異或, $ \otimes $ 表示二進製欄位中的乘法 $ GF(2)\bmod x^{128}+x^7+x^2+x+1 $ 和 $ (E_{K_2}(n)\otimes\alpha^i) $ 被稱為“美白值”。
預期時間/空間值的證明:
單一加密情況:
這本質上是“單密鑰”XEX,提供 256 位安全性和 256 位密鑰排列組合,需要 $ 2^{512} $ 找到正確的白化鍵和正確的排列。
雙重加密案例:
標準中間相遇攻擊:列舉所有可能的中間值( $ 2^{512} $ 時間和空間),然後嘗試使用所有可能的密鑰解密所有密文,尋找中間匹配。
那麼有什麼方法可以在比預期更少的時間和/或空間內打破 XTS 或其雙重應用?
標準 XTS 的預期時間是 time $ 2^{512} $ 對於 256 位 AES 和 $ 2^{513} $ 時間和 $ 2^{512} $ 雙重加密的空間。
是的,還有比這更好的攻擊。
使用 XTS,單個扇區使用單個加密 $ E_{K_2}(n) $ 值,因此攻擊者可以將其視為常數。它只有 128 位,因此暴力攻擊可以找到它和 AES 密鑰 $ K_1 $ 大約 $ 2^{384} $ 時間。一旦攻擊者知道 $ K_1 $ ,他們可以單獨,給定多個扇區,攻擊密鑰 $ K_2 $ 與第一步相比,時間可以忽略不計。
中間相遇攻擊正常適用於雙 XTS,大約在 $ 2^{385} $ 時間和 $ 2^{384} $ 空間。
請注意,對於 AES-128,上述情況並非如此,因為 $ K_1 $ 與塊的大小相同,因此需要蠻力 $ 2^{256} $ 無論您是在尋找密鑰還是扇區索引的加密時間。
當然,還有其他弱點與它是確定性的並且缺乏身份驗證有關。如果攻擊者可以看到同一扇區的多個密文,則可以將其視為 ECB 模式下的扇區大小密碼。由於沒有身份驗證甚至填充,任何隨機字元串都是有效的密文。
當可以使用 IV 和身份驗證時,不應將 XTS 用作通用加密。