緣由

從 2009 年底開始,中國互聯網絡信息中心 (文後簡稱 CNNIC) 為了推動其網址衛士服務,陸續將其根憑證申請納入眾多瀏覽器的 SSL 憑證。目前在 Firefox 3.6 (#476766) 與 Windows IE8 (Windows Root Certificate Program) 瀏覽器系統都已經成為預設憑證。

這件事情,很快的引起華人網路使用社群的騷動。主要原因是 CNNIC 過去的歷史,使其公眾觀感不佳,且 CA 根憑證對於網路安全影響事關重大。

一般網路銀行、網路商店等金流服務,多利用 SSL 來提供安全保護,一是對網路流動資訊加密,二是利用 CA 所發布的憑證來提供基本的網站驗證。而所謂根憑證,就是 CA 用以發放次級憑證給網站,可用來辨識特定網域是否為合法組織。但前提是 CA 維持善良管理人義務,嚴格管理所核發的憑證、簽章。

爭議

而 CNNIC 過去最大的爭議之一,是曾發布中文上網官方版軟體。這個軟體主要功能是網址查詢軟體,但核心卻用 rootkit 技術使人無法刪除,與木馬/病毒程式一般,可算是流氓軟體。在微軟網站上,有詳細的技術分析說明相關問題。

雖說這只是一項前科,不代表 CNNIC 也會濫用成CA 身份來作惡。但中國政府持續拿著民族主義、國家安全為藉口,於中國境內實施數種網路管制,甚至滲透國外企業、政府網路。而 CNNIC 背後支持的政府組織是中華人民共和國工業和信息化部中國科學院等中國政府組織,很難說,哪一天 CNNIC 不會被控制作為攻擊工具之一。

從技術上的風險來看,若系統有此憑證,使用者將被剝奪警覺的能力。當攻擊事件發生時,唯一可以主動提示你的 SSL 機制也可能失效。在中國網路長城的「內部網路」,網址被攔截、更換是很平常的事件,即使你在網外,也可能在網站轉址攻擊事件大規模網頁綁架轉址發生時,變成受害者。例如許多網頁常使用外掛的流量追蹤系統,若這些服務被中間人攻擊 (MITM) 所置換,使用者可能毫無警覺的被竊取資料。

除了 CNNIC 自行發布的 CA Cert Root 外,其實 CNNIC 也已經取得 Entrust.net 所發布的次級憑證。因此這個風險已經存在,無論你是否使用新版的瀏覽器。

考量潛在風險與中國政府的威脅,為了確保資料安全,建議所有台灣政府單位與企業,一律移除 CNNIC 相關憑證。

目前此事已經在 Mozilla Security Policy 論壇公開討論,如 AutoProxy 等網路自由倡議社群都提出 CNNIC CA:最最最嚴重安全警告!。若你覺得此事關係重大,可以投票方式附議 Bug 542689,提高該問題的被重視程度。

移除

要確認自己是否可能受害的驗證方法,是用瀏覽器開啟網址衛士 (使用 Entrust.net) 與 ENUM 試驗平台 (使用 CNNIC Root Cert)。若你的瀏覽器絲毫不予警告,你的系統即已安裝 CNNIC 憑證。

依照目前的討論 (#542689#476766),Mozilla 社群應採無罪推論原則。也就是說雖 CNNIC 風評不佳,但在它實際作惡前,我們理因相信它無罪。目前已技術上的提議,希望可以降低憑證管理的問題跟風險,但是這些功能恐怕需要點時間才會實踐。

華人開放原碼社群已經針對這個問題為 Firefox 開發了兩個小附加元件。目的都是為了保護或警示使用者。你若是台灣使用者,不使用中國的網路服務,如 163.com 等,可以選擇移除或停用。否則,你也可以安裝輔助軟體,在下載可能危害系統的加密內容時,提供警示。

警示 CNNIC 憑證:Cert Alert
停用 CNNIC 憑證:CA Untrustworthy

在香港開源社群 Benlau小兔黑黑倡議與支持下,筆者與他們開發了 Cert Alert,這個元件的功能是「自動提醒」使用者,網頁中使用了特定 SSL Root CA 的內容。另外 CA Untrustworthy 則由 timdream 所開發,功用是每次開啟 Firefox 時,自動移除或關閉高風險憑證。

這兩套軟體都是開放原碼,原始碼都位於 Github。進一步詳情,請參考筆者 blog 網站