實踐中的暴力破解性取決於明文的可辨識性?
在我看來(顯然是非專家),對稱加密算法的暴力破解性通常(總是?)表示為“在某某硬體上大約需要 N 時間”。
但在實踐中,如何將數万億次嘗試中的一次嘗試辨識為成功解密消息的“正確的”?這不要求嘗試的結果(即“明文”結果)可以被辨識嗎?
如果是,這是否意味著如果明文不容易被快速辨識(例如 ASCII 編碼的英文散文可能是這樣),暴力在實踐中比這麼多時間更難- 這樣的硬體描述建議?
如果是的話,這是否意味著微不足道的(但未知的)“預加密”,例如 ROT13 或 base-64 編碼會使蠻力攻擊變得更加困難?
如果是,這是否意味著如果明文不容易被快速辨識(例如 ASCII 編碼的英文散文可能是這樣),暴力在實踐中比這麼多時間更難- 這樣的硬體描述建議?
如果明文根本無法辨識(隨機數(來自一個好的生成器)),並且如果攻擊者沒有其他方法來測試它是否是真實數據,那麼你是對的,只是暴力破解解決不了任何問題。
但是,除了好的隨機數之外,對於稍微了解電腦的人來說,什麼樣的數據是無法辨識的呢?沒有文本,沒有圖像,沒有來自已知程序的任何文件格式,沒有來自未知程序的任何文件格式(例如低熵和更多的東西),有時有校驗和作為數據的一部分,等等……
如果是的話,這是否意味著微不足道的(但未知的)“預加密”,例如 ROT13 或 base-64 編碼會使蠻力攻擊變得更加困難?
不,ROT13、數據壓縮和其他預處理步驟(使用不同密鑰的良好加密除外)不會增加安全性。
因為,即使攻擊者不知道預處理步驟(不應該假設,聽 Kerckhoff),也可以很容易地檢測到這樣的事情。例如。帶有 ROT13 的 ASCII 文本仍然是 ASCII 文本(即 AZ),只是不那麼可讀。在嘗試使用 AES 密鑰時獲得主要是英文字母的輸出是不尋常的 => 時間仔細看看它。
我想到的實際情況是使用標準算法(例如 AES)對磁碟上自己的文件進行加密。
讓我們拿一個 1TB 的磁碟。使用 2^128 個鍵,多個鍵導致正常輸出(每個大小為 2^(81024102410241024))的機會非常小。帶有作業系統和音樂的 HDD 的內容以及上面的任何內容都很容易辨識。
事實上,如果您正在加密一個隨機字元串,那麼在嘗試解密後就不可能測試成功。但是,您幾乎永遠不會只加密隨機字元串而不將它們用於任何事情,因此這是不太可能的情況。
通常已知的明文攻擊是較弱的攻擊之一,您的攻擊者甚至沒有得到它。我們真正想要的是我們的系統即使能夠抵禦更強大的攻擊,例如選擇明文攻擊。