為什麼計算機科學如密碼學喜歡用 Alice 和 Bob 舉栗子?

求梗的出處


這周四接到了知乎的一個邀請,自己突然反應過來有一段時間沒在知乎答題了,正好瀏覽知乎看到了這樣一個有趣的問題,於是拋磚引玉來答一答。

Alice和Bob的誕生(1978年2月)

如果知友們了解一些密碼學的知識,就一定會知道一個著名的密碼學體制:RSA密碼體制。RSA密碼體制是密碼學家提出的第一個公鑰密碼體制。簡單來說,公鑰密碼體制允許相隔萬里的兩個人在互相不見面的條件下,遠程實現安全通信。誇張點的說,沒有RSA密碼體制,我們就沒法通過互聯網安全聊天、實現電子交易,整個互聯網會變得非常不安全。

自左至右分別為Shamir、Rivest、Adleman。圖片來源:https://cryptologicfoundation.org/

RSA這個名字是發明此密碼體制的三位密碼學家Rivest、Shamir、Adleman的首字母縮寫。這三位密碼學家在1977年4月撰寫了一篇論文《數字簽名與公鑰密碼學》(On Digital Signatures and Public-Key Cryptosystems),並投稿至了一個期刊上,不過很遺憾這篇論文被拒稿了。不過,是金子總會發光的,這三位密碼學家在1977年12月撰寫了RSA密碼體制的相關專利(此專利最終於1983年9月20日授權),並將論文進行了修改,把題目改為《一種實現數字簽名和公鑰密碼系統的方法》(A Method of Obtaining Digital Signatures and Public-Key Cryptosystems),投稿至頂級期刊《ACM通信》(Communications of the ACM),最終於1978年2月成功發表。Rivest、Shamir、Adleman也因為提出了RSA密碼體制,最終於2002年獲得了計算機領域的最高獎項:ACM圖靈獎(ACM Turing Award)。

不過我們今天要聊的並不是RSA密碼體制,而是Alice和Bob。由於論文《一種實現數字簽名和公鑰密碼系統的方法》於1978年2月發表,1978年2月也就成為了這篇答案的主人公Alice和Bob的生日。為什麼這樣說呢?因為這篇論文中首次使用了Alice和Bob來描述方案。在論文第2頁,第2章的最後一個自然段,有這樣一段描述:

For our scenarios we suppose that A and B (also known as Alice and Bob) are two users of a public-key cryptosystem.

在我們的場景中,假定A和B(也稱為Alice和Bob)是公鑰密碼系統中的兩個用戶。

論文《一種實現數字簽名和公鑰密碼系統的方法》的第2頁

在這篇論文發表之前,通信領域論文中一般用A表示數據發送方,一般用B表示數據接收方。例如,1976年,密碼學家Diffie和Hellman發表了標誌著公鑰密碼學思想誕生的論文《密碼學的新方向》(New Directions in Cryptography)。在此論文中,Diffie和Hellman就使用A和B分別表示數據發送方和數據接收方。在論文第7頁,可以看到這樣一句話:

If user A wishes to send a message M to user B, ...

如果用戶A想將消息M發送給用戶B,...

論文《密碼學的新方向》中仍然使用A和B表示數據發送方和數據接收方

然而,大約2年後,Rivest、Shamir、Adleman就在論文中用Alice和Bob替代了A和B。根據Rivest的回憶,當時之所以使用Alice和Bob,一方面是避免使用枯燥無味的A和B,而這兩個名字的英文首字母仍然維持A和B不變;另一方面是因為Alice和Bob分別為女性名字和男性名字,這樣在論文後面的部分中就可以使用英語的她(she)和他(he)分別指代Alice和Bob,不至於讓讀者混淆。

至於究竟為什麼要用Alice和Bob,而不用其它名字,有2種說法。一種說法是Rivest可能比較喜歡《愛麗絲夢遊仙境》(Alice"s Adventures in Wonderland)這部文學作品。

英國作家Charles Lutwidge Dodgson以筆名Lewis Carroll出版的兒童文學作品《愛麗絲夢遊仙境》。圖片來源:https://zh.wikipedia.org/wiki/愛麗絲夢遊仙境

另一種說法是Rivest、Shamir、Adleman對1969年的一部電影《鮑勃卡羅爾特德愛麗絲》(Bob Carol Ted Alice)比較熟悉。

電影《鮑勃卡羅爾特德愛麗絲》的海報。圖片來源:https://en.wikipedia.org/wiki/Bob_%26_Carol_%26_Ted_%26_Alice

至於具體是什麼原因,就不得而知了。不過,由於Alice和Bob是英語中分別以A和B開頭的最常用的名字,可能當時這三位密碼學家選取名字的時候只是選了一個滿足條件的、最常用的名字而已。

Alice和Bob在密碼學中被廣泛使用(1980年以後)

1978年後,Alice和Bob這兩個名字逐漸成為了密碼學領域中的「著名人物」。慢慢地,大量的密碼學家開始使用這兩個名字代替枯燥無味的A和B。

1981年5月20日,密碼學家Rabin在給哈佛大學艾肯計算實驗室(Aiken Computation Lab)中撰寫的技術報告《如何利用不經意傳輸實現秘密交換》(How to Exchange Secrets with Oblivious Transfer)中就使用了Alice和Bob:

Bob and Alice each have a secret, SB and SA, respectively, which they wish to exchange.

Bob和Alice分別有一個秘密SB和SA,他們希望交換他們的秘密。

技術報告《如何利用不經意傳輸實現秘密交換》的第1頁

1981年11月10日,密碼學家Blum發表了一篇題為《通過電話拋硬幣:一個用於解決不可能問題的協議》(Coin Flipping by Telephone: A Protocol for Solving Impossible Problems)。報告第1句話就寫到:

Alice and Bob want to flip a coin by telephone.

Alice和Bob想通過電話來拋一枚硬幣。

報告《通過電話拋硬幣:一個用於解決不可能問題的協議》的第1頁

在之前的論文或報告中,一般只使用Alice和Bob代替A和B而已,Alice和Bob更像是代號。但在這篇報告中,Blum真正把Alice和Bob帶到了背景故事裡面,成為了故事中的兩個人物。Blum寫到:

They have just divorced, lived in different cities, want to decide who gets the car.

他們(Alice和Bob)剛剛離婚,居住在不同的城市,希望確定誰能分得汽車。

不過,也並不是所有的密碼學家喜歡用Alice和Bob。密碼學家ElGamal在論文《基於離散對數問題的公鑰密碼系統和簽名方案》(A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms)中就沒有使用Alice和Bob。1988年,密碼學家Micali、Rackoff、Sloan在Alice和Bob的使用上也顯得有些模稜兩可,他們在論文《概率密碼系統中的安全概念》(The Notion of Security fo Probabilistic Cryptosystems)中這樣寫到:

As with all cryptography, the goal is that A(lice), by using an encryption algorithm E, becomes able to securely send a message m to B(ob).

與其它密碼體制相同,他們的目標是讓A(lice)通過使用一個加密演算法E,可以向B(ob)秘密發送一個消息m。

論文《概率密碼系統中的安全概念》的第1頁末尾

導致Alice和Bob最終成為密碼學中主人公的事件,是1984年4月密碼學家Gordon在瑞士蘇黎世發表的一個晚餐演講。這個演講具體是什麼已經無從考證了。Gordon在這次演講中把Alice和Bob在密碼學論文中出現的各種角色總結了一遍:

  • Bob是一位股票經紀人,而Alice是一位股票投資人(Bob was a stockbroker while Alice was a stock speculator)
  • Alice和Bob想要一起欺騙保險公司(Alice and Bob tried to defraud insurance companies)
  • Alice和Bob想要通過電話玩撲克(Alice and Bob played poker over the phone)
  • Alice試圖想向丈夫隱瞞她與Bob的金融交易信息(Alice tried to hide her financial dealings with Bob from her husband)
  • Alice和Bob同時被稅務機關和秘密警察訂上了(Alice and Bob are wanted by both the Tax Authority and the Secret Police)
  • 由於不相信Bob的過去經歷,Alice不相信Bob(Alice doesn』t trust Bob because of some unknown past experience)

(感謝評論區 @黃家強 ,科學松鼠會曾經給出了Gordon這次演講的翻譯稿,參見鏈接:科學松鼠會 " 關於愛麗絲和鮑勃的宴後演講)

Gordon的這次演講最終影響了整個密碼學界,使Alice和Bob成為了密碼學界中的虛擬主人公。Gordon在2005年回憶道:

Today, nobody remembers I invented Strong Primes, but everyone knows me as the guy who wrote the story of Alice and Bob.

現在,沒人記得我發明了強質數,但每個人都知道我寫的有關Alice和bob的故事。

Alice和Bob在其它領域被廣泛使用(1980年以後)

1980年以後,Alice和Bob也逐漸出現在其它計算機科學領域的論文中。1987年,Halpern和Rabin首次在模態邏輯領域使用Alice和Bob。他們在論文《有關似然性的邏輯解釋》(A Logic to Reason about Likelihood)中寫到:

The situation is the following. Suppose Alice and Bob have one-bit secrets which they would like to exchange (the multibit case proceeds along similar lines).

具體場景如下。假設Alice和Bob想交換1比特秘密信息(多比特情況的處理方式類似)。

論文《有關似然性的邏輯解釋》的第14頁,Alice和Bob出現在第5章的第2自然段。(@學酥註:由於可下載到的論文為圖片掃描版,因此無法通過PDF標註)

量子計算領域也逐漸開始使用Alice和Bob。例如,Bennett、Bessette、Brassard、Salvail、Smolin於1990年發表的論文《實驗量子密碼學》(Experimental Quantum Cryptography)中的第2章,為通過公鑰密碼體制引入量子密碼學,論文寫到:

The purpose of public key distribution is for two users "Alice" and "Bob", who share

no secret information initially, to agree on a random key, which remains secret from

an adversary 「Eve」, who eavesdrops on their communications.

公共密鑰分發的目的是讓兩個用戶Alice和Bob在初始沒有秘密信息的條件下協商得到一個隨機密鑰。這個隨機密鑰應該對攻擊者Eve保密,Eve可以竊聽Alice和Bob的通信內容。

論文《實驗量子密碼學》的第3頁

隨著時間的推移,Alice和Bob不僅在在計算機理論、邏輯學、量子計算等與密碼學相關的領域中得到應用,他們的名字也逐漸出現在經濟學、物理學、以及其它工程領域的論文中。

新人物Eve的誕生(1985年-1988年)

1985年,密碼學家Bennett、Brassard、Robert在論文《如何減少敵人的信息》(How to Reduce Your Enemy"s Information)中也使用了Alice和Bob作為主人公。不過,他們在論文中又給出了一個新的人物:Eve。

如果仔細觀察的話,上面提到的論文《實驗量子密碼學》中已經出現了Eve的身影。Eve的首字母E實際上表示的是英文Eavesdropper,意為「竊聽者」。顧名思義,Eve是一個攻擊者,他的能力是竊聽Alice和Bob之間的通信內容。1985年的論文《如何減少敵人的信息》中第一次出現了Eve的身影:

The private channel is imperfect in various ways: transmission errors can occur, and partial information can leak to Eve, the

eavesdropper, who also can modify the transmissions arbitrarily.

保密信道從幾個方面看都是不完美的:通信過程會出現數據傳輸錯誤,部分信息也會泄露給竊聽者Eve,Eve也可以任意修改通信信息。

論文《如何減少敵人的信息》的第1頁

Eve的出現使得密碼學家們終於找到了一個可以代替攻擊者(Adversary)一詞的人物了。要知道,攻擊者Adversary一詞的英文首字母也是A,如果直接用A的話就會和Alice混淆。Eve出現在密碼學論文中後,密碼學家就可以用字母E來表示攻擊者,從而避免上述混淆。不過,論文《如何減少敵人的信息》中提到,Eve可以任意修改通信信息。不過,現在密碼學論文中一般把Eve稱為被動攻擊者:Eve只能實施竊聽,不能對通信內容進行任何篡改。密碼學家專門引入了另一個可以對通信內容進行篡改的人物:Mallory,這個名字的英文首字母M表示英文單詞Malicious Adversary,意為「惡意攻擊者」。

其它人物的誕生(1994年)

1994年,著名密碼學家Schneier出版了一本密碼學著作《應用密碼學:協議、演算法、C語言源碼》(Applied Cryptography: Protocols, Algorithms, and Source Code in C)。在這本著作中,Schneier不僅廣泛使用Alice、Bob、Eve和Mallory,還發明了很多其它的人物,這些人物未來都成為了密碼學協議中的人物,列舉如下:

  • Carol(或者Cathy):通信中的第三位參與人,對應的是英文的第三個字母C;
  • Dave(或者David):通信中的第四位參與人,對應的是英文的第四個字母D;
  • Isaac:互聯網服務提供方,對應的英文是Internet Service Provider;
  • Justin:司法機關,對應的英文是Justice;
  • Oscar:攻擊者,對應的英文是Opposite;
  • Pat/Victor:證明方/驗證方,對應的英文是Prover/Vierfier;
  • Trent:可信第三方仲裁,對應的英文是Trusted Arbitrator;
  • Walter:看守人,在協議中保護Alice和Bob,對應的英文是Warden。

以上。


參考資料

DuPont和Cattapan於2017年撰寫了一篇文章《Alice and Bob: A History Of The World"s Most Famous Couple》,詳細論述了Alice和Bob的由來。本文多數材料均從此篇文章中找到。本文可以在The World』s Most Famous Cryptographic Couple處訪問並下載。

維基百科《Alice and Bob - Wikipedia》中詳細列舉了除Alice和Bob外的其它人物,可以具體查看。


其實就是「A把xx給了B」這樣的話寫成「Alice把xx給了Bob」,起源1978年的 paper "A method for obtaining digital signatures and public-key cryptosystems." 居於此發展出來了一整套A-Z的首字母的名字Carol, Dan, Eve, Frank, Grace, Heidi, Judy, Mallory, Olivia, Peggy, Sybil, Ted, Victor, Walter, 等等

來源https://en.wikipedia.org/wiki/Alice_and_Bob


計算機網路里有一段: 自從 Ron Rivest 在很多年前引入這兩個名字後,幾乎所有關於密碼學的論文和書籍在敘述時都使用 Alice 和 Bob 作為虛擬主角。密碼學家都喜歡傳統,所以,如果我們使用 Andy 或者 Barbara 作為主角的話,就沒有人會相信這一章的內容了。


我想知道俄國人用啥?Anna和Boris?


MIT 的同學,讓我看到你們的雙手

Alyssa P. Hacker 這位是優秀生

Ben Bitdiddle 這位是老做錯題的差等生

還有不常見的

Cy D. Fect

Eva Lu Ator


不是呀

我們物理系的相對論例子也是alice 跟bob *_*


Srednicki的量子場論也是拿Alice和Bob舉例子的


就像中國都用張三李四,一個意思。


已經有過這個問題了

在計算機論文中特別是網路的論文中為什麼總用alice和bob這兩個人名啊? http://www.zhihu.com/question/21688852?utm_source=com.android.mmsutm_medium=social (分享自知乎網)

另有wiki百科鏈接

https://en.m.wikipedia.org/wiki/Alice_and_Bob


那麼, 為什麼全中國的的高中英語作文全是用 李華 當做主角?



我們這學期上了密碼課。馬上要考試了。複習的時候突然看到這張ppt。突然覺得自己有密碼課還挺幸福的。


從日報點進來,還以為這裡能有個愛情故事,哪怕是編的呢。下面這不是編的。

我傾慕一位姑娘,奈何人家對我無意。曾給她寫過信,寫信的時候大概是腦洞太大,想起了密碼學裡的Alice和Bob,就寫她是Alice我是David,一個A一個D,她太優秀而我配不上她。

跑題了,匿了吧


昨天第一次參加程序設計比賽,

一道題是alice和bob之間的愛情故事....

今天看到這個問題就驚了


學RSA的時候一直以為是老師無聊瞎起的名字(手動捂臉


某出題人在信息學競賽中十分喜歡用Alice和Bob作為主角。。。


因為Alice 和 Bob 需要應用密碼學傳遞隱秘信息。


通信各種rfc協議里也是


目測和甲乙丙丁類似?


就是把A和B擬人化了嘛


哇原來計算機科學早就這麼用了啊,我還以為量子信息的專利...


推薦閱讀:

問題:AES128和AES256主要區別和安全程度是多少?他們對於機器的消耗是怎樣的?兩者性能如何?實際開發如何選擇?
密碼學與黑客技術有什麼關係?
跪求神人解這個密碼:744x0l?
在知道某個比特幣地址的情況下,是否有可能通過破解私鑰來攻破該賬戶?
HOPE, zjo np mjoh, 19/2, never-1, enqfds是什麼意思?

TAG:人物 | 黑客Hacker | 計算機網路 | 計算機科學 | 密碼學 |