每日最新頭條.有趣資訊

密碼學、開源軟體和遠方——從現代密碼學到區塊鏈

導言/林佳誼

“It must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.” 這是著名的密碼學柯克霍夫六大原則之一。軟體開源與安全性的議題,近來因美國政府可能管制一事,引發了極大的討論與關注。區塊鏈堪稱是與開源最相關的技術之一,而作為區塊鏈起源之一的密碼學,其實早已對此有了答案。

因此,本周 DeepHash 專欄邀請專長於密碼學的 Conflux 研究總監楊光,回溯密碼學史上對於開放與封閉、以及對安全性影響的爭辯、激戰和省思,由此帶領讀者深思,如果一個密碼學算法是保密而非公開的,這個算法會更安全嗎?如果比特幣的代碼是閉源的,或者哪怕僅僅是其中用到的 PoW 函數部分是閉源的,那麽它還能如今天這般成功嗎

(來源:Pixabay )

文/楊光

在提到密碼或者密碼學的時候,很多人的腦海裡可能會浮現出兩種截然不同的形象:一種在神秘中帶著些許浪漫主義色彩,例如福爾摩斯在探案中遇到的跳舞小人(參見The Adventure of the Dancing Men)或者《達文西密碼》中的暗號,常見諸於大眾文學和影視作品;另一種則顯得冰冷無情甚至有些乏味,例如根據一段短短的口令,電腦程序把好好的文件變成了一串無法識別的“亂碼”,這也是實際上我們身邊的各種電子設備每時每刻都在使用的密碼。

為什麽我們會對同一個概念有著兩種截然不同的印象?難道是大眾傳媒騙了我們嗎?

其實答案並不是非此即彼那麽簡單:兩種關於密碼學的描述都是正確的,只不過前者通常被我們稱為“古典密碼學”,而後者被稱為“現代密碼學”——也就是今天的人們研究和使用的密碼學。雖然兩者同樣頂著“密碼學”的名字,但是它們在本質上卻極為不同,一言以蔽之,“古典密碼學屬於藝術,現代密碼學屬於科學”。

古典密碼學

具體來說,古典密碼學的安全性來源於密碼設計者的知識積累和創造力,以及對所設計方案的保密性。例如二戰期間美軍利用納瓦霍語難以學習及了解的特性,以該語言為基準設立了一套通信術語系統並大量招募納瓦霍人入伍擔任譯碼員(2002 年的電影《風語者》即反映了相關事跡)。對於日本人來說,想要攻破這套密碼體系只有兩條路可選:一是從零自學納瓦霍語;二是先探聽到這套密碼是基於納瓦霍語的,再設法找納瓦霍人幫忙破解。實際上,這套密碼直到戰爭結束也沒有被破解。

然而,如果對手技高一籌的話,過於依賴保密的設計方案的密碼體系反而會弄巧成拙——圖靈幫助盟軍攻破德國的“Enigma”密碼的故事就是一個很好的例子(注1)。

古典密碼學作為一種有著幾千年歷史的軍用技術,絕大多數情況下也可以很好地履行使命,那麽又為什麽淪落到今天被現代密碼學所取代的地步呢?這是因為古典密碼學作為一種曲高和寡的藝術形式,同其他很多高雅藝術相似,並不符合廣大人民群眾的需求——簡單來說,就是太貴了,普通人用不起。

對於國家政府、軍隊、或者某些勢力強大的黑衣組織來說,專門為其成員統一設計一套密碼體系並不是什麽難事,只需要避免組織中出現叛徒即可;而對於普通人來說,專門設計一套密碼的成本已經有些昂貴,更昂貴的是往往一套還不夠用——例如 Alice 想要分別跟 Bob 和 Chris 進行保密通信,為了保證 Bob 不能解密 Alice 與 Chris 之間的通信,Alice 跟兩個人通信時必須使用兩套截然不同的密碼系統。

想象一下,如果銀行需要為每一個用戶都分別設計一套用戶和銀行間通信使用的密碼,那麽密碼學專業畢業的學生一定會很容易在銀行找到一份工作——前提是銀行沒有因為成本過高而倒閉。

現代密碼學的誕生

實際上,隨著計算機的普及,即使美國政府這樣財大氣粗的土豪,也難以負擔得起為每個使用計算機的部門維護專用密碼系統的成本。因此,美國的國家標準局(NIST 的前身)於 1972 年開始征集用於加密政府內非機密敏感信息的密碼系統。在 1974 年的第二輪面向公眾的征集中,IBM 提交了一種加密算法的提案,這就是著名的 DES 加密算法,其中 DES 是英文 Data Encryption Standard(“數據加密標準”)的縮寫。

作為現代密碼學的開山之作和傑出代表,DES 加密算法遵循了柯克霍夫原則。該原則要求密碼系統的安全性完全依賴於一個妥善保管的安全密鑰,而不依賴於對密碼系統本身細節的保密。用信息論的發明者克勞德•香農的說法來講,就是“敵人了解系統。”

按照柯克霍夫原則,只需保管好不同的通信信道各自的密碼,就可以使用同一個密碼系統在所有信道上安全地通信。“隻換密鑰,不換密碼系統”的特點,極大地降低了使用加密技術的成本,使得密碼從一種藝術品,變成一種低價且可大量供應的工業品。現代密碼學技術終於在以金融為代表的商業應用中獲得了大顯身手的機會

儘管 DES 是一種非常優秀的加密算法,但是對於 DES 的信任並非是與生俱來的。早在 1975 年美國國家標準局就 DES 方案公開征求意見時,就有人提出美國國家安全局(即臭名昭著的 NSA)干涉了 DES 算法的設計,特別是 DES 算法中對於 S-box 的具體選擇(本來應該是隨機選擇的),可能秘密地削弱了算法的安全性甚至埋入了後門,以使得 NSA 可以更容易地破解加密信息。

為此,DES 受到了學術界的嚴格審查,這甚至直接推動了密碼分析技術的發展。關於 S-box 中隱藏有弱點的懷疑,最終直到 1990 年代初才煙消雲散,因為根據 Eli Biham 和 Adi Shamir(注2)發現和公開的差分密碼分析技術,NSA 對 S-box 所作的修改顯著提高了 DES 算法抵抗差分密碼攻擊的能力——有證據表明,IBM 和 NSA 早在 1974 年就已經知道了這種攻擊技術。但是另一方面,也有資料顯示 NSA 說服了 IBM 縮短 DES 算法的密鑰長度,有可能是為了把 DES 算法的安全性限制在 NSA 可破解的範圍內。

從 DES 加密算法的公開征集和討論開始,到後來學術界懷疑 NSA 插手而試圖找出 DES 的弱點,整個過程說明,公開 DES 算法不僅沒有降低其安全性,反而是通過廣泛而深入研究證明了其安全性和可靠性。通過使用三次加密克服密鑰過短缺點的 3DES 算法,至今仍存在於 Firefox 等軟體中,在微軟的 Office 365 中也一直被使用到 2018 年 12 月。NIST 在對 DES 的回顧中提到:

DES 可被稱為是對加密算法的非軍用研究和發展的“第一推動力”。1970 年代,在軍隊或情報組織以外的密碼學家,對密碼學的學術研究都非常少。現在則有許多活躍在學術界的密碼學家,大學裡開設了高質量的密碼學課程,市場上也湧現出商業的信息安全公司和顧問。一整代的密碼學家都拚命分析DES 算法,更確切地說,是嘗試破解。用密碼學家布魯斯・施奈爾( Bruce Schneier)的話說:“DES 在促進密碼學界的發展上做的比其它的一切都多。現在有一種算法供學者們分析了。”

密碼學技術與開源運動

DES 加密算法的成功,一個重要原因在於其算法設計從一開始就是完全公開的,因而所有對其感興趣的人都可以嘗試進行分析,這與軍事或情報上使用的保密的密碼系統有著本質的不同。也正是得益於其公開性,DES 最終才洗清了受 NSA 干涉埋入後門的嫌疑,在商業上得到大規模應用。DES 算法為現代密碼學樹立起一根標杆,此後所有民用的密碼學算法都遵循柯克霍夫原則,並公開所有算法設計以便密碼學同行研究,也只有經受得住同行分析和攻擊的密碼學算法才會被認可為安全的。

可能會有人以為,公開密碼學算法的同時,也會為惡意的攻擊者破解密碼提供了便利。但是實際上,筆者從未聽說過有哪個案例是因為密碼學算法被攻破而造成損失的。

絕大多數安全事故的原因都在密碼學以外,包括程序員寫代碼時沒有理解密碼學算法本身設計寫出 bug(例如索尼 PS3 的 ECDSA 簽名算法實現在一個該用隨機數的地方用了固定的數),甚至使用了錯誤的算法(例如有的程序員會使用 MD5 或 SHA 算法進行“加密”),或由於其它原因意外洩露密鑰(例如曾有人誤把測試用的帶有明文密鑰的文件上傳到 GitHub)等。即使是密碼學範圍內的攻擊方式,很多也是通過測量程序運行時間或芯片功耗等側信道攻擊實現的,本質上還是實現算法時考慮不周留下的漏洞。

實際上,現代密碼分析技術需要掌握極高的數學技巧,因此最優秀的分析者往往都身在學術界,他們更願意通過公開發表自己的研究成果以獲得學術聲譽,而非發起實際的攻擊獲益。另外,通常發現理論上的漏洞後,總是需要相當一段時間才能在技術上成功利用漏洞發起攻擊,這為使用者及時升級提供了寶貴的緩衝期。

例如 2005 年王小雲教授指出當時在商業中廣泛使用的 SHA-1 哈希函數的安全漏洞,該漏洞雖然並不意味著可以直接攻破使用 SHA-1 的系統,但卻足以證明 SHA-1 的安全性嚴重低於預期,並直接促使 NIST 選擇新的 SHA-2 哈希函數(包括 SHA-256、SHA-512 等變種)替代 SHA-1。但真正宣告 SHA-1 死亡,還要等到十多年後的 2017 年,谷歌團隊完成對 SHA-1 的完整破解。此時在任何一個靠譜的項目中,對於 SHA-1 的替代升級工作都應該早已完成了。

現在對於抗量子計算攻擊的密碼學研究或多或少也有類似的“備胎”意義,如果哪天量子計算機技術取得重大突破,人們應可在量子計算機真正被用於攻擊 RSA 或 ECDSA 之前,切換到新的密碼系統。

所以說,通過公開密碼學算法設計,用戶可以及時地獲得關於漏洞的預警,在漏洞被實際利用之前的緩衝期升級到新算法,這要遠好於在毫無準備的情況下就遭到對手攻擊。

相比之下,采取對密碼學設計保密的方式只能阻礙善意研究者分析和幫助改善其安全性,對於刻意攻擊該密碼的對手而言,無論是通過逆向工程還是通過社會工程,總會有辦法突破保密機制獲得相應的設計方案,然後在使用者不知情的情況下偷偷地破解,直至發起攻擊。例如二戰中德軍並不清楚他們所用的密碼系統已經被圖靈領導的團隊破解,仍使用被破解的密碼系統傳遞機密情報,反倒為盟軍最終取得勝利作出了重大貢獻。

密碼學家們也非常珍惜和維護公開討論、研究和使用密碼學的權利。特別是在信息時代和互聯網時代的背景下,密碼學是保護人們的信息不至於“裸奔”的重要技術。從這個角度來講,密碼學家們為普通人爭取來學習和使用密碼學的權利,甚至頗有一點普羅米修斯為人類盜火的感覺了。

早在 1991 年,Phil Zimmermann 編寫了一個名為 PGP 的高強度加密軟體,其密鑰長度超過 128 位。當時美國政府規定密鑰長度超過 40 位的加密產品都須作為軍火產品受到出口管制,因此,在 Zimmermann 把 PGP 源代碼放在網上供人們下載時,便驚動了美國政府。

Zimmermann 的案例在當時引起了技術和法律圈子的熱議,很多人站出來聲援他並提供各種支持。最終 Zimmermann 決定採用迂回的方式,繞開政府對於加密軟體的限制——他通過 MIT 出版社出版了一本包含 PGP 的全部源代碼的書,這本書作為出版物而非軟體受到美國憲法第一修正案對於出版自由的保護。

此後又發生了兩個著名的案例:1995 年,凱斯西儲大學(Case Western Reserve University)教授 Junger 為了爭取在(有外國留學生的)課堂上公開講授加密技術的權利,向美國國務院發起訴訟;1996 年,加州大學伯克利分校的學生 Bernstein 為了可以不受限制地公開發表自己設計的密碼學算法和參與學術討論,向美國司法部發起訴訟。這兩個案例吸引了社會的廣泛關注,在大批律師和法學家、科學家、工程師的共同努力下,兩個案例在 2000 年之後都獲得了最終的勝利。

密碼學家們的抗爭不僅僅爭取到了自由討論和使用密碼學技術的權利,更重要的是這些判例確定了密碼學算法和源代碼算是一種言論自由,不受美國政府對於軟體出口的限制——這對於未來所有開源軟體項目的發展,都具有至關重要的意義。借著密碼學技術公開化的順風車,人們終於可以打消對於開源項目的源代碼是否會受到美國政府管制的最後一絲疑慮——於是很多開源軟體基金會紛紛選擇注冊在美國,這也為日後開源軟體項目的蓬勃發展奠定了基礎。

與版權軟體相比,開源軟體在安全性、可靠性、擴展性等方面都具有獨特的優勢。通過公開源代碼,開源軟體中因為疏忽造成的漏洞更容易被其他程序員發現,而植入後門的行為就像禿子頭上的虱子一樣明顯——相比之下,閉源軟體的漏洞和後門則往往只有經驗豐富的黑客才能發現。

在可靠性方面,由於開源軟體的源代碼已經是公開的,所以用戶無需過分擔心軟體的開發者下架或停止維護後沒法繼續使用軟體,只需要自己拿來源代碼修改和編譯即可。

在可擴展性方面,開源軟體更是有著無可比擬的優勢,任何人都可以根據自己的需要自由地定製和修改軟體的代碼,無論時間還是經濟上的成本,都比定製版權軟體低得多。另外,開源軟體項目對於培養新程序員,提高整個行業的技術水準也有十分重要的意義。

比開源軟體更遠的遠方

當越來越多人開始意識到開源軟體項目在計算機軟體、特別是互聯網行業發揮的顛覆作用時,有人已經把目光投向了更遠的地方:開源項目除了帶來免費好用的軟體以外,其實還帶來了一樣更為寶貴的東西——信任

使用閉源軟體的時候,我們實際上並不清楚軟體到底會進行哪些操作。比如軟體是否會偷偷地掃描我們的硬碟或者篡改某些文件?是否會搜集我們的隱私信息甚至竊取網絡账戶密碼?絕大多數時候用戶都只能選擇信任某個中心化的機構才能放心地使用這些軟體,這個機構可以是軟體的發行方、殺毒軟體廠商,或者作業系統廠商。

但是如果試圖進行這些操作的就是那些機構本身呢?假如微軟想要搜集 Windows 用戶的數據,相信他們完全可以從技術上做到在普通用戶毫無知覺地情況下搜集其訪問網站的歷史記錄。或許微軟顧慮到法律不會輕越雷池,但是如果 FBI 以某個冠冕堂皇的名義(例如“通俄”)要求微軟提供某些用戶的信息呢?而且在法律跟不上技術發展速度的情況下,誰也無法保證商業公司不會以法律“擦邊球”的形式侵犯用戶的權益。年紀稍長的朋友應該還記得 2010 年“3Q 大戰”時,奇虎公司和騰訊公司之間互相指責對方不正當競爭和侵犯用戶隱私的往事。

開源軟體在這方面就要比閉源的好多了,因為通過開放的源代碼,所有訓練有素的程序員都可以看懂程序會如何運行。如果某個開源項目的代碼中嵌有後門或者惡意代碼的話,只要有人發現並指出有問題的位置,其他程序員都可以非常容易地驗證是否真的有問題,甚至可以在修改掉有問題的部分後繼續使用原有的代碼。因此,一個被長期廣泛使用的開源項目,幾乎不可能有任何人為加入的後門或惡意代碼,可信程度遠高於閉源的版權軟體。

如果把眼光投得更遠一點,容易看到我們的社會很多部分運行的方式,實際上也是如黑匣一般“閉源”的:例如我們不能確認世界杯的比賽分組是不是有貓膩,也無從得知自己買到的汽車是否曾被返修或更換過部件,更不用說統計甚至限制政府發行貨幣的數量了。為此,在現實中我們只能選擇信任世界杯組委會、法院或政府等權威機構——即使不信,也很難有其它更好的選擇。

假如社會上這些“閉源”的部分能夠以一種開源的模式運行,所有人都可以看到運行的規則並且驗證系統是否按照規則運行,就可以不必信任某個權威機構。這種開源的運行方式想必可以帶來更高程度的信任,一種“去中心化”的信任。為此 ,2008 年 10 月 31 日,有人在一個密碼學圈子的郵件列表裡發信稱:

I've been working on a new electronic cash system that's fully peer-to-peer, with no trusted third party.

並隨信附上了一篇論文,論文的標題叫做“Bitcoin: A Peer-to-Peer Electronic Cash System”

(本文首發於DeepTech 平台每周二之 DeepHash專欄)

注1:2014 年的電影《模仿遊戲》就講述了這一段真實的故事,該片還獲得了奧斯卡最佳改編劇本獎以及最佳影片、最佳男主角等七個其他獎項提名。

注2:Shamir 是以色列密碼學家、圖靈獎得主,著名的 RSA 公鑰加密算法中的“S”即來自他的名字縮寫。今年 3 月,他因被美國拒簽而無法參加在美國舉辦的(以他的名字命名的) RSA 信息安全大會。此事件一時令川普政府的簽證政策淪為笑談。

楊光

楊光畢業於清華大學姚班,並於清華大學交叉信息研究院獲得計算機科學博士學位。加入Conflux團隊前曾在丹麥奧胡斯大學、中科院計算所、比特大陸從事研究工作。他的研究方向包括密碼學、博弈論和區塊鏈。他的博士論文曾獲得中國密碼學會優秀博士學位論文獎。

關於 DeepHash 專欄 / 每周二

文/林佳誼

“區塊鏈技術非常複雜,而且有很多誤解。更可怕的是,很多人自認為了解區塊鏈技術,但表現出的卻是無知。學術機構有著巨大的責任去培養下一代的創新者。”在杜克大學商學院開設區塊鏈課程的教授 Campbell Harvey 曾經有感而發地說。

每項新興技術發展都有它的周期,愈是可能帶來重大變革的技術,這個周期往往也愈明顯。就在區塊鏈技術步入所謂“幻滅的低谷”之時,DeepTech 認為,下一個產業風口,如今正在每個頂尖高校的實驗室、在各國央行與監管機構的研究室,在行業組織的研討會中醞釀著。

DeepTech 認為,此時才是關鍵時刻,身為一家堅持深入報導科學科技產業的專業媒體與科技服務提供者,我們有責任也有必要,在這個時點上有帶領讀者去撥開迷霧、厘清誤解,培養對區塊鏈技術的更深刻認知。

因此我們於每周二固定推出 DeepHash 專欄,由 DeepTech 資深編輯林佳誼,邀集千人學者兼天德鏈創始人蔡維德、分布式系統專家王嘉平、Conflux 研究總監楊光、物聯網區塊鏈初創 BiiLabs 創始人朱宜振等專家學者共同維護,每周一次,帶領讀者在技術研發、在法規政策、在行業標準,在國際趨勢,方方面面深入挖掘未來 3-5 年真正具有產業化潛力的區塊鏈知識。

-End-

獲得更多的PTT最新消息
按讚加入粉絲團