分類彙整:密碼分析

FreeBSD 開發團隊不信任 Intel 和 VIA 的加密晶片

資料來源:FreeBSD 開發團隊不信任 Intel 和 VIA 的加密晶片

FreeBSD 一向不信任 Intel 和 VIA 加密晶片的隨機數產生功能,不會以它們作為產生加密密鑰的唯一隨機數來源,即將發佈的 FreeBSD 10.0 版本亦貫徹這一信念。Intel 和 VIA 分別提供 RDRANDPadlock 工具,以硬體晶片產生隨機數,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 採用多元化的數據來源來提高隨機數產生器的熵也是正確之舉,這樣做可能有助防止台灣的身分證系統最近發現的安全漏洞

微軟 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 也同樣可用。

加密程式出錯引致台灣身分證的保安功能作廢

資料來源:http://arstechnica.com/security/2013/09/fatal-crypto-flaw-in-some-government-certified-smartcards-makes-forgery-a-snap/

台灣的身分證使用 RSA 公鑰加密技術來實現自然人憑證 (Citizen Digital Certificate),市民憑藉著憑證在網上確認自己的身份,使用政府的網上服務,例如交稅,汽車登記等。將於本年十二月在印度 Bangalore 舉行的 Asiacrypt 2013 會議,數位科學家將發表一份論文,指部分憑證存在致命的缺陷,讓攻擊者輕易偽冒憑證持有人的身份。產生憑證的系統都已經通過 FIPS 140-2 Level 2Common Criteria 標準,所以有理由相信其他使用那些系統的國家所產生的憑證,都有相同的缺陷。若果一個科技先進的政府在緊守最佳操作原則下仍然出亂子,其他人應該怎樣做?

該論文指出,缺陷來自產生憑證的系統的隨機數產生器 (Random Number Generator),受影響的市民可能多達 10,000 人,參與研究的科學家已經把發現通知台灣內政部憑證管理中心中華電信,政府回覆說他們將追蹤及更換所有有問題的身分證,但至今仍未有任何行動或公告,所以所有持有 RSA-1024 身分證的台灣人都有身份被冒認的危險。至於較新使用較長密鑰的 RSA-2048 身分證則暫時未發現有問題。