Cryptanalysis

破解簡單手密碼的可能方法?

  • July 18, 2018

我們今天在課堂上有一個測驗,我們必須用給定的密鑰破解密文,而不是算法。可以說我無法在 12 分鐘的分配時間內解密它,並且可能會在測驗中獲得 0% 的分數。

所以,我只是想知道在解密簡單的替換密文時是否遵循某種標準技術。

在嘗試破解未知密碼時,首先需要弄清楚它是哪種密碼。一般來說,一個好的起點是從最常見和最知名的經典密碼開始,消除那些明顯不適合的密碼,然後嘗試剩下的密碼,看看它們中的任何一個是否可行。

顯而易見的第一步是查看密文字母表:密文是由字母(如果是,在什麼字母表中)、數字、抽象符號或它們的某種組合組成?如果是字母,它是否包含空格、標點符號或大小寫區別——如果包含,它們看起來是否也以某種方式被打亂了,或者它們可能只是保留在明文中?

編譯密文的字母(或符號)頻率表,並將其與對應的純英文文本表進行比較,通常可以得出有關密碼的一般類型的資訊:

  • 如果密文是用字母寫的,並且它們的頻率或多或少與純英文文本的頻率相匹配(廢話片語ETAOIN SHRDLU很容易記住這一點),那麼您可能正在處理轉置密碼。(如果最常見的字母不完全匹配,但對於自然文本來說仍然是合理的——主要是元音和一些簡單的輔音——它可能是其他語言中文本的換位。)
  • 如果秩-頻率分佈看起來與普通英語的相似,但字母顯然是亂碼的(例如,最常見的字母是G,XQ不是E,TA),則密碼很可能是單字母替換(可能與轉置結合)。
  • 如果頻率分佈比自然語言的預期更接近均勻,那麼您可能正在查看多字母替換密碼。憑藉經驗(和足夠的密文),人們甚至可以僅根據頻率分佈猜測最可能的密碼。

知道密碼是否有密鑰,以及密鑰採用什麼形式(單詞、數字、數字序列等)也有助於減少可能性的範圍。例如,假設密文是沒有空格或標點符號的大寫字母,並且我們知道它有一個密鑰,它是一個單詞或一個片語。這大大縮小了可能的選擇範圍:

由於您已經知道密鑰應該是什麼,因此測試每個密碼應該非常簡單:只需嘗試使用密鑰解密消息並查看輸出是否有意義。

請注意,在某些情況下,可以在密碼之間共享工作量。例如,消息開頭的 Vigenère 和 autokey 密碼是相同的;當到達關鍵字的末尾時,它們才開始表現不同。嘗試這些密碼的簡單變體也可能是一個好主意,例如切換加密和解密規則;其中一些在兩個方向上都同樣有效,並且可能已被如此使用。

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