“It must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.”?
這是著名的密碼學(xué)柯克霍夫六大原則之一苦银。
軟件開源與安全性的議題使鹅,近來因美國政府可能管制一事渠退,引發(fā)了極大的討論與關(guān)注课兄。
區(qū)塊鏈堪稱是與開源最相關(guān)的技術(shù)之一葫松,而作為區(qū)塊鏈起源之一的密碼學(xué)碳竟,其實早已對此有了答案空另。
在提到密碼或者密碼學(xué)的時候,很多人的腦海里可能會浮現(xiàn)出兩種截然不同的形象腋寨。
一種在神秘中帶著些許浪漫主義色彩聪铺,例如福爾摩斯在探案中遇到的跳舞小人(參見The Adventure of the Dancing Men)或者《達芬奇密碼》中的暗號,常見諸于大眾文學(xué)和影視作品萄窜。
另一種則顯得冰冷無情甚至有些乏味计寇,例如根據(jù)一段短短的口令锣杂,電腦程序把好好的文件變成了一串無法識別的“亂碼”,這也是實際上我們身邊的各種電子設(shè)備每時每刻都在使用的密碼番宁。為什么我們會對同一個概念有著兩種截然不同的印象元莫?
難道是大眾傳媒騙了我們嗎?其實答案并不是非此即彼那么簡單:兩種關(guān)于密碼學(xué)的描述都是正確的蝶押,只不過前者通常被我們稱為“古典密碼學(xué)”踱蠢,而后者被稱為“現(xiàn)代密碼學(xué)”——也就是今天的人們研究和使用的密碼學(xué)。
雖然兩者同樣頂著“密碼學(xué)”的名字棋电,但是它們在本質(zhì)上卻極為不同茎截,一言以蔽之,“古典密碼學(xué)屬于藝術(shù)赶盔,現(xiàn)代密碼學(xué)屬于科學(xué)”企锌。
古典密碼學(xué)
具體來說,古典密碼學(xué)的安全性來源于密碼設(shè)計者的知識積累和創(chuàng)造力于未,以及對所設(shè)計方案的保密性撕攒。
例如二戰(zhàn)期間美軍利用納瓦霍語難以學(xué)習(xí)及了解的特性,以該語言為基準(zhǔn)設(shè)立了一套通信術(shù)語系統(tǒng)并大量招募納瓦霍人入伍擔(dān)任譯碼員(2002 年的電影《風(fēng)語者》即反映了相關(guān)事跡)烘浦。
對于日本人來說抖坪,想要攻破這套密碼體系只有兩條路可選:一是從零自學(xué)納瓦霍語;二是先探聽到這套密碼是基于納瓦霍語的闷叉,再設(shè)法找納瓦霍人幫忙破解擦俐。
實際上,這套密碼直到戰(zhàn)爭結(jié)束也沒有被破解握侧。
然而蚯瞧,如果對手技高一籌的話,過于依賴保密的設(shè)計方案的密碼體系反而會弄巧成拙——圖靈幫助盟軍攻破德國的“Enigma”密碼的故事就是一個很好的例子(注1)品擎。
古典密碼學(xué)作為一種有著幾千年歷史的軍用技術(shù)埋合,絕大多數(shù)情況下也可以很好地履行使命,那么又為什么淪落到今天被現(xiàn)代密碼學(xué)所取代的地步呢孽查?
這是因為古典密碼學(xué)作為一種曲高和寡的藝術(shù)形式,同其他很多高雅藝術(shù)相似坦喘,并不符合廣大人民群眾的需求——簡單來說盲再,就是太貴了,普通人用不起瓣铣。對于國家政府答朋、軍隊、或者某些勢力強大的黑衣組織來說棠笑,專門為其成員統(tǒng)一設(shè)計一套密碼體系并不是什么難事梦碗,只需要避免組織中出現(xiàn)叛徒即可。
而對于普通人來說,專門設(shè)計一套密碼的成本已經(jīng)有些昂貴洪规,更昂貴的是往往一套還不夠用——例如 Alice 想要分別跟 Bob 和 Chris 進行保密通信印屁,為了保證 Bob 不能解密 Alice 與 Chris 之間的通信,Alice 跟兩個人通信時必須使用兩套截然不同的密碼系統(tǒng)斩例。想象一下雄人,如果銀行需要為每一個用戶都分別設(shè)計一套用戶和銀行間通信使用的密碼,那么密碼學(xué)專業(yè)畢業(yè)的學(xué)生一定會很容易在銀行找到一份工作——前提是銀行沒有因為成本過高而倒閉念赶。
現(xiàn)代密碼學(xué)的誕生
實際上础钠,隨著計算機的普及,即使美國政府這樣財大氣粗的土豪叉谜,也難以負(fù)擔(dān)得起為每個使用計算機的部門維護專用密碼系統(tǒng)的成本旗吁。
因此,美國的國家標(biāo)準(zhǔn)局(NIST 的前身)于 1972 年開始征集用于加密政府內(nèi)非機密敏感信息的密碼系統(tǒng)停局。
在1974 年的第二輪面向公眾的征集中很钓,IBM 提交了一種加密算法的提案,這就是著名的 DES 加密算法翻具,其中 DES 是英文 Data Encryption Standard(“數(shù)據(jù)加密標(biāo)準(zhǔn)”)的縮寫履怯。作為現(xiàn)代密碼學(xué)的開山之作和杰出代表,DES 加密算法遵循了柯克霍夫原則裆泳。
該原則要求密碼系統(tǒng)的安全性完全依賴于一個妥善保管的安全密鑰叹洲,而不依賴于對密碼系統(tǒng)本身細(xì)節(jié)的保密。用信息論的發(fā)明者克勞德?香農(nóng)的說法來講工禾,就是“敵人了解系統(tǒng)运提。”按照柯克霍夫原則闻葵,只需保管好不同的通信信道各自的密碼民泵,就可以使用同一個密碼系統(tǒng)在所有信道上安全地通信。
“只換密鑰槽畔,不換密碼系統(tǒng)”的特點栈妆,極大地降低了使用加密技術(shù)的成本,使得密碼從一種藝術(shù)品厢钧,變成一種低價且可大量供應(yīng)的工業(yè)品鳞尔。
現(xiàn)代密碼學(xué)技術(shù)終于在以金融為代表的商業(yè)應(yīng)用中獲得了大顯身手的機會。盡管DES 是一種非常優(yōu)秀的加密算法早直,但是對于 DES 的信任并非是與生俱來的寥假。
早在1975 年美國國家標(biāo)準(zhǔn)局就 DES 方案公開征求意見時,就有人提出美國國家安全局(即臭名昭著的 NSA)干涉了 DES 算法的設(shè)計霞扬,特別是 DES 算法中對于 S-box 的具體選擇(本來應(yīng)該是隨機選擇的)糕韧,可能秘密地削弱了算法的安全性甚至埋入了后門枫振,以使得 NSA 可以更容易地破解加密信息。為此萤彩,DES 受到了學(xué)術(shù)界的嚴(yán)格審查粪滤,這甚至直接推動了密碼分析技術(shù)的發(fā)展。
關(guān)于S-box 中隱藏有弱點的懷疑乒疏,最終直到 1990 年代初才煙消云散额衙,因為根據(jù) Eli Biham 和 Adi Shamir(注2)發(fā)現(xiàn)和公開的差分密碼分析技術(shù),NSA 對 S-box 所作的修改顯著提高了 DES 算法抵抗差分密碼攻擊的能力——有證據(jù)表明怕吴,IBM 和 NSA 早在 1974 年就已經(jīng)知道了這種攻擊技術(shù)窍侧。
但是另一方面,也有資料顯示NSA 說服了 IBM 縮短 DES 算法的密鑰長度转绷,有可能是為了把 DES 算法的安全性限制在 NSA 可破解的范圍內(nèi)伟件。從DES 加密算法的公開征集和討論開始,到后來學(xué)術(shù)界懷疑 NSA 插手而試圖找出 DES 的弱點议经,整個過程說明斧账,公開 DES 算法不僅沒有降低其安全性,反而是通過廣泛而深入研究證明了其安全性和可靠性煞肾。
通過使用三次加密克服密鑰過短缺點的3DES 算法咧织,至今仍存在于 Firefox 等軟件中,在微軟的 Office 365 中也一直被使用到 2018 年 12 月籍救。NIST 在對 DES 的回顧中提到:DES 可被稱為是對加密算法的非軍用研究和發(fā)展的“第一推動力”习绢。
1970 年代,在軍隊或情報組織以外的密碼學(xué)家蝙昙,對密碼學(xué)的學(xué)術(shù)研究都非常少闪萄。
現(xiàn)在則有許多活躍在學(xué)術(shù)界的密碼學(xué)家,大學(xué)里開設(shè)了高質(zhì)量的密碼學(xué)課程奇颠,市場上也涌現(xiàn)出商業(yè)的信息安全公司和顧問败去。
一整代的密碼學(xué)家都拼命分析DES 算法,更確切地說烈拒,是嘗試破解圆裕。
用密碼學(xué)家布魯斯?施奈爾(Bruce Schneier)的話說:“DES 在促進密碼學(xué)界的發(fā)展上做的比其它的一切都多。現(xiàn)在有一種算法供學(xué)者們分析了荆几∠抛保”
密碼學(xué)技術(shù)與開源運動
DES 加密算法的成功,一個重要原因在于其算法設(shè)計從一開始就是完全公開的伴郁,因而所有對其感興趣的人都可以嘗試進行分析耿战,這與軍事或情報上使用的保密的密碼系統(tǒng)有著本質(zhì)的不同蛋叼。
也正是得益于其公開性焊傅,DES 最終才洗清了受 NSA 干涉埋入后門的嫌疑剂陡,在商業(yè)上得到大規(guī)模應(yīng)用。
DES 算法為現(xiàn)代密碼學(xué)樹立起一根標(biāo)桿狐胎,此后所有民用的密碼學(xué)算法都遵循柯克霍夫原則鸭栖,并公開所有算法設(shè)計以便密碼學(xué)同行研究,也只有經(jīng)受得住同行分析和攻擊的密碼學(xué)算法才會被認(rèn)可為安全的握巢≡稳担可能會有人以為,公開密碼學(xué)算法的同時暴浦,也會為惡意的攻擊者破解密碼提供了便利溅话。
但是實際上,筆者從未聽說過有哪個案例是因為密碼學(xué)算法被攻破而造成損失的歌焦。絕大多數(shù)安全事故的原因都在密碼學(xué)以外飞几,包括程序員寫代碼時沒有理解密碼學(xué)算法本身設(shè)計寫出bug(例如索尼 PS3 的 ECDSA 簽名算法實現(xiàn)在一個該用隨機數(shù)的地方用了固定的數(shù)),甚至使用了錯誤的算法(例如有的程序員會使用 MD5 或 SHA 算法進行“加密”)独撇,或由于其它原因意外泄露密鑰(例如曾有人誤把測試用的帶有明文密鑰的文件上傳到 GitHub)等屑墨。
即使是密碼學(xué)范圍內(nèi)的攻擊方式,很多也是通過測量程序運行時間或芯片功耗等側(cè)信道攻擊實現(xiàn)的纷铣,本質(zhì)上還是實現(xiàn)算法時考慮不周留下的漏洞卵史。實際上,現(xiàn)代密碼分析技術(shù)需要掌握極高的數(shù)學(xué)技巧搜立,因此最優(yōu)秀的分析者往往都身在學(xué)術(shù)界以躯,他們更愿意通過公開發(fā)表自己的研究成果以獲得學(xué)術(shù)聲譽,而非發(fā)起實際的攻擊獲益儒拂。
另外寸潦,通常發(fā)現(xiàn)理論上的漏洞后,總是需要相當(dāng)一段時間才能在技術(shù)上成功利用漏洞發(fā)起攻擊社痛,這為使用者及時升級提供了寶貴的緩沖期见转。例如2005 年王小云教授指出當(dāng)時在商業(yè)中廣泛使用的 SHA-1 哈希函數(shù)的安全漏洞,該漏洞雖然并不意味著可以直接攻破使用 SHA-1 的系統(tǒng)蒜哀,但卻足以證明 SHA-1 的安全性嚴(yán)重低于預(yù)期斩箫,并直接促使 NIST 選擇新的 SHA-2 哈希函數(shù)(包括 SHA-256、SHA-512 等變種)替代 SHA-1撵儿。
但真正宣告SHA-1 死亡乘客,還要等到十多年后的 2017 年,谷歌團隊完成對 SHA-1 的完整破解淀歇。
此時在任何一個靠譜的項目中易核,對于SHA-1 的替代升級工作都應(yīng)該早已完成了。現(xiàn)在對于抗量子計算攻擊的密碼學(xué)研究或多或少也有類似的“備胎”意義浪默,如果哪天量子計算機技術(shù)取得重大突破牡直,人們應(yīng)可在量子計算機真正被用于攻擊 RSA 或 ECDSA 之前缀匕,切換到新的密碼系統(tǒng)。所以說碰逸,通過公開密碼學(xué)算法設(shè)計乡小,用戶可以及時地獲得關(guān)于漏洞的預(yù)警,在漏洞被實際利用之前的緩沖期升級到新算法饵史,這要遠(yuǎn)好于在毫無準(zhǔn)備的情況下就遭到對手攻擊满钟。相比之下,采取對密碼學(xué)設(shè)計保密的方式只能阻礙善意研究者分析和幫助改善其安全性胳喷,對于刻意攻擊該密碼的對手而言湃番,無論是通過逆向工程還是通過社會工程,總會有辦法突破保密機制獲得相應(yīng)的設(shè)計方案吭露,然后在使用者不知情的情況下偷偷地破解牵辣,直至發(fā)起攻擊。
例如二戰(zhàn)中德軍并不清楚他們所用的密碼系統(tǒng)已經(jīng)被圖靈領(lǐng)導(dǎo)的團隊破解奴饮,仍使用被破解的密碼系統(tǒng)傳遞機密情報纬向,反倒為盟軍最終取得勝利作出了重大貢獻。密碼學(xué)家們也非常珍惜和維護公開討論戴卜、研究和使用密碼學(xué)的權(quán)利逾条。
特別是在信息時代和互聯(lián)網(wǎng)時代的背景下,密碼學(xué)是保護人們的信息不至于“裸奔”的重要技術(shù)投剥。
從這個角度來講师脂,密碼學(xué)家們?yōu)槠胀ㄈ藸幦韺W(xué)習(xí)和使用密碼學(xué)的權(quán)利,甚至頗有一點普羅米修斯為人類盜火的感覺了江锨。早在1991 年吃警,Phil Zimmermann 編寫了一個名為 PGP 的高強度加密軟件,其密鑰長度超過 128 位啄育。
當(dāng)時美國政府規(guī)定密鑰長度超過40 位的加密產(chǎn)品都須作為軍火產(chǎn)品受到出口管制酌心,因此,在 Zimmermann 把 PGP 源代碼放在網(wǎng)上供人們下載時挑豌,便驚動了美國政府安券。Zimmermann 的案例在當(dāng)時引起了技術(shù)和法律圈子的熱議,很多人站出來聲援他并提供各種支持氓英。
最終Zimmermann 決定采用迂回的方式侯勉,繞開政府對于加密軟件的限制——他通過 MIT 出版社出版了一本包含 PGP 的全部源代碼的書,這本書作為出版物而非軟件受到美國憲法第一修正案對于出版自由的保護铝阐。此后又發(fā)生了兩個著名的案例址貌。
1995 年,凱斯西儲大學(xué)(Case Western Reserve University)教授 Junger 為了爭取在(有外國留學(xué)生的)課堂上公開講授加密技術(shù)的權(quán)利,向美國國務(wù)院發(fā)起訴訟练对。
1996 年余舶,加州大學(xué)伯克利分校的學(xué)生 Bernstein 為了可以不受限制地公開發(fā)表自己設(shè)計的密碼學(xué)算法和參與學(xué)術(shù)討論,向美國司法部發(fā)起訴訟锹淌。
這兩個案例吸引了社會的廣泛關(guān)注,在大批律師和法學(xué)家赠制、科學(xué)家赂摆、工程師的共同努力下,兩個案例在2000 年之后都獲得了最終的勝利钟些。密碼學(xué)家們的抗?fàn)幉粌H僅爭取到了自由討論和使用密碼學(xué)技術(shù)的權(quán)利烟号,更重要的是這些判例確定了密碼學(xué)算法和源代碼算是一種言論自由,不受美國政府對于軟件出口的限制——這對于未來所有開源軟件項目的發(fā)展政恍,都具有至關(guān)重要的意義汪拥。
借著密碼學(xué)技術(shù)公開化的順風(fēng)車,人們終于可以打消對于開源項目的源代碼是否會受到美國政府管制的最后一絲疑慮——于是很多開源軟件基金會紛紛選擇注冊在美國篙耗,這也為日后開源軟件項目的蓬勃發(fā)展奠定了基礎(chǔ)迫筑。與版權(quán)軟件相比,開源軟件在安全性宗弯、可靠性脯燃、擴展性等方面都具有獨特的優(yōu)勢。
通過公開源代碼蒙保,開源軟件中因為疏忽造成的漏洞更容易被其他程序員發(fā)現(xiàn)辕棚,而植入后門的行為就像禿子頭上的虱子一樣明顯——相比之下,閉源軟件的漏洞和后門則往往只有經(jīng)驗豐富的黑客才能發(fā)現(xiàn)邓厕。在可靠性方面逝嚎,由于開源軟件的源代碼已經(jīng)是公開的,所以用戶無需過分擔(dān)心軟件的開發(fā)者下架或停止維護后沒法繼續(xù)使用軟件详恼,只需要自己拿來源代碼修改和編譯即可补君。在可擴展性方面,開源軟件更是有著無可比擬的優(yōu)勢昧互,任何人都可以根據(jù)自己的需要自由地定制和修改軟件的代碼赚哗,無論時間還是經(jīng)濟上的成本,都比定制版權(quán)軟件低得多硅堆。
另外屿储,開源軟件項目對于培養(yǎng)新程序員,提高整個行業(yè)的技術(shù)水平也有十分重要的意義渐逃。
比開源軟件更遠(yuǎn)的遠(yuǎn)方
當(dāng)越來越多人開始意識到開源軟件項目在計算機軟件够掠、特別是互聯(lián)網(wǎng)行業(yè)發(fā)揮的顛覆作用時,有人已經(jīng)把目光投向了更遠(yuǎn)的地方:開源項目除了帶來免費好用的軟件以外茄菊,其實還帶來了一樣更為寶貴的東西——信任疯潭。使用閉源軟件的時候赊堪,我們實際上并不清楚軟件到底會進行哪些操作。
比如軟件是否會偷偷地掃描我們的硬盤或者篡改某些文件竖哩?
是否會搜集我們的隱私信息甚至竊取網(wǎng)絡(luò)賬戶密碼哭廉?
絕大多數(shù)時候用戶都只能選擇信任某個中心化的機構(gòu)才能放心地使用這些軟件,這個機構(gòu)可以是軟件的發(fā)行方相叁、殺毒軟件廠商遵绰,或者操作系統(tǒng)廠商。
但是如果試圖進行這些操作的就是那些機構(gòu)本身呢增淹?
假如微軟想要搜集Windows 用戶的數(shù)據(jù)椿访,相信他們完全可以從技術(shù)上做到在普通用戶毫無知覺地情況下搜集其訪問網(wǎng)站的歷史記錄。
或許微軟顧慮到法律不會輕越雷池虑润,但是如果FBI 以某個冠冕堂皇的名義(例如“通俄”)要求微軟提供某些用戶的信息呢成玫?
而且在法律跟不上技術(shù)發(fā)展速度的情況下,誰也無法保證商業(yè)公司不會以法律“擦邊球”的形式侵犯用戶的權(quán)益拳喻。
年紀(jì)稍長的朋友應(yīng)該還記得2010 年“3Q 大戰(zhàn)”時哭当,奇虎公司和騰訊公司之間互相指責(zé)對方不正當(dāng)競爭和侵犯用戶隱私的往事。開源軟件在這方面就要比閉源的好多了冗澈,因為通過開放的源代碼荣病,所有訓(xùn)練有素的程序員都可以看懂程序會如何運行。
如果某個開源項目的代碼中嵌有后門或者惡意代碼的話渗柿,只要有人發(fā)現(xiàn)并指出有問題的位置个盆,其他程序員都可以非常容易地驗證是否真的有問題,甚至可以在修改掉有問題的部分后繼續(xù)使用原有的代碼朵栖。
因此颊亮,一個被長期廣泛使用的開源項目,幾乎不可能有任何人為加入的后門或惡意代碼陨溅,可信程度遠(yuǎn)高于閉源的版權(quán)軟件终惑。如果把眼光投得更遠(yuǎn)一點,容易看到我們的社會很多部分運行的方式门扇,實際上也是如黑匣一般“閉源”的:例如我們不能確認(rèn)世界杯的比賽分組是不是有貓膩雹有,也無從得知自己買到的汽車是否曾被返修或更換過部件,更不用說統(tǒng)計甚至限制政府發(fā)行貨幣的數(shù)量了臼寄。
為此霸奕,在現(xiàn)實中我們只能選擇信任世界杯組委會、法院或政府等權(quán)威機構(gòu)——即使不信吉拳,也很難有其它更好的選擇质帅。假如社會上這些“閉源”的部分能夠以一種開源的模式運行,所有人都可以看到運行的規(guī)則并且驗證系統(tǒng)是否按照規(guī)則運行,就可以不必信任某個權(quán)威機構(gòu)煤惩。
這種開源的運行方式想必可以帶來更高程度的信任嫉嘀,一種“去中心化”的信任。
為此魄揉,2008 年 10 月 31 日剪侮,有人在一個密碼學(xué)圈子的郵件列表里發(fā)信稱:“I've been working on a new electronic cash system that's fully peer-to-peer, with no trusted third party.”并隨信附上了一篇論文,論文的標(biāo)題叫做“Bitcoin: A Peer-to-Peer Electronic Cash System”洛退。
注1:2014 年的電影《模仿游戲》就講述了這一段真實的故事瓣俯,該片還獲得了奧斯卡最佳改編劇本獎以及最佳影片、最佳男主角等七個其他獎項提名不狮。
注2:Shamir 是以色列密碼學(xué)家、圖靈獎得主在旱,著名的 RSA 公鑰加密算法中的“S”即來自他的名字縮寫摇零。今年 3 月,他因被美國拒簽而無法參加在美國舉辦的(以他的名字命名的) RSA 信息安全大會桶蝎。此事件一時令特朗普政府的簽證政策淪為笑談驻仅。