Encryption

當我有唯一鍵時,為什麼要使用初始化向量 (IV)?

  • November 7, 2017

我看了看“為什麼或何時使用初始化向量?” 但我的問題不一樣。

我有加密每個明文的唯一密鑰(在 CBC 模式下,AES-256),並且我不使用密鑰來加密多個明文。在這種情況下使用空 IV 是否不安全?如果不安全,為什麼?

警告:正如在另一個答案中非常正確地指出的那樣,使用固定/無 IV 確實使一些攻擊變得不那麼困難。我希望下面的答案不會那麼肯定。我相應地對斜體進行了調整。

當使用唯一鍵時,沒有對 IV 的迫切需要。鑑於使用了 256 位密鑰密碼,建議的內容是安全的。

當每個密鑰僅用於加密單個消息時,對所有消息使用 null IV 是相當安全的(從機密性的角度來看)。對於所有需要 IV 的常見模式,這是慣例。它避免了生成 IV 並傳輸它的需要,並且(在 CBC 的情況下)與它執行第一個塊的 XOR。

為什麼?直覺地說:隨機(或其他適當的)IV主要是為了使相同的輸入/輸出對(在塊密碼級別,並使用相同的密鑰)在兩個不同消息的加密過程中不太可能發生,即使是一個熊與其他的一些關係(包括但不限於:從相同的第一個塊開始)。當只有一條消息時,這種需求就消失了。更正式地說,當每個密鑰只有一條消息時,CBC(和其他安全模式)的基本(非定量)安全性證明在沒有 IV 的情況下仍然成立。

另一方面,通過不使用隨機 IV,在某些設置中,給對手相同的已知明文塊,用不同的密鑰加密(在 CBC 中,如果每個明文的第一個塊是已知常數,情況就是這樣) ; 這將窮舉密鑰搜尋的試驗加密次數減少了一個因子(更糟)等於數量 $ n $ 的鑰匙。這很糟糕,但有一些緩解因素:

  • 攻擊只找到其中​​一個 $ n $ 密鑰,以及相應的明文;當這些是獨立的(例如,不同的照片儲存在不同的密鑰下),恢復某個明文的預期試驗加密次數與隨機IV相同。
  • 攻擊需要搜尋已知明文的每次嘗試加密的結果 $ n $ 價值觀。儲存密文塊並在其中高速搜尋的非平凡設備的投資和運營成本隨著 $ n $ (至少記憶體容量與 $ n $ ).

注意:每個鍵設置的單個消息使 CBC、PCBC、CFB 的每個鍵限制的總消息長度保持不變:那就是 $ 2^{(b+1-k)/2} $ 塊小於 $ 2^{-k} $ 使用 $ b $ 位分組密碼。在每個鍵設置的單個消息中,OFB 和 CTR 的限制顯著提高。

引用自:https://crypto.stackexchange.com/questions/8600