[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
(本文轉載自資訊人權貴ㄓ疑)