
在近幾年我所閱讀過(guò)的國(guó)內(nèi)科普書(shū)籍中,單從行文的文采來(lái)說(shuō),我始終認(rèn)為曹天元《上帝擲骰子嗎:量子物理史話》出類拔萃,并且不止一次形容這書(shū)如小說(shuō)般,“硬生生能寫(xiě)出華山論劍的風(fēng)采”;而林欣浩的《哲學(xué)家們都干了些什么?》雖平易近人,八卦有趣,但“體大貌粗”。至于劉巍然的這本《密碼了不起》,則像二者的折中:在典故敘述上,它本可以寫(xiě)得更曲折吸睛,但始終有些平鋪簡(jiǎn)略;在原理討論上,它本可以做到更刪繁就簡(jiǎn),但終究還是稍顯硬核。
這本書(shū)前后的行文風(fēng)格是一致的:通俗,輕松,偶爾來(lái)點(diǎn)小幽默(比如形容英國(guó)演員康伯巴奇“以臉長(zhǎng)著稱”),但內(nèi)容有些割裂。它分為四部分:一、古典密碼:高手過(guò)招的智慧博弈;二:戰(zhàn)爭(zhēng)密碼:生死攸關(guān)的巔峰較量;三:數(shù)論基礎(chǔ):密碼背后的數(shù)學(xué)原理;四:安全密碼:守護(hù)數(shù)據(jù)的科學(xué)方法。大體上前兩部分屬于古典密碼學(xué)時(shí)期,后兩部分屬于現(xiàn)代密碼學(xué)時(shí)期,所謂的“分裂”就產(chǎn)生在古典與現(xiàn)代之間的設(shè)計(jì)思想上。
在古典密碼學(xué)的部分,并不涉及到過(guò)多的數(shù)學(xué)知識(shí),因?yàn)楣诺涿艽a沒(méi)有堅(jiān)實(shí)理論基礎(chǔ)支撐的設(shè)計(jì)思想。它主要包含兩種設(shè)計(jì)思路:移位(Shift)和代換(Substitution)。所以在第一部分中,無(wú)論是講編碼,還是移位密碼,或者代換密碼,更多的是一種如史話版的敘述講解,這并不會(huì)讓人費(fèi)解;而且這一部分的開(kāi)頭引入,就是2009年“百度貼吧-密碼吧”中經(jīng)典的“五層加密告白”貼(啊,死去的記憶在攻擊我),從引入到通過(guò)介紹相關(guān)知識(shí)再到層層破譯最后得出結(jié)果,是一個(gè)巧妙的結(jié)構(gòu)設(shè)計(jì);



第二部分戰(zhàn)爭(zhēng)密碼是從電影《模仿游戲》講起,從德軍的ADFGX、ADFGVX密碼到維吉尼亞密碼的設(shè)計(jì)與破解,最后再到設(shè)計(jì)精妙的恩尼格瑪機(jī)怎樣被圖靈攻破,同樣也構(gòu)成了閉環(huán)。當(dāng)然,這部分本來(lái)就在絕佳的時(shí)代背景下,可以寫(xiě)得更驚心動(dòng)魄,不管是《風(fēng)語(yǔ)者》還是《模仿游戲》(哪怕加上柳云龍《暗算》的“看風(fēng)”篇呢)的慘烈或曲折,但作者寫(xiě)得很克制,把更多筆墨放在了恩尼格瑪機(jī)的結(jié)構(gòu)原理上,甚至連缺陷和破解都講得不溫不火,這是我認(rèn)為本書(shū)“平鋪簡(jiǎn)略”的原因之一——要知道,圖靈的破解是怎樣顯示出智慧的光芒;

從第三部分開(kāi)始,內(nèi)容開(kāi)始割裂。因?yàn)樵诂F(xiàn)代密碼學(xué)時(shí)期,密碼設(shè)計(jì)者結(jié)合了香農(nóng)的理論和計(jì)算機(jī)相關(guān)理論,找到了設(shè)計(jì)安全加密方法的途徑,所以要介紹現(xiàn)代密碼的設(shè)計(jì)原理,就需要一些數(shù)學(xué)知識(shí)和計(jì)算機(jī)科學(xué)知識(shí),故此第三部分開(kāi)始引入了數(shù)論知識(shí),尤其是質(zhì)數(shù)和同余運(yùn)算,并且涉及到了兩個(gè)非常重要的困難問(wèn)題:整數(shù)分解問(wèn)題和離散對(duì)數(shù)問(wèn)題,這和現(xiàn)代密碼學(xué)的公鑰加密方案有密切相關(guān)。本部分選取的例子是身份證號(hào)碼校驗(yàn),如果同余運(yùn)算沒(méi)有難住你的話,那么這個(gè)例子相對(duì)容易理解;


第四部分的前半內(nèi)容涉及到大量的定義和符號(hào),對(duì)于數(shù)學(xué)不好的讀者而言,很容易陷入看“鬼畫(huà)符”的境地中,但大體能體會(huì)設(shè)計(jì)思路,比如香農(nóng)“密碼的完備保密性”;后半部分的若干定義和公式看不懂也沒(méi)關(guān)系,因?yàn)樽髡咭酝ㄋ椎谋磉_(dá),通過(guò)Alice、Bob、Eve、Mallory等擬人化的“密碼算法話劇演員”,解釋了全同態(tài)加密、公鑰密碼學(xué)和公鑰加密的區(qū)別原理,堪稱本書(shū)最精彩的部分,是非常有趣的科普表述。


本書(shū)是知乎電子書(shū)《質(zhì)數(shù)了不起》的升級(jí)版,由此可見(jiàn)原書(shū)中數(shù)論知識(shí)的重要性,要是再詳細(xì)點(diǎn),估計(jì)就得寫(xiě)成質(zhì)數(shù)研究史了——當(dāng)然好也就好在,即使書(shū)中的數(shù)學(xué)和計(jì)算機(jī)知識(shí)看不懂,本書(shū)也不會(huì)完全讀不通,只是體會(huì)不到現(xiàn)代密碼設(shè)計(jì)原理的妙處,把它看成密碼學(xué)發(fā)展極簡(jiǎn)史的通俗讀物就好了。如此一來(lái)還有個(gè)好處,就是避免陷入數(shù)學(xué)部分的勘誤中。想更深入地了解密碼學(xué)知識(shí),本書(shū)貼心地在每一部分后都列舉了一些密碼學(xué)著作,比較具有針對(duì)性。
讓人意外的是,在涉及同余運(yùn)算時(shí),作者用劉慈欣《三體》中,馮·諾依曼指揮秦國(guó)士兵構(gòu)建人肉計(jì)算機(jī)的例子闡述了“與或非”的運(yùn)算,說(shuō)明了計(jì)算機(jī)的基本運(yùn)算原理。這對(duì)三體迷來(lái)說(shuō)是個(gè)彩蛋,不過(guò)可能更應(yīng)歸功于大劉本身的出色創(chuàng)作。此外,像諸如福爾摩斯小說(shuō)、狄更斯《雙城記》、電影《風(fēng)語(yǔ)者》《模仿游戲》、網(wǎng)絡(luò)帖的信手引入,豐富了本書(shū)的趣味,然而文字上就顯得有些飄忽。
不過(guò)讀了此書(shū)后,我最大的想法就是對(duì)向女生表白的男生說(shuō):小子,記住,凡是你表白后,女生用密碼回復(fù)的,那基本都是對(duì)你有意思——對(duì)你沒(méi)意思,搞那么復(fù)雜干嘛?不管幾層,你只要看著密文那么長(zhǎng),一律解密為“I LOVE YOU TOO”;如果密文短,你就處理成“GET OUT”或者“F*CK OFF”……