Encryption

壓縮比側通道

  • February 3, 2022

我正在處理 matasano 加密挑戰,我進入了第 7 集,他們描述了對加密/壓縮預言機的攻擊。我很難理解這些攻擊,更何況是攻擊背後的邏輯,並且很難找到任何關於它的論文。如果有人知道這種類型的攻擊及其工作原理,如果有人能解釋一下,將不勝感激。

作為參考,這裡是挑戰的連結:http ://www.cryptopals.com/sets/7/challenges/51

壓縮比側通道攻擊

Internet 流量通常被壓縮以節省頻寬。直到最近,它還包括 HTTPS 標頭,並且仍然包括響應的內容。

為什麼這很重要?

好吧,如果你是攻擊者:

  1. 部分明文知識和
  2. 部分明文控制和
  3. 訪問壓縮預言機

你有一個很好的機會來恢復任何額外的未知明文。

什麼是壓縮預言機?您給它一些輸入,它會告訴您完整消息的壓縮程度,即結果輸出的長度。

這有點類似於我們在第 4 組中所做的定時攻擊,因為我們正在利用附帶的側通道而不是攻擊加密機製本身。

場景:您正在執行 MITM 攻擊,目的是竊取安全會話 cookie。您注入了惡意內容,允許您生成任意請求並在飛行中觀察它們。(細節不是很重要,隨它去吧。)

所以!寫下這個預言:

oracle(P) -> length(encrypt(compress(format_request(P))))

像這樣格式化請求:

POST / HTTP/1.1
Host: hapless.com
Cookie: sessionid=TmV2ZXIgcmV2ZWFsIHRoZSBXdS1UYW5nIFNlY3JldCE=
Content-Length: ((len(P)))
((P))

(假裝你看不到那個會話 ID。你是攻擊者。)

使用 zlib 或其他方式進行壓縮。

加密……實際上與我們的目的無關,但要成為一項運動。只需使用一些流密碼。經銷商的選擇。每次呼叫預言機時隨機鍵/IV。

然後以字節為單位返回長度。

現在,這裡的想法是使用壓縮庫洩漏資訊。“sessionid=T”的有效載荷應該比“sessionid=S”壓縮一點點。

有一個複雜的因素。DEFLATE 算法根據單個位進行操作,但最終的消息長度將以字節為單位。即使您確實找到了更好的壓縮方式,差異也可能不會跨越字節邊界。所以這是個問題。

您可能還會得到一些偶然的誤報。

但別擔心!我對你充滿信心。

使用壓縮預言機恢復會話 ID。

我會等。

知道了?偉大的。

現在將您的流密碼換成 CBC,然後再做一次。

這是基本的想法。理想情況下,加密會隱藏有關加密數據的所有資訊。但在實踐中,這並不完全正確:加密揭示了加密數據的大小,至少在幾個字節內。例如,假設您知道答案是“是”或“否”,並且您看到以下使用 AES-CTR 加密的消息:

82a801950ca7aaeea0685afc86b44b70 15c0

你知道這是一個兩字節的消息(加上 16 字節的 IV),所以它是“否”。

現在假設您有一個固定大小的消息(或者更一般地說,攻擊者知道大概大小的消息,因為它是由協議給出的),但它在加密之前被壓縮。壓縮利用消息中的冗餘。因此,如果加密消息比明文的預期大小小很多,則意味著消息高度冗餘;如果加密消息與明文的預期大小一樣大,則意味著消息具有低冗餘。

低/高重複本身通常對攻擊者沒有意義。但是如果攻擊者可以在消息中註入一些文本呢?然後加密壓縮消息的大小揭示了攻擊者註入的部分和機密部分之間的冗餘。現在有破壞性攻擊的空間。

在密碼學中,更一般地在計算研究中,預言機是一個接收輸入並產生輸出的黑匣子。沒有預言機,可能無法獲得預言機的輸出。在密碼學中,一種常見的預言機是知道攻擊者沒有的密鑰的預言機,但預言機只會以某些特定的方式做出響應,而不會洩露密鑰。例如,一個基本的加密預言機願意加密任何明文但不會解密任何內容,從而允許嘗試執行選擇明文攻擊

在這個挑戰中,你被要求研究一種特殊的加密預言機,它將送出的明文與一些固定的機密文本結合起來,並壓縮整個消息。通過送出大量不同的部分明文,並根據送出的明文測量整個消息的長度如何變化,攻擊者可以獲得有關固定機密部分的資訊。例如,送出aaaaaaaabbbbbbbbcccccccc等並查看壓縮長度如何變化,以粗略了解機密部分中有多少個a‘s、bcs 等。重複使用 digrams、trigrams 等。如果機密文本是某種密碼 $ P $ ,這可以將指數攻擊(嘗試所有可能的已知長度的密碼)變成線性攻擊(找出第一個字元,因為它是字元 $ c $ 為此 $ c^n P $ 給出最佳壓縮,然後對每個後續字元重複)。

其基本原理早已為人所知。在John Kelsey 2002 年的論文“明文的壓縮和資訊洩漏”中提到了這一點。但很少有人想到具體的應用,直到它被廣泛宣傳為對 TLS 的 CRIME 攻擊。CRIME 利用壓縮的 TLS 流,其中包含固定的機密部分(網頁的 cookie)和不同的攻擊者選擇的部分(例如,進行回調的注入廣告)。如果您瀏覽 CRIME,您會發現很多關於該主題的文獻,包括Thomas Pornin在攻擊發布之前的詳細文章。

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