从古至今,密码激发了设计者的智慧和破解者的聪明才智。密码学,也就是发送秘密信息的学问,它是智力超群的对手之间针锋相对的对决,来决出秘密究竟会不会得到破解。
作为一门发送秘密信息的现代科学,现代密码学跟所有现代科学一样依赖于数学。如果没有数学,在理解密码学时你走不了多远。约书亚•霍尔登在他的《密码的数学》一书中,同时聚焦于编码和解码,通过大量历史趣闻和真实案例,阐述了大部分为人熟知的古代和现代密码背后关键的数学理念,揭示了在这门学问中,数学是怎样随风潜入夜,润物细无声的。同时,他还探讨了多字母替换密码、换位密码(其中一种是由斯巴达人发明的)、序列密码、涉及指数运算的密码以及公钥密码等。
史蒂芬·霍金在《时间简史》里说,有人告诉他,写在书里的每一个公式都会让图书的销量减半。然而,对于这本书,好像并不适用。虽然里面充满了数学公式,却不同于你既往的认知,这里没有三角学、积分和微分方程,有的只是一些通常并不会出现在代数课堂上的思想,它们像一个神秘又充满挑战的谜题,你会随着作者的层层讲述,披荆斩棘,一路前行。
准备好了吗?一切,就从最简单又最为知名的凯撒密码,开始吧。
1.1爱丽丝与鲍勃与卡尔与尤利乌斯:术语与凯撒密码
当我们谈论密码学时,我们会说到爱丽丝想发送信息给鲍勃,这已经成为约定俗成的习惯了。但跟这儿我打算从尤利乌斯说起。这就是尤利乌斯·凯撒(Julius Caesar),他不只是罗马“千秋万代的独裁者”,也是军事天才、作家,以及……密码工作者。
我们今天叫做“凯撒密码”的这玩意,很可能最开始并不是凯撒发明的,但肯定是因为他才变得这么有名。罗马历史学家苏埃托尼乌斯(Suetonius)这样描述凯撒密码:他(凯撒)除了写给西塞罗(Cicero)的信,还有就私人事务写给至交好友的。在私人信件中,他要是想说一些机密的事情,就会写成密码,也就是改变字母表中字母的顺序,写出来就字不成字了。要是有人想破译这些文字知道它们都是什么意思,他就得把字母表中的第四个字母,也就是 D 替换成 A,并对其它字母也以此类推。
换句话说,当爱丽丝想要发送信息时,她先得写出明文(plaintext),也就是把信息用正常的语言写出来的文本。接着她得把这条信息译成密码(encipher),也就是用密码将其写成秘密形式,得到的结果就是这条信息的密文(ciphertext)。要把信息变成代码的话,就得对其进行编码(encode),或者用加密(encrypt)这个术语也可以。对明文中的每一个 a,爱丽丝在密文中将其替换成 D,再将每一个 b 都替换成 E,以此类推。每一个字母都在字母表中往后移动了三位。这可真是太简单了。但是当爱丽丝一直进行到字母表的最后,把字母都用完了的时候,好玩的地方就出现了。字母 w 变成了 Z,那字母 x 该去哪儿?它绕了一圈回到开头,变成了 A!于是字母 y 变成 B,而 z 变成了 C。举个例子:“你也有份吗布鲁图(and you too, Brutus) ”这条信息就变成了:
这就是爱丽丝要发给鲍勃的信息了。
“绕回去”这种思路,实际上你从小时候起就已经在用了。一点之后再过三小时是几点?四点钟。两点之后再过三小时是五点钟。十点之后再过三小时又是几点呢?一点钟。你看,绕回去啦。
1.2关键问题:凯撒密码的一般化
在凯撒看来,他的密码够安全了,毕竟能截获他的消息的人多半大字不识一个,就更不用说还能分析密码了。但是从现代密码学的角度来看,凯撒密码有很大的缺点:你一旦搞清楚人家用的是凯撒密码,就能对整个系统都一览无余。没有密钥或别的只言片语的信息能让你对密码做出变化。这看起来糟糕得很。
停下来想一会儿吧。多大个事儿呢?你的密码要么是个秘密要么不是,对吧?这就是凯撒那个时代的看法,在那之后好多好多年也还是如此。但到了 1883 年,奥古斯特·柯克霍夫(Auguste Kerckhoffs)发表了一篇划时代的文章,文中宣称:“系统必须不需要保密,而且就算被敌方窃取,也不会带来麻烦。”太神了!怎样才能让你的系统就算被窃取也不带来麻烦呢?
柯克霍夫接着指出,窃听者伊芙要发现艾丽丝和鲍勃用的是什么系统可太轻而易举了。跟凯撒那个时候一样,在柯克霍夫的年代密码学还是主要用于军事和政府,因此柯克霍夫想的是,敌人可能通过贿赂或是抓获爱丽丝或鲍勃的一名工作人员来获取信息。就算到了今天,在很多情况下这些问题也仍然值得关注,我们还可以添进去诸如伊芙窃听电话、在电脑上安装间谍软件和纯靠运气瞎猜的可能性。
不过在另一种情况下,如果爱丽丝和鲍勃有一个需要密钥来进行加密和解密的系统,事情就没有那么糟糕了。就算伊芙发现了正在使用的通用系统是什么,她也还是不能轻易读取任何信息。试着在没有密钥的情况下读取信息,以及/或确定用于一段信息的密钥是什么,就叫做密码分析,或是密码运算,或者再通俗一点,叫做破解。而就算伊芙设法找到了爱丽丝和鲍勃的密码,那也不算大势已去。要是爱丽丝和鲍勃够聪明,他们就会时常倒换密钥。因为基本系统还是一样的,倒换密钥也不会很难,而就算伊芙拿到了其中一些信息的密钥,她也还是没办法读取所有信息。
所以我们得找个办法来对凯撒密码做一点点改动,这取决于一些密钥的值。合情合理的出发点是,问一下为什么爱丽丝是将她的明文移动了3个位置,而不是别的数字?并没有特别的理由,也许凯撒只是对数字3情有独钟罢了。他的继任者奥古斯都(Augustus)用的是跟他相似的系统,但每个字母只向右移动了一位。“回转13位”密码将每个字母移动了13位,走到头的时候又绕回到起点。这种密码经常在网络上用到,用来隐藏笑话的包袱,或是有可能会冒犯到某些人的内容。移动k个字母(或者说加k模26)的一般思路就叫做以 k为密钥的移位式密码,或是加法密码。比如说,假设有个以 21为密钥的移位式密码,那凯撒的消息就会变成:
那一共会有多少个不同的密钥呢?移动0个字母恐怕不是个好主意,但你也可以这么干。移动26个字母又跟移动0个字母是一样的——要不换个说法,以26为模数,26就和0是一样的。移动27个字母也跟移动1个字母殊途同归,等等。所以,一共有26种移动方法能实际带来不一样的结果,也就是说有26个密钥。记住这里面也有0,那个“没头脑密钥”,实际上对信息没有做任何处理。加密时什么都没干,术语就叫做无用密码。假设爱丽丝用移位式密码给鲍勃发了一条信息,而且被伊芙截获了。就算伊芙设法知道了爱丽丝和鲍勃用的是移位式密码,她也还是要试26次不同的密钥来解密信息。这不是个大数目,但总比凯撒密码强一点。
《密码的数学》
[美]约书亚•霍尔登
湖南科学技术出版社·原力
2021年10月出版
想在数学世界继续畅游?尽在——
《数学圈丛书》
数学圈丛书
“数学圈丛书”请大家走进数学圈,一块我们熟悉也陌生的园地,也走近数学圈里的人。
我们熟悉它,因为几乎每个人都在课堂和考试中走过多年的数学路。然而这套书,要为你提供全新的视角,它不为专门传达具体的数学知识和解题技巧,而以非数学的形式来普及数学,着重宣扬数学和数学人的思想和精神。它的目的不是教人学数学,而是改变人们对数学的看法,让数学融入大众文化,回归日常生活。读这些书不需要智力竞赛的紧张,却要一点儿文艺的活泼。你可以怀着360样心情来享受数学,感悟公式符号背后的理趣和生气。
原标题:《普通人也能读懂的密码学》