漲姿勢!密碼學中的 Alice 和 Bob=英語中的李雷和韓梅梅!

最近,圖靈君在讀《圖解密碼技術》這本書,在正文的第一頁,結城浩(書的作者)表示:要講解密碼,我們就需要為參與信息交互的人和計算機起幾個名字,因此在本書中我們用 Alice、Bob 等人名來指代這些信息交互的參與者。

不知道你們看到這里是怎么想的,不過圖靈君則是“小小的腦袋里充滿了大大的問號”:為什么講解密碼就一定需要為參與信息交互的人和計算機起名字呢?
而且為什么一定要用這幾個名字呢?于是,秉承著“Stay hungry,Stay foolish”的精神,圖靈君上網(wǎng)仔細搜索了一番。
搜索完之后,圖靈君發(fā)現(xiàn) Alice 和 Bob 不是結城浩隨便起的,原來起這幾個名字都是有淵源的,同時我還發(fā)現(xiàn),在密碼學中,Alice 和 Bob 就如同英語考試中李雷和韓梅梅一般,無處不在,甚至即使不在密碼學中,他們的身影也時常出現(xiàn)!
Alice 和 Bob 的誕生(1978 年)
在正式介紹本文的主人公之前,先給大家普及一下密碼學中著名的密碼學體制:RSA 密碼體制。RSA 密碼體制是密碼學家提出的第一個公鑰密碼體制。簡單來說,公鑰密碼體制允許相隔萬里的兩個人在互相不見面的條件下,遠程實現(xiàn)安全通信??鋸堻c的說,沒有 RSA 密碼體制,我們就沒法通過互聯(lián)網(wǎng)安全聊天、實現(xiàn)電子交易,整個互聯(lián)網(wǎng)會變得非常不安全。

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

就這樣,Alice 和 Bob 第一次在密碼學中被提到,我們的主人公正式誕生了, 1978 年 2 月也就成為了主人公 Alice 和 Bob 的生日。
在《一種實現(xiàn)數(shù)字簽名和公鑰密碼系統(tǒng)的方法》這篇論文發(fā)表之前,通信領域論文中一般用 A 表示數(shù)據(jù)發(fā)送方,一般用 B 表示數(shù)據(jù)接收方。
例如,1976 年,密碼學家 Diffie 和 Hellman 發(fā)表了標志著公鑰密碼學思想誕生的論文《密碼學的新方向》(New Directions in Cryptography)。在此論文中,Diffie 和 Hellman 就使用A和B分別表示數(shù)據(jù)發(fā)送方和數(shù)據(jù)接收方。在論文第 7 頁,可以看到這樣一句話:
If user A wishes to send a message M to user B, ...
如果用戶 A 想將消息 M 發(fā)送給用戶 B,...

大約兩年后,Rivest、Shamir、Adleman 在論文中用 Alice 和 Bob 第一次替代了 A 和 B,而誰都沒有想到這一行為為將來 Alice 和 Bob 成為密碼學屆的“知名人物”打下了堅實的基礎。
根據(jù) Rivest 的回憶,當時之所以使用 Alice 和 Bob,一方面是為了避免使用枯燥無味的 A 和 B,而這兩個名字的英文首字母仍然維持 A 和 B 不變;另一方面是因為 Alice 和 Bob 分別為女性名字和男性名字,這樣在論文后面的部分中就可以使用英語的她(she)和他(he)分別指代 Alice 和 Bob,不至于讓讀者混淆。
至于究竟為什么要用 Alice 和 Bob,而不用其它名字,有 2 種說法。一種說法是 Rivest 可能比較喜歡《愛麗絲夢游仙境》(Alice's Adventures in Wonderland)這部文學作品。

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

至于具體是什么原因,我們就不得而知了。不過這絲毫不影響 Alice 和 Bob “橫掃密碼學界”并走上“擴張之路”。
橫掃密碼學界(1980 年前后)
1978 年后,Alice 和 Bob 這兩個名字逐漸成為了密碼學領域中的“著名人物”。慢慢地,大量的密碼學家開始使用這兩個名字代替枯燥無味的 A 和 B。
1981 年 5 月 20 日,密碼學家 Rabin 在給哈佛大學艾肯計算實驗室(Aiken Computation Lab)中撰寫的技術報告《如何利用不經(jīng)意傳輸實現(xiàn)秘密交換》(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,他們希望交換他們的秘密。

1981 年 11 月 10 日,密碼學家 Blum 發(fā)表了一篇題為《通過電話拋硬幣:一個用于解決不可能問題的協(xié)議》(Coin Flipping by Telephone: A Protocol for Solving Impossible Problems)。報告第 1 句話就寫到:Alice and Bob want to flip a coin by telephone.Alice 和 Bob 想通過電話來拋一枚硬幣。

報告《通過電話拋硬幣:一個用于解決不可能問題的協(xié)議》的第 1 頁在之前的論文或報告中,一般只使用 Alice 和 Bob 代替 A 和 B 而已,Alice 和 Bob 更像是代號。但在 Blum 的這篇報告中,Blum 真正把 Alice 和 Bob 帶到了背景故事里面,成為了故事中的兩個人物。
這使得 Alice 和 Bob 第一次擺脫了代號定義,具有了“人”的屬性。Blum 寫到:They have just divorced, lived in different cities, want to decide who gets the car.他們(Alice 和 Bob)剛剛離婚,居住在不同的城市,希望確定誰能分得汽車。
不過,導致 Alice 和 Bob 最終成為密碼學中主人公的事件,是 1984 年 4 月密碼學家 Gordon 在瑞士蘇黎世發(fā)表的一個晚餐演講。這個演講的主題具體是什么已經(jīng)無從考證。但 Gordon 在這次演講中把 Alice 和 Bob 在密碼學論文中出現(xiàn)的各種角色總結了一遍:
Bob 是一位股票經(jīng)紀人,而 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 的過去經(jīng)歷,Alice 不相信 Bob(Alice doesn’t trust Bob because of some unknown past experience)
Gordon 的這次演講最終影響了整個密碼學界,也使 Alice 和 Bob 成為了密碼學界中的虛擬主人公,任何一個從事密碼學研究的人都不可避免要和 Alice、Bob 產生或多或少的聯(lián)系。Gordon 在 2005 年回憶道:Today, nobody remembers I invented Strong Primes, but everyone knows me as the guy who wrote the story of Alice and Bob.現(xiàn)在,沒人記得我發(fā)明了強質數(shù),但每個人都知道我寫的有關 Alice 和 Bob 的故事。至此,用了短短 6 年時間,Alice 和 Bob 已經(jīng)完成了“橫掃密碼學界”的任務,成為了密碼學界不可或缺的“關鍵人物”,但他們的野心顯然并未得到滿足,“擴張之路”依舊在繼續(xù)。
出圈擴張( 1984 年以后)
Alice 和 Bob 的“出圈擴張”還要追溯到?1987 年。這一年,Halpern 和 Rabin首次在模態(tài)邏輯領域(同屬計算機領域)使用 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 出現(xiàn)在第 5 章的第 2 自然段
后來,Alice 和 Bob 也逐漸出現(xiàn)在量子計算領域。1990 年發(fā)表?Bennett、Bessette、Brassard、Salvail、Smolin 共同發(fā)表的論文《實驗量子密碼學》(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.
公共密鑰分發(fā)的目的是讓兩個用戶 Alice 和 Bob 在初始沒有秘密信息的條件下協(xié)商得到一個隨機密鑰。這個隨機密鑰應該對攻擊者 Eve 保密,Eve 可以竊聽 Alice 和 Bob 的通信內容。

論文《實驗量子密碼學》的第 3 頁
隨著時間的推移,Alice 和 Bob 不僅在在計算機理論、邏輯學、量子計算等與密碼學相關的領域中得到應用,他們的名字也逐漸出現(xiàn)在經(jīng)濟學、物理學、以及其它工程領域的論文中。至此,Alice 和 Bob 完全奠定了他們在密碼學界的主人公地位,與此同時,新的人物也誕生了。
新人物Eve的誕生( 1985 年-1988 年)
1985 年,密碼學家 Bennett、Brassard、Robert 在論文《如何減少敵人的信息》(How to Reduce Your Enemy's Information)中也使用了 Alice 和 Bob 作為主人公。不過,他們在論文中又給出了一個新的人物:Eve。如果仔細觀察的話,上面提到的論文《實驗量子密碼學》中已經(jīng)出現(xiàn)了 Eve 的身影。Eve 的首字母 E 實際上表示的是英文 Eavesdropper,意為“竊聽者”。顧名思義,Eve 是一個攻擊者,他的能力是竊聽 Alice 和 Bob 之間的通信內容。1985 年的論文《如何減少敵人的信息》中第一次出現(xiàn)了 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.保密信道從幾個方面看都是不完美的:通信過程會出現(xiàn)數(shù)據(jù)傳輸錯誤,部分信息也會泄露給竊聽者 Eve,Eve 也可以任意修改通信信息。


Eve 的出現(xiàn)使得密碼學家們終于找到了一個可以代替攻擊者(Adversary)一詞的人物了。要知道,攻擊者 Adversary 一詞的英文首字母也是 A,如果直接用 A 的話就會和 Alice 混淆。Eve 出現(xiàn)在密碼學論文中后,密碼學家就可以用字母 E 來表示攻擊者,從而避免上述混淆。不過,論文《如何減少敵人的信息》中提到,Eve 可以任意修改通信信息。不過,現(xiàn)在密碼學論文中一般把 Eve 稱為被動攻擊者:Eve 只能實施竊聽,不能對通信內容進行任何篡改。密碼學家專門引入了另一個可以對通信內容進行篡改的人物:Mallory,這個名字的英文首字母 M 表示英文單詞 Malicious Adversary,意為“惡意攻擊者”。
其他人物的誕生(1994 年)
1994 年,著名密碼學家 Schneier 出版了一本密碼學著作《應用密碼學:協(xié)議、算法、C 語言源碼》(Applied Cryptography : Protocols, Algorithms, and Source Code in C)。在這本著作中,Schneier 不僅廣泛使用 Alice、Bob、Eve 和 Mallory,還發(fā)明了很多其他的人物,這些人物未來都成為了密碼學協(xié)議中的人物,列舉如下:
Carol(或者 Cathy):通信中的第三位參與人,對應的是英文的第三個字母 C;
Dave(或者 David):通信中的第四位參與人,對應的是英文的第四個字母 D;
Isaac:互聯(lián)網(wǎng)服務提供方,對應的英文是 Internet Service Provider;
Justin:司法機關,對應的英文是 Justice;
Oscar:攻擊者,對應的英文是 Opposite;
Pat/Victor:證明方/驗證方,對應的英文是 Prover/Vierfier;
Trent:可信第三方仲裁,對應的英文是 Trusted Arbitrator;
Walter:看守人,在協(xié)議中保護 Alice 和 Bob,對應的英文是 Warden。
隨著科技的發(fā)展,密碼學也在不斷地完善和進步,在這個過程中除了 Alice 和 Bob 進行了瘋狂地“擴張”之外,還發(fā)生過許多有意思的事情,比如“主動攻擊者 Mallory”的故事,非公鑰密碼“掉包”的事情,一切都在歷史發(fā)展的滾滾長河中變的有趣而多彩。而密碼學也是在這個過程中不斷地完善和改進,它的故事也是同樣地精彩!
史上最好懂的密碼學

本書以圖配文的形式,詳細講解了 6 種非常重要的密碼技術:對稱密碼、公鑰密碼、單向散列函數(shù)、消息認證碼、數(shù)字簽名和偽隨機數(shù)生成器。?
第 1 部分講述了密碼技術的歷史沿革、對稱密碼、分組密碼模式(包括 ECB、CBC、CFB、OFB、CTR)、公鑰、混合密碼系統(tǒng)。第 2 部分重點介紹了認證方面的內容,涉及單向散列函數(shù)、消息認證碼、數(shù)字簽名、證書等。第 3 部分講述了密鑰、隨機數(shù)、PGP、SSL/TLS 以及密碼技術在現(xiàn)實生活中的應用。


參考資料
1、《Alice and Bob: A History Of The World's Most Famous Couple》作者:DuPont、Cattapan
2、維基百科:《Alice and Bob - Wikipedia》
3、知乎:https://www.zhihu.com/question/63306763/answer/255496822著作權歸作者所有。