作者簡介
劉巍然 阿里巴巴集團數據技術及產品部高級安全專家,北京航空航天大學通信與信息系統博士。知乎密碼學領域優秀回答者,知乎簽約作者。現從事差分隱私、安全多方計算、可信執行環境、高級密碼學技術等數據安全與隱私保護技術的研究與實踐工作。
繪者簡介:吳詩湄獨立插畫家,字幕組資深翻譯成員。
名人導讀
自 序 2017年5月,我接到了知乎編輯的邀請,邀我寫一本密碼學的科普書籍。要用生動淺顯的例子,在不涉及複雜數學知識的條件下為晦澀難懂的密碼學原理進行科普,其難度可想而知。然而,伴隨著網際網路的蓬勃發展,網路的資安問題也日益嚴重。密碼學是維護網路安全的核心技術之一。作為一名專攻密碼學的博士,為讀者朋友撰寫一本淺顯易懂的密碼學科普讀物,使讀者朋友了解默默保護著我們的密碼技術,是一種義務,也是一種責任。我最終接受了這個挑戰,完成了這本書。 密碼學的發展可以分為兩個時期:古典密碼學時期與現代密碼學時期。在古典密碼學時期,密碼學家還沒有掌握設計出安全密碼的科學方法。當時密碼的設計完全仰賴密碼設計者的聰明才智,而密碼的破解更是要靠密碼破譯者的靈光一現。到了20世紀中期,電腦科學的奠基人圖靈(Alan Turing)和資訊理論的奠基人夏農(Claude Shannon)為密碼學找到了可靠的理論基礎,密碼學才正式步入現代密碼學時期,為資料安全保駕護航。現在,是時候讓密碼學這位幕後英雄走到台前,在讀者面前亮相了。 從2014年起,我開始在知乎上回答密碼學領域的相關問題,並因此收到了很多朋友的讚揚與感謝。2016年,我成為知乎密碼學領域的優秀回答者,並完成了電子書《質數了不起》。現在,《質數了不起》的擴展版本——也就是本書,也終於要和讀者朋友見面了。本書與《質數了不起》比起來約有80%的內容為新增內容,補充了大量原本未涉及或簡述的章節。我很希望能夠過本書所講解的內容,為讀者朋友介紹密碼學的基本概念和基本原理,介紹隱藏在密碼學背後的數學知識,也希望這本書能激發各位對密碼學的興趣。 在此,我想真誠感謝為本書的撰寫和出版做出貢獻的朋友們。非常感謝我的妻子李雯對本書的大力支持。她幫助我修正了很多語法錯誤,並站在讀者的角度為本書提出了很多寶貴的建議。感謝我的師妹金歌為本書中出現的德文詞彙和語句提供準確的翻譯,並對本書進行了認真的校對,指出了很多語言問題。感謝我在阿爾法字幕組的合作夥伴吳詩湄為本書繪製插圖,她的繪圖為本書增添了更多活力。感謝阿里巴巴集團數據技術及產品部的張磊老師、馮偵探老師、沈則潛老師、高愛強老師等,謝謝你們的支持和幫助。 國際計算機協會(ACM)和電機電子工程師學會(IEEE)會士、浙江大學網絡空間安全學院院長任奎老師,北京航空航天大學密碼學教授伍前紅老師,阿里巴巴集團安全部密碼學與隱私保護技術總監洪澄老師,騰訊安全雲鼎實驗室總監錢業斐老師,深信服首席安全研究員、藍軍首席架構師彭峙釀老師,知乎密碼學話題優秀答主段立老師,都在閱讀樣稿後給予了熱情的推薦。我的博士生導師、北京航空航天大學網絡空間安全學院院長劉建偉教授更是為本書撰寫了推薦序。我在此向他們致以衷心的感謝!雖然我已經盡我所能確保本書的正確性和嚴謹性,但由於我個人的知識水準有限,書中難免出現錯誤或表述不當之處,懇請讀者朋友提出寶貴的意見和建議。 劉巍然 2020年11月
章節目錄
自序01「只要解出來,算你了不起」 古典密碼:高手過招的智慧博弈1.1 換種表示:編碼 161.1.1 最初的編碼:摩斯電碼 181.1.2 摩斯電碼的困境 241.1.3 博多碼與ASCII碼 291.1.4 琳琅滿目的各國編碼標準 361.1.5 Unicode與UTF 381.1.6 Base16、Base32與Base64 41 1.2 換個位置:移位密碼 451.2.1 移位密碼的起源:斯巴達密碼棒 451.2.2 柵欄密碼 471.2.3 帶金鑰的柵欄移位密碼 501.2.4 其他移位密碼 531.2.5 知乎上的移位密碼破解實例 55 1.3 換種符號:代換密碼 591.3.1 代換密碼的起源:凱撒密碼 591.3.2 簡單的代換密碼 611.3.3 複雜的代換密碼 651.3.4 將字母代換成符號 681.3.5 代換密碼的安全性 72 1.4 密碼吧神帖的破解 781.4.1 第一層密碼:摩斯電碼 781.4.2 第二層密碼:手機鍵盤代換密碼 781.4.3 第三層密碼:電腦鍵盤代換密碼 801.4.4 第四層和第五層密碼:格柵密碼與字母逆序 81 02「今天有小雨,無特殊情況」 戰爭密碼:生死攸關的較量2.1 將古典進行到底:第一次世界大戰中的密碼 922.1.1 齊默曼電報 922.1.2 ADFGX密碼 962.1.3 ADFGVX密碼 99 2.2 維吉尼亞密碼:安全密碼設計的思路源泉 1022.2.1 維吉尼亞密碼的發明史 1022.2.2 維吉尼亞密碼的缺陷 1072.2.3 維吉尼亞密碼的破解 1102.2.4 《消失》:不能用頻率分析法攻擊的文本 115 2.3 恩尼格瑪機:第二次世界大戰德軍的密碼 1192.3.1 恩尼格瑪機的核心:轉子 1192.3.2 恩尼格瑪機的組成和使用方法 1252.3.3 恩尼格瑪機的工作原理 1282.3.4 恩尼格瑪機的破解方法 136 03「曾愛理不理,現高攀不起」數論基礎:密碼背後的數學原理3.1 質數的定義:整數之間的整除關係 1543.1.1 最簡單的運算:加、減、乘、除 1543.1.2 加、減、乘、除引發的兩次數學危機 1583.1.3 質數的定義 1643.1.4 哥德巴赫猜想 164 3.2 質數的性質 1703.2.1 質數的分布 1713.2.2 質數螺旋與孿生質數 1723.2.3 質數的判定 1783.2.4 最大公因數及其應用 183 3.3 同餘算數及其性質 1863.3.1 同餘算數 1863.3.2 模數為2的同餘算數:電腦的基礎 1873.3.3 模數為N的同餘算數:奇妙的互質 1933.3.4 模數為p的同餘算數:單純許多 1993.3.5 看似簡單卻如此困難:整數分解問題與離散對數問題 201 3.4 身份證號碼中隱藏的數學玄機 2093.4.1 身份證號碼的出生日期碼擴展 2093.4.2 身份證號碼的校驗方法 2123.4.3 身份證校驗碼所蘊含的數學原理 2183.4.4 有關身份證號碼的擴展問題 221 04「你說你能破解,你行你上呀」 安全密碼:守護數據的科學方法 4.1 「誰來都沒用,上帝也不行」:對稱密碼 2304.1.1 對稱密碼的基本概念 2304.1.2 避免金鑰重複使用的另一種加密構想:滾動金鑰 2344.1.3 一次一密:從看似不可破解到可證明不可破解 2394.1.4 完備保密性的缺陷與計算安全性 2464.1.5 實現計算安全性:DES與AES 248 4.2 「給我保險箱,放好撞上門」:公開金鑰密碼 2534.2.1 信件安全傳遞問題 2544.2.2 狄菲—赫爾曼金鑰協商協定 2594.2.3 狄菲與赫爾曼的好幫手默克 2654.2.4 撞門的保險箱:公開金鑰加密 2714.2.5 RSA公鑰加密方案與ElGamal公鑰加密方案 273 4.3 「鑰匙防調包,本人簽個字」:數位簽章 2784.3.1 威力十足的中間人攻擊 2794.3.2 防止鑰匙或保險箱調包的數位簽章 2824.3.3 RSA數位簽章方案 286 4.4 RSA的破解之道 2914.4.1 質數選得足夠大,合數的質因數分解難度並不一定大 2934.4.2 在使用RSA時,永遠不要使用相同的合數 2954.4.3 公鑰和私鑰都不能選得特別小 2964.4.4 RSA中的其他安全問題 298 後記 303專有名詞、人名一覽表 305