解密單字母替換密文
我正在閱讀現代密碼學簡介第 3 版(相關部分的 Google 圖書預覽,第 10-11 頁),並且正在努力理解對單字母替換密碼的攻擊方法的描述。
它似乎是字母頻率分析方法的改進版本,無需手動“檢查什麼是有意義的”。一些給定的資訊:
- 英語語言的所有字母都分配了一個值 0-25
- 用於將明文編碼為密文的未知密鑰由 (1) 中字母的隨機 1:1 映射組成。例如 (a -> x, b -> r, c -> o, …)
作者將這種方法描述如下:
我們現在描述一種沒有這些缺點的攻擊
$$ of the manual frequency analysis approach $$. 和以前一樣,將英文字母與 $ 0, …, 25 $ . 讓 $ p_i $ , 和 $ 0 <= p <= 1 $ , 表示頻率 $ ith $ 普通英文 tex 中的字母(例如 0.082)。…$$ using these figures $$給出: $ (1) $ $ \displaystyle \sum_{i=0}^{25} p_i^2 \approx 0.065 $
注意:在哪裡 $ 0.065 $ 與給定英文文本的語料庫相關聯(即可能因來源而異;例如韋伯斯特的字典單詞。)
現在,假設我們得到了一些密文並讓 $ q_i $ 表示密文中第i個字母出現的頻率除以密文的長度。如果鍵是k,那麼 $ p_i $ 應該大致等於 $ q_{i+k} $ 對於所有i,因為第i個字母映射到 $ \left(i+k\right)th $ 信。(我們用 $ i+k $ 而不是更繁瑣 $ \left[I+k \mod 26\right] $ .) 因此,如果我們計算
$ (2) $ $ I_j := \displaystyle \sum_{i=0}^{25} p_i \cdot q_{i+j} $
對於每個值 $ j \in \left {0, …, 25\right} $ ,那麼我們期望發現 $ I_k \approx 0.065 $ (其中k是實際密鑰),而 $ I_j $ 為了 $ j \neq k $ 將不同於 0.065。這導致了一種易於自動化的密鑰恢復攻擊:計算 $ I_j $ 對所有人 $ j $ , 並輸出值 $ k $ 為此 $ I_k $ 最接近 0.065。
我的問題與第二次求和的一般方法有關 $ (2) $ ——我不明白它的價值是什麼 $ j $ 是求和的每一項。是 $ j $ 意味著是一個鍵的第i個術語 $ k $ ? 這樣每個術語在 $ 2 $ 將為每個可能的值計算 $ j $ ?
我了解頻率生成,了解發生了什麼的概念 $ (1) $ 並且找到最接近的 $ q_i $ 至 $ p_i $ 會接近 $ p_i^2 $ 從而實際 $ k_i $ 將最小化 - 從而找到最合適的映射。
然而,考慮到最終計算與初始計算的比較方式,這似乎只是一種蠻力方法 $ 0.065 $ 值,好像每個字母的正確映射都會被考慮在內。
我錯過了什麼嗎?否則,我覺得好像只是按值對每個頻率分佈進行排序,假設密文中存在與源消息空間相同數量的字母(即分佈中沒有可能的間隙)。
該部分不是描述對一般單字母替換密碼的攻擊,而是對移位密碼(凱撒密碼)的攻擊,其中每個字母在字母表中循環推進相同的數量。
這 $ j $ value 表示從 shift 鍵的 26 個可能值中選擇一個,即映射 $ i $ 給的信 $ (i+j) $ th 字母 mod 26。此映射適用於所有人 $ i $ 當我們談論移位密碼時。
對於一般替換密碼,密鑰將是一個排列 $ \pi(x) $ 等效的方法是評估所有 26 個!可能的選擇 $ \pi(x) $ 根據 $$ I_\pi:=\sum_{i=0}^{25}p_iq_{\pi(i)}. $$ 這不是一個簡單的計算,並且需要大量密文才能正確計算 $ q_{\pi(i)} $ 從其他候選人中脫穎而出的價值觀。