什麼(準確地說)是分組密碼?
如果我遵循wikipedia或crypto.stackexchange定義,則任何簡單的 XOR 加密只要密鑰與純文字一樣長,都應該符合安全分組密碼的條件。
現在我想如果我將它與分組密碼操作模式一起使用會發生什麼?畢竟,他們應該使用任何安全分組密碼建構安全方案。正如您現在可能已經猜到的那樣,這樣做的結果遠非安全。(甚至不考慮這個特定範例中的小密鑰空間,這很容易修復,但明文和密文之間存在非常明顯的聯繫。)
所以我的問題是:什麼是分組密碼,所以它有資格與任何分組密碼操作模式一起使用?
分組密碼是(或試圖成為)給定空間上的偽隨機排列。讓 $ \mathcal{M} $ 是一組 $ n $ - 給定的位塊 $ n $ . 有 $ 2^n $ 可能的塊值,以及一個排列 $ \mathcal{M} $ 將每個塊值發送到另一個值。有 $ 2^n! $ 這樣的排列。分組密碼是密鑰值的映射(在給定的密鑰空間中) $ \mathcal{K} $ ) 上的排列 $ \mathcal{M} $ .
例如,AES-256是一種分組密碼,它在 128 位塊上執行並使用 256 位密鑰。每個可能的鍵值 ( $ 2^{256} $ 可能性)在 $ 2^{128}! $ 128 位塊的空間(大小為 $ 2^{128} $ ).
對於分組密碼 $ \phi $ 為了有任何實際價值,它應該很容易計算:給定一個密鑰 $ k $ 和一個輸入塊 $ x $ , 應用排列 $ \phi_k $ 選擇者 $ k $ 在 $ x $ 需要少量的計算能力。通常,逆排列也很容易計算:給定 $ k $ 和 $ y $ , 尋找 $ x $ 這樣 $ \phi_k(x) = y $ .
分組密碼的主要安全假設是不可區分性:對於不知道的人 $ k $ , 排列 $ \phi_k $ 應該表現得好像它是在 $ 2^n! $ 的可能排列 $ \mathcal{M} $ . 這可以通過以下實驗來說明:假設我給出了兩個分別計算的黑盒子, $ \phi_k $ 和輸入 $ x $ 您選擇的,並產生相應的輸出。我不告訴你的價值 $ k $ . 任何時候,當您發送 $ q $ 要求 ( $ q $ 塊值 $ x $ 加密),你的目標是在另一個輸入上預測盒子的輸出 $ x $ 這與你以前的不同 $ q $ 輸入。自從 $ \phi_k $ 是一個排列,你知道輸出將不同於 $ q $ 以前的輸出,所以有 $ 2^n-q $ 可能性。如果您無法正確預測輸出的機率大大優於 $ 1/(2^n-q) $ .
(這個“黑盒”模型有點簡化了;其實我應該給你兩個黑盒計算 $ \phi_k $ 和 $ \phi_k^{-1} $ 分別和你的每一個 $ q $ 請求是針對其中一個盒子,由您選擇。)
“黑盒”模型解釋了為什麼簡單的 XOR 是一種非常糟糕的分組密碼。如果你定義 $ \phi $ 這樣鍵也是序列 $ n $ -位,和 $ \phi_k(x) = k \oplus x $ ,然後對加密黑盒的單個請求允許重新計算 $ k $ (和 $ k = x \oplus \phi_k(x) $ ),從而以 100% 的準確率預測所有其他請求的輸出。
術語如下:
- 已知明文攻擊:攻擊者獲得 $ q $ 對 $ (x,\phi_k(x)) $ 但無法選擇 $ x $ 或者 $ \phi_k(x) $ .
- 選擇明文攻擊:攻擊者獲得 $ q $ 對 $ (x,\phi_k(x)) $ 他可以在哪裡選擇 $ x $ 隨意取值。
- 自適應選擇明文攻擊:一種 CPA 攻擊,允許攻擊者在每兩個請求之間進行大量思考;意思是當他選擇下一個請求時 $ x $ 發送到黑匣子,然後他可以在適當檢查之前獲得的輸出後這樣做。
- 選擇密文攻擊:攻擊者獲得 $ q $ 對 $ (\phi_k^{-1}(y),y) $ 他可以在哪裡選擇 $ y $ 隨意取值。
- 自適應選擇密文攻擊:一種 CCA 攻擊,攻擊者可以在任意兩個連續請求之間進行思考。
“黃金標準”被稱為IND-CCA2,意思是“與針對自適應選擇密文攻擊的隨機排列無法區分”。
(上面的描述稍微簡化了;真正的正式闡述將使用圖靈機和挑戰者和證明者之間的博弈;但它應該給你直覺。)
無法區分是有界限的。事實上,如果你允許 $ q $ 提高到 $ 2^n-1 $ 那麼這個概念就不再有趣了;如果攻擊者可以發送除一個之外的所有可能塊值的請求,那麼他可以以機率 1 預測失去的一個:這是他尚未得到的一個輸出。此外,不可區分性不能超出對密鑰空間的詳盡搜尋:如果攻擊者可以嘗試所有可能的密鑰值,那麼他可以尋找與他獲得的輸出匹配的內容。一旦他得到鑰匙,他就可以以機率 1 進行預測。
通常研究密鑰是序列的算法 $ r $ 位(例如 $ r = 256 $ 對於 AES-256)。“窮舉搜尋”攻擊的平均成本 $ 2^{r-1} $ (平均而言,攻擊者需要嘗試一半的鍵才能擊中正確的鍵)。因此,當攻擊者“允許”過多的請求和/或過多的計算能力時,任何分組密碼的安全性都會崩潰。
在實踐中,對於具有 $ n $ -位塊和 $ r $ -bit 密鑰,如果它可以預測具有以下條件的黑盒輸出,我們認為攻擊是“學術上成功的”:
- 攻擊者可以發送 $ q $ 對加密或解密框的請求 $ q \leq 2^{n-1} $ (攻擊者可以獲得“一半的密碼本”)。
- 攻擊者可以花費足夠的 CPU 來計算 $ 2^{r-1} $ 功能的評價。
- 攻擊者還可以訪問 $ 2^{r-1} $ 非常快的 RAM 位。
- 攻擊者預測下一個輸出的機率至少為 $ 3/4 $ .
和 $ 2^{r-1} $ 函式的評估,攻擊者通過簡單的窮舉搜尋的成功和 $ 2^{n-1} $ 請求將是 $ 1/2+2^{-(n-1)} $ (通過搜尋找到密鑰的機率為 50%,如果沒有,則知道下一個輸出將在密碼書中的一半,而攻擊者沒有用他的 $ q $ 初始請求)。因此 $ 3/4 $ 標準:攻擊者必須能夠比這種通用攻擊做得更好。
例如,如果您考慮3DES:塊大小為 $ n = 64 $ , 密鑰大小為 $ r = 168 $ (標准說“192 位”,但算法只是忽略了其中的 24 位,因此對於密碼學家來說,密鑰大小為 168 位)。有一種已知的“中間相遇”攻擊需要 $ 2^{62} $ 儲存位(對於 $ 2^{56} $ 64 位字),計算量相當於約 $ (2/3)·2^{112} $ 3DES的評估,只有2個已知的明文。這種攻擊無法用現有技術實現(儲存需求將非常昂貴,因為我們談論的是數百萬TB的快速 RAM;而且 CPU 需求完全遙不可及,因為它需要的能量遠遠超過人類作為一個整體生產)。然而,這算作休息。從這個意義上說,3DES“在學術上被打破了”。
操作模式將塊密碼變成可以加密和解密幾乎任意長度的消息的東西,而不僅僅是單個塊值。每種操作模式都有自己的要求,特別是對於任何Initialization Vector。例如,對於 CBC,在類似於上述的“黑盒”模型中,加密系統必須隨機、統一地生成 IV 值,其值是攻擊者無法預測的(對 SSL/TLS 的BEAST 攻擊建立在IV 可預測性,即攻擊者可以為下一個請求選擇明文之前知道 IV)。
作為一般規則,當加密數據量超過大約 $ 2^{n/2} $ 塊。這是偽隨機排列開始與偽隨機**函式表現不同的門檻值(排列是單射的:它不會為您提供具有兩個不同輸入的相同輸出;而平均而言,隨機函式不是單射的)。這就是為什麼 AES 定義為 128 位塊,而不是 3DES 64 位塊:在實際情況下給我們足夠的空間。