[2013/12/22 補充: 啊! RSA 的後門不只是 理論上 存在於亂數產生器當中。 最新的 Snowden 解密證實: (中文) NSA 以三億台幣誘騙(或買通?) RSA公司, 在其產品內植入 Dual EC 後門。 路透社、 衛報、 簡中。]
前陣子在 blogger 後臺查看小格流量來源自 high 的時候, 看到 這串討論, 裡面某大大宣稱 OpenBSD 被 FBI 植入後門。 正好, 先前在寫 「Windows 暗藏 NSA 後門」 的時後, 恰巧研究過這個謠言。 本來想說 OpenBSD 是小眾的小眾, 有點懶得談; 不過現在發現連 ubuntu 的大大都被騙了, 當然要幫 OpenBSD 澄清一下。 這是已經被證實錯誤的謠言。 反倒是 RSA 加解密演算法如果搭配某些特定、神秘、惡意的金鑰產生器 -- 特別是它可能的衍生產品 SecurID -- 才值得你擔心。 可以省略歷史與技術, 直接跳到 結論。
首先, 幫謠言補上網址, 這樣打起來比較有真實感, 比較有 fu :-) 搜尋 「OpenBSD backdoor」, 可以看見這事發生在 2010 年 12 月。 資安專家 Bruce Schneier 列出六篇報導; 但他表示個人並不太相信。 「(OpenBSD) 這麼龐大的程式碼, 一定有很多漏洞可鑽。 從既有漏洞裡下手, 會比自己動手安插要好多了。 除非 FBI 裡面真的有人那麼笨。」
最開始是這樣爆料出來的。 一位 Gregory Perry 私下寄信給 OpenBSD 的大大 Theo de Raadt, 宣稱十年前 FBI 曾找他們公司 NETSEC 在 OpenBSD 的加密系統 (OCF) 當中植入後門。 他並點名 Jason Wright 參與植入後門; 而指稱另一位領 FBI 薪水的 Scott Lowe 大力鼓吹業界採用 OpenBSD 背後的真正原因, 就是希望備有 FBI 後門的產品可以進入市場。 Perry 說他跟 FBI 的秘密合約過期了, 所以才敢講出來。 Theo de Raadt 在 12/14 把信公佈在網路上, 要大家自行採取適當措施: 擔心的人請自行檢查程式碼; 生氣的人另行採取行動; 被誣控的人請自己澄清。
接下來怎麼辦? 如果是 Windows 或 Mac OS, 你就禱告吧;
但是既然我們面對的是 原始碼公開 的
OpenBSD, 那就 捲起袖子 擦乾淨手上的餅乾屑,
大家一起來檢查原始碼 (audit) 呀!
Theo de Raadt 的信一寄出去, 立即就有十位開發者著手檢查 OCF 的程式碼。
一個星期後,
Theo de Raadt 貼出這樣的結論: 他相信
- NETSEC 這家公司有在接政府 「資安/反資安」 的案子。
- 1999-2001 這段期間, 美國政府單位處心積慮將竊聽黑手從軍方伸向商業界。
- Gregory Perry 曾在 NETSEC 工作, 並面試僱用 Jason Wright, 然後 Perry 自己不知道為什麼就被 NETSEC 逐出公司。
- Jason Wright 碰的是驅動程式而非加解密演算法的部分。
- 主管加解密演算法的 Angelos 後來確實有接受 NETSEC 的委託, 並且將某一些加解密流程導到 Jason Wright 的是驅動程式去。 我們也找到一些 bugs, 但我認為這些 bugs 都比較像是 「歲月留下的傷痕」 ("a function of the time in history") 而不像是明顯的惡意後門。
- Jason 跟 Angelos 在 (OCF 以外的) 別處, 對 OpenBSD 貢獻良多。 我個人無法指控他們 (惡意植後門)。
- 我想信 NETSEC 所接的案子, 原先確實是想要植入後門。
- 如果真有後門程式, 我也不認為它曾經成功入侵 OpenBSD 的官方版本。 也許是在 NETSEC 他們自己的版本裡面。
- 如果 Jason 跟 Angelos 早知道 NETSEC 是家什麼樣的公司, 他們早應該告訴我, 這樣我們當初也許會有不同的對策。
- 很高興大家藉這個機會把這部分這麼重要的程式碼清查了一遍, 回應了大家長久以來心中的疑慮。
那篇公開信當中也很清楚地列出他們找到的 bugs 的網址。 另外這篇分析 倒是有提到: 曾經有一個資安的 bug 在 2002 年時被默默地修正掉, 不太像是一般的做法。 總之後來的版本就沒那個問題了。
Gregory Perry 並沒有就此住口, 反而後來又貼了
一長篇, 除了解釋背景和歷史之外,
並懷疑 FBI 與伊朗資金合作甚至力推 「密碼演算法輸出解禁」
的這個政策背後有陰謀。 其中他很明確地聲稱 RSA 演算法有漏洞,
又質疑 RSA 發明人為何要放著大把專利金不賺, 將該演算法釋放到公領域。
既然 Perry 的專長是資安, 而他又並沒有道歉認錯,
於是我專注在他對資安演算法提出的疑慮, 又搜尋、 連結到
這篇密碼學書摘, 指出: 如果採用
Elliptic Curve Asymmetric 方式產生的金鑰來餵給
RSA 演算法吃, 那麼確實可以暗藏後門。
作者是專門研究密碼學植後門的 Adam L. Young 與 Moti M. Yung。
別問我這是什麼, 現在的我也看不懂 :-)
[12/25 補充: 請參考白話解釋 「類似但比 "較簡"」 的後門機制:
撲克牌版的 「公鑰夾帶部分私鑰」 密碼破解術]
然後又搜尋到
"Simple Backdoors for RSA key generation" 跟
"A Comprehensive Study of Backdoors for RSA Key Generation"
兩篇學術論文, 都是在改進 Young 與 Yung 的 「植後門金鑰產生器」。
前者指出: 「對於第三方提供的金鑰產生器, 千萬別拿來用在 RSA
加密機制當中。」 後者的作者是臺灣的
孫宏民教授, 探討如何改進 Young 與 Yung 所提出的金鑰產生器,
讓用戶更不容易發現後門的存在。
然後又搜尋到一個被懷疑有後門的身份認證機制 "SecurID"。 以硬體版來說, 這個產品像一把鑰匙, 可以用來開啟對應的鎖。 比較特別的是: 它每一分鐘會改變一次密碼, 所以它的時鐘必須與鎖同步, 顯示的密碼才會正確。 這個裝置被設計成禁止拆解研究 (reverse engineering), 據說是為了安全的理由。 (咦, 為什麼有一種微軟講話的感覺: 「棄權」 就是 「安全」?) 重點是: 它正是 RSA 公司的產品 (所以我猜應該是採用 RSA 加密技術)、 它最強大的地方就是它有一個金鑰產生器 (而不是像過去的 LPT1 硬體鎖, 金鑰是燒死在電路版上的)、 沒有人可以研究它的金鑰產生器如何運作 (因為禁止拆解研究)。 這些不尋常的特性恰好就是 「入侵佔領 RSA 的金鑰產生器」 所有的/所需要的。 2011 年 3 月, NetworkWorld、 ComputerWorldUK 報導: 「不願具名的產業分析師表示: RSA 跟政府秘密協商, 讓政府可以 (在 SecurID 產品裡) 嵌入後門, 以換取 SecurID 獲得授權出口的權利。 (還記得 Perry 說的 「密碼演算法輸出解禁」 嗎?) RSA 表示: 基於法律因素, 他們無法回應這項指控。
本來只是要寫一篇破除謠言文而已, 沒想到越搜尋越發現真相太奇妙了... 下個結論收尾吧:
- 2003 年以後的 BSD, 或許有一些安全漏洞 (誰沒有啊?) 但 經過眾人檢視原始碼後, 並沒有發現後門。
- 下次要指控某個開放原始碼軟體被植入後門時, 請搜尋一下, 給個網址好嗎? 謠言止於搜尋。 如果真的內藏木馬, 那一段程式碼的名稱/時間/作者/內容一定會被明白糾出來的。
- 真正有問題的不是現代的 OpenBSD, 而是針對 RSA 演算法所設計的某一特定類型金鑰產生器。 如果你所採用的資安產品, 而底層的加解密機制恰好是 RSA, 那麼請小心。 RSA 本身不是問題; 可能有問題的是 (亂數) 金鑰產生器。 [請見 Explorer 在 1F 跟 3F 的留言。] 不論你有沒有能力研讀其金鑰產生器, 請試著去取得它的原始碼。 如果取得的過程困難重重, 那麼最好別用。
- 「RSA 公司所生產的 SecurID 產品被懷疑有後門」, 有許多側面證據 (circumstantial evidences) 但沒有一針見血的鐵證可以證明這個說法。 如果真的在意安全, 不用也罷。 維基百科 說: SanDisk、 Motorola、 Broadcom、 Blackberry 等等公司的產品都有採用; OATH HOTP 是可以取代 SecurID 的開放版替代品。
- 美國的 NSA 與 FBI 等邪惡組織在資訊產品裡藏後門的時候, 通常都不是直接大剌剌地明修棧道, 而是藏在加解密模組的 (亂數) 金鑰產生器裡面 -- 就像 NSA 在 Windows 裡暗藏的後門 DUAL_EC_DRBG 一樣。 因為看得懂程式碼的門檻比較低; 看得懂加解密演算法系統 (含金鑰產生器) 破綻的門檻比較高。
- 同樣被懷疑遭美國政府植後門, 微軟與 OpenBSD 的後續處理方式與收場就大不相同。 原因在哪裡?
陽光是最好的消毒劑。 -- 美國最高法院大法官 Louis Brandeis
* * * * *
(本文也刊載於 泛科學)
手邊沒電腦; 口頭推薦本文嗎? 可以請您的朋友搜尋 「openbsd 後門」 或 「rsa 後門」。