"黄道十二宫杀手"的340个字符密码的 Wolfram 解决方案
编者注:"黄道十二宫杀手( Zodiac Killer,又译星座杀手、黄道杀人魔,以下简称黄道带杀手 )"(在 20 世纪 60 年代和 70 年代活跃的美国身份不明的连环杀手)向旧金山地区的新闻界发出了许多关于当地凶杀案的嘲讽信。在这些信中,凶手对罪行负责,并威胁要进一步谋杀。他还包括三个密码,每个密码包含一个 408 个字符的密码的三分之一。凶手声称,这种密码在解密后会揭示他的身份。凶手在 1969 年 408 个字符的密码被解密后,将第四个和最后一个密码(在本博客文章中讨论)发送给了《旧金山纪事报》,但这并未揭示凶手的身份。 e%Rg,dX ?Imq4I~)
[attachment=119435] }TI"j{(QJ
2020 年,澳大利亚墨尔本对整个城市进行了为期 112 天的封城,以帮助阻止 COVID-19 的传播。戴口罩是强制性的,我们每天只能进行一小时的户外活动。否则,我们将被困在家里。这给了我很多时间来研究这多年来一直拖延的有趣问题。 我受到 David Oranchak 的油管视频的启发,该视频查看了“黄道带杀手”(Zodiac Killer)的 340 个字符密码(Z340),如下图所示。该密码被认为是密码学的圣杯之一,因为该密码已抵御了 50 年的攻击,因此,寻找解决方案的任何尝试都好比登天。 b*i_'k}*<g
[attachment=119436] )zzZYs&|
在他的演讲中,David 探索了密码既是谐音替代密码又是换位密码的思想。存在用于求解谐音替换密码的高效程序,其中最好的程序是 AZdecrypt。实验表明,AZdecrypt 可以解决所有长度和符号分布与 Z340 相同的谐音替换密码。但是,AZdecrypt 无法用于解决 Z340,因为当您在 Z340 上运行它时,它不会产生解决方案。解决 Z340 的情况可能是通过反复试验找到正确的换位,然后使用AZdecrypt 解决谐音替换密码的情况。 j?<>y/IR
David 概述了一个特殊的变位,该变位是独立发现的,并由用户“ daikon ”和 Jarl van Eycke( AZdecrypt 的作者)发布到了 zodiackillersite.com:“ period-19 ”,它具有一些有趣的统计特性,表明它们更接近正确的换位。只是为了好玩,我决定使用Mathematica 绘制这种转置: >c
%*:a
[attachment=119441] DyhW_PH2J
但是,这看起来与 daikon 和 Jarl 的 19 周期换位没有任何关系。令我惊讶的是,事实证明,他们的换位在垂直(周期性地)环绕时使用了一个周期 18。 *DfwTbg|
[attachment=119437] "ld4v+o8l
尽管这种换位在视觉上很有趣,但它并没有让我印象深刻,因为它是一种非常自然的铅笔和纸质结构。应当指出,Z340 创建于 1969 年,因此几乎可以肯定是使用铅笔和纸建造的。 VbLwhA2W}F
我看到了 19 周期换位与 20x17 密码的 1,2- 抽取之间的联系。也就是说,从左上角开始,先移动一个垂直步长,然后再移动两个水平步长,并在水平和垂直方向上定期包裹,就像将密码包裹在圆环上一样。此换位采用与 19 周期换位类似的对角线: -9W)|toWb" lKKg n{R fhp\of/@
R
[attachment=119455] >|Yr14?7
通过 AZdecrypt 运行 Z340 的 1,2 抽取转置不会产生解决方案。 &m<:&h& b
研究找到谐音 (homophonic) 替换密码正确换位的可能性的一种方法是通过计算重复的双字母组(符号对)的数量。在 Mathematica 中,可以很容易地为任意 n-grams 编写以下代码: `>'%!E9G
- countngrams [l_List,n_Integer]:=
- Total [Map [Last,Tally [Partition [l,n,1]],1]-1] ;:nx6wi
36iDiT_ <~s{&cL!%# P`^3-X/
然后,我们可以构造大量类似 Z340 的密码,并将它们的二元组计数分布与大量 Z340 的随机改组进行比较: X0G6Wp #2
Gy=GvV
直方图[{randomShuffle340,z340CiphersBigrams},{1}, 4k%y*L ChartBaseStyle-> EdgeForm [Thin],框架-> True,轴-> False, Fq>tl 64A FrameLabel-> {Style [“ repeating bigram count”,12], nbd-f6F6 Style [“ frequency”,12]}, dA4DW ChartLegends-> {“ Z340 的随机洗牌”, R2K{vs “类似于 Z340 的随机密码”}, QAN : ChartStyle-> {RGBColor [0.514366,0.731746,0.415503], ,,
S]_S RGBColor [0.996414,0.825742,0.330007]}] rx[l7F
q -(~OzRfYi
[attachment=119453] R(.5Hs $?`-} wY
随机混洗的平均二元组数量为 19.8,而类似于 Z340 的随机数为 34.5。Z340 具有 25 个重复的二元组,而 daikon 和 Jarl 19 周期换位以及 1,2- 抽取具有 37 个重复的二元组。因此,从统计学上讲,我们认为自己走在正确的轨道上。 u_31Db< Vd%%lv{v
在 1,2 抽取转置没有产生解决方案之后,我们决定通过候选转置进行大型搜索。很难找出过去曾经测试过哪些换位,因此我决定枚举所有合理的 1 步和 2 步换位,并按其双字母组计数对其进行排序,然后通过 AZdecrypt 对其进行处理。例如,其中一些换位包括 Ov<EOK+^ I!-"SuBy4J
[attachment=119438] EjY8g@M;t ' v)@K0P
我还包括所有适当的一维和二维抽取转置。对于一维枚举,我们有以下 128 个适当的抽取: "|k 4<"] @*>kOZ(3
[attachment=119449] GycW3tc]_& `PoFKtVXM
对于二维枚举,我们有以下 128 个适当的抽取: =5l20
Um Qvc$D{z
[attachment=119454] ue8"_N 3:]c> GPQ
例如,3,4- 抽取产生以下转置: _dQg5CmlG ]0dj##5tJ
[attachment=119439] t@"i/@8x$ THN//}d
使用 AZdecrypt,我们测试了所有行优先,列优先,交替行-列,交替列-行,向内螺旋,向外螺旋,对角线以及真一维和二维抽取转置。该实验未产生任何看起来像解决方案的结果,因此我们测试了所有对换位。然后,我们考虑测试所有三元组的换位;但是,这将需要测试 155,929,364,660,224 个候选密码。天真地检查一秒钟将花费五百万年。因此,我们将实验限制在可以手工写出的合理抽取条件下,然后仅测试具有较高双字母组计数的候选者。再次,此搜索没有发现任何结果。 AX{X:L8Ut2 i$?$X,
也许我们还缺少一个步骤?考虑到 Zodiac Killer 的 408 个字符的密码(如下图)以三个相等大小的部分发送的方式,我们推测 Z340 是由许多不同的片段构成的,然后用转置和谐音替换进行加密: mG\$W#+j /BN_K8nb`
[attachment=119445] 黄道带杀手的408个字符的密码 Ez)hArxns D,hZVKa
我们考虑将密码水平分为两个和三个部分,垂直分为两个和三个部分,水平和垂直分为 2x2 和 3x3 部分。例如: _A/q bm 5|<j Pc
[attachment=119452] yw@kh^L K`vc&uf
然后,我们使用 Reduce 来计算所有可能的 2x2 细分,从而导致真二维抽取: V9:Jz Q=?` '73g~T%$^*
[attachment=119450] >))f;$D= =tS#t+2S
鉴于 1,2 抽取转置的二元数很高,我们从二维抽取开始搜索,每个片段都具有相同的(单个)转置。正如我们之前多次看到的那样,该实验并没有带来任何结果。 T%Nm QKB*N)%6
对所有部分的多个转置和所有转置组合的下一个搜索将是一项更大的工作。因此,我们决定重新分析最初搜索的结果。 Q\moR^> iZ( U]
在我们测试的 650,000 个换位中,其中一个包含一些特别有趣的纯文本段: E3vYVuw 7{JIHY+
[attachment=119448] o)]mJb~XG- `m")v0n3
这更加有趣,因为产生此候选解密的换位是 1,2- 抽取,并且密码被分为三个垂直段(如下图所示): Kg;u.4.-M WeiDg,]e$b
[attachment=119440] <
M o b0|;v-v
进一步调查这个结果,David 用我们的 9,9,2 垂直段,1,2- 抽取换位和 AZdecrypt 到婴儿床短语(已知明文攻击)“HOPE YOU ARE,” “TRYING TO CATCH ME” 和 “THE GAS CHAMBER.”。将这些婴儿床锁定到位后,AZdecrypt 找到了第一段的以下解决方案: fw3P?_4;* 7TU(~]Z
[attachment=119446] : \?_M_5Nb rgw@
Eureka! 51 年后,我们解密了一些 Z340。这是一个非常特殊的时刻。9,9,2- 垂直段,1,2- 抽取转置的发现以及 AZdecrypt 求解谐音替换密码的能力已经对 Z340 进行了部分解密。 1Qk]?R/DN '>:c:Tewy
剩下的两个部分呢?可能我们只发现了 9 行的正确垂直分割,其余 11 行需要不同的分割,或者可能需要不同的换位,或者甚至是替换密码的密钥,或者任意两种组合这些可能性,甚至是所有三种可能性。我们的工作还远远没有结束。 k[Ue}L| pf8M0,AY
David 发现我们可以使用最后一段的第一段中的密钥来产生以下明文,而无需进行任何换位: Z<IN>:l ,j!%,!n o
[attachment=119444] FGey%:p9$ |MMaaW^"
这种理解的某些部分是合理的,但是我们当然还没有解决。我们要求 AZdecrypt 的作者 Jarl van Eycke 帮助我们完成这一部分。他做了以下出色的观察: W/@-i|v 7.y35y
从左到右读取 LIFEIS 纯文本(第二段)。 LIFEIS 纯文本从 1,2 抽取转置中排除,并从左到右读取。 如果将第六行中的“ H”移至第四列,则会纠正许多拼写错误。 应用 1,2 抽取转置,跳过包含“ LIFEIS”的位置: J\l'nqS"
[attachment=119451] [,0[\NC dJ(<zz+;b
我们为 Z340 密码发现的密码密钥和换位由下式给出: UP .4# 1I /UG]hJ-wn
[attachment=119447] [attachment=119443] /6{P
?)]pE 93VbB[w~7F
在“黄道带杀手“将此密码邮寄给《旧金山纪事报》五十一年后,我们有了解决方案!David 于 2020 年 12 月 5 日星期六将此解决方案提交给FBI密码分析和诈骗记录部门(CRRU)。此后不久,FBI 正式确认我们解决方案的有效性。(译者注:Z340 也就是第二道密码目前已被澳洲数学家Sam Blake - 本文原作者,比利时程序员Jarl Van Eycke及美国软件开发人David Oranchak于2020年12月破解。) uA[c$tBe l.Q.G<ol
[attachment=119442] <8iu :nR vdaG?+_o
基本上,我在 Z340 上所做的所有工作都是在 Mathematica 中完成的。我使用了墨尔本大学的 Spartan 高性能计算集群,使用 zkdecrypto 消除了候选换位,而 David 使用了 AZdecrypt。Z340 的所有统计分析以及数百万个候选换位的创建和分析都是使用Mathematica 完成的。我使用 Mathematica 的原因很简单:这是迄今为止我可以用于此类任务的最省时的语言。 OB4nE}NO [[7=rn}@<
购买软件/免费试用 【13.2.1 中英文 Wolfram 软件】请评论留言申请
|