【云图解密】AI,父亲与计算机

先声明,破译的大部分工作不是我干的,我在这中间充当的角色,大概就是侦探的那个“笨蛋朋友”——负责跑腿、问人、捧哏以及最后以我半吊子的水平将这个过程复述成大部分朋友能理解的文字。
感谢密码学导师(不是)NGA的[@Coruarua]老兄的指导与科普,以及一位爱好推理的朋友的大力助攻。要问解密的关键是啥,只能说是运气和瞎猜了。

直接切入正题,云图二测剧情最后留了个哑谜【YVKVPEVLR】,提示是一个约定。




鉴于第一章的密钥【200512L13E20182120H】→【TELLMEtruth】(详见二测剧情食用报告)并不是特别复杂的加密,所以先暂且假设这个密文也是单表替换(即密文与明文中的字母一一对应,只存在一张密码表,与之对应的是多表密码)。
因为字母“V”在其中重复出现了三次,可以假设它是英文单词中高频率出现的一个字母,而出现频率最高的三个字母是“ETA”。于是这里就借助了一下密码分析软件的力量,分别假设“V=E”,“V=T”,“V=A”的情况
V=E

V=T

V=A

剩下的就只能一一排查过去
先说最简单的排查,就是按照这些答案对密文进行替换后,观察单词在密文中的所处位置。
比如,其中有一个答案——
cipher: kvpevl
word: secret
虽然“secret”看起来很有可能跟“约定”有关,但要注意,“secrect”替换后的YV【KVPEVL】R→YV【secrect】R,最后有一个“R”落单了,显然,即便能找到密文R对应的字母,也很难组成通常意义上有意义的短语或词组,所以可以将这个答案排除掉。
cipher: vpevl
word: truth
这个答案同理,“truth”进行替换——YVK【VPEVL】R→YVK【truth】R
最后落单一个“R”,所以排除。

于是,进行一轮简单排除后,选出其中可能与“约定”有关的答案,先从较长的答案开始,列出对应的密码表进行观察。

其实到这一步就有点劝退人了,即便缩小范围到100个单词以内(还不能保证正确答案就在其中),这么一个表一个表推理下去工作量也是很巨大的。
我只能跑去求教一位爱好推理的朋友,他观察之后指出,第一张表和第二张表中的“KPR”和它们对应的明文字母相差不远,且替换后的密文也是按字母表的先后顺序排列的。
举个例子:
按“respect”的密码表将【KPR】替换成明文后是【RST】,而【RST】的排列顺序是遵循字母表的;
同理,按“perfect”的密码表将【KPR】替换成明文【PRT】,也是按字母表顺序排列的,即密文K在P之前,明文的P也在R之前。
对应的反例,诸如最后的“always”密码表——
密文【ELPR】替换成明文是【WYLS】,密文的L在字母表上位于P之前,但它们对应的明文Y是位于L之后的。
而另一点发现是,【EKPR】这四个字母的序号都比它们相对应的明文小(参见表中标注的字母序号),比如“respect”密码表中,E<P,K<R,P<S,R<T。
基于这两点发现,他认为这个密码表有可能是比较复杂的凯撒加密,即在特定的字母范围内,偏移的位数不同。
而这个假设最后经由[@Coruarua]老兄确认,可能是keyword cipher,关键词加密法(具体百度,这里不多做解释)。


现在也只能“死马当活马医”,找出关键词了。
(一)
先从“respect”表入手,我们已经得到V=E,K=R,P=S,E=P,L=C,R=T,替换后可得【Y】erespect,只差Y不知道对应明文字母。
这里简单穷举推理一下能得出两种可能,Y=H,对应明文:he respect;或Y=W,对应明文:we respect,将这两种可能都列成表。
Y=W

这里密文Y的序号大于明文W,是有悖于关键词加密后的密码表规律的;或者说关键词长达23个字母(具体的逻辑稍微想一下就明白了),这显然不可能,所以Y=W的可能性被排除了。
Y=H

表中可见,最开始按顺序排列的密码表是从E开始,而它与对应的P相差11个字母序号,所以可以假设,关键词有11个字母。
然后可以将密文R以后的字母去掉V和Y,按次序填入表中;字母序号5的E位于16位,符合“关键词有11个字母”这个推论,于是E之前的ABCD也可以按次序填入表中了。

最终得到如上的密码表,关键词疑似【**L*V**Y***】
现在没有找到对应关系的字母有:FGHIJMNOQ,对应表中剩下的9个空位。
到这里,密文长度过短的捉急之处就体现出来了——有较长密文支持的破译(如果是单表替换),不仅能通过字母出现频率、字母组合推测对应明文,且可以通过密文逆推验证密码表。一般的关键词加密破译到这步就已经可以到密文中去寻找能够简单推理、破译的密文单词,将剩下的表格慢慢填完了。但这里不行,只能摁推了。
因E-P相差11位,而到K-R的时候只差了7位,由此可以推断FGHIJ中有4个字母参与了关键词的构成,剩下的那个字母对应明文表中的Q;而到P-S对应关系时,这个序号差缩小到了3位,所以K到P中间的【LMNO】四个字母也是关键词的一部分(其中L已经找到对应明文);同理可得,Q必然也是关键词中的字母。
所以这堆字母可以分为两组:【FGHIJ】五选四,和确定是关键词包含的字母【MNOQ】。剩下的就是穷举和推理。
——但最终没有得出有意义的关键词。
没错,忙活了这么多,结论就是——这个表可能不是正确答案。
于是只能将这张表搁置,寻找另外的可能。

(二)
根据“perfect”密码表,我们已经得到V=E,K=P,P=R,E=F,L=C,R=T,替换密文得到【Y】eperfect。
同样的,穷举可得Y=B,所以对应明文是:be perfect。
其实到这里,我已经有点兴奋起来了。“be perfect”这句话一有剧情支撑,二也符合“约定”这个理解,很有可能就是正确答案。


但在没有得到明确、完整的密码表之前,这种推论终究是有缺陷的——因为目前的字母对应还看不出任何规律,可以说是无序的,那么完全有可能得出另外一个能自圆其说的简单替换密码表,比如上文的“he respect”。所谓“文无第一,武无第二”,正因为这种阅读理解并没有一个可以量化的标准,我能说“be perfect”是一种“约定”,也有人能将“he resepect”解释为一种“约定”。
所以破题并验真的关键还是——密码表。
那么就不废话了,将Y=B这个推论填入“perfect”密码表后

同上,将密文P以后的字母去掉V和Y,按次序填入表中

因K-P相差5个字母,在K之前的密文表有E-F这个对应,假设这中间的其他字母没有出现在关键词中,则关键词有5+1=6个字母,而E是最后一个。
于是,把密文K以前的字母去掉E,按次序填入表中

因K-P相差5个字母,而到P-R时只差2个字母,除去已知的L-C这个对应,能推出【MNO】三个字母中有两个字母属于关键词,剩下一个字母对应明文Q。
至此,形势已经很明朗了。剩下的A32穷举得出最后的密码表——

关键词是:my love

最终结论
这是关键词【my love】加密后的单表替换密码,【YVKVPEVLR】对应的明文是:be perfect.
其实在看完破译过程后我是不太想把这个过程写出来的,因为过于玄学(指看运气),也没什么技巧可言。只想把“be perfect”这个答案甩出来就完事。
但从感性的角度细细揣摩,这个被加密了的“约定”,这份脉脉不得语的“爱”,赋予了原本机械、冰冷的密码表温情的意义,让我印象中不那么“完美”的四章剧情似乎又变得“完美”了一些。
转念一想,云图也正是因为原本的机械造物拥有了人性,才使这些故事充满了人情味吧。

my love, be perfect.

