Daniel J. Bernstein(DJB)在 2000 年代後期以顛覆現有的密碼學原語而聲名鵲起。2006 年,他推出了 Curve25519,這是一種旨在比 NIST 的曲線更快、更安全的橢圓曲線,並在不久後推出了補充演算法,如 ChaCha 流式密碼和 Poly1305 MAC,用於認證加密。他甚至將這些打包成一個高階函式庫 NaCl(「Networking and Cryptography library」的縮寫),以促進採用。社群對這種大膽的舉動感到驚嘆——NaCl 中的所有原語都是 DJB 自己設計的。正如一位早期評論者在 2009 年指出的那樣,「如果不是 DJB,你可能會認為我瘋了,竟然會考慮一個實現了所有新密碼的函式庫」1。但 DJB 以其「對安全的狂熱關注」和獨特的方法而聞名1,因此許多人選擇相信他。他的程式碼速度很快,他的設計具有明顯的優雅性,而且他似乎預見了多年來困擾他人的陷阱(例如,常數時間算術、更簡單的公式、無隨機數生成器濫用等)。到 2011 年,Bernstein 和他的合作者推出了 Ed25519,一種基於相同曲線的簽章方案,完善了一套「現代」密碼學構建塊,擺脫了 NSA 的影響陰影(在史諾登事件後,這一點尤其受到重視)。
DJB 的創作並未停留在小眾玩具的階段;它們迅速成為新的業界預設標準。OpenSSH 早期就採用了——2014 年,它加入了 Curve25519 ECDH 作為金鑰交換(在支援時成為預設),並將 Ed25519 作為主機/使用者金鑰類型2。OpenSSH 還採用了 DJB 的 ChaCha20-Poly1305 密碼套件,用於快速認證加密2。在 TLS 領域,Google 和 Cloudflare 推廣了 ChaCha20-Poly1305 用於 HTTPS,並在 2016 年的 RFC 7905 中將其標準化用於 TLS 1.2。到 2018 年,TLS 1.3 已定稿,並「建議使用 X25519 進行金鑰交換,使用 Ed25519 進行身份驗證」3——這是新興演算法相較於傳統 P-256 和 RSA 的巨大勝利。瀏覽器廠商和函式庫紛紛效仿。Chrome 和 Firefox 在其 TLS 堆疊中實現了 X25519 金鑰協議,甚至許多智慧卡和安全通訊應用程式(Signal、WireGuard 等)也採用了 Ed25519 進行簽章。
結果如何?Curve25519 在推出十年內,從學術提案迅速成為實務中最主要的公開金鑰系統。2025 年的一份 Cloudflare 報告乾巴巴地指出,「2024 年幾乎所有的 [TLS] 流量都以 X25519 加密」4。(另一份報告指出,X25519,首次發表於 2006 年,「現已保護了大多數網際網路連線」4。)這有多麼非凡,怎麼強調都不為過——密碼學原語很少能獲得如此快速、廣泛的採用。到了 2020 年代初期,圍繞 DJB 設計的神話已經變得如此龐大,以至於社群中的一些人半開玩笑地認為它們是無懈可擊的。特別是 Curve25519,經常被吹捧為「完美」的曲線,能夠繞過早期 ECC 的所有陷阱:沒有秘密陣列索引,無需笨拙的點驗證檢查,沒有專利負擔,並且性能綽綽有餘。Bernstein 的密碼學傳奇達到了頂峰。
不可避免地,現實追上了傳奇。隨著越來越多的專家深入研究這些方案,微妙的複雜性開始浮現。Curve25519 的設計做出了新穎的選擇來平衡安全性和便利性——特別是,每個 32 位元組字串都是有效的公開金鑰輸入,並且純量乘法演算法「處理所有輸入的公開金鑰而不返回錯誤」5。這是故意的:根據設計,X25519 不需要先前 ECDH 方案所必需的傳統公開金鑰驗證步驟。Bernstein 的實作「鉗制」(clamping)私鑰純量(設定/清除特定位元)以減輕小群體問題,然後盲目地與任何給定的公開座標進行乘法運算。沒有麻煩,沒有複雜性——任何輸入都會產生輸出。描述 X25519 的 IETF RFC 7748(2016 年)確實引入了一個逃生艙:它允許協定在輸出為全零點時中止(這是出現問題的明顯跡象)。全零點的情況只會在輸入點屬於小階(在 Curve25519 的扭曲曲線或低階子群中)時發生5。
這引發了密碼學界的意外爭論:協定是否應該明確檢查全零輸出並將其視為失敗?一些人認為應該——如果實作沒有包含此檢查,那麼它就是一個潛在的「漏洞」,隨時可能發生5。畢竟,傳統的 ECDH 協定始終要求驗證以阻止攻擊者發送奇怪的點並欺騙你。事實上,藉助 Curve25519 的結構,攻擊者可以發送一個經過特殊設計的小階公開金鑰(該曲線的餘數為 8,意味著「可能存在階為 1、2、4 和 8 的點」6)。如果接收者盲目地與這樣的點進行乘法運算,共享金鑰就會落入一個小群體中。在最壞的情況下,正如一位解釋者指出的那樣,「如果 Bob 發送給 Alice 的公開金鑰實際上是一個小階點……[他]最終可以透過重複這個技巧來逐位獲取 Alice 的整個私鑰」6。這聽起來很可怕!為什麼我們不總是防範這種情況呢?
嗯,DJB 和同事們認為,Curve25519 已經以自己的方式進行了防範。私鑰鉗制有效地將秘密純量乘以 8(餘數),這意味著任何小階元素都會產生中性點(全零輸出),可以被偵測到,或者乾脆導致金鑰派生失敗。換句話說,該設計用一次金鑰調整來取代完整的驗證步驟。Trevor Perrin 在 CFRG 的郵件列表中總結了這種理念:「X25519 的設計是為了提供一個極其簡單的 API,避免混淆,該 API 不會因為省略檢查而被濫用……這種簡單性是其成功的重要組成部分。」5 從這個角度來看,增加一個輸出的額外檢查是過度的謹慎——或者更糟,是潛在的新錯誤來源。Perrin 稱零檢查是「CFRG 的妥協」,是為了安撫傳統主義者而做出的,「討論或支持很少……並且仍然存在爭議」5。
這些觀點之間的衝突,削弱了 25519 周圍的完美光環。事實證明,這條「神奇」的曲線並非完全沒有潛在的危險:在某些邊緣情況下,你仍然需要知道你在做什麼。忽略全零結果是否真的無害?(如果你進行一次性的臨時金鑰交換,例如在 TLS 中,很可能無害;如果你對靜態金鑰進行一些奇怪的操作,則可能不是。)實作人員可以安全地跳過驗證嗎?(通常可以,但在小眾場景和學術分析中,爭論仍在激烈進行。)討論蔓延到部落格和論壇——一方認為「黑名單已知的壞公開金鑰」或檢查派生的共享金鑰是明智的7,而另一方則指出,由於 X25519 在所有重要方面都已經是經過驗證的 Diffie-Hellman,因此完整的驗證是多餘的。
最終,25519 的神話有些受損:它仍然是一條很棒的曲線,仍然是首選,但它並非來自密碼學之神的、帶有氪石的禮物。它有一個小餘數,在進階協定中需要注意(導致了 Ristretto 等用於素數階群抽象的調整),並且它說明了即使是「安全」的曲線也涉及權衡。對於內部人士來說,這都是正常的——沒有完美的密碼或曲線,只有被充分理解的。但值得注意的是,這是 Bernstein 的工作為數不多的幾次面臨公開技術反駁的事件之一。氣氛仍然是尊重和技術性的。我們當時並不知道,更激烈的鬥爭即將來臨,一旦話題從如何進行密碼學轉移到誰控制著密碼學的未來方向。
Bernstein 並沒有僅僅滿足於 Curve25519 的榮耀。他多年來一直深度參與後量子密碼學(PQC)的努力——事實上,他喜歡指出,他早在 2003 年就創造了「後量子密碼學」這個詞8。隨著量子電腦破解 RSA/ECC 的威脅變得更加具體,DJB 將他的大部分研究轉向了 PQC 演算法。他共同撰寫了 NIST PQC 競賽中的多個提案(例如,用於加密的 NTRU Prime,用於簽章的 SPHINCS+ 等),並繼續挑戰現狀。一如既往,每當他聞到 PQC 過程中一絲老派官僚主義或不安全的氣息時,他都會直言不諱。在一篇論文中,他審查了 NIST 的提交,並乾巴巴地指出,「2017 年 69 個第一輪提交中有 48%……現在已被破解」8——這是一個尖銳的提醒,許多後量子方案(過去和現在)都還不成熟且脆弱。他的結論很明確:在部署後量子密碼學時,我們最好分散風險。
這種理念為 Bernstein 的下一次重大行動奠定了基礎:混合加密。到 2016 年,Google 已經進行了實驗,將傳統 ECC(X25519)與後量子金鑰交換結合起來,正是為了「雙重保險」握手安全9。邏輯很簡單:如果時髦的新 PQC 數學在五年內被破解,傳統部分(Curve25519)仍然提供我們數十年來依賴的相同保護9。如果量子電腦出現,PQC 部分將能抵抗它們,即使 ECC 部分失效。兩者同時失敗的機率是天文數字般的低。這種雙金鑰、雙演算法的方法(通常稱為混合 KEM 或「雙重加密」)成為許多實務者認可的常識性策略。即使在 2025 年,Cloudflare 的 TLS 連線中有一半仍在使用後量子混合握手——其中 95% 使用 X25519 + Kyber(一種基於格的 KEM)9。看來,早期的後量子部署應該添加安全網,而不是移除它們,這是顯而易見的。
除了某些政府圈子裡有權勢的聲音之外,對每個人來說似乎都是顯而易見的。這時,NSA 和 GCHQ 登場了。根據 Bernstein 對這場傳奇的講述,美國和英國的安全機構開始悄悄地推動標準機構採用純粹的後量子密碼學,而不混合任何傳統密碼學。表面上的理由是:滿足未來國家安全系統的「Suite 2.0」要求,這些要求只允許使用新演算法。陰險的解釋是:他們希望透過移除 ECC 後備來故意削弱網際網路安全。到了 2023 年底和 2024 年初,網際網路工程任務組(IETF)正在考慮 TLS 1.3 金鑰協議的兩項提案:一項是支援混合 ECDH+PQC(例如 X25519+Kyber),另一項是純 PQC 的握手。這聽起來可能是一個細微的技術細節,但對 Bernstein 來說,這是一場必須奮戰到底的戰役。
在 TLS 郵件列表和相關論壇上,他毫不留情地爭辯說,放棄 X25519「安全帶」是愚蠢且危險的。不僅危險,而且可疑。他指出,沒有實際的客戶端或伺服器無法處理混合握手帶來的一點額外成本;除了可能增加 64 位元組的網路流量外,使用兩種演算法沒有實際缺點。那麼為什麼要推動純 PQC 呢?Bernstein 的答案是:因為某些大型政府行為者希望在邁向未來的幌子下削弱我們的密碼學。他毫不諱言。據他稱,「監控機構 NSA 及其合作夥伴 GCHQ 正在試圖讓標準開發組織認可將 ECC+PQ 削弱到僅剩 PQ」9。他將此與 Dual EC 醜聞相提並論,指出 NSA 公開的「CNSA 2.0」指南對混合體最多是含糊其辭,並基本上指控這些機構利用遵守規定的公司為其效力。
這就是 DJB 長期培養的叛逆精神全面爆發的地方——並開始讓他的許多同行感到不適。TLS 工作組的討論變得充滿敵意。一些參與者(包括思科、Cloudflare、亞馬遜等公司的員工)主張可選的非混合模式,通常引用遵守政府要求或希望保持協定設計簡單。在一次交流中,一位思科的密碼工程師為純 PQC 模式的必要性辯護,稱某些專家(未具名)推薦它,並且至關重要的是,「對我的雇主來說,這是他們願意購買的。因此,思科將實作它;我基本上只是在要求程式碼點」8。Bernstein 將此視為商業利益(受政府影響驅動)壓倒技術優勢的證據。對於一個公正的觀察者來說,思科代表的評論聽起來很務實——如果大客戶要求某項功能,供應商就會提供。但對 DJB 來說,這是對開放網際網路的背叛。他抨擊這封郵件試圖在 IETF 的決策中動用雇主權力(違反了 IETF 珍視的「個人貢獻者」精神),並承認 NSA 的偏好正在左右企業行為8。他甚至指控一個公司「卡特爾」為了追逐政府資金而犧牲使用者安全,寫道「NSA-想要-它論點——由一個追逐 NSA 資金的公司卡特爾推動——已經壓倒並壓制了 IETF 對工程考量的討論」8。
這種言論超出了技術辯論的正常坦率程度;它公然將同事稱為敵人的棋子。如果這來自一個新手,工作組主席可能會直接將他們趕出去。但這是 DJB——一個無論好壞,都為討論中的協定做出了巨大貢獻的人物。情況很緊張。到了 2024 年底,經過幾次激烈的討論串,TLS 工作組主席終於介入,並對 Bernstein 在郵件列表上的破壞性行為發出了正式的公開警告10(這是 IETF RFC 3934 中定義的用於管理列表的步驟)。這是一個罕見的步驟;它基本上是說「好好表現,否則我們將禁止你使用該列表」。DJB 並沒有好好表現。相反,一如既往,他加倍努力並採取了程序手段:他向 IETF 的領導層提出了上訴,質疑警告並聲稱存在各種程序上的違規行為。
為了讓您了解這些元級別的爭論:Bernstein 的上訴(2024 年 12 月)聲稱工作組主席有偏見或行為不當,因為他們壓制了他。他甚至認為,在正常的上訴鏈中存在利益衝突,因為 IETF 的安全領域主管之一曾為 NSA 工作。(在他看來,僅憑這一點就足以懷疑整個過程被 NSA 的影響所玷污。)IETF 在 2025 年 1 月的回應是明確且不帶同情的。他們指出,發出警告完全在主席的權威範圍內,並且 DJB 繞過了適當的鏈條(他應該先向他所懷疑的安全 AD 提出上訴——他因為她的 NSA 履歷而懷疑她——然後再升級到整個指導委員會)10。IESG 發現「沒有可信的證據」支持 Bernstein 對過程中利益衝突的暗示10。在一個特別尖刻的評論中,IESG 評論說他的上訴文本包含「完全個人且不相關」的材料,這些材料是「不恰當」的10。換句話說,他的上訴更像是一個陰謀論者的咆哮,而不是對程序錯誤的集中論證。
不滿意於這個結果,Bernstein 繼續就此事進行訴訟。他重新提交並將他的上訴擴展到其他機構(包括 IAB),撰寫了冗長的部落格文章,詳細闡述了 TLS 工作組的傳奇,甚至援引了反壟斷法——是的,反壟斷法——聲稱公司串通 favour NSA 的首選標準可能會使 IETF 面臨法律風險8。到了這個時候(2025 年底),整個事件已經淪為一場鬧劇。這是一個曾經憑藉其才華和毅力改寫密碼學規則的人,現在卻淹沒了郵件列表和官僚機構,聲稱一些事情接近間諜驚悚小說。經驗豐富的內部人士,從旁觀席上觀看,只能搖頭。
這種對比再明顯不過了。在他年輕的時候,DJB 主要透過編寫程式碼和數學來改變了現實世界密碼學的範式——創造出如此優秀的東西,以至於每個人都想使用它。Curve25519 及其同類產品因其技術優勢和謹慎的傳播而取得成功,從未演變成互相抹黑。Bernstein 贏得了影響力,因為實作人員信任他的天才(即使不情願,就像 NaCl 最初激進的選擇一樣)1,並且因為他提供了高品質的成果。但在他職業生涯的後量子階段,我們看到了一種截然不同的影響力嘗試:不是透過部署和採用,而是透過爭論、程序上的操弄和人身攻擊。同一個人,他巧妙地在橢圓曲線安全問題上駁倒了整個 NIST 團隊,現在卻發現自己正在撰寫關於前 NSA「利益衝突」的上訴,並將同事描繪成腐敗的集團。這幾乎是一個悲劇性的弧線——資深密碼學家變成了一個心懷不滿的批評者。
可以肯定的是,Bernstein 在混合加密方面的技術觀點並非沒有道理。許多專家同意其核心內容:混合體是審慎的,匆忙移除經過時間考驗的密碼學是不明智的。但他處理此事的方式——指責的語氣,拒絕妥協,甚至不承認他人可能持有誠實的不同意見——浪費了他積累的許多善意。工程師之間有一個不成文的規則:如果你必須不斷引用陰謀論和訴訟來贏得爭論,那麼你可能已經輸了。即使在這些辯論如火如荼的時候,世界也在繼續前進,這並沒有幫助。NIST 標準化了 Kyber(他所懷疑的那種格 KEM),各國政府也開始規劃轉型。TLS 幾乎肯定會標準化一個混合模式(部分歸功於 DJB 的推動),但這將是在他好鬥的參與之下,而不是因為他的參與。與此同時,人際關係上的影響是,Bernstein 疏遠了許多曾經是他天然盟友的標準制定者。TLS 工作組——長期以來一直歡迎學術界和特立獨行者的意見——在這場鬥爭中變得如此有毒,以至於多名參與者公開宣布暫停參與。
在密碼學領域,正如在任何領域一樣,影響力是一種奇怪的貨幣。Daniel Bernstein 透過為社群提供無可否認地實質上提高了安全性的工具而獲得了影響力。然而,最終,他開始耗盡這種來之不易的影響力,堅持認為只有他看到了針對加密的宏大陰謀的真相。一位在網際網路角落匿名發帖的老將可能會諷刺地觀察到,我們以前見過這種模式:才華橫溢的創新者有時會在進步的潮流不再順應他們時,變得固執和偏執。透過展示卓越的解決方案來贏得信任是一回事;要求信任,聲稱其他人都被腐蝕了,則是另一回事。
DJB 從年輕的密碼學戰士到陷入困境的標準爭議人物的奧德賽,對我們的領域來說是一個警示故事。它提醒我們,技術卓越可以征服世界——但僅限於某個點。在此之上,持續的影響力需要外交手腕、謙遜和對同行的少許信任。Bernstein 曾憑藉工程上的飛躍徹底改變了網際網路密碼學。但近年來,他發現自己試圖透過大量的電子郵件來做同樣的事情。結果不言而喻。TLS 中的新演算法在很大程度上歸功於他過去的工作,但他在塑造其標準化方面的直接作用卻微乎其微——很大程度上是因為他的方法將討論推入了溝渠。總而言之,curve25519 的傳奇和 PQC 混合戰爭說明了一個一貫的真理:密碼學中最強大的槓桿來自於已部署的程式碼,而不是陰謀論。DJB 的遺產仍然是巨大的,但他職業生涯晚期的鬥爭表明,即使是傳奇人物也可以「贏得」每一次爭論,卻逐漸失去人們的認可。程式碼仍在運行,默默地證實了他的天才;而郵件列表上的咆哮,則將淡出歷史檔案,成為他輝煌職業生涯中的一個註腳。