標籤彙整: 認證機關

Mozilla 將封鎖中國認證機關發出的網站認證

幾天前 Mozilla 發表一份調查報告,指控中國認證機關 (Certificate Authority) WoSign 不誠實地發出網站認證 (certificate),嚴重破壞 TLS 賴以安全的加密和認證機制,建議屬下的 Firefox 瀏覽器開發團隊阻截所有由 WoSign 及其屬下公司,包括著名的認證機關 StartCom,所發出的認證。

該報告指出,WoSign 在過去九個月,故意把一些新發出的認證的日期推前,逃避了互聯網業界對 SHA-1 散列函式的禁制,這項禁制是由於 SHA-1 可受到衝突攻擊 (collision attack) 令黑客輕易製作一張虛假的網站認證,破壞了整個認證制度。部份 WoSign 的客戶基於種種原因,希望他們的認證仍然以 SHA-1 簽發,WoSign 於是在發出新認證的時候,把發出日期推到本年初之前,令瀏覽器以為這些是很久以前發出的認證,豁免了對他們施加 SHA-1 禁制。

該報告也指控 WoSign 不正當地隱瞞併購以色列認證機關 StartCom 的行動,而 StartCom 與 WoSign 一樣,曾經擅自改動新認證的發出日期,逃避瀏覽器對 SHA-1 的禁制。

所以,Mozilla 建議 Firefox 團隊阻截所有由 WoSign 及其屬下公司 (包括 StartCom) 發出的認證最少 12 個月。

從現在開始直到 Firefox 及其他瀏覽器發佈新版本(其實從九個月前已經開始),用戶將會暴露在虛假網站的威脅中,這些網站通過了 TLS 的認證機制,從任何角度看都是真卻無訛的網站,但其實是黑客利用 SHA-1 的安全漏洞來偽冒,他們之所以成功,都是拜 WoSign 和 StartCom 所賜。倘若不想等待 Firefox 的新版本,立即保障自己,可以在瀏覽器的設定畫面手動刪除所有 WoSign 和 StartCom 的根認證 (root certificate)。但是請注意,部分網站可能從此難以造訪 (造訪時會收到類似「網站認證失敗」的訊息,你必須告訴瀏覽器豁免認證檢查,才能繼續讀取網站的內容,例如 PHP 開發人員的熱門網站 phpclasses.org 便有這個問題。這的確很不便,但考慮到進入了偽冒網站而被騙去個人資料和財產的風險,我強烈建議大家這樣做。

微軟 2016 年開始不再支援 SHA-1

資料來源:微軟 TechNet

微軟建議用戶和認證機關 (Certificate Authority) 不要把 SHA-1 用在任何與密碼學有關的應用上,包括在 TLS/SSL 和用作簽署程式碼。她們也會在 2016 年開始不接受使用 SHA-1 的數碼認證 (Digital Certificate)。

SHA-1 是一個散列算法 (Hash Algorithm),1995 年由美國 NIST 發佈,散列算法的安全性在於 (1) 不同的輸入產生不同的輸出,及 (2) 不能從輸出反推算輸入 (單向運算法)。兩個輸入產生相同的輸出的情況稱為「衝突」,理論上「衝突」必定存在,即使說對於某個輸入 A,一定存在 (無數個) A 以至 A 和 A 有相同的散列值,但只要除了使用「暴力」(brute force) 外沒有其他方法可以尋找到 A,這個散列算法仍然算是安全的。

現在很多數碼證書都是使用 SHA-1 來製作「指紋」,收到證書的人 (或瀏覽器) 把證書的指紋與一個公開的指紋列表比對,相同的話便認為這張證書真確無訛,因為要製作一張虛假的證書,而它的指紋又要與真證書相同,便等同要尋找真證書的「衝突」,對於安全的散列算法來說,唯一可用的方法是「暴力法」,但這樣做不啻愚公移山。

2005 年首次有密碼學家提出一個尋找 SHA-1 「衝突」的算法,這個算法只需要 269 次運算 (計算一次散列值),遠低於「暴力法」的 280 次運算,這一年 NIST 宣佈不建議使用 SHA-1。此後 SHA-1 不斷受到密碼學家的沖擊,2012 年最新的研究顯示尋找 SHA-1 「衝突」只需大約 260 次運算。

這個數字敲響了 SHA-1 的喪鐘,當年便有人計算過,按照當年電腦的運算能力和成本,只需 277 萬美元便可以在一年時間內尋找到 SHA-1 的「衝突」,這個成本將會隨著電腦運算能力的提升和硬件成本下降而變得越來越便宜。即使說,偽冒一張數碼證書 (從而偽冒一個網站) 越來越容易。若果成功偽冒一個金融機構網站,把裡面數以萬計賬戶的金錢全部據為己有,277 萬美元的成本算得什麼?

所以,微軟宣佈不再使用 SHA-1 雖然有點遲 (早在 2005 年便應該依從 NIST 的建議放棄 SHA-1),但總比不做的好。至於為什麼要等到 2016 才拒絕使用 SHA-1 的證書,相信是因為一般數碼證書的年期是 1 至 3 年,屆時絕大部分的數碼證書都已經更新並使用較安全的散列算法,例如 SHA-2 甚至 SHA-3

SHA-1 是否就此退出電腦歷史的舞台?不是的,散列算法的安全性只有在密碼相關的應用上才有必要,在其他場合,例如用來檢驗一段資料在網絡傳送過程的完整性,SHA-1 仍然是適當的,甚至比它更早一代的 MD5 也同樣可用。