扫码打开虎嗅APP
本文来自微信公众号:果壳(ID:Guokr42),作者:栗子,编辑:Odette,头图来自:《V字仇杀队》
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
本文来自微信公众号:果壳(ID:Guokr42),作者:栗子