轉貼:FreeBSD 開發團隊不信任 Intel 和 VIA 的加密晶片
阿恆
原文網址:FreeBSD 開發團隊不信任 Intel 和 VIA 的加密晶片 (原文網站已關閉)
FreeBSD 一向不信任 Intel 和 VIA 加密晶片的隨機數產生功能,不會以它們作為產生加密密鑰的唯一隨機數來源,即將發佈的 FreeBSD 10.0 版本亦貫徹這一信念。Intel 和 VIA 分別提供 RDRAND 和 Padlock 工具,以硬體晶片產生隨機數,FreeBSD 把這些晶片產生的數據混入其他數據中,這樣即使晶片的運算邏輯暗藏後門程式或弱點,最後得出的隨機數仍然安全可靠。
斯諾登的機密文件揭露美國國家安全局 (NSA) 和英國國家通訊總局 (GCHQ) 有能力破譯大部份互聯網上的加密通訊,其中一個方法是與晶片製做商合作,在晶片中加入後門程式或弱點,雖然文件沒有指明哪些公司與 NSA 和 GCHQ 合作,但 FreeBSD 的開發團隊在今年九月的會議卻具體說「在版本 10 我們不會把 RDRAND 和 Padlock 的數據直接送到 /dev/random,只會把它們送到 Yallow 算法。」Yallow 是一個免費公開的隨機數產生算法,由一組電腦安全專家設計。
FreeBSD 的安全主管 Dag-Erling Smørgrav 說,在該次會議前不久,七月的時候有一個由第三方用戶提供的 FreeBSD 內核補丁,容許用戶使用 RDRAND 或 Padlock 作為隨機數的單一來源。該補丁沒有經過適當的審查,也違反了既定的程序,在跟着的幾個星期這補丁反覆被移除和加入,最後在十月被完全清除,而這個補丁也沒有出現在任何一個 FreeBSD 的正式版本。
Smørgrav 說一直以來都有企業用戶要求 FreeBSD 容許他們直接從 RDRADN 提取數據,原因是所有美國國防承包商和其他政府工作人員均需依從 FIPS 140 標準,而 RDRAND 的底層算法正好符合這個標準中的確定性隨機數產生器 (deterministic random number generator) 要求。FreeBSD 的立場是他們不會阻礙用戶使用這些硬體的隨機數產生器,但卻不認同他們的做法,倘若 FreeBSD 為這些硬體提供內核界面,無異於認同這些硬體。
隨機數產生器是任何安全密碼系統重要的組成部份,它類似棋類遊戲中使用的骰子,必須確保每次投擲的結果都是完全隨機。若果有人能減低隨機數產生器產生的熵 (entropy),或者想出一些方法預測它的部分輸出,便有方法推算出用來解密的密鑰。例如,在 Google Android 操作系統內隨機數產生器的一個弱點,最近便被盜賊利用來竊取用戶數碼錢包內的 Bitcoin。前面提及的 RDRAND 便是 Ivy Bridge 和更高版本的 Intel 處理器的隨機數來源,而 Padlock 則為 VIA 生產的晶片設定隨機數種子 (seed)。
即使沒有斯諾登泄漏的文件,FreeBSD 採用多元化的數據來源來提高隨機數產生器的熵也是正確之舉,這樣做可能有助防止台灣的身分證系統最近發現的安全漏洞。