《模仿游戏》中的密码“魅影”
2015-12-09剑白
剑白
《模仿游戏》是由莫腾·泰杜姆执导,本尼迪克特·康伯巴奇、凯拉·奈特莉等主演的传记电影。影片改编自安德鲁·霍奇斯编著的传记《艾伦·图灵传》,讲述了“计算机科学之父”艾伦·图灵的传奇人生,故事主要聚焦于图灵协助盟军破译德国密码系统,从而扭转二战战局的经历。该片获得第87届奥斯卡金像奖最佳改编剧本奖,以及包括最佳影片、最佳导演、最佳男主角、最佳女配角在内的7项提名。
实际上,密码学由来已久,远在古希腊时期就已经萌芽,近代以后更是衍生出很多分支学科,促进了计算机科学和网络安全方面的进步。这次我们谈到的《模仿游戏》的主人公,鼎鼎大名的艾伦·图灵,就是这一行的佼佼者。影片描写了他领导小组破译了二战时期德军最复杂的密码机——恩尼格玛密码机的过程,这一贡献令二战提前结束。为什么密码机能够起到这么重要的作用?这次破解对图灵有何启发?让我们来一同进入这神秘莫测的密码世界吧!
密码学渊源小考
人们为什么会想到要加密?被称为“信息论之父”的克劳德·香农在他的一篇论文中道出了两点宗旨:“秘密性”和“真实性”。这并不难理解,假设有A和B两个人,他们打算沟通,但又不想让第三个人知道,而信息在传递过程中又必须和第三个人接触,这个矛盾直到最基本的密码学原理产生之后才得以解决。
在公元前600年左右,就已经有人意识到这个问题,并且尝试解决。具体何人已经不可考,但我们可以设想这样一个情景:一个希伯来商人从一个不识字的匠人那里获取了一份给陶器上釉的配方,经过测试发现,这种配方比市面上的更先进,成本更加低廉。他很想立刻开工,但他人在外地,如果简单地托人带回去,谁能保证配方不被泄露呢?
他左思右想,想到了第一个主意:写一首隐晦的诗歌,工艺的精髓就隐藏在其中,而且不是他最亲近的人根本没机会猜出来。无疑,这确实能保证这配方不被泄露,但问题也随之而来,陶器上釉工艺是个精细活儿,他能保证对方完整领会其中的意思吗?如果不能,就算安全传回去了,又有什么意义呢?
苦恼中,他发现了一张羊皮纸。羊皮纸有何特殊呢?上面记载了某个执政官说的一段发言,正巧,他家里也有一张羊皮纸,同样记载了这次他十分认同的发言。他有了一个主意:将配方上用到的词同发言中用到的词一一对应、替换,然后托那个捎信的人带去一张上面写了杂乱无章的话的羊皮纸,顺便让他告诉他的妻子:“找出那张我日夜朗诵的羊皮纸,和这些胡言乱语对应,秘密就藏在那里面。”
这位希伯来商人利用的就是替换式密码,准确地说,是简易替换式密码。这种替换式密码一直到二战还是最基本的加密方法,被广泛地应用于民间和军队。而现代密码学的发展则要仰赖在本小节之处提到的那个人——克劳德·香农,他就职于贝尔实验室期间发表了一篇名为《通讯学的数学理论》的成果论文,这篇论文开启了现代密码学的大门。
艾伦·图灵与他的“上帝的羔羊”
第二次世界大战前,德国的数学家们就一直处于欧洲的领先地位,他们发明了一种加密方式,让海军只依靠收音机就能够接受指令。波兰的数学家们多年来一直在努力解码,截获这些信息并不难,难的是你该如何从数千条加密讯息中读出意思。
比如,有这样一条消息:“六点天气播报,白天天气晴朗。晚上有降雨。希特勒万岁!”没人会天真地相信这就是一条天气预报。但是你拿它又有什么办法?上文说的那个希伯来商人所用的简易的替换式密码早就被数学家们想到了破译的方法。他们发现,虽然拿不到对应密码本,但字母本身的出现是有频率的,通过统计每个字母左右两边出现的元音辅音字母的频率,就可以推测还原出原本的语句。可德国人不同,他们利用一种被称为恩尼格玛密码机的机器加密。
其实这种密码机并不新鲜,很早就用于商业,市面上随处可见。不过德国人却另辟蹊径,仅仅是多加了一个插线板,就增加了无数的可能性。口令被人轮班掌握,一日数易,几乎没有破解的可能。尤其令人沮丧的是,每当波兰人破解出上一次加密的规律时,德国人早已经动过插线板,换了一种加密规律。和德国人频繁更换口令的方式相比,波兰人永远处于后知后觉的状态。
图灵和许多数学家、语言学家被派往布莱切利庄园。在真实的历史上,图灵不像电影中说的那样人缘不好,还被上级部门质疑成果,真实的图灵因为他的天才和平易近人颇受那些数学家的拥戴,而且得到了英国政府的大力支持。
最后,图灵和他的同事们经过长久的努力,设计出一种破译机,昵称是“上帝的羔羊”。这种机器以波兰人的破译机为蓝本,进行了大幅度的改良,先排除若干自相矛盾的解读方式,余下的再穷举,一下就快了很多。不仅如此,几台机器相连还抵消了插线板所增加的可能性。渐渐地,就像影片中一样,他们足以在几分钟内就破译一份信息,最终,让这场波及全世界的大战提前结束了。
这中间还有个小插曲:由于检索全部的信息量太过巨大,就像影片中所描述的那样,他们需要找到一个能缩小范围的方法。结果,德军的公文形式给了他们灵感,德军的公文太过于正式,总有那么几个词会反复出现,比如“天气”和“希特勒万岁”。提取了这几个词之后,检索速度一下快了起来。
密码学前瞻——穷尽一生你也拿我没辙
随着现代计算机技术的进步,密码编码学不得不高速发展。图灵造的那个大家伙只能算是现代电子计算机的雏形,根据约翰·冯·诺依曼提出原理设计的第一台电子计算机“埃尼阿克”,每秒可以进行5 000次加法或400次乘法,而如今英特尔公司研发的民用级别处理芯片都能达到每秒495亿次运算,更不必说我们所熟知的天河二号,或是正在研发中的下一代计算机——量子计算机了。原有的加密方式在现代科技面前似乎不堪一击。
可是,密码编码学也有它的新发展。对称加密算法的佼佼者AES算法是下一代的加密算法标准。按照这种算法,假设计算机每秒尝试255个密码的话,要尝试1 490 000亿年才能得出结论!也许你要问,现在计算机算得那么快,怎么可能每秒才尝试255次?那是因为破译AES并不是简简单单地尝试一个数字,而是解一系列的方程,而这要花费大量的计算资源。
现代算法可谓是充分贯穿了一个精神——不必真的让你解不开,只要拖住你足够长的时间就好了。毕竟任何信息都有时效性,过了时效就毫无价值。纵观密码学的历史,由人工到机器,再到如今运算速度越来越快的电子计算机,人们的需求同时推动了技术的进步,而技术又反哺人类以更新更强的力量。潜伏在曲折历史中的“魅影”绝不止密码学一家,有机会再与诸位分说。