新聞詳情

News Information

NSA如何竊聽(tīng)Google的加密流量 當(dāng)HTTPS遇到CDN
2016-08-01

華盛頓郵報(bào)曾根據(jù)斯諾登泄露出來(lái)的PPT(圖1)報(bào)道過(guò)美國(guó)國(guó)家安全局(NSA)在云端監(jiān)聽(tīng)Google(包括Gmail)和Yahoo用戶的加密通信[1]。然而我們知道Gmail是使用TLS保護(hù)的,NSA是如何破解Google的TLS加密通信的呢?


圖1. 美國(guó)NSA和英國(guó)GCHQ聯(lián)合計(jì)劃MUSCULAR中,NSA和GCHQ繞過(guò)TLS加密,在云端監(jiān)聽(tīng)后端的明文通信。

1. 問(wèn)題分析與測(cè)試

目前主流網(wǎng)站都依賴HTTPS(HTTP over TLS/SSL)實(shí)現(xiàn)服務(wù)器認(rèn)證、數(shù)據(jù)加密和完整性保護(hù),比如Google幾乎所有應(yīng)用都在HTTPS的保護(hù)之下。同時(shí),主流網(wǎng)站也普遍使用了CDN(Content Delivery Network)技術(shù)(雖然有些互聯(lián)網(wǎng)公司使用自己開(kāi)發(fā)的類似平臺(tái),他們并不叫CDN這個(gè)名字),用以提高網(wǎng)站的性能、可靠性和安全性。目前,HTTPS和CDN技術(shù)幾乎都已成為商業(yè)網(wǎng)站必須的基礎(chǔ)服務(wù)。

然而長(zhǎng)期以來(lái),HTTPS和CDN兩種技術(shù)的設(shè)計(jì)和發(fā)展是獨(dú)立的,HTTPS設(shè)計(jì)之初是一種端到端(End-to-End)的協(xié)議,而CDN卻是以中間人(Man in the Middle)的方式工作。原始網(wǎng)站如何如何授權(quán)給中間的CDN廠商、如何完成瀏覽器-CDN-原始網(wǎng)站之間的身份認(rèn)證、秘鑰交換和數(shù)據(jù)保護(hù),以及如何撤銷這種授權(quán),無(wú)論學(xué)術(shù)界還是工業(yè)在以前都沒(méi)有沒(méi)有系統(tǒng)性的考慮。

我們?cè)贠akland’14(IEEE Symposim on Security & Privacy)發(fā)表了論文“When HTTPS Meets CDN: A Case of Authentication in Delegated Service”[2],首次提出了HTTPS在CDN環(huán)境中授權(quán)服務(wù)的認(rèn)證問(wèn)題,把兩種技術(shù)結(jié)合在一起進(jìn)行了系統(tǒng)性的研究。我們調(diào)研了Akamai、CloudFlare等世界上主流的20個(gè)CDN服務(wù)商,以及一萬(wàn)多個(gè)支持HTTPS的熱門(mén)網(wǎng)站(同時(shí)也是上述20個(gè)CDN廠商的客戶),揭示出了當(dāng)前HTTPS在CDN部署中的許多問(wèn)題。

首先是CDN節(jié)點(diǎn)和后臺(tái)源服務(wù)器之間的通信很容易受到中間人攻擊(圖2):我們測(cè)試了5個(gè)CDN廠商的后臺(tái)通信,發(fā)現(xiàn)盡管瀏覽器到CDN節(jié)點(diǎn)的通信使用HTTPS加密,有的廠商使用明文的HTTP與后臺(tái)服務(wù)器進(jìn)行通信(CDN77、CDN.NET);有的廠商雖然使用了HTTPS,卻不驗(yàn)證證書(shū)的有效性(即可以使用自簽名的證書(shū)偽造任何網(wǎng)站,存在問(wèn)題的廠商包括CloudFlare和InCapsula);有的廠商(如Amazon公司的CloudFront)雖然要求合法證書(shū),但是卻不驗(yàn)證證書(shū)的Common Name。

圖2.有些CDN的后端通信使用不加密的HTTP進(jìn)行傳輸

其次是瀏覽器和CDN節(jié)點(diǎn)之間的授權(quán)認(rèn)證問(wèn)題。我們發(fā)現(xiàn)很多CDN廠商要求源網(wǎng)站提交自己的公鑰證書(shū)和私鑰,這嚴(yán)重破壞了PKI安全信任的基本原則,即私鑰必須是嚴(yán)格保密、不能與第三方共享的。盡管也有替代的方案不要求用戶共享私鑰,比如使用客戶證書(shū)(Custom Certificate)或者共享證書(shū)(Shared Certificate)方案,但是秘鑰管理復(fù)雜,客戶網(wǎng)站無(wú)法自主的撤銷自己對(duì)CDN廠商的授權(quán),作為可信第三方的CA也沒(méi)有撤銷體現(xiàn)授權(quán)關(guān)系的共享證書(shū)。

具體細(xì)節(jié)可以參考我們的論文原文和Oakland會(huì)上所作報(bào)告的Slides[2]。

2. 實(shí)際攻擊的案例

在現(xiàn)實(shí)互聯(lián)網(wǎng)中,中國(guó)教育和科研網(wǎng)應(yīng)急響應(yīng)組CCERT在2014年初曾經(jīng)收到過(guò)類似的攻擊報(bào)告,蘋(píng)果公司(Apple)使用的CDN廠商Akamai的某些節(jié)點(diǎn)已經(jīng)受到了類似的攻擊,導(dǎo)致蘋(píng)果公司源網(wǎng)站上的JavaScript頁(yè)面被替換成了翻墻軟件自由門(mén)的使用手冊(cè)。我們與Akamai的技術(shù)人員確認(rèn)過(guò),的確是他們的CDN節(jié)點(diǎn)和后臺(tái)的服務(wù)器之間使用HTTP協(xié)議傳輸,導(dǎo)致通信被劫持,某些CDN節(jié)點(diǎn)的緩存數(shù)據(jù)被污染了。

本文一開(kāi)始的問(wèn)題,也是由于HTTPS在CDN實(shí)現(xiàn)中的問(wèn)題所致。根據(jù)斯諾登泄露出來(lái)的PPT(圖1),我們知道美國(guó)國(guó)家安全局(NSA)和英國(guó)的情報(bào)機(jī)構(gòu)GCHQ在他們聯(lián)合計(jì)劃MUSCULAR中,他們也使用了類似的技術(shù)監(jiān)聽(tīng)Yahoo和Google的通信:由于類似CDN的GFE(Google Front Engine)與提供內(nèi)容的后臺(tái)服務(wù)器使用了不加密或安全性較弱的通信協(xié)議,NSA和GCHQ可以繞過(guò)瀏覽器端和CDN之間的TLS,在后臺(tái)直接監(jiān)聽(tīng)明文的通信。正如圖靈獎(jiǎng)得主、著名密碼專家A. Shamir所言:“Cryptography is typically bypassed, not penetrated.”

3.解決方案

在論文的撰寫(xiě)過(guò)程中,我們向涉及到的CDN廠商都通報(bào)了這一問(wèn)題,并和CloudFlare、Akamai等公司的技術(shù)人員有過(guò)多次交流,我們所報(bào)告的問(wèn)題得到了所有聯(lián)系到的產(chǎn)商的認(rèn)可。其中,CloudFlare 公司在得到我們論文后,很快推出了更加安全的服務(wù) Strict SSL[4],并宣稱這一服務(wù)可以挫敗NSA對(duì)后臺(tái)通信的監(jiān)聽(tīng)。

然而瀏覽器和CDN前端的授權(quán)問(wèn)題卻不只是實(shí)現(xiàn)上的問(wèn)題。為解決這一HTTPS在CDN服務(wù)中的授權(quán)問(wèn)題,我們?cè)谡撐闹刑岢霾?shí)現(xiàn)了一個(gè)基于DANE[3]的輕量級(jí)的解決方案,DANE(DNS-based Authentication of Named Entities)是IETF 制定的標(biāo)準(zhǔn)以完善Web 網(wǎng)站的PKI信任模型。我們的實(shí)現(xiàn)表明,在CDN環(huán)境下實(shí)現(xiàn)安全、高效的HTTPS通信是可行的,但是由于DNSSec和DANE的部署并不普及,這一方案離工業(yè)界的普遍部署還有一定的距離。我們希望推進(jìn)CDN和安全領(lǐng)域中進(jìn)一步的研究,希望有更加有效的解決方案。

本文的第一作者梁錦津博士還參與了CloudFlare公司后來(lái)的一種解決方案——Keyless SSL[5]的開(kāi)發(fā)和測(cè)試工作。這一方案不要求客戶網(wǎng)站與CDN共享私鑰,而是在CDN在與前端瀏覽器進(jìn)行TLS的認(rèn)證和秘鑰協(xié)商過(guò)程中,通過(guò)安全的信道把協(xié)商過(guò)程中的信息轉(zhuǎn)發(fā)給源網(wǎng)站,由源網(wǎng)站提取會(huì)話秘鑰或完成簽名以后再提交給CDN節(jié)點(diǎn)。由于TLS的通信過(guò)程中只有握手過(guò)程中才用到Private Key,以后的通信過(guò)程與源網(wǎng)站無(wú)關(guān)。清華大學(xué)計(jì)算機(jī)系張道維的本科畢業(yè)設(shè)計(jì)完成了Keyless SSL的的部分實(shí)現(xiàn),實(shí)現(xiàn)中修改了OpenSSL和Ngnix的部分源代碼,比較復(fù)雜,還有很大改進(jìn)的空間。

受本論文的影響,互聯(lián)網(wǎng)標(biāo)準(zhǔn)組織IETF的CDN互聯(lián)工作組(CDNI)開(kāi)始討論CDN及CDNI互聯(lián)的網(wǎng)絡(luò)環(huán)境中加密流量的授權(quán)問(wèn)題[6],還沒(méi)有形成最終的解決方案。因?yàn)樽畛醯幕ヂ?lián)網(wǎng)設(shè)計(jì)原則之一是端到端,而今天許多中間盒子(Middle Box)使得互聯(lián)網(wǎng)到處都是中間人,類似HTTPS在CDN中的問(wèn)題將普遍存在,許多問(wèn)題值得我們進(jìn)一步研究,也歡迎有興趣的研究者、CDN廠商的技術(shù)人員和我們合作研究。