Encryption

CBC模式下選擇明文攻擊(CPA)下語義安全的實際必要性

  • May 11, 2022

我無法理解為什麼我們實際上需要密碼塊鏈中的 CPA 安全性,它堅持使用隨機 IV。假設加密不是 CPA 安全的,即攻擊者可以辨識兩個密文相同並得出結論這兩個明文相同。這些資訊對對手有什麼用?我看到他能夠知道兩個消息是相同的,那又如何?我認為他找不到明文。

換句話說,CPA安全是嚴格的安全的學術定義。實際上,攻擊者是否可以從中提取明文?

將相同的消息反復加密成相同的密文充滿了實際的攻擊。加密應該不會洩漏除消息長度之外的有關消息內容的任何資訊,並且有非常真實的方法可以利用您提到的資訊洩漏。其中一些與純文字域並不總是很大的事實有關。其他人則與這樣一個事實有關,即可以執行選擇的明文攻擊 (CPA) 的攻擊者可以了解很多關於密文的資訊。

以下是一些攻擊,假設我們使用確定性(因此在語義上不安全)的類似 CBC 的加密方案:

  • 如果攻擊者看到消息 A 的加密,然後再學習消息 A,那麼他就可以知道消息 A 在過去或將來發送的任何時候的內容。如果可以發送的總消息相當小,那將是一個非常現實的威脅。

    • **範例:**考慮一支軍隊,該軍隊通過向對方發送關於誰將移動到哪裡的指令來協調移動。攻擊者可能能夠對截獲的加密通信進行編目,然後根據消息發送後發生的情況確定消息的含義。當一條重複的消息被截獲時,他們將知道上次發送消息時發生了什麼,從而知道這次發送消息時可能發生的情況。
  • 以相同方式開始的明文將具有以相同方式開始的密文。即使兩個密文不匹配,它們中的某些前綴也可能匹配。如果他們這樣做了,知道一個密文的內容可以導致知道另一個密文的開始。雖然這與前一種情況沒有太大不同,但這意味著問題比簡單地擁有相同的密文要糟糕得多*,它擴展到以相同方式開始的密文。*

    • **範例:**考慮一種文件樣式,其開頭帶有一個人(Alice)的辨識資訊。即使兩個文件內容不同,攻擊者仍然會知道這些文件屬於同一個人。如果 Alice 曾經向攻擊者發送過一份文件,他就會學習如何辨識由她加密的文件。如果其中一個文件是從另一個人 (Bob) 的電腦中恢復的,那麼攻擊者就會知道 Alice 很可能與 Bob 進行了通信。有關文件內容的資訊應在加密下保持機密,否則即為加密失敗。
  • 明文的小域也有可能與密文的上下文配對並揭示資訊。

    • **範例:**考慮一個像 SSH 這樣的程序,它傳輸使用者鍵入的內容,一次發送一小組加密的擊鍵。我們可能的密文數量有限,因為每個密鑰每次都映射到相同的密文。如果每組消息都是獨立的(在擊鍵間隙沒有密文連結),那麼攻擊者可以使用頻率分析來確定哪個密文映射到哪個鍵。然後,他們可以很好地了解使用者輸入的內容。如果每條消息都是獨立的,那就更糟了,在這種情況下,它將是歐洲央行。(如果不是很明顯,請注意確定性 CBC 與 ECB 有相似的味道。)
  • 攻擊者可能能夠將選定的明文注入實時系統並查看生成的密文。(這是一種非常真實的攻擊,我們必須能夠承受,也是我們考慮選擇明文攻擊的動機。)然後他可以通過簡單地找到加密為已知密文的明文來暴力破解其他密文。明文域越小,就越容易。

    • **範例:**銀行可能會在密文的一個塊中加密交易中涉及的金額。攻擊者可能能夠進行自己的交易並確定哪些數字加密為哪些密文,然後能夠了解其他密文。

(顯然,這些範例中的特定玩家是任意的,您可以將它們換成其他任意數量的情況。)

主要問題是我們不知道消息將如何格式化以及它將包含什麼樣的內容,並且很可能選擇會通過加密密文洩漏資訊的格式和內容。加密應該起到保護您提供的所有資訊的作用,並讓一些邊緣情況容易受到攻擊,並告訴使用者只有在他們採取額外預防措施以避免這些邊緣情況時它們才是安全的,這是不可接受的。沒有人願意為邊緣情況使用不安全的東西(尤其是在可以選擇消除這些邊緣情況漏洞時)。這就像你的房子在任何事情上都很穩定,除非你砰的一聲關上浴室的門,廚房的天花板就會掉進去。誰想要那個?

密碼學不僅涉及消息的機密性,還涉及有關消息的資訊的機密性。給定密文,攻擊者不應該能夠在不知道密鑰的情況下確定有關消息的任何資訊。

如果你能判斷出消息 A 等於消息 B,那就是資訊洩露。這在嘗試辨識消息類型時可能很有用,尤其是在可預測的協議中。當您考慮重放攻擊和側通道攻擊的可能性時,它也會帶來問題。

當您知道明文和密文時,對密鑰的攻擊會變得容易得多。如果您有一個已知的可能明文列表,則可以確定哪個對應於特定密文,因為密碼的輸出始終由明文和密鑰確定。如果使用 CBC,則消息在流中的位置和 IV 會起作用,因此無法找到哪個明文與哪個密文相關聯。

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