Encryption

按鍵上的蠻力

  • June 3, 2015

如果你在暴力破解一個鍵並嘗試數万億連擊,你怎麼知道你什麼時候不小心擊中了正確的答案?顯然,您無法查看每個解碼的答案以查看哪個“看起來正確”。

如果對明文知之甚少,這只是一個問題。如果明文是完全隨機的,則您沒有區分符,因此您無法檢測到您是否中了大獎。如果您確實有關於明文的資訊,那麼不需要很多資訊來查看您是否擁有正確的密鑰。而且通常有很多已知的資訊。

在 CBC 模式下採用分組密碼。如果您知道並找到完整的純文字塊,那麼您可以相對確定您找到了密鑰。您只是相對確定,因為您只找到了由密鑰塊密碼定義的排列的一種關係。如果您有 AES-256(塊大小 128 位,密鑰大小 256 位),那麼有很多排列共享這種關係。但是,如果您有多個塊,則查找其他匹配項將很快消除所有其他可能性。假設您有 25% 的把握在一次可能的匹配之後找到了每個塊的密鑰。然後在匹配你的 4 個塊之後 $ 1 - {3 \over 4} * {3 \over 4} * {3 \over 4} * {3 \over 4} = 68% $ 確定你找到了鑰匙。

知道完整的明文塊並不像聽起來那麼奇怪。通常有很多可用的元資訊。以 Word 文件為例。對於普通文本文件,您已經可以開始尋找有效的英文文本。但是,如果我在 Word 文件中不輸入任何文本並保存它,我有 $ 3356 / 16 = 210 $ 要比較的純文字塊,這些塊的內容在 ISO 標準中定義。即使不是這樣,我也很確定它很容易與隨機數據區分開來(因為微軟非常擅長 <span><span><span>repetition</span></span></span>)。

上面的場景顯示了一個重要的原因,即密碼不能容易受到已知的明文攻擊:在大多數情況下,攻擊者知道很多明文,因為數據是明確定義的。

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