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