Alice 和 Bob 的故事

没错,这篇内容写的就是上一篇开头提到的那个“极其无聊的问题”。本来不打算写的,既然研究过,还是整理出来纪念一下。

不论是看艰深的论文,还是看 geek 漫画,总能看到 Alice 和 Bob 这两个名字出现。已经记不起来第一次见到这对名字是在哪里了,总之从一开始就默默接受了这个惯例,直到前段时间才突然好奇起来,这两个人到底有什么来头才能在这么多地方做男女主角,这个惯例是从什么年代才开始兴起的呢?

形影不离的学术情侣

影视作品里出现过的情侣叫荧屏情侣,那么 Alice 和 Bob 就应该称作学术情侣了。很多学术领域会用 Alice 和 Bob 做主人公,其中最经典最被人熟知的还是要数计算机安全,特别是密码学。如果没有 Alice 和 Bob,在讲解密码协议的时候,文字描述大约会变成这样

A 与某个声称自己是 B 的人通信。为了确保无误,A 必须先看看 B 是否知道密码 K。因此 A 向 B 发送了一段随机的 X,B 用 K 将 X 加密后得到 Y 并将 Y 回传给 A。

在这样的一段话里,协议双方看上去像一段随机码一样冰冷单薄。而引入 Alice 和 Bob 代替 A 和 B,协议双方一下被赋予了人格,变得立体起来,读起来很容易有画面感,通信过程也随之变得更有剧情,更易理解。正因为如此,Alice 和 Bob 成为了学术讨论中频繁现身的一对好伙伴,课堂上、教科书里、论文中…在他们的帮助下,一批又一批学生理解了新的知识,一个又一个新思路得到传播,有人甚至在论文中向 Alice 和 Bob 致谢。

Alice 和 Bob 的诞生

其实 Alice 和 Bob 的诞生远没有我预想的那么久远,算起来他们也就比我大十岁,是七五后。还记得 RSA 算法是如何提出的吗,经历了一番探究,某夜突然灵机一动的 RSA 之 R,Ron Rivest,彻夜写了那篇著名的论文阐述 RSA 算法的思想,而我们的 Alice 和 Bob 首次登台就是在那里。Rivest 不仅是 RSA 之父,也是 Alice 和 Bob 之父。就像他们没有料到 RSA 算法会得到如此广泛的应用一样,他也完全没有料到 Alice 和 Bob 成为了行业惯例,知名度甚至超过了自己。

Alice 和 Bob 的首登场 via

一次采访中,Rivest 回忆起当初创造 Alice 和 Bob的情景。Alice 和 Bob 的诞生的确是为了避免在描述中使用 A 和 B,又因为他们分别以 A、B 开头,所以在算式中,仍然可以简洁地用 EA、EB 这样的形式区分。而创建一男一女两个角色,并不是为了给读者什么编罗曼史的机会(事实上无法避免地,很多人都这么做了),而是为了在描述时,可以方便地用她(she)和他(he)来指代而不至于混淆。至于为什么会是 Alice 和 Bob 这两个名字跳了出来,Rivest 自己猜测可能因为自己比较痴迷《爱丽丝梦游仙境》。

Alice、Bob 和他们的朋友们

RSA 算法的论文发表后,掀起了用 Alice 和 Bob 进行讲解的热潮。在后续发表和出版的文字中,人们陆续开始学着用 Alice 和 Bob 代替 A 和 B,其中最为著名的便是 Bruce Schneier 的《应用密码学》。Schneier 显然非常推崇这种作法,以至于在书中,即便是讲述 RSA 算法诞生前的各种协议和密码算法,他也用到了 Alice 和 Bob。由于有些协议情况复杂,Alice 和 Bob 两个人已经不能满足剧情,Schneier 在书的最开始给出了一个长长的演员表,除了发起和响应的 Alice 和 Bob,还有第三、四方 Carol 和 Dave,以及臭名昭著的窃听者 Eve,更为恶劣的主动攻击者 Mallory 等等。

一个有趣的细节是,在《Secret History: The Story of Cryptology》一书中提到了一个变动,主动攻击者的名字从第一版的 Mallet 改成了第二版的 Mallory。尽管如此,Mallet 这个名字还是记录在密码学历史中,书中说,还有一个美国密码协会(American Cryptogram Association)的成员由此受启发,以 Mallet 做笔名。

纠缠不清的一对冤家

慢慢地 Alice 和 Bob 的形象丰富起来,关系也就变得复杂起来,变成了一对纠缠不清的冤家。两个人之间并没有看上去那么亲密,双方都不能信任对方,交流充满了猜疑和防范。然而两人却又是那么的密不可分,几乎永远成双成对出现,不管发生了什么,Alice 还总是想方设法地向 Bob 发送消息,Bob 则总是小心翼翼地接受它。Schneier 总结说,Alice 和 Bob 共享过秘密,尝试过恋爱、结婚,甚至离婚。任何一件需要安全进行的事,Alice 和 Bob 都一定曾在某篇密码学文章中做过。

密码学家 John Gordon 在他著名的餐后演说中,形象地描述出这其中的纠结:

多数人处于 Alice 的境地时会选择放弃,但 Alice 没有。她有着惊人的勇气。面对各种诡异的情况,充满噪声的电话线、税务机关和秘密警察的窃听,Alice 还是乐意去尝试和一个她并不信任、也听不清、还极有可能被别人冒充的人通信,来进行退税欺诈甚至策划政变,同时还要尽可能地减少电话费。

而编码学家则是一群认为 Alice 没疯的人。

这是 1984 年的演讲,Gordon 已经将 Alice 和 Bob 这对诞生不到十年的名字称作“longstanding tradition”了。不知道应该说是不出所料还是出人意料,这段通俗非正式的演讲一下走红。特别是文中八卦 Alice 和 Bob 的部分,更是被四处摘录。Gordon 自嘲地说,现在没人知道他在密码学上的成就(强素数概念的提出),提起他都是说“那个八卦 Alice 和 Bob 的家伙”。他几次尝试把演讲稿从网页上撤下来,但都在读者的强烈抗议下重新放出。又是一个被 Alice 和 Bob 抢去风头的大师。其实这篇演讲相当有趣,除了 Alice 和 Bob 的问题,还用非常通俗的语言解释了编码学及其各个分支的基本概念,有兴趣可以进一步阅读。

结局?

Alice 和 Bob 最终会如何发展呢?他们会不会退休,会不会被新人代替?

曾有印度学者提出用印度神话故事中的 Sita 和 Rama 代替 Alice 和 Bob(via),Sita 正好简写为 S,也就是 Sender,Rama 则代表 Receiver,同时这些人物所在的神话故事情节也正好是 Sita 要给 Rama 发送消息。这种思路类似于在交互式证明系统中,利用 Arthur(亚瑟王)和 Merlin(梅林)的历史角色来阐述和命名的方式。

但显然这种精心策划的解决方案不能撼动不经意兴起的惯例,我们的 Alice 和 Bob 还是会作为这个领域的传统传承下去,短期不会被其他名字代替。祝福他们会终成眷属,结束艰难的通信,幸福地生活在一起,直到永远。

 

 

上一篇文章有评论建议附上某人写的“跨越千年的 RSA 算法”,我其实原本有打算链过去的,可那个家伙偏偏在讲解 RSA 的时候用的是 A 和 B 而不是 Alice 和 Bob,而且拒绝修改,只好在这里拉出来做反例了(哪个说重庆人 pa 耳朵的)。

  • fisio

    一对儿活宝。。

    • http://localhost-8080.com/ localhost

      咳咳,还以为在说我和 M67…

      • fisio

        是的,就是

      • Jr.

        祝 Alice8080 和 Bob67 这对儿活宝也“幸福地生活在一起,直到永远”。

    • http://localhost-8080.com/ localhost

      咳咳,还以为在说我和 M67…

      • fisio

        是的,就是

  • 自大学家

    好文!转载走了。

  • Sunny
  • Guest

    啧啧,那个家伙。。

  • jeff

    啊?原来您先生就是M67?

    • jeff

      在下实在迟钝,翻看了一下给geek做礼物的那篇上的一张图片,终于明白过来。祝福博主

      • http://localhost-8080.com/ localhost

        谢谢 :)

  • Ulysses_CY

    入侵者还经常有叫“Trudy”的。。。

  • F

    诶嘿?在评论中看见了八卦!

  • F

    诶嘿?在评论中看见了八卦!

  • Max

    另外在博弈论中大多都以alice和bob命名

  • Yi Bai

    好感人的Alice..

  • Leonhardt24

    每次看到相对论或者量子通信的时候都有Alice和Bob = =

  • Ann

    虽然以我的智商来说笑话完这篇文章很困难,还得不停地查找相关资料,但是我被它迷住了!

  • ann
  • ann

    好感人的Alice.. http://bigsec.net

  • http://chenjia.info 陈佳

    matrix67也是重庆人,我一直还不知道。

  • http://blog.163.com/observer_/ Nanguage

    2333

  • fxz

    写得太好玩了www (话说原来matrix67是重庆人…