NSA 要求微軟安置在 Windows 裡的後門... 保護智財, 無可奉告

微軟的 CAPI 可能架構 稜鏡計畫揭密 之賜, 大家開始注意 NSA (美國國家安全局) 的各種竊聽行為, 而一則 (連我都是初次聽到、 大吃一驚的) 十四年前舊聞, 最近也被重新挖出來討論: NSA 透過微軟 Windows 佔領你的電腦: 1 2。 也請參考 維基百科。 更精確的說法可能是: 你透過 Windows 所進行的任何加解密動作 (包含你指定的跟應用軟體自動幫你做的), 可能都要擔心會不會遭到 NSA 偷窺監聽。 目前已知 NSA 所力薦的 DUAL_EC_DRBG 加密技術 (非 Windows 預設) 確實藏有竊聽後門; 除此之外,其他部份似乎並沒有具體事證顯示 NSA 曾經啟動此機制。 文長, 也可略過歷史、 技術與猜測, 直接跳到 結論

資安公司 cryptonym 的 Andrew Fernandes 在 1999 年的 CRYPTO '99 資安會議當中發表論文指出: 自從 Win95 開始, 所有版本的 Windows 都內含一個名為 _NSAKEY 的可疑金鑰。 [映射頁面: 123] Windows 的加解密系統稱為 CAPI, 任何應用軟體如果需要加解密服務 (例如私密 e-mail、 網路銀行、 臉書私密訊息、 ...) 理論上都 應該請這個系統幫忙。 許多不同的第三方廠商與 (政府?) 單位都有可能提供加解密演算法服務 (CSP), 但這些加解密演算法必須獲得微軟的簽章認證才能被放入 CAPI 系統以便服務上層的應用軟體。 奇妙的是: Fernandes 發現看守 CAPI 造橋/維修工事路線的那扇門, 不只有微軟自身的 KEY 可以打開, 還有另一把名為 NSAKEY 的金鑰也可以進入。 (事實上 Fernandes 只提出 KEY 與 NSAKEY 的存在; 至於它的功用, 是我根據微軟官網、 微軟 Scott Culp 的解說、 及維基百科等資料補充上去的。 下詳。)

Duncan Campbell 是一位專門深度報導資安與公民隱私等等議題的記者。 在 Fernandes 爆料之後, 他進一步指出: 早在 1998 年, 英國密碼學家 Nicko van Someren 就已經發現這個位於 ADVAPI.DLL 的密門 (現在新版的 windows 當中, 對應的檔案是 ADVAPI32.DLL), 只是當時不知道這個密門有個這麼敏感的名字。 [12] 他並指出: 在 CRYPTO '99 會議現場, Windows 開發者並沒有否認這個密門的存在, 但卻拒絕討論它的功用, 也不願意說明為何要暗地裡暪著用戶藏這個密門。 Campbell 還說: 事實上 Someren 還指出有第三個門的存在, 這讓微軟自己該部門的負責人 Brian LaMachia 都大吃一驚。

2000 年 4 月, Campbell 在加拿大 「電腦、 自由、 隱私」 會議 CFP2000 上發表文章, 並提出這些疑慮。 因為 Campbell 先前曾為歐盟議會執筆一份 「通訊監控報告」, 當時也正好要為公民隱私團體 EPIC 撰寫一份報告, 所以現場微軟的 Richard Purcell 很重視他的意見, 表示微軟願意與他溝通。 Purcell 引線, 讓 Campbell 向微軟資安回應中心的 Scott Culp 提問。 Campbell 的第一輪問題, 得到 Culp 的部分回應; 本文上述 「造橋/維修工事路線」 比喻, 就是依據 Culp 的回應所摘要出來的。

微軟是一家美國公司, 也因此必須遵守美國出口法規。 我們不只要確認自身的產品符合出口法規, 也被要求必須盡力確認像 CAPI 這樣 [內含第三方提供加解密演算法] 的技術也要符合美國出口法規。 ... 這就是這些金鑰的作用。
...
美國商業部出口管理局 (BXA) 負責出口相關法規, 而國家安全局 (NSA) 則提供加解密出口相關規定的技術評估。
...
微軟不會把我們自己的私鑰告訴任何第三方 -- 包含這兩個金鑰。
...
當微軟 [用我們的金鑰] 認證一個 CSP 的時候, 那只表示一件事: 微軟確認 [第三方] 廠商所提供的 [BXA] 出口文件無誤。 這並不表示我們確認過這個 CSP 的運作。 有些 CSP -- 例如微軟預設提供的 CSP -- 確實經過第三方專家驗證, 但這並不是 [用金鑰] 認證 CSP 的必要條件。 同樣地, 一個 CSP 被 [金鑰] 認證過, 並不見得就表示那個 CSP 的管理者不能夠自行再修改那個 CSP。 有些 CSP 允許管理者提供更有效率的加解密函數 -- 例如跟硬體加速卡結合。 只要這些修改沒有影響到 CSP 的出口法規合法性, 那個金鑰認證並不需要去阻止這樣的狀況。

Campbell 繼續禮貌地追問更多細節, 包含請求 Culp 提供微軟當初送交 NSA 審核 (是否符合進出口法規) 的技術文件, 甚至還幫 Culp 擬了一份說辭, 請 Culp 更正並填入時間點等等細節。 但 Culp 表示: 設計文件是微軟的智慧財產權; 所有的規定都在 BXA 的官網上; 我已經回答你所有的問題了, 再下去就很難談出什麼有意義的結果。 於是, Campbell 徵得 Culp 的同意之後, 把以上的通訊內容刊資安網站 cryptome。 而大眾也更加確認微軟與 NSA 之間有一些不可告人的關係。

Culp 的回應當中, 有一點聽起來很可疑: 他說那個 NSAKEY 是個備用金鑰。 Cryptome 那份 e-mail 往來的最後面, 補上 Andrew Fernandes 對此的質疑。 他指出: 有一種裝置叫做 crypto-box, 如果你用過這種裝置的話, 就知道私鑰被竊不是唯一的風險, 另一種風險是私鑰毀了。 他分析 「備用金鑰」 跟一般資安專家推薦的 「拆散 (唯一的) 私鑰給多位管理高層分開保管」 兩種方式, 最後他說: 「你要說我嚴厲也好, 但考量微軟超高規格的資安, 如果最後的提案竟是說要以備用金鑰而非拆散私鑰的方式來保護 CSP 系統, 那我會叫整個設計團隊回家吃自己。」 也請見 OSAll 對 Fernandes 完整的採訪

以下是我的猜測: 假設除了 「NSAKEY 是微軟的備用金鑰」 一事之外, 微軟的 Culp 所說的其他一切都是真的。 請回頭看 Culp 回應當中被我用粗體字標出來的部分。 用蓋橋的比喻來說, Culp 的意思就是說: 微軟的金鑰認證只管制包商初次蓋橋申請一切合法; 至於以後包商可能會再自行進出維修橋樑, 微軟根本就不會再次認證確認修補後的橋樑的安全性。 我認為那個 NSAKEY 不是微軟自己的金鑰, 而是 NSA 的公鑰。 每當 NSA (包商) 要進入 「維修」 橋樑時, 微軟就用這把公鑰確認包商身份, 如果確定是 NSA, 就放行, 至於 NSA 進去做了什麼 「維修」, 按照 Culp 的說法, 那並不屬於微軟的權責範圍。 這個猜測完全符合 Culp 所說的這幾句話: 「微軟根本就沒把自己的私鑰分享給 NSA」、 也 「從來就沒用這把金鑰簽章過任何 CSP」, 因為那把金鑰的功用根本就不是用來認證簽章 CSP 的啊!

結論: 不論我的猜測是否正確, Culp 的首度回應及拒絕後續回應, 很明確地證實了: 微軟與 NSA 之間確實存有不可告人的秘密。 另一個事實是: NSA 長久以來一直企圖將加解密後門硬塞到各處去 -- 其中之一是暗藏後門的亂數演算法 (產生金鑰時會用到) DUAL_EC_DRBG, 已被成功地塞入國家標準 NIST 及微軟的 CAPI 裡面。 [ 1 2] Culp 那段粗體字的話也講得很清楚: 收錄在 Windows 裡面 (也就是經過微軟簽章認證過) 的加解密演算法, 微軟並不保證其安全性。 再補幾個新聞連結:

  1. 每當微軟發現 Windows 的漏洞, 會在修正問題之前第一時間先通知 NSA -- 這不只意謂著 NSA 對 Windows 零時差漏洞免疫, 也意謂著 NSA 經常可以用 Windows 的零時差漏洞主動出手攻擊 對手 (中國注意)、 盟友 (歐盟已經在注意 -- 即使影響航班交流也不怕)、 及其他任何他看不爽或偷看了才爽的對象 呃... 我是說... 恐怖份子。 [ 1 2]
  2. 微軟的新產品 Xbox One 要求用戶 必須站在它的鏡頭前面 「校正」 才能啟用、 每二十四小時或更短的時間內必須連線上網、 不可回收轉手出售或贈送給別人。 為什麼要有這些不近情理、 趕跑用戶的規定? 是故意要 襯托 Sony PS4 的讚 嗎? 如果你的目標是賣產品, 這些豬頭規定完全說不通; 但如果你的目標是協助 NSA 全面監控公民, 這就很有道理了。 還好 後來微軟撤銷部分堅持。
  3. 最近被微軟買下的 skype, 到底有沒有被美國政府監聽? 微軟聲稱 skype 內容有加密; 但是被媒體追問細節時, 又拒絕深入回答。 也許它用的加解密服務, 跟本文所談的 CAPI 有類似的後門? 或是 Chess 計畫 讓 NSA 更加不費吹灰之力就長驅直入?

看過這些事證之後, 這句話你還說得出口嗎? 「Windows 是安全的作業系統。」 事實上, 如果你夠在乎資訊安全, 任何看不見原始碼的作業系統都不值得信任 -- 就像任何行事不透明的政黨都不值得信任一樣 -- Culp 那一句 「設計文件是微軟的智慧財產權」 很明確地幫所有 [不提供原始碼的專屬軟體廠商] 明白地告訴你: 我的智慧財產權, 重於你的資訊安全。

老實說, 就連我這麼不信任微軟、 這麼相信陰謀論的人, 如果十幾年前看到 NSAKEY 事件的新聞, 大概也只是放在心上姑妄聽之而不太敢拿出來談 -- 光是抗議 IE-only 跟 docx 專利這些明顯的問題都已經困難重重了。 不過, 在整理完這些連結之後, 我甚至可以接受更進一步的陰謀論 (如果有時間像這篇一樣詳細搜尋佐證資料的話) 或許當初微軟真的是 NSA 一手扶養長大的? (<== 還有其他更多陰謀論)。 大家一再地把各種證據攤在桌上, 臺灣各級政府及大學電算中心主任對於 Windows 所造成的資安問題, 會不會終有反應呢? 或者, 他們會繼續無動於衷、 繼續裝死、 讓我們更加確認: 宣稱要保護國家機密的國安修法 其實根本就沒有真正的資安專家參與、 讓我們更加確認 力挺 Windows 的 CIO, 其服務的對象並不是僱主? 該說的都說了; 終究, 我還是得領 Office 證照卓越大學 的薪水過日子, 僱主不聽, 我也就只能回家獨自安心地用著開放原始碼的 Linux 而已吧。 有一天, 當力挺 Windows 的資訊教授們終於覺醒時, 對於 Last Christmas - I gave you my heart 這首歌也許終於會有點感覺 :-)

* * * * *

(本文也刊載於 泛科學T 客邦)

手邊沒電腦; 口頭推薦本文嗎? 可以請您的朋友搜尋 「nsakey 後門」 或 「nsakey 微軟」。

(為了服務被 "牆" 的讀者, 本文映射自 資訊人權貴ㄓ疑; 也請見 更多文章清單。 若貴政府/公司並未封鎖 google blogspot, 建議到原始部落格網頁使用標籤、 留言等等更豐富方便的機制。)