状态 无法根据已公开的文本破解
S1 的70个位置上有53个不同的符号;S5 的180个位置上有145个。在这样的比例下,每段密文都能套上不止一个通顺的英文明文,而一次返回通顺英文的搜索,只是做到了算术所保证的事。这里检验的那个自称解答,没能通过同音替换密钥施加的唯一硬性检验——在每段密文中各有一个已可靠识别的符号上失败。
01 这些信是什么,哪些已公开
1991年,一个署名 Scorpion 的人给America’s Most Wanted的主持人 John Walsh 寄去几封信,其中有五段密文。两段已公开。S1 随第一封信寄来;S5 随那封以“Hi! Remember me?”(嗨!还记得我吗?)开头的信寄来。S2 至 S4 由执法部门保管,未曾公布。Klaus Schmeh 把这两段列为他 Top 50 中的第12号,使用的是 David Oranchak 网站上的扫描件。
| 密码 | 排布 | 符号 | 不同取值 | 重复对 | 这里使用的转录 |
|---|---|---|---|---|---|
| S1 | 10 × 7 | 70 | 53 | 22 | 这里根据 Cipherbrain 扫描件(454 px,放大3倍)制作 |
| S5 | 12行,每行15个 | 180 | 145 | 43 | 论坛上的数字转录,符号1–145按首次出现的顺序编号 |
| S2–S4 | 未公开 | ||||
已公开的材料包括 Schmeh 的文章、Nick Pelling 2014至2018年间在 Cipher Mysteries 上的帖子、Cipher Foundation 的页面,以及 zodiackillerciphers.com 上题为“Scorpion = Zodiac?”的帖子,其中载有数字形式的 S5。S1 的转录见 s1.txt ,它使用描述性的符号名称,并把四处识别标为不确定: circL, sqnotchBR, sqbarT 和 flag。它统计出70个符号、53个不同符号,与已发表的数字一致。原信中 S5 每行写15个符号;论坛发帖人把同一个按行排列的序列改为每行16个,原因见下文。
02 这里测得的结构
S5:所有重复都相距16的倍数
S5 中有43对位置载有相同的符号。这43对中,每一对的距离都是16的倍数。
| 距离 | 16 | 32 | 48 | 64 | 80 | 96 | 112 | 128 | 144 | 160 |
|---|---|---|---|---|---|---|---|---|---|---|
| 对数 | 9 | 5 | 6 | 4 | 5 | 3 | 2 | 6 | 2 | 1 |
按16列书写时,没有任何符号出现在两列中。每列有11或12个符号,其中6到11个互不相同。这正是严格轮换使用16个替换字母表的表现,也是 Pelling 和论坛发帖人“Teddy”在2007至2014年间得出的结论。各列的计数,根据下列文件计算: s5.txt:
| 列 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 符号 | 12 | 12 | 12 | 12 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 |
| 不同取值 | 7 | 11 | 10 | 10 | 11 | 8 | 10 | 6 | 9 | 6 | 10 | 9 | 10 | 9 | 9 | 10 |
| 重复 | 5 | 1 | 2 | 2 | 0 | 3 | 1 | 5 | 2 | 5 | 1 | 2 | 1 | 2 | 2 | 1 |
有两个数字更进一步。一项模拟用16个独立的26字母字母表加密英文,统计 S5 所统计的那些量。
| 检验 | 观测值 | 16个单表英文字母表(模拟) |
|---|---|---|
| 列内重复 | 35 | 47.7 ± 4.9 (z = −2.6) |
| 重复在各列间的分布离散度(方差) | 2.28 | 1.38, P(≥ 观测值) = 0.05 |
对16个普通字母表来说,S5 的重复太少了,GeoffLaT 也发现了这一点。若在每个字母表中给七个最常见的字母各配两个同音符,总数就吻合了(32.6 ± 4.5),但各列分布不均的情况就更不可能出现(P = 0.014)。第1列,即每16个一组的第一个符号,重复得远多于其余各列:12个中只有7个不同符号,而大多数列是10或11个。第1、8、10列各有5次重复,三列合计占35次中的15次。
S1:微弱的周期5信号
S1 有22个重复对。其中8对的距离是5的倍数,而打乱位置后的期望值是4.1(P = 0.036)。4对的距离是10的倍数,期望值是1.9(P = 0.12)。这就是 Pelling 所说五个循环字母表的全部证据。它在一定程度上取决于对实心方块和半圆两类字形的识别,而这恰恰是不确定的那几处。S、lambda 和 K 各自重复出现的位置都打破了严格的周期5。
03 为什么已公开的文本无法确定密钥
同音替换密钥为每个不同的符号指定26个字母之一,所以每个符号约携带 log2 26 = 4.70 比特。英语每个字母约提供3.2比特的冗余,这是把英语的熵取为1.5比特、与均匀字母表的4.70比特相比得出的。当密钥所含的信息多于文本的冗余时,密文就无法确定密钥。
| 密码 | 密钥信息量 | 文本冗余度 | 比值 |
|---|---|---|---|
| S1 | 53 × 4.70 = 249 比特 | 70 × 3.2 = 224 比特 | 1.11 |
| S5 | 145 × 4.70 = 682 比特 | 180 × 3.2 = 576 比特 | 1.18 |
两者都低于唯一解距离。每段密文都与不止一个通顺的英文明文相容,所以任何唯密文方法都无法挑出正确的那一个。S5 的16字母表结构使情况更糟:16个独立的字母表意味着多得多的密钥。只有当这些字母表之间由某种规则联系起来时,它才会有帮助,而既然没有符号在两列中重复出现,密文就没有提供这样的联系。
匹配对照
unicity.py 用恰好53个和145个符号的随机同音密钥加密70和180字母的随机英文段落,然后用本站其他地方所用的同一个5-gram 英语求解器(模拟退火)攻击它们,重启八次,每次15,000步。每字母的数值是用脚本的总分除以文本长度得出的。
| 对照 | 最佳解的字母准确率 | 所得文本的得分 | 真实文本的得分 |
|---|---|---|---|
| S1 规模,试验1 | 0.13 | −112(每字母 −1.60) | −107 (−1.53) |
| S1 规模,试验2 | 0.13 | 所得: snotconcetorasestayalongdispointent… | |
| S5 规模,试验1 | 0.03 | −330(每字母 −1.83) | −326 (−1.81) |
| S5 规模,试验2 | 0.12 | −334(每字母 −1.86) | −301 (−1.67) |
求解器每次都返回通顺的英文,却从来不是那段明文。字母准确率在3%到13%之间,而在三次有得分的试验中,有两次错误解的得分与真实文本相差不到5分。任何用 AZdecrypt 式搜索得出的 S1 或 S5 解答,都应该据此来评判,包括记录在案的三个:Farmer 2007、Roberts 2016,以及下文检验的2018年论坛解答。在这样的多解程度下,通顺的输出是必然的,什么也证明不了。
04 检验2018年的自称解答
论坛用户 Rubislaw32 在 zodiackillermystery.freeforums.net 的“Scorpion’s Ciphers — The Zodiac, 1991 and beyond”帖子中发布了 S1 和 S5 的解答,首次发布于2018年10月19日。所称的明文如下:
S1。“A picture in collection of people: Bagel Bob’s Old Dairy Frothy Late Cofee. Pour action.”
S5。“I am sending other picture of people for the collection of recent hybrid genders with edge, kept from artistic fee, if person of age has to purchase pick of university uglies. Espresso NYP cofee forces a cold enema review.”
同音替换密钥把每个符号映射到一个字母,所以唯一的硬性检验是:每个重复出现的符号,无论出现在哪里,都必须解码为同一个字母。 claimed.py 把每段明文覆盖到转录上,检查这一点; results_claimed.txt 保存输出。
| 密码 | 重复符号 | 一致 | 冲突 |
|---|---|---|---|
| S1 | 13 | 10 | crosshair:在 COLLECTION 中为 N,在 OLD 中为 L。 sqnotchBR: T, D, O. circL:I、L、E。后两个在转录中被标为不确定。 |
| S5 | 27 | 26 | 符号 41:在 COLLECTION 中为 C,在 AGE 中为 G,在 COFEE 中为 C |
S1 中的两处冲突落在不确定的字形上,可能是转录错误。十字准星符号则没有被标为不确定:扫描件显示第 2 行第 10 列和第 4 行第 9 列是同一个字形,而所声称的文本要求一处为 N、另一处为 L。S5 中的符号 41 来自论坛的数字转录,同一解答在其他地方与之吻合 27 次中的 26 次。
这种程度的一致性来得很廉价。S1 有 70 个位置、53 个不同符号,所以只有 17 个位置与前面某个位置绑定;S5 在 180 个位置中绑定了 35 个。其余每个位置都可以自由选择,而所声称的密钥也确实随意挥霍了这种自由:在 S5 中,有 22 个不同符号代表 E,14 个代表 O,12 个代表 I。在如此少的等式约束下逐词拼凑出来的文本,几乎可以是任何东西。匹配对照已经用真实密钥证明了这一点;本节末尾的表格则用词典单词再证明一次。
语言模型得分是第二个衡量标准。它是模型在给定前四个字母的条件下赋予每个字母的平均对数概率,所用模型与给对照打分的是同一个。
| 文本 | 5-gram 得分,每字母奈特数 | 词典覆盖率 |
|---|---|---|
| 所声称的 S1 | −2.74 | 0.83 |
| 所声称的 S5 | −2.61 | 0.77 |
| 参考英文段落 | −1.58 | 0.76 |
| 对照假解答,70 个字母 | −1.60 | — |
| 对照假解答,180 个字母 | −1.83 至 −1.86 | — |
在这个模型上,真正的英语得分在 −1.6 附近,求解器给出的假解答也是如此,因为求解器最大化的正是这个得分。所声称的文本每字母低 1.0 到 1.2 奈特,这意味着模型认为其中每个字母出现的可能性大约只有普通英语的三分之一。专有名词和“cofee”这种拼写占了其中一部分代价,其余来自用词。词典覆盖率区分不出这三段文本。因此,所声称的解答比盲搜在对照上产出的结果还不像英语,而且在两份密码中各有一次在一个确认无误的符号上未通过等式检验。这两点都不能说明明文是什么。唯一性距离的算术表明,密文中没有任何东西能说明这一点。
进一步的检验: alternatives.py 在完全相同的“同一符号对应同一字母”规则下,用真实英文单词填满 S1(一种在每一步保留最佳部分填充的搜索,词表取自 Gutenberg,按词频打分)。下面是它最先返回的几种替代读法,以及它们在上文同一个 5-gram 字母模型下的得分:
| S1 的替代读法(70 个字母,每处重复都得到满足) | 奈特 / 字母 |
|---|---|
| to the whale and in the whale and the whale and the through the highly a lay of jonah her | −1.32 |
| to the whale and of the whale and the whale and the in which the highly a lay of the ah her | −1.59 |
| 2018 年的说法:a picture in collection of people bagel bobs old dairy frothy late cofee pour action | −2.74 |
它们毫无意义,它们是英语,而且与密文的吻合程度至少和那个说法一样好。语料的偏向(《白鲸》)显而易见,但无关紧要:任何英文词表都能产生这样的填充。构建本页时 S5 的运行仍在进行中,其输出写入 targets/scorpion/results_alternatives.txt.
05 现状,以及什么能改变它
已公开的材料无法确定密钥。这个限制是量化的(第 03 节),更多搜索也改变不了它。有三样东西可以。
| 什么 | 为何重要 |
|---|---|
| 公开 S2 至 S4 | 如果作者沿用了同一系统,那么在同样 16 套字母表下的更多文本会在每个字母上增加冗余,而只有在出现尚未见过的符号时才增加密钥量。 |
| S5 的字形特征转录 | 它可以检验形状族是否沿对角线贯穿 16 套字母表。这是唯一一个能把各字母表彼此联系起来、从而缩小密钥的假设。 |
| 作者本人的说法 | “All of my ciphers can be decoded simply, once the limited patterns and systems are discovered.”(“一旦发现了那些有限的模式和系统,我所有的密码都能简单地解开。”)如果属实,这说明密钥表是有系统的而非随机的,而一张有系统的表所含的密钥量远小于唯一性距离表所假设的。 |
在这些东西出现之前,对这两段公开文本的进一步搜索结果是可以预知的:流畅的英语,而对照显示其字母准确率在 3% 到 13% 之间。
06 文件
| 文件 | 内容 |
|---|---|
targets/scorpion/s1.txt | S1,70 个描述性符号名,排成 7 行、每行 10 个,不确定的辨识在注释中标出 |
targets/scorpion/s5.txt | S5,论坛的数字序列,符号 1–145,每 16 个换行 |
targets/scorpion/unicity.py | 唯一性距离表和匹配对照;需要由以下脚本构建的英语模型: targets/copenhagen/solve.py |
targets/scorpion/claimed.py | 2018 年读法的一致性检验和 5-gram 得分;输出在 results_claimed.txt |
targets/scorpion/alternatives.py | 束搜索,在“同一符号对应同一字母”规则下用词典单词填满每份密码,并用同一模型打分 |