原創 慄子 果殼
1968年12月20日晚上,舊金山灣區有兩位高中生出門約會。他們把車停在一處戀愛聖地後,雙雙被人槍殺,當場死亡。
在那之後的一年裡,灣區又有兩對年輕情侶遭遇類似的襲擊。兩起事件當中,男性受害者都在搶救後存活下來,而同行的女性受害者傷重不治。
十二宮自稱殺過37人,警方證實的有5人丨History vs Hollywood
一個自稱「十二宮(Zodiac)」的人不斷給報社寫信,表示對這三起事件負責,也承認自己後來又槍殺了一位計程車司機。他以此為炫耀的資本,還揚言殺死更多的人,用令人窒息的恐慌淹沒了當時的社會。
根據寫信人對案件細節的描述,警方認定這些信件就來自兇手,但至今沒有抓到那個人,也不知道他究竟是誰。除此之外,十二宮在1969年11月發布的一道340位密碼,也成了多年無人破解的著名難題。
340密碼丨zodiacciphers.com
1986年,記者羅伯特·格雷史密斯(Robert Graysmith)的犯罪紀實作品《十二宮》(Zodiac)出版即暢銷,作者在書裡聲稱解開了340密碼。2007年,大衛·芬奇導演以此改編的同名電影上映,首日票房衝上1330萬美元,片中也有原書作者破譯密碼的橋段。
這些作品也許在一定程度上幫助十二宮成為了史上最有名的連環殺手之一,卻無法改變一個事實:聯邦調查局(FBI)認定格雷史密斯破譯無效。
從背景裡路過的男子,是真實倖存者之一Bryan Hartnell,客串出場的他,也是這部影片邀請的顧問丨Zodiac (film)
而今年12月上旬,美國軟體工程師大衛·奧蘭恰克(David Oranchak)、澳大利亞應用數學家(Sam Blake)和比利時程式設計師雅爾·凡·艾可(Jarl Van Eycke),把他們最新的破譯結果發給FBI並得到了認證。在2020年過去之前,結束了科學家們51年的長跑。
這個故事要從殺手更早前發布的另一條密碼說起。
「I LIKE KILLING」
1969年8月1日,舊金山灣區的三間報社收到了內容幾乎一樣的信,唯一的區別,就是隨信附帶的密碼不同。這三段密碼都是136位,總長408位。
那時,三對受害情侶中已有兩對被害。寫信人要求報社立即用頭版發表各自收到的密碼,威脅說不然就繼續作案;但也提到,只要破解密碼就能知道他的身份。
三間報社收到的密碼丨David Oranchak
三份報紙陸續刊登密碼之後,8月6日警方便收到一份破譯結果,附有解題過程。高中老師唐納德·哈登和妻子貝蒂(Donald and Betty Harden),一同解出了密碼裡的消息。
他們把408密碼當做簡單的替換式密碼(Substitution Cipher)來破譯。替換式加密,就是用一種字符替代另一種字符:比如用B表示A,C表示B,D表示C,以此類推。這樣一來,一段文字中的CAB(計程車)就可以變成密文DBC,讓人很難看出它表達的信息。
不過,408密碼裡有54種符號,而英文字母只有26個。也就是說,幾種符號可能都代表同一個字母。這是常見的加密操作,因為假如一個字母只由一種符號替代,破譯者很容易推測,出現頻率最高的符號代表「e」,就是英文最常用的字母;而如果有多種符號可以代表「e」,便能稀釋符號出現的頻率,讓破譯者更難判斷哪個符號代表哪個字母。
這時候,哈登夫婦想到應該觀察兩個相鄰的符號。比如,408密碼裡出現了◪◪和⬛⬛。丈夫唐納德看到過往研究顯示,英文裡最常見的雙寫字母是LL,就把每處◪和⬛都代入為L。
妻子貝蒂又覺得,有些LL可能是「KILL(殺)」這個單詞的一部分。假如是這樣,又能大致推測字母K和I在密碼裡對應的符號。於是,其中一份報紙的第一行密碼,在貝蒂眼裡變成了這樣:
左為貝蒂·哈登丨David Oranchak
她大膽猜測,這部分就是在說「I LIKE KILLING(我喜歡殺戮)」。那麼,代表字母N和G的符號也慢慢清晰。兩人就在不斷試錯的過程中,把幾乎整篇密碼都翻譯成了有意義的文字:
破譯得到的文字,有些拼寫錯誤丨David Oranchak
我喜歡殺人,因為很有趣。那比殺森林裡的獵物更有意思,因為人是所有動物裡最危險的一種。殺戮給了我最刺激的體驗,比跟女孩XXOO高潮還要棒。最厲害的是,當我死後我還會在天堂重生,而所有被我殺掉的人都會成為我的奴隸。我不會把我的名字告訴你們,因為你們會努力放慢或叫停我為來生收集奴隸的腳步。ebeo riet emeth hpiti。
雖然,最後18個字符沒有得到解釋,FBI依然認為哈登夫婦給出的信息有效。這次破譯,還得到了美國密碼協會(ACA)會長、數學家唐納德·馬什(Donald Marsh)的認可,因為他也通過I LIKE KILLING這一句話,推演出了同樣的結果。
至於文中出現的拼寫錯誤,科學家們相信,有一部分是密碼設計者本人在加密時弄混了形狀相近的符號所致;還有一部分可能源於拼寫習慣,比如把「Paradise(天堂)」拼成「Paradice」,這和他在信裡用到的拼寫一致。
消息破譯了,人們把英文字母和密碼符號的對應關係總結如下:
408密鑰丨David Oranchak
這份對應關係就叫密鑰(Key)。
408密碼被破三個月後,寫信人發來了一串340位的新密碼,用到的符號看上去和從前差不多。可當FBI把舊的密鑰代入340密碼,卻換來了一串沒有意義的字母組合。
408密鑰對340密碼無用丨FBI
雖然,340密碼包含了63種符號,408密碼只有54種,但這並不足以解釋一整篇亂碼的出現。
科學家們不得不開始考慮兩件事,一是密鑰可能變了,二是除了替換加密法之外,340密碼可能還融入了其他操作,比如換位加密法(Transposition Cipher)。
舉個例子,英文通常是從左往右橫向閱讀,假如有人要給文本加密,就可以把字符縱向排列。而想要解開密碼的人們並不知道正確的閱讀順序,破譯難度便增加了。
當然,橫向變縱向只是最簡單的換位方式,只要一列一列讀取就能破解。要想再添一波難度,可以先排奇數列,後排偶數列。而除了橫向和縱向排列,沿對角線斜行又是一種辦法。如果把各種不同的換位操作組合起來,會有無窮無盡的可能。
先排奇數列,再排偶數列丨David Oranchak
這也是340密碼不容易破解的主要原因。科學家們唯有不斷嘗試自己能想到的換位方法,至於成不成功,運氣或許是技術之外最重要的因素。
正確的閱讀順序是什麼?
剛剛破解340密碼的團隊三人,也認為自己非常幸運,即便密碼發布至今已經過去了51年。
山姆·布雷克為這條密碼設計了650,000種不同的換位方法。大衛·奧蘭恰克把這65萬條結果投餵給了雅爾·凡·艾可開發的破譯軟體AZDecrypt,讓它在換位完成的基礎上,尋找字母替換的密鑰,就像當初哈登夫婦所做的那樣。
軟體跑了幾個月,得到的各種字母排列,都讀不出一絲實際意義。直到有一天,奧蘭恰克發現了這段破譯結果:
軟體跑出有意義的碎片丨David Oranchak
滿篇無意義的文字中,出現了「hope you are(希望你們)」「trying to catch me(正在努力抓我)」「or the gas chamber(或者毒氣室)」這樣的組合。
不熟悉事件背景的人,很容易把這些碎片當成垃圾信息忽略掉。但奧蘭恰克知道,在340密碼發布兩周前,有個自稱十二宮的人依照與警方的約定,在電視節目AM San Francisco直播期間給它的主持人打了電話,還用虛弱的語氣說起:
I'm sick...I don't want to go to the gas chamber.
我病了……我不想去毒氣室。
這個瞬間,科學家開始相信思路沒錯。
所以,奧蘭恰克便回頭觀察,布雷克到底對340密碼進行了怎樣的換位處理,才讓機器從處理後的密碼中看出了端倪。
首先,布雷克把340密碼分成了三段,前9行是第一段,再9行是第二段,餘下2行是第三段。
每段都從左上角開始讀取第一個符號,往下一格往右兩格再讀取一個符號。沿這個方向斜著讀下去,到達底部就回頂端讀取下一個符號,直到把所有符號讀取完畢。
對角線閱讀方向丨David Oranchak
如此一來,340密碼的第一段就有了一種換位版:
340第一段換位版丨David Oranchak
奧蘭恰克把換位版的第一段投餵給軟體AZDecrypt,再將有意義的內容(如「hope you are」「trying to catch me」)出現的位置鎖定住。
他想知道有了這些限定條件,機器能不能解出剩餘部分的答案。就像從前哈登夫婦在「I LIKE KILLING」的提示下翻譯出整條408密碼那樣。
按下按鈕,奇蹟發生了,第一段的9行符號變成了清晰的字句:
AZDecrypt軟體破譯的第一段丨David Oranchak
我希望你(們)努力抓我的時候能樂在其中。電視節目裡那個不是我,他提出了關於我的一個觀點。我不怕毒氣室,因為它會把我送到payallce all the。
至此,第一段還有14個字母看不太懂。但至少電視節目這個元素,已經與先前出現的毒氣室相互呼應,吻合了密碼發布兩周前那場直播中途的插曲。
並且,340密碼用到的63個字符,在這一段已經全部出現,奧蘭恰克也從中總結出了新的密鑰。
340密鑰丨David Oranchak
這次總可以把密鑰代入餘下兩段了吧?
當奧蘭恰克把第二段也沿同樣的閱讀順序做了換位,再用密鑰翻譯這一段,只得到了些有意義的碎片:
比如408密碼裡出現過的「slave(奴隸)」,再比如「they have nothing when they reach payalice(他們到天堂的時候一無所有)」,其中「payalice」可能是「paradice」。但總體看來,沒有找出更完整的信息。
第二段斜讀後,只有一些碎片有意義丨David Oranchak
也就是說,可能還有隱藏規則沒發現。
我們不一樣
由於第二段規則有些複雜,我們先來看只有兩行的第三段。
第三段:顛來倒去
奧蘭恰克沒有用前兩段的閱讀順序去處理第三段,而是直接把密鑰套進去,看到了意外的風景。
上為340密碼第三段,下為套入密鑰的結果丨David Oranchak
幾個清晰的單詞顯現了。科學家感到奇怪:為什麼我還沒斜著讀,第三段就冒出詞來了呢?
再仔細觀察,奧蘭恰克又發現了更多隱藏的內容,比如從右往左拼寫的「paradice」。
從右往左拼寫的單詞丨David Oranchak
發現這條規律之後,第三段就成了送分題,裡面藏著的消息是:
Life will be an easy one in paradice. Death.
天堂裡的生活會很輕鬆。死亡。
只有「death」這個詞還沒有融進句子裡,但也是時候去解餘下的第二段了。
第二段:用拼寫錯誤來解題
當年破解408密碼的時候,科學家們就發現,設計密碼的人犯了許多拼寫錯誤。
而如今,奧蘭恰克把密鑰套進340密碼的第二段,也看到了不少拼寫問題。他覺得,假如知道拼寫錯誤應該怎樣糾正,也許能找到一些線索。
比如,「oow」應該是「now」,「ensugh」應該是「enough」,「slaver」應該是「slaves」,「fov」應該是「for」。
在這四個單詞裡,錯誤的字母是O、S、R、V。假如觀察密碼原本的排列順序(而不是斜讀),就會發現這些字母出現在同一行,並且相鄰。
錯誤的字母在同一行丨David Oranchak
而糾正後的字母應當是N、O、S、R。不難發現,NOSR也在同一行,只要往OSRV左邊看一格就能找到。
團隊的另外一位成員凡·艾可,就是那個破譯軟體AZDecrypt的開發者,受到奧蘭恰克的啟發,提出了一種操作:假如把拼寫錯誤集中的那一行,全部往右移一格,再把最右的H移到左邊,許多拼寫錯誤都能糾正。
往右錯一格,許多拼寫錯誤得到糾正丨Oranchak
不止如此,凡·艾可也明白了為什麼右上角的「life is」不用特殊的閱讀順序就能直接讀出。
他發現,只要斜讀的時候跳過這6個字母,而其他字母照常讀取,這一段的信息便會顯現。
第二段的初步破譯丨David Oranchak
凡·艾可還猜測,「life is」兩個詞應該加在這一段的末尾。再稍稍調整一下前面的拼寫,就可以得出比較通順的文字。
把「life is」放在最後,並微調拼寫丨David Oranchak
很快。我現在有足夠多的奴隸替我工作,他們每個人到天堂的時候都一無所有,所以他們怕死。我不怕,因為我知道我的新生活是。
哪怕不知道新生活是什麼,這條被科學家分成三段去破譯的340密碼,到此也總算可以合體了。
最終成果在此
把三段破譯結果連在一起讀,意義似乎更完整了一些。
340密碼的完整破譯結果丨David Oranchak
希望你(們)努力抓我的時候能樂在其中
電視節目裡那個人不是我
他提到了關於我的一個觀點
我才不怕毒氣室
因為我知道它能早日送我上天堂
因為我現在有足夠多的奴隸替我工作
他們每個人到天堂的時候都一無所有
所以他們怕死
我不怕,因為我知道我的新生活是
天堂裡的生活會很輕鬆,死亡
雖然最後兩句不大通順,但團隊還是對自己得出的結果感到信服。
科學家們把破解過程視頻發表之後,有不少觀眾覺得最後兩句並非不通,只是該換個方式來讀。沿著下圖的斜線分開,左一句,右一句。
網友建議的分割線丨David Oranchak
右邊的句子完整了:生活就是死亡。
左邊的句子也完整了:我不怕,因為我知道,我在天堂裡的新生活會很輕鬆。
至於,這條分割線能不能代表十二宮本人的想法,如今恐怕也很難得到他的證實了。但不管怎樣,團隊的破譯終究得到了FBI的認證。
聯邦調查局推特認證丨FBI
解開密碼的興奮溢於言表,但三人也明白,破譯得到的文字裡並無有效信息,基本還是十二宮用來吸引注意力的垃圾消息。
它最多能夠說明,對於外界迅速破解408密碼這件事,殺手當年確實做出了反饋,就是設計出比它複雜許多的340密碼。
而想要得到身份信息,可能還要去研究他發出的那些短密碼。比如,1970年4月20日《舊金山紀事報》收到的一封信明確表達過,信裡的13位密碼就是他的名字。
《舊金山紀事報》收到的13位密碼丨The Zodiac Revisited
但密碼越短,人們能從中找到的規律就越少,就算找到也很難從上下文得到驗證。這也是多年來大家幾乎都把目標放在340密碼身上、而少有人專攻幾條短密碼的一個原因。
那麼問題來了,340密碼當中有怎樣的規律,引導科學家們找到了正確的閱讀方向?
又為什麼是往下一格往右兩格再讀取,不是往下一格往右一格,也不是往下兩格往右一格?
周期19現象
這要從英文字母的排列方式說起。當一串字母包含有意義的信息,肉眼是能從中看出規律的。比如,當我們觀察相鄰兩個字符的時候,就能發現「ER」「TH」之類的組合常常出現。
重複雙字母組,以數學家查爾斯·巴貝奇名言為例丨David Oranchak
這樣的組合叫「雙字母組(Bigram)」。就算用特殊符號替換了英文字母,無法直接讀出其中的信息,也依然能觀察到一些雙字母組重複出現。比如,在早年解開的408密碼當中,所有重複過的雙字母組加起來,一共重複了62次。
假如我們隨機打亂這408個符號的順序,得到100萬段打亂後的序列,它們的雙字母組重複次數,平均只有27次。
也就是說,一段有意義的文字與一段無意義的亂碼相比,雙字母組的重複頻率可能更高。
再看剛剛破解的340密碼,它的雙字母組重複次數是25次。而隨機打亂得出的100個序列,雙字母重複數平均只有20。那麼,340密碼很可能是一串有意義的文字。
上為340,下為100萬段打亂後的340丨David Oranchak
但它包含的重複雙字母組,又不像408密碼那麼多。這令許多愛好者想要知道,怎樣閱讀順序才能讓340密碼裡的重複雙字母組多起來。
於是,大家開始嘗試周期性讀取。比如,直接讀取相鄰的字符叫做「period 1(周期1)」,每兩個字符讀取一個,叫做「period 2(周期2)」。那麼,每19個字符讀取一個,就叫「period 19(周期19)」。
340密碼每行有17個字符,那麼每19個字符讀取一個,就是上文說的往下一格往右兩格。這樣閱讀,便能發現更多重複的雙字母組,甚至三字母組。
每19個字符讀取一個,能發現更多重複組合丨David Oranchak
按照周期19來讀取,重複雙字母組由原來的25次增加到了37次。這讓周期19從許多不同的周期當中脫穎而出,也令人們開始關注與之相關的現象。
當然,還有其他閱讀方式能提升雙字母組的重複次數。比如,先排奇數列再排偶數列,最後用周期18來讀取,可以把雙字母組的重複數增加到44次。
也許就是在這些數據的指引下,布雷克為340密碼做了那65萬種不同的變換。而能夠從中找出對的那一種,對三人團隊來說實屬不易。
至於那幾條還沒解開的短密碼,奧蘭恰克說,假如不是發現了什麼重大線索,就只能期待殺手還活著,然後問他本人了。
帶有十二宮模擬畫像的通緝令丨SFPD
參考文獻
[1] David Oranchak. (2020a, Sep 1). Let’s Crack Zodiac - Episode 3 - The 408 [Video]. YouTube. https://www.youtube.com/watch?v=57o8g3d6lSw
[2] David Oranchak. (2020, Dec 11). Let’s Crack Zodiac - Episode 5 - The 340 Is Solved! [Video]. YouTube. https://www.youtube.com/watch?v=-1oQLPRE21o
[3] David Oranchak. (2020a, May 17). Let’s Crack Zodiac - Episode 2 - Bigrams [Video]. YouTube. https://www.youtube.com/watch?v=uyH9-AHz-HY
[4] Zodiac Killer case, 50 years later: Tracing the legend of 『our Jack the Ripper.』 San Francisco Chronicle. https://www.sfchronicle.com/crime/article/Zodiac-Killer-case-50-years-later-Tracing-the-13464347.php
[5] The Zodiac Killer Part 01 of 06. FBI. https://vault.fbi.gov/The%20Zodiac%20Killer/The%20Zodiac%20Killer%20Part%2001%20of%2006%20./view
作者:慄子
閱讀原文