Stream-Cipher

CTR nonce 重用中的明文 XOR 可以重建高熵數據嗎?

  • February 12, 2018

(我的興趣是學術性的;我當然無意推出自己的加密貨幣,尤其是已知的破解類型!)

我知道如果隨機數在 CTR 流中被重用,兩個密碼塊可以一起異或以產生明文的異或。從那裡,使用分析(例如搜尋單詞)恢復明文。這使得在實踐中使用的未經身份驗證的記憶體加密對於可以編輯計數器和触發重用的人來說是不安全的。

但我的理解是,這種分析是通過樣本明文的非常低的熵來實現的——通常的例子是英文文本或點陣圖圖像,它們只使用了塊資訊容量的一小部分。

由於此時 txt 文件和點陣圖是遺物(不過,很容易在 OS 文件中找到),攻擊者還能從現代數據格式的高熵明文的 XOR 中恢復密鑰嗎?

特別要考慮使用 zip(弱壓縮)壓縮的 .docx,以及有損壓縮的圖像或影片(高熵,但它們包括結構和標題,即使嚴重損壞也很有用)。

如果 nonce 被多次重用,給攻擊者更多的資訊會怎樣?我感覺可能存在一些數學限制,例如最佳情況明文恢復至少需要 1-(1-(entropy/Shannon_limit))^number_of_pairs>entropy/Shannon_limit。

但不知道這是否成立,或者是否有技術可以從一般情況數據的 XOR 而非特定類型(如自然語言)中重建明文。

CTR 模式下的分組密碼只是流密碼。您有一個與隨機無法區分的比特流(假設關於分組密碼的好東西),並且您使用明文對該流進行異或。

當你重用流時會發生什麼?它允許攻擊者獲取他們對一個明文的知識並使用該知識來公開有關另一個明文的資訊。如果您將全零加密為明文(或攻擊者完全知道的任何消息),則攻擊者知道流並且可以完美地解密第二條消息,無論該消息是什麼。如果,對於流的重用部分,您加密了兩個不同的完全隨機和秘密的位串,那麼攻擊者將了解位串之間的關係, $ M_1 \oplus M_2 $ 但僅此而已。

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