俞大維早年先後留學美國和德國,精研數學、數理邏輯、彈道學和軍事學。在留德期間他擔任華夏國民政府軍政部參事,負責兩國間國防兵工業的聯係合作事宜,他自然對德國商用和軍用的enigma恩尼格瑪密碼機有所了解。
俞大維也深知密碼學和數學之間有著一脈相承的密切聯係。
他不解地道:“enigma密碼機的應用已有近20年之久,從商用型進一步改進發展而來的軍用型在德軍中作為標準的製式密碼機也已裝備使用了十年。”
“德國人非常自信地認為他們掌握了世界最先進、最安全、無法破譯的通訊加密係統。按照我們獲悉的資料,這個密碼機的原理從數學上看是無法破解的。”
“三個轉子一共有 26x26x26= 個不同的密碼表。這三個轉子設計成可以互相交換位置,共有6種不同的排列方式,密鑰空間增加到了 x6=,大約十萬個。插線板將6對字母用連線兩兩互換,又將密碼數量增加了1000 億倍,密鑰空間達到一億億個的水平,這是一個天文數字,暴力破解被認為是不可能的。”
宋鴻飛道:“從數學上看的確是這樣,不過破譯密碼並不等同於數學計算,機器設計上的缺陷以及使用上的一些固定習慣和漏洞都可以作為突破口,這就大有文章可做了。”
俞大維對於密碼學方麵的研究涉獵不多,他愈發按捺不住心中的震驚,幾乎要驚唿起來:“你是說竟然有幾處漏洞?這可真是石破天驚,叫人不敢相信!”
恩尼格瑪密碼機是利用機械轉輪及電路係統的組合來實現複雜加密和解密的裝置,恩格瑪機的高明之處就在於它在進行高強度的複式替換加密的同時,便攜性和操作簡易性也幾乎做到了極致,它被廣泛應用在德國軍事和外交的無線電通信中。
在曆史上德國人先後生產了各種型號的恩尼格瑪密碼機達10萬台之多,德國陸、海、空軍和情報機構如虎添翼。
恩尼格瑪密碼機的結構主要由擾碼轉子、反射器、插線板、鍵盤和指示燈組成。它的安全性在於“複式替換密碼”的特性,其核心在於三大靈魂部件——轉子、接線板、反射器。
發報者每次按下某個按鍵時,由於轉子會持續的跟著轉動,通過不同的連接線路,每次輸入的字母會就會隨機替換成另外一個字母,使得每次得到的加密字母都會不一樣。
如果隻有一個轉子,那就是一個固定不變的密碼表,加密方式就是簡單的單字母替換加密,這在密碼學上很容易被破解。
但多個轉子同時使用,就變成了很難破譯的“複式替換密碼”加密方式。這樣相同的明文字母可以有不同的替代加密字母,而相同的密文字母又可能代表不同的明文字母,這種設計即使對手對截獲的密文進行字頻分析也是無效的。
德軍恩尼格瑪機的操作員每個月都會收到一本密碼本,指定本月的每一天所使用的密鑰,這個“每日密鑰”每一天更換一次,它包含三個部分:三個轉子的排列順序、轉子字母的初始位置以及插線板的設置。
宋鴻飛道:“一個大國的情報機構,通過間諜活動完全可以搞到這幾樣:一是恩尼格瑪機的原理及內部構造,包括每個轉子的線路;二是德軍的對恩尼格瑪機的操作守則。”
俞大維點點頭,他知道對於一個國家的情報機構來說,搞來這些東西並不是不可能的。
宋鴻飛又道:“但要想破譯密文,就必須還要知道密碼機的每日初始設置——即每日密鑰。德國人希望當密碼機和密碼本泄露時對方依然無法破解,又采取了一些防範措施。”
使用恩尼格瑪機發送密電時,發送者設置好“每日密鑰”,然後他會隨意敲入3個字母,這3個字母就是發送密文的“信息密鑰”。為了防止誤操作,德軍規定將這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)=x,也就是說一個字母被同一個函數(fn)連續兩次替換會得到它自身。”
“再代入第4次加密的函數x(f4)=d,即x(f1)(f1)(f4)=d,這樣就得到g(f1)(f4)=d,x這個密鑰字母就被抵消掉了!也就是說密文g和d之間這種聯係其實與信息密鑰是無關的,隻與密碼機在這一天的每日密鑰相關。”
“g(f1)(f4)=d的含義就是將一個字母通過密碼機的初始設置進行一次替換後,又將轉子轉動三位再進行一次替換所得的對應關係,它的本質還是一種替代。記為一組g-d,同樣的,又可得其他兩組a-e、n-r。”
“如果對手每天截獲德軍大量的電報,對每封電報的前6個字母進行類似的操作,就得到更多的兩兩配對的字母組合,直到26個字母都配對完全。”
“太妙了!”俞大維簡直要驚呆了,此刻他的思維也如烈馬狂奔般在發散在思考著。
俞大維眼前一亮:“真是一個絕妙的突破口!根據這26對字母組合,對於一定配置狀態下的密碼機,把這個狀態當做一個整體,就可以測試每一個字母經過第一次替換和旋轉3個位置再一次替換是否得到這樣的配對組合,來進行暴力破解!嗯,三個轉子的排列和初始設置一共大約10萬種可能性,在國家層麵來說投入大量的人力、物力、財力,複製出大量的密碼機同時進行破解,是完全可行的!”
宋鴻飛也不得心中不佩服,俞大維真不愧是本科畢業3年就拿到哈佛博士的奇才,這智商真不是蓋的。
俞大維繼續思考著:“但是還有個問題,在轉子擾碼器的進出兩端都要通過插線板,輸入端暫且不提,輸出端確是直接影響所得組合的,插線板26個字母共有6對連接線,所有可能的結果增加了1000億倍,怎麽消除插線板的影響呢?”
俞大維也深知密碼學和數學之間有著一脈相承的密切聯係。
他不解地道:“enigma密碼機的應用已有近20年之久,從商用型進一步改進發展而來的軍用型在德軍中作為標準的製式密碼機也已裝備使用了十年。”
“德國人非常自信地認為他們掌握了世界最先進、最安全、無法破譯的通訊加密係統。按照我們獲悉的資料,這個密碼機的原理從數學上看是無法破解的。”
“三個轉子一共有 26x26x26= 個不同的密碼表。這三個轉子設計成可以互相交換位置,共有6種不同的排列方式,密鑰空間增加到了 x6=,大約十萬個。插線板將6對字母用連線兩兩互換,又將密碼數量增加了1000 億倍,密鑰空間達到一億億個的水平,這是一個天文數字,暴力破解被認為是不可能的。”
宋鴻飛道:“從數學上看的確是這樣,不過破譯密碼並不等同於數學計算,機器設計上的缺陷以及使用上的一些固定習慣和漏洞都可以作為突破口,這就大有文章可做了。”
俞大維對於密碼學方麵的研究涉獵不多,他愈發按捺不住心中的震驚,幾乎要驚唿起來:“你是說竟然有幾處漏洞?這可真是石破天驚,叫人不敢相信!”
恩尼格瑪密碼機是利用機械轉輪及電路係統的組合來實現複雜加密和解密的裝置,恩格瑪機的高明之處就在於它在進行高強度的複式替換加密的同時,便攜性和操作簡易性也幾乎做到了極致,它被廣泛應用在德國軍事和外交的無線電通信中。
在曆史上德國人先後生產了各種型號的恩尼格瑪密碼機達10萬台之多,德國陸、海、空軍和情報機構如虎添翼。
恩尼格瑪密碼機的結構主要由擾碼轉子、反射器、插線板、鍵盤和指示燈組成。它的安全性在於“複式替換密碼”的特性,其核心在於三大靈魂部件——轉子、接線板、反射器。
發報者每次按下某個按鍵時,由於轉子會持續的跟著轉動,通過不同的連接線路,每次輸入的字母會就會隨機替換成另外一個字母,使得每次得到的加密字母都會不一樣。
如果隻有一個轉子,那就是一個固定不變的密碼表,加密方式就是簡單的單字母替換加密,這在密碼學上很容易被破解。
但多個轉子同時使用,就變成了很難破譯的“複式替換密碼”加密方式。這樣相同的明文字母可以有不同的替代加密字母,而相同的密文字母又可能代表不同的明文字母,這種設計即使對手對截獲的密文進行字頻分析也是無效的。
德軍恩尼格瑪機的操作員每個月都會收到一本密碼本,指定本月的每一天所使用的密鑰,這個“每日密鑰”每一天更換一次,它包含三個部分:三個轉子的排列順序、轉子字母的初始位置以及插線板的設置。
宋鴻飛道:“一個大國的情報機構,通過間諜活動完全可以搞到這幾樣:一是恩尼格瑪機的原理及內部構造,包括每個轉子的線路;二是德軍的對恩尼格瑪機的操作守則。”
俞大維點點頭,他知道對於一個國家的情報機構來說,搞來這些東西並不是不可能的。
宋鴻飛又道:“但要想破譯密文,就必須還要知道密碼機的每日初始設置——即每日密鑰。德國人希望當密碼機和密碼本泄露時對方依然無法破解,又采取了一些防範措施。”
使用恩尼格瑪機發送密電時,發送者設置好“每日密鑰”,然後他會隨意敲入3個字母,這3個字母就是發送密文的“信息密鑰”。為了防止誤操作,德軍規定將這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)=x,也就是說一個字母被同一個函數(fn)連續兩次替換會得到它自身。”
“再代入第4次加密的函數x(f4)=d,即x(f1)(f1)(f4)=d,這樣就得到g(f1)(f4)=d,x這個密鑰字母就被抵消掉了!也就是說密文g和d之間這種聯係其實與信息密鑰是無關的,隻與密碼機在這一天的每日密鑰相關。”
“g(f1)(f4)=d的含義就是將一個字母通過密碼機的初始設置進行一次替換後,又將轉子轉動三位再進行一次替換所得的對應關係,它的本質還是一種替代。記為一組g-d,同樣的,又可得其他兩組a-e、n-r。”
“如果對手每天截獲德軍大量的電報,對每封電報的前6個字母進行類似的操作,就得到更多的兩兩配對的字母組合,直到26個字母都配對完全。”
“太妙了!”俞大維簡直要驚呆了,此刻他的思維也如烈馬狂奔般在發散在思考著。
俞大維眼前一亮:“真是一個絕妙的突破口!根據這26對字母組合,對於一定配置狀態下的密碼機,把這個狀態當做一個整體,就可以測試每一個字母經過第一次替換和旋轉3個位置再一次替換是否得到這樣的配對組合,來進行暴力破解!嗯,三個轉子的排列和初始設置一共大約10萬種可能性,在國家層麵來說投入大量的人力、物力、財力,複製出大量的密碼機同時進行破解,是完全可行的!”
宋鴻飛也不得心中不佩服,俞大維真不愧是本科畢業3年就拿到哈佛博士的奇才,這智商真不是蓋的。
俞大維繼續思考著:“但是還有個問題,在轉子擾碼器的進出兩端都要通過插線板,輸入端暫且不提,輸出端確是直接影響所得組合的,插線板26個字母共有6對連接線,所有可能的結果增加了1000億倍,怎麽消除插線板的影響呢?”