模仿遊戲 The Imitation Game中P ZQAE TQR 是用什麼密碼譯的?


我實際被邀請回答了另一個問題:《模仿遊戲》中圖靈的那句I LOVE YOU=P ZQAE TQR是怎麼加密的? - 電影。但我挖掘一下之後發現這裡有一個相同的問題。因此我在此進行回答。

其實《模仿遊戲》的這個問題我很早之前就關注了,但是我本來以為只是一個普通電影中的普通加密。但真正看過這個電影后,我決定認認真真地回答一下這個問題。這是近年來普及密碼學知識最棒的一個通俗電影了!電影的拍攝很嚴謹,基本上還原了歷史,當然為了藝術表現,裡面夾雜了一些其他的劇情,這使得電影更加生動,表現力更強。我撰寫答案的目的可能不僅僅是回答問題本身了,同時還想介紹一下Enigma的歷史,以及Enigma,包括電影中反應出的一些密碼學知識。

本答案將分為三個部分:

  • 問題回答:P ZQAE TQR 是用什麼密碼譯的
  • 密碼學安全性概覽
  • 影片中反應出Enigma的歷史及其蘊含的密碼學知識

===============================

1 問題回答:P ZQAE TQR 是用什麼密碼譯的

這個題目只知道明文/密文對,不知道加密的方法。想要知道加密方法,我們需要獲得更多的信息。為此,我看了一遍《模仿遊戲》。其實,Turing在前面也用了一遍這個加密方法,截圖如下:

這個密文的信息量要比問題中給出的更豐富:明文/密文更長,泄露的信息更多。在這個明文/密文對中,我們可以發現每一個明文/密文字母是一一對應的。我們來看一下:

密文:WII CSY ME XAS PSRK AIIOW HIEVIWX JVMIRH
明文:SEE YOU IN TWO LONG WEEKS DEAREST FRIEND

我們可以很容易看出幾個常用字母的對應:

  • 字母E在密文中對應I

  • 字母O在密文中對應S
  • 字母S在密文中對應W

因此,我們可以很容易知道,這是一個單表代換密碼。同樣地,問題中給出的明文/密文對也有類似的規律,截圖如下:

雖然密文很短,但是我們可以看出兩個O在密文中都對應Q。

那麼,什麼叫做單表代換密碼呢?單表代換密碼是做一個映射,這個映射指出每個明文字母對應的密文字母是什麼。解密過程是映射的逆向查找:找到每一個密文字母對應的明文字母是什麼。這種加密方法,密鑰的數量級是:

26!=26 	imes 25 	imes cdots 	imes 1

這是一個密鑰空間非常大的加密方案。實際上,這種加密方案也是Enigma加密過程中的流程之一。這種加密方法有什麼弱點呢?我們可以通過字母頻率分析的方法對這個方案進行破譯。我們知道,英文中字母E出現的頻率最高。因此,我們可以考察密文中那個字母出現的頻率最高,那個字母的明文很可能就對應E。通過猜想,加上英文單詞本身的規律,就可以恢復出明文,同時將密鑰恢復出來。

我想,《模仿遊戲》的導演做過很細緻的工作,其可能知道這個加密方案的弱點。因此我們可以看出,影片中出現的這兩次加密所用的映射是不一樣的:第一個將O映射成S,第二個將O映射成Q。同時,影片中給出的明文/密文對長度很短,這間接防禦了字母頻率分析攻擊。但是由於這種加密本身的弱點,學過一點密碼學的人還是能夠看出加密方法的。

===============================

2. 密碼學安全性概覽

對於一個特定密碼體制的破譯,破譯成功與否實際上與破譯者知道這個密碼的內容多少有非常重要的關係。一般來說,我們可能得到密文的下述有關信息:

  1. 僅知道密文本身;
  2. 知道加密演算法;
  3. 知道一部分明文/密文對;
  4. 破譯者可以獲得多項式個明文在此演算法和私鑰下加密的密文,且明文可以由破譯者選擇;
  5. 破譯者可以獲得多項式個密文在此演算法和私鑰下解密的明文,且密文可以由破譯者選擇;

第1條是最難破解的,甚至一些非常簡單的密碼都很難進行破解。一個簡單的例子是我的一個知乎回答:這串字元什麼意思? - 劉巍然的回答。這是一個典型的僅知道密文本身的攻擊。因為雖然其中有密鑰(153246),但是密鑰已經給出,所以密鑰本身也成為了一個已知信息。對於這類密碼的攻擊,我們需要猜測加密方式。但是,加密方式多種多樣,每種加密方式又有其不同的設定,所以基本可以確定這種解密很大程度上要靠運氣。

一般來說,我們不會對僅滿足第1條的密碼進行破解。實際上,一個密碼學演算法是否安全,並不取決於密碼演算法的保密性,而是取決於密鑰的保密性。因此,破譯密碼時我們一般需要知道加密方式,然後通過加密演算法的漏洞解密密文,甚至恢復出密鑰。

同時具備第1條和第2條,我們稱此種攻擊叫做Ciphertext Only Attack。Wikipedia的定義似乎更加準確(Ciphertext-only attack):

In cryptography, a ciphertext-only attack (COA) or known ciphertext attack is an attack model for cryptanalysis where the attacker is assumed to have access only to a set of ciphertexts.

這種密碼的破解也有很大的難度。一個簡單的例子是我的一個知乎回答:誰能幫忙解密下面一段密碼,某個朋友的exGF寫給他的,對他很重要? - 劉巍然的回答。這是一個典型的Ciphertext Only Attack。題目中已經給出了加密方式:Morse Code。雖然Morse Code本身並不帶有密鑰,但是密文中把Morse Code空格都刪掉了,這使得結果具有多種解密的可能。我們可以片面地理解為這個密碼的私鑰是空格的位置。

同時具備第1、2、3條,我們稱此種攻擊叫做Known Plaintext Attack。Wikipedia的定義如下(Known-plaintext attack):

The known-plaintext attack (KPA) is an attack model for cryptanalysis where the attacker has samples of both the plaintext, and its encrypted version (ciphertext). These can be used to reveal further secret information such as secret keys and code books.

這種密碼的破解就變得簡單了。《模仿遊戲》電影中對於Enigma的破解就是典型的Known-plaintext attack。簡單地說,Alan Turing知道電報中固定位置密文的意思是Wetter(德語中天氣)。這一發現泄露了有關密鑰的部分內容,這使得Turing可以使用自己構造的解密機,在很短時間內恢復出密鑰。

同時具備1、2、3、4條,我們稱此種攻擊叫做Chosen Plaintext Attack。Wikipedia的定義如下(Chosen-plaintext attack):

A chosen-plaintext attack (CPA) is an attack model for cryptanalysis which presumes that the attacker has the capability to choose arbitrary plaintexts to be encrypted and obtain the corresponding ciphertexts. The goal of the attack is to gain some further information which reduces the security of the encryption scheme.

這種攻擊我暫時想不到很好的例子,還請大家補充。

同時具備1、2、3、4、5條,我們稱此種攻擊叫做Chosen Ciphertext Attack。Wikipedia的定義如下(Chosen-ciphertext attack):

A chosen-ciphertext attack (CCA) is an attack model for cryptanalysis in which the cryptanalyst gathers information, at least in part, by choosing a ciphertext and obtaining its decryption under an unknown key. In the attack, an adversary has a chance to enter one or more known ciphertexts into the system and obtain the resulting plaintexts. From these pieces of information the adversary can attempt to recover the hidden secret key used for decryption.

這類攻擊有一個特別典型的應用,就是針對單鑰加密體制密文鏈接模式(Cipher Block Chaining M ode,CBC mode)的Padding Oracle Attack。在我的一個知乎回答:為什麼說密文鏈接模式已經喪失安全性? - 劉巍然的回答中給出了一個詳盡的例子。

現代密碼學一般認為,在Chosen Ciphertext Attack下安全的加密方案是安全加密方案。當然了,近年來也出現了很多新的更嚴格的密碼學方案安全性定義,如Selective Opening Attack, Related Key Attack, Randomness Related Attack等等,有興趣的知乎er們可以看看中國密碼學家劉勝利老師再密碼學報上的Servey:《公鑰加密系統的可證明安全——新挑戰新方法》(密碼學報)。

===============================

3. 影片中反應出Enigma的歷史及其蘊含的密碼學知識

Enigma是第二次世界大戰納粹德國使用的密碼機。Turing破解Enigma催生了現代密碼和計算機理論。毫不誇張的說,Turing是人工智慧的奠基人,實際也是現代密碼學的奠基人。有關這一歷史,劉建偉教授剛剛推出的公開課《密碼的奧秘》是一個比較好的入門材料,有興趣的知乎er們可以聽一下北京航空航天大學公開課:密碼的奧秘。當然了,這門課只是一個概述性質的課。如果深入學習,還是推薦Boneh或者Katz在Coursera上面推出的公開課。

Enigma是由德國發明家亞瑟·謝爾烏比斯首先發明的。由於其早期版本已經被波蘭密碼學家亨里克·佐加爾斯基、傑爾茲·羅佐基和馬里安·雷傑夫斯基初步破解,因此德軍使用的Enigma是改進版本。電影中也還原了這一改進版本的特點(Turing在看到Enigma時自言自語到:一共有10個單表代換字母,轉子個數增加到了5個)。

Enigma的密鑰空間有多大呢?為150,738,274,937,250種,電影中給出的是大概159,000,000,000,000中,基本相近。Enigma最大的特點是,其消除了單表代換密碼中的頻率分析攻擊,這使得Enigma的破解在開始的時候只能採用密鑰窮舉法。也就是影片開始時候提到的,要用20,000,000年才能枚舉所有的密鑰。

電影中還展現了另一個非常重要的信息:德軍的密碼要在一定時間後更新的。更新方法電影中沒有提到,實際是:用原始密鑰加密2此臨時(會話)密鑰,再用會話密鑰加密電文。而且,每隔一段時間(電影中時間點為午夜12:00)更新一次密鑰。這就要求必須在規定時間內找到密鑰,並且在密鑰更新後要重新進行密鑰的搜索工作。至此,波蘭數學家們沒有辦法進行破解了,將其交給英國進行破解。在破解最初,英國人在重複波蘭人的做法,並投入了更多的人力和物力。但我們之前的分析也知道了,這種破譯方法無異於大海撈針…

Enigma的設計,包括其密鑰的使用方法,都有了現代密碼學密鑰管理的雛形:使用主密鑰生成會話密鑰,並通過會話密鑰加密信息。同時,我們可以看到電影中英國也擁有Enigma機器,並且可以隨意拆開查看內部構造。這暗含著加密演算法是公開的:可以通過內部構造知道加密的原理。但是知道也沒有用,不知道密鑰便無法解密。

這裡便體現了Turing的天才之處,Turing的破解基於兩個非常重要的思想:其一是使用機器,而非人力進行破解,這使得密鑰的搜索速度大幅提高,同時也避免了人工計算所可能帶來的錯誤。其二是暗中使用了Known Plaintext Attack進行攻擊,通過這一示例也讓現代密碼學研究者得知,加密演算法的安全性應至少達到Known Plaintext Security。當然了,Turing發明的這個解密機器,代號叫做「炸彈」(這裡感謝 @LilHayah 的指正,英文應叫做Bombe)。下圖是這個解密機器的原型:

可以看出,電影中幾乎完美復現了這個機器。Enigma的破解作用有多大呢?

戰史專家在對二戰的評估中,認為盟國成功破解Enigma密碼機,使戰爭的結束至少提早了兩年。

在第二次世界大戰中,日本其實也使用了密碼機,叫做「紫色密碼機」,或稱「九七式歐文印字機暗號機B型」。這個機器的破譯要比Enigma的破譯簡單的多。紫色密碼機由美國密碼學教父威廉·弗里德曼領導的小組破譯。破解作用有多大呢?

成功破解日軍的紫色密碼機,使美軍取得了中途島海戰的勝利,並獲得了山本五十六所乘飛機航線而將其擊斃。

在影片中還有後面一段:在Turing成功破解Enigma後,Turing阻止告知Enigma已經被破譯,通過統計學方法來選擇性地使用解密信息幫助盟軍取得勝利。這也是一個真實的歷史。實際上,德軍對英國空戰屢次失敗,希特勒曾經懷疑過Enigma是否安全,於是命令德軍對考文垂進行一次空襲實驗。英軍破譯了這一情報,丘吉爾為使德軍相信Enigma未被破譯,決定放棄考文垂。這一空襲成功使得德軍對Enigma的安全性深信不疑,從戰略上說,考文垂的犧牲具有重大的價值。

===============================

以上。


是單表代換密碼應該不會有錯,但題主應該是希望得到一個完整的26個字母的密碼錶,如果不是那種簡單的凱撒密碼或維吉尼亞密碼,僅從7個替換來推的話會很困難。

  考慮到這句話本身的意義,很有可能需要一個密鑰來解,並且這個密鑰是和Alan Turing,Christopher Morcom這兩人密切相關的,比如是Alan Turing對Christopher Morcom的昵稱之類的,如果是這種可能性的話,有英文語境的人也許會比較方便地解答,這點可以參見Quora:https://www.quora.com/How-is-I-Love-You-encrypted-to-P-ZQAE-TQR-in-the-movie-The-Imitation-Game。不過目前的答案中確實也沒有人能給出完整的替換思路。

  我也是解了一下午沒解出來,不過可以提供一種想法:

從如何解密去考慮也許會比直接考慮如何加密要容易,可以想像的是當Christopher Morcom拿到 P ZQAE TQR 這段密文的時候他應該會去回想他以前和Alan Turing互相玩密碼時的種種玩法然後逐一去嘗試,會去拿只有他們之間才知道的關鍵詞作為密鑰去嘗試。因此我們要想像自己就是Christopher Morcom,從Alan Turing那裡拿到了這段密文,我們要怎麼去解密?

  也許電影中的一切其他的片段能夠給出一些提示,比如這本書:


I LOVE YOU

E+7*0=E

I+7*1=P

L+7*2=Z

O+7*4=Q

U+7*(4+2)=R

V+7*(6+4+2)=A

Y+7*(12+6+4+2)=T

P ZQAE TQR


這個看起來像是單字母替代加密,因為空格的位置沒有變。但是為啥I變成P ,E又沒有變就不清楚了。

單字母替代加密規則是這樣的。

x的定義域是A-Z,Y的定義域是A-Z, y=f(x),這是一個一一映射。同時不存在Xi=Yi這種情況


補充一下詳細解密過程:

將英文字母從A到Z按照1-26、27-52、53-78依次替換成數字,可以得出I LOVE YOU為9 12 15 22 5 25 15 21的數列, P ZQAE TQR為16 26 43 1 5 46 43 70的數列, 觀察對應字母之間的和差關係,可得出7 14 28 21 0 21 28 49的關係數列,即其中規律所在。

以重合的字母E(數字0)為線索,向數列兩邊依次遞增,另外由於0所在位置兩邊不對稱,因此右側對應進行合併7+14+28=49,最終得出答案。

以上為個人解答過程,如有不足之處還請指正。


第一條加密不就是把所有字母往後面移了四位么。。。。跟I LOVE YOU 的加密沒有太大關係吧。。。。。。=.=


個人覺得是基於某種簡單的映射關係,因為兩個O對應的密文是相同的,而且不同明文對應的密文還不相同。算了算偏移還不是簡單的凱撒密碼,如果能有多點信息,也許能找到規律。


明密字母對太少沒法分析,應該就是簡單的代換密碼,解密者知道密鑰字罷了


之前用的凱撒密碼 但是這個也太詭異了


推薦閱讀:

Web前端密碼加密是否有意義?
非對稱加密的設計原理是什麼?
可否提供一些「對稱可搜索加密SSE」的具體實現代碼來學習一下?
如何快速有效的記住摩斯電碼?
使用DES加密演算法在解密過程的相關問題?

TAG:電影 | 計算機 | 密碼 | 密碼加密 | 密碼學 |