防止誤操作,德軍規定將這3個字母重複打一遍,這3個字母就會被轉換成其它6個加密字母。
然後,傳送者將轉子重新設定為這3個字母,再依次輸入明文得到密文,即每次發報都先用每日金鑰生成一個資訊金鑰,再用這個資訊金鑰加密明文,並將這6個字母的金鑰附加在密文前面傳送給接收方。
接收方將資訊解密時,首先按照密碼本中的“每日金鑰”設定好,然後輸入密文中的頭6個字母。由於反射器的巧妙作用,明文輸入得到密文,密文輸入得到明文,這樣就得到這6個加密字母的明文,即傳送者的3個字母的“資訊金鑰”。
然後,接收方再將轉子設定為這個資訊金鑰,再依次將密文輸入密碼機,就可以得到解密後明文了。
“ 這個步驟有兩處缺陷,”宋鴻飛緩緩地道,“首先,傳送者需要將資訊金鑰固定附加到密文開頭,這就使第三方能夠得知這6個字母就是密碼——即3個轉子的設定。第二,這6個字母出現了連續重複輸入,這在密碼學上是一個嚴重的錯誤。”
宋鴻飛知道,正是利用了這個弱點,波蘭總參謀部密碼局早在30年代初就破譯了大量的德軍恩尼格瑪系統密電。
這裡有個相當有趣的事情,當時一戰戰勝國英國、法國對被凡爾賽條約限制的德國沒有足夠的重視,面對德國的新型密碼機他們淺嘗輒止之後一籌莫展,很快就放棄了破譯。但對於被夾在德國與蘇聯這兩個對它虎視眈眈的強鄰中間的波蘭,情報是關乎國家生死存亡的大事,亡國的極大恐懼產生了極大的動力,波蘭在軍事上毫不起眼,在密碼分析方面卻是頗有建樹。
波蘭先是想方設法搞到了一臺商用的ENIGmA密碼機,弄清楚了它的原理。後又從法國手中搞來了德國密碼通訊機構中的內賊出賣的有關ENIGmA密碼機的工作原理、轉子內部線路和操作守則資料,從而複製出了軍用的密碼機。
重複乃密碼大敵,ENIGmA密碼機最明顯的重複就是每條密文開頭由三個字母的資訊金鑰連續重複兩次加密而成的六個字母,波蘭密碼專家正是以此為突破口。
宋鴻飛道:“這開頭的6個密文字母,第1個和第4個字母都是由同一個明文字母加密而來。同樣的,第2個和第5個、第3個和第6個也是如此。這個‘多打一遍’看似要求嚴謹的操作,卻形成了重複的明文和密文對照組合。”
俞大維靜靜地聽著,陷入沉思。
他雖然對德國恩尼格瑪密碼機有所瞭解,也曾驚歎它的先進和巧妙設計,但卻從未曾像宋鴻飛這樣深入地分析過。
“傳送者設定好‘每日金鑰’後,我們假設他任意鍵入的‘資訊金鑰’為xYZ這3個字母。”宋鴻飛一邊思索著,一邊用粉筆在俞大維辦公室裡一塊黑板上寫寫劃劃,“連續鍵入兩次xYZxYZ,假設得到GANdER這6個密文。”
“第一個密文字母G和第四個字母d是同一個明文x經過轉子3次轉動後得到不同的加密結果。它的本質是字母替換,把這個替代關係用函式fn表示,即轉動加密一次之後的替代關係用f1表示,轉動兩次就是f2,依此類推。”
“xYZ兩次加密,可記作:
x(f1)=G,
Y(f2)=A,
Z(f3)=N,
x(f4)=d,
Y(f5)=E,
Z(f6)=R,
恩格瑪機有一個非常重要的特性——它是自反的,如果輸入明文字母x得到密文字母G,同樣的配置下,輸入字母G就會得到字母x,這也正是它的解密原理,即x(f1)=G,G(f1)=x。”
“用方才第一個函式(f1)來表示,即x(f1)(f1