查看原文
其他

漫画 | 三千年的密码战争,人类天才的巅峰对决

码农翻身刘欣 码农翻身 2021-05-10

在遥远的古代,两军对垒,负责送信的信使可不是一个好差事。

后来,人们想出了一个好办法:把信息藏在头皮上

等到信使的头发长出来,他就可以伪装成普通人,大摇大摆地送信了。

到了目的地, 士兵再把信使的头发剃光

这种叫做信息隐藏的办法,传递一些不那么及时的情报还行。


如果是紧急情报,那肯定等不及头发长出来了。


很快,人们就发明了信息加密的方法:可以把字母改写成另外的字母。


现在我把JYVTR发给你,如果你不知道明文和密文直接的对应关系,那是不容易猜出来的。


但是要记住这么长的对应关系,是有点麻烦的,还有个简单的办法:选择一个词作为钥匙,比如LINUX。

总之,算法是公开的,但是密钥是保密的。

不仅是字母, 数字、稀奇古怪的字符、图形都可以作为加密的手段。


牢固和简易的特点,让替代式加密方法在通讯届风光了近千年。


很多人相信,由于可用密钥的数目过于庞大,替代式密码是无法破解的。

有了坚固的盾,必然会出现更锋利的矛。


公元9世纪,阿拉伯的伟大科学家肯迪出手了。

肯迪写了一部伟大的作品《解译加密信息手稿》 ,提出了频率分析法。


频率分析法是怎么工作的? 


一个例子就能轻松理解。


首先,我们需要知道字母出现的频率


然后分析一下密文中字符出现的频率,和上图中字母的频率进行对比,一步步分析。

人类语言中总是有冗余,所以不论你用什么密码替代方法, 频率分析法总能找到空子钻进去。


替代法建立起的加密大厦轰然倒塌。


压力再次回到编码者这一边, 怎么才能把这该死的字符出现频率给去除呢?


15世纪,佛罗伦萨人阿尔伯蒂提出了一个新的替代加密方法。

如果用这种办法来加密 hello 这个词的话,是这个样子的:


hello 这个词中的两个l 被加密成了不同的字符!


1562年,法国人维吉尼亚提出了一个更“狠”的终极方案:维吉尼亚方格


维吉尼亚密码法不仅可抵挡频率分析法的攻击,而且密码钥匙的数量也很惊人。


因为发信人和收信人可以协商采用字典上的任何一个单词、任何单词组合,乃至杜撰的单词。译码人根本没法通过尝试的方式来破解。

这一追就是几百年 !


终于,另外一个伟大的译码者出现了。


1854年,计算机先驱巴贝奇敏锐地发现了维吉尼亚密码法的缺点。


维吉尼亚密码法的弱点在于它的循环本质。假使钥匙单词是4个字母长,则每逢4个字母就会用到同一套密码字母集。


译码者一旦辨识出钥匙单词的长度,就能把密码文视为4个单套字母密码法的系列组合,再以频率分析法逐一破解。


风光了几百年的维吉尼亚密码危在旦夕。

这种办法就叫单次钥匙本密码法, 可以保证通信的绝对安全, 但是它也有两个巨大的缺陷

所以手工肯定完成不了这个任务的,必须要依赖专门的机器。


1918年德国发明家亚瑟·谢尔比乌斯发明了Enigma, 这是有史以来最可怕的加密机器

使用者每天只需要提供初始密钥就可以了,难度大大降低


在接下里的20多年中,德国军方购买了三万多台Enigma密码机。


二战爆发时,纳粹德国的通信加密水平无懈可击,傲视群雄, 让盟国头条不已。


破解Enigma成了盟国情报机构的头等大事。

英国专门成立了一个密码破译机构:布莱切利庄园, 巅峰时期,这里有7000人破译密码!


他们在波兰人工作的基础上,夜以继日地破解,有了不少成果,但是德国人也在不断地升级Enigma, 让破解越来越难。


乱世出英雄,布莱切利庄园的英雄是:阿兰·图灵。

图灵也是计算机行业的祖师爷,他最为知名作品就是他的论文和图灵机,他对于用机器来解决数学问题有着特殊的素养。


经过一份辛苦的研究, 图灵提出了一个惊人的密码分析方法 :制造一台叫“炸弹”的机器,来破解Enigma。

“炸弹”的造价在当时高达10万英镑, 相当于现在的一千万, 英国制造了49台“炸弹”。


为了将“炸弹”的效果发挥到极致,图灵需要更多的人手, 但是上司不同意加人。


于是图灵和同事越级向英国首相丘吉尔求助。


丘吉尔毫不迟疑地响应他们的请求。他马上写了一张备忘录给他的参谋首长。

图灵和他的团队破译了大量德军的机密,显著地缩短了第二次大战的进程。


二战结束后,布莱切利园的秘密被封存, 直到1974年才解密, 但是图灵等不到了。


图灵是同性恋,这在当时的英国不能被世俗所允许。

1954年,他把苹果浸入氰化物溶剂,然后咬了几口, 年仅42岁的天才自杀了

译码者又一次占据了上风, 有个很大的原因是:对于通信双方来说,必须要发送包含密钥的密码本,这就存在了泄密的可能。


要是通过网络、无线电来发送密钥,那肯定得加密,加密又需要密钥,这就陷入了鸡生蛋、蛋生鸡的无限循环。


密钥的发送是个千年的难题!


到底该怎么办呢?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存