Encryption

如何使用已知的部分明文攻擊經典密碼?

  • May 28, 2015

我有一個由經典密碼生成的密文。我不知道用來生成它的密碼是什麼。但是,我確實有明文的開頭。

  • 經典密碼的密碼分析方法是什麼?
  • 您如何建議在這種情況下嘗試恢復明文?
  • 如何利用已知的明文攻擊密碼?

我有這個密文:

NUVRRIEZWBRVRFFAPUUKFVRYNQBCINHZKNETUVDVUMRTEANPAFIELBPOANIXLCMEZQETKDKVWBMNCTRVUMRFNTFDGWRUMCSCTHSGKDULRFCNABNCGSNMMGRFNTLOWQRBETZRMUBQYURFRFASANGPEQRFFAFCZACAZCTUBTHKUNEZHPPWSGPNABHZKZQNREANLCHUCZDLMLPUNTMNETDAUINQADUNSUMGETETHFBNMNNONTFBBPOQEMZPETEQUIDTHKNABKDZWBDBRZUSRASUMNIRARETETHFBZKRHPNQFAKRICMGETMULCTCULSLGBIVWBDBIEMUFCUVNUGPINFBQTMPNUMSRNNANTNANCMNNTFUMUKRILRFFAPUUKFVRYNTCMETNUVFWDABBRFNRIEFRFNTHGPUHPNKCILEGBUTWUSCPQSLMNIBWQINFBQTFAVRLCKRHKLZNFAZLSNTBDBEASTD

它以部分明文開頭:

事實證明

我沒有解決方案,但我研究了密碼足夠長的時間來確定它不是簡單的經典密碼之一。這種方法應該讓你開始。

您要做的第一件事是將文本轉換為數字,因為許多經典密碼都是基於數學的(或者至少在數學上很容易表示)。使用 $ A=0 $ , $ B=1 $ , $ \ldots $ ,密文為:

{13,20,21,17,17,8,4,25,22,1,17,21,17,5,5,0,15,20,20,10,5,21,17,24,13,16,1,2,8,13,7,
25,10,13,4,19,20,21,3,21,20,12,17,19,4,0,13,15,0,5,8,4,11,1,15,14,0,13,8,23,11,2,
12,4,25,16,4,19,10,3,10,21,22,1,12,13,2,19,17,21,20,12,17,5,13,19,5,3,6,22,17,20,
12,2,18,2,19,7,18,6,10,3,20,11,17,5,2,13,0,1,13,2,6,18,13,12,12,6,17,5,13,19,11,14,
22,16,17,1,4,19,25,17,12,20,1,16,24,20,17,5,17,5,0,18,0,13,6,15,4,16,17,5,5,0,5,2,
25,0,2,0,25,2,19,20,1,19,7,10,20,13,4,25,7,15,15,22,18,6,15,13,0,1,7,25,10,25,16,
13,17,4,0,13,11,2,7,20,2,25,3,11,12,11,15,20,13,19,12,13,4,19,3,0,20,8,13,16,0,3,
20,13,18,20,12,6,4,19,4,19,7,5,1,13,12,13,13,14,13,19,5,1,1,15,14,16,4,12,25,15,4,
19,4,16,20,8,3,19,7,10,13,0,1,10,3,25,22,1,3,1,17,25,20,18,17,0,18,20,12,13,8,17,
0,17,4,19,4,19,7,5,1,25,10,17,7,15,13,16,5,0,10,17,8,2,12,6,4,19,12,20,11,2,19,2,
20,11,18,11,6,1,8,21,22,1,3,1,8,4,12,20,5,2,20,21,13,20,6,15,8,13,5,1,16,19,12,15,
13,20,12,18,17,13,13,0,13,19,13,0,13,2,12,13,13,19,5,20,12,20,10,17,8,11,17,5,5,0,
15,20,20,10,5,21,17,24,13,19,2,12,4,19,13,20,21,5,22,3,0,1,1,17,5,13,17,8,4,5,17,5,
13,19,7,6,15,20,7,15,13,10,2,8,11,4,6,1,20,19,22,20,18,2,15,16,18,11,12,13,8,1,22,
16,8,13,5,1,16,19,5,0,21,17,11,2,10,17,7,10,11,25,13,5,0,25,11,18,13,19,1,3,1,4,0,
18,19,3}

明文(假設消除了空格,您可以使用包含作為附加字元的空格重新執行該過程)是:

{8,19,19,20,17,13,18,14,20,19,19,7,0,19}

如果 $ p_i $ 成為 $ i^\mathrm{th} $ 明文字元(0 到 25 之間的整數)等 $ c_i $ . 許多經典密碼將明文字元一對一地映射到密文字元。換句話說,價值 $ c_i $ 只取決於 $ p_i $ 和一些關鍵人物 $ k_i $ . 首先考慮一個加密方案,如: $ c_i=p_i + k_i \mod 26 $ . 既然我們知道 $ p_i $ 對於前幾個值,我們可以計算 $ k_i $ 將會:

{5,1,2,23,0,21,12,11,2,8,24,14,17,12}

把它放到一個圖表中,第一行是明文,第二行是密鑰,第三行是密文,我們就可以開始分析了。

$ \begin{array}{llllllllllllll} 8 & 19 & 19 & 20 & 17 & 13 & 18 & 14 & 20 & 19 & 19 & 7 & 0 & 19 \ 5 & 1 & 2 & 23 & 0 & 21 & 12 & 11 & 2 & 8 & 24 & 14 & 17 & 12 \ 13 & 20 & 21 & 17 & 17 & 8 & 4 & 25 & 22 & 1 & 17 & 21 & 17 & 5 \end{array} $

密鑰不是相同的值,排除了 Ceaser 密碼。作為字元的密鑰不是英文(FBCXAVMLCIYORM),它似乎沒有重複,並且將相同的密鑰應用於下一個密文塊解密為垃圾(AZNXUPTKPQPCKQ)。由於這些原因,它不太可能是 Vigenere 密碼。相同 $ p_i $ 並不總是映射到相同的 $ c_i $ 值(例如,19 映射到 20、21、1、17、5),所以它不是一個簡單的替換密碼。最後,如果對明文值和密文值進行排序,它們不是相似的整數集,因此不太可能是置換密碼。

我還對密文做了頻率分析:

頻率分析

它告訴我們兩件事:它類似於英文文本並且沒有 j。如果您熟悉經典密碼,那麼特別有一個將 i 和 j 混為一談:Playfair 密碼

這應該足以讓你開始。

正如另一張海報正確指出的那樣,這是一個 Playfair 密碼。即使沒有已知的明文,這裡的“playn”程序 也會在不到一秒的時間內給出正確的文本。(你可以自己編譯,它使用英語的二元統計)

我執行它,結果如下:

IT XT UR NS OU TX TH AT OR IG AM IX IS AB RI LX 
LI AN TW AY TO UN DE RS TA ND GE OM ET RY HE SA 
YS AN DI FY OU ST AR TX TO TH IN KA BO UT PA PE 
RF OL DI NG TH ER EA RE LO TS OF TH IN GS YO UC 
AN XN OT DO WI TH TH EM ET HO DS TH AT HA VE BE 
XE NT AU GH TI NS CH OX OL SR EA LX LY SI NC ET 
HE GR EX EK SF OR IN ST AN CE TR IS EC TI ON OF 
AN AN GL EU ST US IN GA CO MP AS XS AN DS TR AI 
GH TE DG EY OU CA NX NO TC ON ST RU CT AN AN GL 
EW HI CH IS AT HI RD OF AN OT HE RA NG LE BU TY 
OU CA ND OT HA TW IT HO RI GA MI SO IT SQ UI TE 
IN TE RE ST IN GT OT HI NK TH AT OR IG AM IX IN 
AP AN IT MA YB EA CU LT UR AL TH IN GF OR CH IL 
DR EN BU TN OW PE OP LE ST UD YO RI GA MI AT XT 
HE HI GH ES TL EV EL IN AC AD EM IA 
score: 11.557203
keysquare: XYZVWRINTUCDEABHKLFGPQSMO

明文X在每兩個連續的相同字母之間添加一個。這些是在加密之前添加的(以避免任何由相同字母組成的二合字母),並且應該在解密後刪除。X(只有當相同的字母落在同一個有向圖上時,變體才會添加這些es。)

所以正方形(至少是等效的正方形之一)看起來像

TURIN
ABCDE
FGHKL
MOPQS
VWXYZ

因此,它基於一個短關鍵字,其中 TURIN 作為唯一字母按順序排列。如果您知道或猜到 X 用於所有相同字母對之間的事實,那麼從純文字中可以相對容易地找到這個正方形;Playfair 的一個強烈提示是,當您寫出已知明文的對應關係(帶有額外的 X)時:

IT XT UR NS OU TX TH AT
NU VR RI EZ WB RV RF FA

我們有 XT 對應於 VR,TX 對應於 RV:Playfair 加密的典型症狀。RF(純 TH)是最常見的二元組,這一點也很好。一般來說,二元統計會以這種方式揭示(一種)Playfair(沒有雙字母,非平坦頻率)。

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