對英語(或任何語言)進行詞級頻率分析的可行性如何?
假設我有一些黑盒子,給定任何英文單詞,它會確定性地輸出該單詞的標記。假設我們的黑匣子是使用強密碼學實現的,即將令牌反轉為其單詞的難度可簡化為一些已知假設。
現在,假設我有一個文件語料庫,其中文件是一些英語單詞列表。我通過我的黑匣子執行每個文件中的每個單詞,並創建一個新的文件集標記化文件。然後,我將文件交給一些攻擊者,然後攻擊者執行純密文攻擊,以嘗試猜測文件的內容。
我很好奇這個攻擊者在恢復有關文件的部分資訊方面會取得多大的成功。他將嘗試使用統計攻擊來將標記的頻率曲線擬合到英語單詞的頻率曲線。這可以讓他以較高的可信度猜出更常用詞的原像,但他能猜出不常用詞嗎?他可以使用更高級的攻擊嗎?
可行性很大程度上取決於語料庫的長度。統計數據越多,攻擊者就能做出更好的猜測。
他將嘗試使用統計攻擊來將標記的頻率曲線擬合到英語單詞的頻率曲線。這可以讓他以較高的可信度猜出更常用詞的原像,但他能猜出不常用詞嗎?他可以使用更高級的攻擊嗎?
一旦你知道/猜到了最常見的詞,比如介詞,你就可以嘗試 n-gram。例如,如果某個特定的標記經常出現在“in the”之後,您可以做出一些合理的猜測。查找該令牌出現的其他實例,您可以交叉引用。
實際上,您會以程式方式進行,優化質量函式,其中每個單詞對/三元組/等。會根據這是否是英語中的常見組合來增加或減少分數。
知道確切的字長會顯著減少搜尋空間,但使用 AES 塊長度,您幾乎不會獲得額外的資訊,因為很少有字長於 16 個或 15 個帶填充的字節,您可以放在一個塊中,並且這些可能不會經常出現。至少如果您將 ASCII/UTF-8 用於英語。UTF-16 會對攻擊者有所幫助,例如 UTF-8 German 可能(多字節字元和更長的單詞)。
下一步是嘗試將語法應用於文本,但我不確定它是否會有所幫助。N-grams 已經告訴你可以跟隨什麼樣的詞,例如形容詞。
即使我們假設一個完美的隨機預言機為英文文本的每個單詞生成一個完全隨機的程式碼字,我也同意otus 的觀點,即頻率攻擊和 N-gram 可能能夠解碼最常用的單詞。此外,已知明文攻擊(或更糟糕的是,選擇明文攻擊)會洩露已知明文中每個單詞的程式碼字。
但是,我同意hapax legomenon和其他稀有詞實際上可能無法使用純密文攻擊來解密。
我偶爾聽到有人提到用命名器加密的 16 世紀密文從未被破解: