密码学科普小说 · 第 2 章

凯撒、木棍和那个闲得发慌的书吏

凯撒密码:把字母表整体往后转 3 格 ABCDEFGHIJKLMNOPQRSTUVWXYZDEFGHIJKLMNOPQRSTUVWXYZABC明文 HELLO → 密文 KHOOR  钥匙只有一个数字:3(总共只有 25 种可能) 弱点:试 25 次必中;而且字母频率原封不动地保留了下来
凯撒密码:字母表整体转个圈。好处是简单,坏处也是简单。

被书吏当场拆穿之后,Bob 郁闷了整整一个上午。中午啃干饼的时候,他忽然把饼一拍:“我知道问题在哪了。我的钥匙太小了。”

Alice:“钥匙?你那不就是‘挪三位’吗?”

Bob:“对,‘3’就是钥匙。可英文字母只有 26 个,挪 26 位等于没挪,所以钥匙最多只有 25 种。书吏就算不会频率分析,一种种试,试 25 次也必中。钥匙能取的所有值加在一起,叫‘密钥空间’。密钥空间太小,就等于门口只放了 25 把备用钥匙,小偷挨个试就行。”

Alice 想了想:“那就别按顺序挪。把 26 个字母完全打乱,A 对应 Q,B 对应 W,C 对应 Z……随便排。”

Bob 掏出炭笔在地上算:第一个字母有 26 种选法,第二个 25 种,第三个 24 种……乘下来是 26 的阶乘,大约 4×1026。“这个数比地球上的沙子还多。”他眼睛一亮,“就算书吏一秒试一种,试到宇宙热寂也试不完!”

他们兴冲冲写好一封用“乱序字母表”加密的信,故意丢在书吏家门口。

第三天,书吏又来敲门了,还带了两个烧饼。

“二位这次的谜题有意思多了,”他说,“花了我两天。”

Bob 整个人都裂开了。

书吏笑着解释:他根本没去一把一把试钥匙。他只是数——信里哪个符号出现得最多,那大概就是最常用的字母;哪个符号老是单独出现,那可能是“a”或者“I”;哪三个符号经常连在一起,那可能是“the”。一点点猜,一点点填,像拼图一样,越拼越快。

📌 课堂小结:密钥空间大 ≠ 安全

“单表替换”密码的密钥空间高达 26! ≈ 4×1026,暴力穷举确实不现实;但它保留了明文的统计规律,所以频率分析能绕过穷举,直接破解。
结论:一个密码安不安全,要看最聪明的攻击方法,而不是最笨的那一种。这条原则后面会反复出现。

当天晚上,Bob 第一次失眠了。Alice 倒是很淡定,她翻出从书吏那里借来的一本旧兵书,指着一页插图给 Bob 看:一根木棍,上面斜斜地缠着一条皮带。

斯巴达密码棒(scytale):换位,不换字 A T T A C K A T D A W N 解下皮带:AKA TTA… 钥匙 = 木棍的粗细。同样粗的棍子一缠,字又排回去了。
密码棒:字一个没换,只是换了位置。

“这是斯巴达人的玩意儿,”Alice 说,“叫密码棒。把皮带一圈圈缠在木棍上,沿着木棍横着写字;写完把皮带解下来,上面的字母就乱成一团了。信差把皮带当腰带系着就能送信。收信的将军手里有一根一样粗的木棍,一缠,字又排回去了。”

Bob:“这个思路跟凯撒正好相反。凯撒是替换——字母本身被换掉了,位置没变。密码棒是换位——字母一个没换,位置全乱了。”

Alice:“那它的钥匙就是……木棍的粗细?”

Bob:“对。可木棍粗细能有几种?拿一堆不同粗细的棍子挨个试,很快就能试出来。而且字母频率原封不动——E 还是最多,只是位置乱了。”

说到这里,Bob 忽然停住了,像是想到了什么。

“等等……如果我先替换、再换位呢?先把字母换成别的字母,打乱频率的对应关系;再把位置打乱,破坏‘the’这种连在一起的规律。两种都做,而且做好几轮……”

Alice 看着他:“你是不是又要发明‘超级密码’了?”

“不是我发明的,”Bob 难得地谦虚了一回,“这就是后来所有现代分组密码的基本套路。替换负责‘混淆’,让密文和钥匙之间的关系变得一团乱麻;换位负责‘扩散’,让明文里一个字母的改动,影响到密文的一大片。一个叫香农的人在 1949 年把这事讲得明明白白。今天你手机里跑的 AES,本质上就是把‘替换 + 换位’做了十几轮。”

📌 课堂小结:替换与换位

替换(Substitution):改变符号本身,例如凯撒密码、单表替换。
换位(Transposition):只改变符号位置,例如密码棒。
单独用哪一种都很脆弱;反复叠加多轮,再配上足够大的密钥空间,才有了现代分组密码。香农称之为“混淆”与“扩散”。

第二天,他们请书吏喝了一碗酒,郑重其事地拜了师。书吏姓温,是个落第秀才,平时帮人写状子、算账。他听完 Bob 说的“混淆”与“扩散”,琢磨了好久,最后放下碗:

“道理我听懂了。可我有个问题——你这套法子再厉害,写信的和收信的手里,总得有一样的‘钥匙’吧?那这把钥匙,又是怎么送过去的?”

Alice 和 Bob 对视了一眼。

他们都意识到,温先生随口一问,问中了一个困扰人类好几千年的问题。

📌 思考题

1. 用凯撒密码(挪 3 位)加密你的名字拼音,再让同桌只靠“试 25 次”破解它。
2. 为什么说“密钥空间大”只是安全的必要条件,不是充分条件?举一个本章里的例子。