撰寫 STS 年會 論文時, 針對 NSA 暗藏在 RSA 公司的 Dual_EC_DRBG 後門事件 (中文背景知識, 大推) 搜尋到一些連結, 趕快摘要一下。 以下如果沒有特別提到資料來源, 主要都是來自 A few more notes on NSA random number generators 及 How a Crypto ‘Backdoor’ Pitted the Tech World Against the NSA 這兩篇文章。 前者的作者是 Johns Hopkins 大學資安教授 Matthew Green, 先前因為 文章戳到 NSA 的要害而被校方要求撤文。 後者則是貴哥的資安偶像 Bruce Schneier 所推薦的文章 (裡面有引用 Schneier 的評論), 很長, 包含非常白話而清楚的 Dual_EC_DRBG 技術解釋。
其實早在 2005 年就已出現可疑跡象。 Certicom 公司 握有許多關於橢圓曲線 (Elliptic Curve, 就是 Dual_EC_DRBG 當中的 EC 兩字母) 相關專利。 2005 年 ANSI 負責銀行業務相關標準的 X9F1 團隊在設計 X9.82 標準時, 注意到該公司兩位員工申請一項 名為 「橢圓曲線亂數產生器」 的專利, 專利文件明白指出這個方法可以藏後門。 2006 年 NIST 提出資安相關規範草稿意欲將 Dual_EC_DRBG 列為國家標準時, 就已有至少兩篇學術論文回應, 指出 Dual_EC_DRBG 不符合一般資安規範。 2007 年, 微軟工程師 Shumow 與 Ferguson 在 CRYPTO 資安會議上明確地指出 Dual_EC_DRBG 的問題不像是一個粗心的設計疏失, 而像是一個後門。
專門開發行動裝置資安產品的 Silent Circle 公司 技術長 Jon Callas 四兩撥千斤地表示到現在他還是不相信這是後門: 「如果 NSA 為了在標準當中植入後門而花了兩億五千萬美元只能做到這樣, 那我們實在沒什麼好怕的。」 他說這個演算法很可笑; 最後卻又以卡通偵探片嘲笑陰謀論述。 (嗯, 看來還是別買他們的產品比較安全。) [補充] 感謝 UGP 留言提醒。 我就覺得這個名字有點印象... 原來 先前曾經噗過他們的新聞。 再搜尋一下, 發現: Github 上面有他們的原始碼; 但 是不是全部? 不太確定。
Cryptography Research 的總裁 Paul Kocher 的看法卻很不一樣。 「設計不良的加密演算法是因為懶惰和無知而造成漏洞; 但是這個例子卻是精心設計出來的漏洞。」 Schneier 也這麼認為。 在 2007 年當時, 他就已經 公開呼籲大眾 避免採用這個可疑的演算法。 「這個弱點怎麼看就是一個後門。」 那時他以為這個後門太明顯了, 開發人員不可能會採用這個演算法。 但是他錯了。 美國政府採購需求的強大力量, 促使許多公司把它納入產品之中。
其中也包含微軟。 在 2007 年底, 照樣將它收入 Vista SP1。 Dual_EC_DRBG 不是 Windows 的預設亂數產生器。 但是 Schneier 表示: 相較於側錄鍵盤的木馬程式需要安插大量可疑程式碼進入受害者的電腦, NSA 所塞到 Windows 裡的 Dual_EC_DRBG 機制只需在 Windows registry 裡面改幾個 bits 就可以開始監聽, 這種作法很低調, 也讓陰謀論者難以攻擊、 NSA 很容易否認。 也請見我的文章: NSA 要求微軟安置在 Windows 裡的後門。
Green 提醒: 除了 NIST 之外, 上述的 ANSI X9.82 以及 ISO 18031 裡面都有 Dual_EC_DRBG。 此外, 由 Micali 與 Schnorr 所發明的另一個可疑 DRBG 演算法也在 ANSI 與 ISO 的標準當中。
事情爆發之後, RSA 表示: 「決定採用 Dual_EC_DRBG 作為預設亂數產生器, 是在 2004 年。 當時 NSA 在資安產業界形象良好, 本來就是本公司的合作對象之一。 2007 年, NIST 將 Dual_EC_DRBG 列為國家標準, (關於這個演算法的爭議) 我們也以 NIST 的決策為依歸。 2013 年九月 NIST 建議大眾勿採用此演算法, 我們也就跟進。」 (沒有逐字逐句翻; 只是大意) 總之, 在我看起來, 或者他們的技術人員都不參與決策, 或者技術人員看不出問題, 或者技術人員所提的警告被其他考量壓下去了, 才會有這樣的結果。 此外, 這篇聲明也沒有譴責或至少要求 NSA 說明為何要強力推薦這個 [Kocher 與 Schneier 指出的] 後門亂數產生器。
後門的運作方式, 不再只有 公鑰夾帶私鑰的概念解釋, 實際運作示範教學也出現了: Dual_EC_DRBG backdoor: a proof of concept。
* * * * *
手邊沒電腦; 口頭推薦本文嗎? 可以請您的朋友搜尋 「dual_ec_drbg 歷史」 或 「」。