研究人員發明了一種新辦法,可以在使用加密體系保護的網站、VPN和互聯網服務器中放入不被檢測的后門,這一壯舉使得黑客可以輕松解密數以億計的加密通信和密鑰。
這一技術最引人注目的地方就是它將一個后門程序(也可以說是“陷阱”)放在了Diffie-hellman 密鑰交換所使用的1024位密鑰中。Diffie-hellman的存在大大增加了竊聽者的負擔,因為它會定期更改加密密鑰來保護正在進行的通信。按照以往經驗來說,只要攻擊者知道了“陷阱門”的存在,那么破解受Diffie-hellman保護的通信就只是時間問題了。知識完備的攻擊者也可以基于廣泛使用的數字簽名算法創建自己的加密簽名。
隨著所有公共密鑰的加密,Diffie-hellman的安全協議是建立在數據理論計算之上的,其中包含的數量巨大,攻擊者想要解決它難于登天。各方都能夠保守計算結果中所包含的秘密。然而研究人員設計的一個特殊質數包含了能夠使得秘密參數難以被發現的無形屬性。研究人員使用一個2,000 到 3,000 CPU 的學術計算群集可以在兩個月左右的時間里攻破這些1024位質數中的一個。
后門加密標準——“完全可行”
對于密鑰擁有者來說,帶有“陷阱門”的密鑰和其他任何1024位密鑰沒有任何區別。但是對于了解密鑰漏洞的攻擊者來說,鞏固安全性能的離散對數問題根本就是小意思。這種效率使得“陷阱門”對于國家安全局承包商Edward Snowden 來說十分理想,他在2013年說過他的目的就是要解碼大量的加密網絡。
參與此項目的賓夕法尼亞大學研究人員Nadia Heninger告訴Ars,“Snowden文件已經引起了關于公鑰加密標準中后門程序的一些嚴重問題。我們展示的那個“陷阱門”可以讓攻擊者們快速打破1024位秘密鑰。”
國家標準與技術研究所(NIST)從2010年就開始建議使用2048位作為密鑰的最小尺寸,但是1024位密鑰仍舊大量出現在網絡當中。上個月SSL Pulse開展的一項調查表明,HTTPS保護的前兩千家網站當中有22%使用1024位密鑰執行密鑰交換。這種廣泛使用的背后是大家普遍相信只有國家資助的竊聽組織才會花費巨大代價來破解1024位密鑰。其他原因還包括2048位密鑰存在執行和兼容方面的困難。比如說,2014年發布的JAVA 8就不支持Diffie-hellman 或 DSA 密鑰大于 1024 位。并且直到目前為止,DNSSEC規范為了確保互聯網的域名系統安全,限制數字簽名算法密鑰最高為1024位。
侵入源頭
在Diffie-Hellman中,解決關鍵的離散對數問題非常重要。原因就是大量的應用程序都要頻繁標準化和使用一組質數。
如果美國國家安全局或其他組織成功將一個或多個“陷阱門”變成主流做法,該機構就能夠成功竊聽到數以百萬計,甚至數不盡的終端用戶的加密通信。到目前為止,研究者們還沒有在廣泛使用的應用程序中發現“陷阱門”的存在,但是這并不意味著它們不存在。
2008年,互聯網工程任務組發表了一系列可用于高度敏感應用中的推薦質數,其中包括包括保護網站和電子郵件服務器的安全協議傳承層、用于遠程管理服務器的安全外殼協議、保護鏈接的互聯網密鑰交換,以及電子郵件的安全/多用途互聯網郵件擴展標準。這些質數當中已經帶有了研究者們創建的陷阱程序,外人幾乎沒有辦法知道真相,解決這一數學問題需要處理器運轉幾個世紀。
同樣的,Heninger說,世人無法知道Apache Web 服務器所使用的關鍵 1024 位質數是否也被安裝了后門程序。她在郵件中寫到:
“我們自己永遠也沒有辦法檢測出安裝了陷阱程序的質數。但是我們知道“陷阱門”的工作原理,并且能夠量化攻擊者所獲得的收益。所以人們開始提出一些尖銳問題,在某些不透明的執行和標準中,質數到底是如何生成的?為什么在沒有證據的情況下要求我們信任RFC 5114 的質數?為什么在沒有證據證明它們是隨機生成的情況下,VPN就標準化并廣泛執行這些質數?”
不同于RSA密鑰中的質數,特定的Diffie-Hellman 質數非常常見。如果NSA或其他組織成功將一個“陷阱門”廣泛應用,將會引發一場暴亂。從那時起,敵對勢力將會在Diffie-Hellman的加密通信中竊取彼此機密。
還記得Dual_EC_DRBG?
假設這樣的場景已經發生,這也不是NSA第一次故意削弱標準,以方便自己破解加密了。例如,2007年NIST支持NSA開發代碼生成隨機數生成器。幾乎從一開始,所謂的 Dual_EC_DRBG就被懷疑含有一個精心設計的弱點,允許機構能夠迅速破解以來關鍵隨機性算法的加密密鑰。六年后,也就是2013年,Snowden泄露文件證實了這一懷疑。
RSA安全公司,當時屬公開上市交易的EMC所有,回應中警告用戶停止使用Dual_EC_DRBG。當時,Dual_EC_DRBG是RSA的BSAFE中的默認隨機數生成器,以及數據保護管理器程序。
今年年初,研究人員確定該生成器就是兩個后門程序之一,允許攻擊者可以解密VPN通信,在那之后,Juniper網絡也刪除了自己防火墻NetScreen中由NSA開發的數字生成器。
相比于1024位密鑰,破解一個帶有“陷阱門”程序的2048位密鑰所需時間增加了16萬倍。盡管對于賓夕法尼亞大學、法國國家研究所和洛林大學的計算機科學和控制專家來說這一時間還是很不保險,他們還是建議應該盡快淘汰1024位密鑰。
他們在上周發表的一篇論文中寫道,“對后門程序的離散對數計算只對1024位密鑰可行,抵制后門程序攻擊最有效的辦法就是使用任何計算都不可行的密鑰。NIST在2010年就推薦將1024位密鑰從DSA、RSA和 Diffie-Hellman 中移除。但不幸的是,這種密鑰至今仍在廣泛使用。”
研究者說,除了使用2048位或更大的密鑰,還必須使用可以驗證的基本質數隨機生成的方式來說生成密鑰。其中一種做法中大多數字節都來自密碼學家成為“不在我的袖子里”。另一種方法是標準化質數,包括用于確保隨機性的種子質數。可惜的是,由于1024位密鑰的廣泛使用,這種做法漸漸消失了。雖然聯邦信息處理標準強加給美國政府機構和其承包商一個生成質數的種子,但是這個選項不是必選。
研究人員已經發現的唯一廣泛使用的質數就是使用Oakley 密鑰確定協議生成的,該協議是為TLS1.3版本和JAVA開發工具包準備的有限領域 Diffie-hellman 短暫參數。
破解加密密鑰最近常使用的方法被稱為數域篩算法,根據密鑰類型(離散對數或是因子分解)解決問題。到目前為止,已知的離散對數的最大質數問題是去年解決的,長度達到768位。相比之下,解決含有陷阱程序的1024位密鑰問題只需要其十分之一的計算量。
“更麻煩的事”
從上世紀90年代早期開始,研究人員就已經知道某些復合整數會被NFS優先考慮。他們還知道帶有某些屬性的質數更便于離散對數的計算。這組特殊的質數會比普通質數更容易被NFS破解。在這25年左右的時間里,研究人員相信“陷阱門”的質數不是威脅,因為它們很容易解決,但現在新的研究通過特殊的數域篩法發現,長久以來的這種觀點是錯誤的。
Heninger表示:
“能夠使用更快形式算法的條件是該質數必須要有一種特定的屬性。對于常見的一些質數,比如一個質數非常接近2的冪,我們使用這種質數來執行一些操作是很容易出問題的。
但是也存在一些無法檢測的質數(或者更準確地說,是需要大量的計算才能檢測出)。這是更麻煩的事實,因為用戶無法知道給定的質數是否有某種特定屬性,畢竟它們看起來都一樣。我們在本文中討論了應該如何構建著中具有特殊屬性的質數,但是不知道這個秘密的人是無法檢測出該屬性的。
保證一個質數不存在這種“陷阱門”是可能的。一種方法就是通過“不在我袖子里”來生成質數。有一些標準采用這種方法,另一種方法就是為隨機生成算法指定種子。”
隨著1024位質數漸漸退出歷史舞臺,2048甚至4096位質數會逐漸變成主流。那些無法確認安全的1024位密鑰應該被視為可疑密鑰,并盡快清除。