Encryption

如何用太多符號打破諧音替換和命名符?

  • November 25, 2020

早期試圖阻止對涉及使用諧音替換的密碼的頻率分析攻擊,即,一些字母映射到多個密文符號。

最早的已知例子,從 1401 年開始,如下所示:

諧音替換 $$ Source: “Quadibloc” cryptography blog $$

一種變體是命名器,其中程式碼字用於替換許多常見的單詞和名稱。下面的例子被蘇格蘭瑪麗女王在 1586 年使用。

蘇格蘭瑪麗女王密碼

$$ Source: Simon Singh $$

根據維基百科,

到 18 世紀後期,當該系統開始消亡時,一些命名者有 50,000 個符號。

隨著使用的符號數量增加,破解這些密碼的最佳方法是什麼?

關於問題的第一部分,我將連結到我過去寫的另一個答案: 為什麼同音字不隱藏多字母模式?

摘要:如果您調整頻率以使每個符號的可能性相同,則可以使用二元組進行頻率分析,因為它們不會是均勻分佈的。語言的結構比單個符號的頻率複雜得多。

第二個可能更容易破解:假設您知道使用了這種密碼。英語中最常見的單詞列表應該很容易生成。然後只需選擇任意明文併計算頻率。當您將最常見的單詞視為一個符號時,它將在某種程度上改變其他字母的頻率,但最可能單詞的符號介於字母表中最可能的符號之間。

要進一步改進此過程:

  • 看看二元頻率。如果您考慮*(of, the)*的符號,那肯定是這種密碼中最有可能的二元組之一。

  • 添加越來越多的單詞作為單個符號沒有任何意義:語言與單詞非常非常不統一。請參閱Wikipedia 上的這些列表以獲得一個想法:

    • 在“電視列表”中,首先是 $ 1,222,421 $ 很重要,第 1000 位是最差的 $ 2276 $ . 這是一個因素 $ 537 $ 倍高。總數為 $ 29,213,800 $ 對於那個列表。
    • 在“Project Gutenberg 列表”中,首先與 $ 56,271,872 $ 每十億個單詞,第 1000 個是名字 $ 79,366.6 $ 每十億字。這是一個因素 $ 709 $ 在那些頻率。
    • 在第一個列表中,第 1000 個單詞有頻率 $ \approx 0.0000779 $ ,在第二個列表中是 $ \approx 0.0000794 $ . 因此,如果您將每個單詞視為單個符號,這就是頻率。如果你使用多個普通字母表的符號來表示其他單詞,這個特殊單詞的出現頻率會更少。

在命名器上,也存在問題:由於您為每個單詞分配一個符號,如果您更改鍵,則需要更新雙方的整個列表。

頻率分析不僅可以應用於單個字母,也不能同時隱藏所有自然語言模式。這使得替換密碼非常弱,特別是如果您對多個非常短的消息使用相同的密鑰(在命名器中,這是整個列表)。

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