數(shù)據(jù)隱私專題
清華大學(xué)教授段海新:網(wǎng)絡(luò)空間中的信任與沖突: Web PKI
我們今天已經(jīng)離不開的電子商務(wù)等應(yīng)用的安全建立在基于可信第三方的公鑰基礎(chǔ)(PKI)之上,而PKI的安全一定程度上仍然依賴于彼此之間的信任,而不是固若金湯的安全防范措施。
基督教中,上帝是萬能的,雖然人們看不見他、不知道他怎么工作,但是人們相信上帝從來不干壞事,也不會犯錯(cuò)誤。信仰者不會問為什么,只需要相信,這就是“trust”?,F(xiàn)代科學(xué)是質(zhì)疑一切沒有證據(jù)的觀點(diǎn),然而,盡管互聯(lián)網(wǎng)對抗各種攻擊增加了許多安全機(jī)制,但許多安全機(jī)制并非依賴于完美的、可證明的理論,追根究底仍然依賴于人們之間善意的合作與信任,目前的互聯(lián)網(wǎng)仍然依賴信任與合作才能保持安全可靠運(yùn)行。
繼清華大學(xué)“網(wǎng)絡(luò)空間安全論壇”關(guān)于路由和域名的可信任討論之后,我將繼續(xù)討論公鑰基礎(chǔ)設(shè)施(PKI)中基本的信任機(jī)制和攻擊方式,并結(jié)合典型的案例分析互聯(lián)網(wǎng)基礎(chǔ)服務(wù)存在的風(fēng)險(xiǎn)。
我們不信任路由、不信任DNS,因?yàn)楣粽呖梢岳盟麄儗?shí)現(xiàn)重定向、劫持、竊聽等攻擊;但是通常我們認(rèn)為把流量加密以后就可以抵御這些攻擊,因?yàn)槊艽a協(xié)議的設(shè)計(jì)目標(biāo)就是在不安全的網(wǎng)絡(luò)中也能實(shí)現(xiàn)安全的通信?,F(xiàn)在,以密碼技術(shù)為基礎(chǔ)的TLS/SSL已經(jīng)成了無處不在的安全應(yīng)用的基石。
涉及到開放環(huán)境中的加密和認(rèn)證,目前主流的商業(yè)應(yīng)用中很難脫離可信第三方,在Web應(yīng)用中也就是我們要討論的Web PKI,它是 SSL/TLS 的基石,X.509 證書是HTTPS 的關(guān)鍵要素。單獨(dú)看每一個(gè)CA,它所簽發(fā)證書的這個(gè)信任鏈就像是一棵樹。因?yàn)槭澜缟嫌性S多這樣的CA,所以整個(gè)互聯(lián)網(wǎng)的信任模型是一個(gè)森林狀的結(jié)構(gòu),如圖1所示。
圖1 CA森林狀的信任模型
我們現(xiàn)在所說的Web PKI是IETF PKIX 工作組開發(fā)的標(biāo)準(zhǔn)——Internet PKI或 Web PKI,其工作原理是:Subscriber提交 CSR(Certificate Signing Request);RA/ CA驗(yàn)證 Subscriber 身份;CA 簽發(fā)證書;在Web服務(wù)器上部署證書。
當(dāng)通過瀏覽器訪問網(wǎng)站時(shí):服務(wù)器在TLS握手過程中出具證書;瀏覽器驗(yàn)證證書鏈的有效性;如果驗(yàn)證通過,則協(xié)商會話秘鑰,繼續(xù)通信;如果不通過,彈出告警。
幾乎所有商務(wù)應(yīng)用都依賴CA/HTTPS/ TLS,目前各種瀏覽器或操作系統(tǒng)預(yù)置了上百個(gè)Root CA,每個(gè)CA可以為無數(shù)個(gè)中間的CA簽發(fā)證書。這些Root CA和中間CA所簽發(fā)的證書都被視為合法。
然而,這些作為互聯(lián)網(wǎng)安全基石的CA是怎樣運(yùn)行的,除了CA行業(yè)以外的其他人很少了解,他們像上帝一樣存在著。實(shí)際上,這些CA的運(yùn)行標(biāo)準(zhǔn)或規(guī)范并沒有一個(gè)類似政府或聯(lián)合國一樣的官方機(jī)構(gòu)來制定,而是來自于CAB論壇(CA/ Browser Forum)這樣一個(gè)完全由商業(yè)公司組成的志愿者組織。
Web PKI從最初的設(shè)計(jì)到具體的實(shí)現(xiàn)都有一些問題,常見的問題包括以下幾種。
信任模型的問題
任何一個(gè)CA都可以為任何一個(gè)網(wǎng)站簽發(fā)證書,無需該網(wǎng)站的同意。拿到這種非授權(quán)的證書,可以構(gòu)造一個(gè)假冒的網(wǎng)站,用戶的瀏覽器在訪問這種服務(wù)器時(shí)不會產(chǎn)生告警。CA簽發(fā)未經(jīng)授權(quán)這種證書服務(wù)器證書的事件曾經(jīng)發(fā)生過多起,其中包括:
2015年9月,谷歌發(fā)現(xiàn)世界最大的CA賽門鐵克簽發(fā)了幾個(gè)域名為www.google.com和google. com的證書,后來賽門鐵克開除了幾個(gè)違反公司操作程序的員工。2001年通過CA的審計(jì)發(fā)現(xiàn)VeriSign簽發(fā)了自稱來自微軟申請的代碼簽名證書;
2015年3月,谷歌威脅要從可信CA列表中刪除CNNIC CA的根證書,原因是CNNIC為埃及公司MCS Holding簽發(fā)的中級CA證書被部署到防火墻中,用于動態(tài)偽造任何網(wǎng)站證書并劫持所有HTTPS通信。
圖2 中間人通過偽造但有效的證書發(fā)起攻擊
2011年荷蘭CA DigiNotar被攻破,伊朗用戶在伊朗發(fā)現(xiàn)大量偽造的*.google. com證書。這一事件導(dǎo)致DigiNotar公司的根CA證書被主流瀏覽器或操作系統(tǒng)廠商刪除,并最終徹底破產(chǎn)。
證書申請過程中的驗(yàn)證問題
多數(shù)CA是商業(yè)公司,證書申請流程自動化是他們能夠贏利的必由之路。因此,互聯(lián)網(wǎng)上多數(shù)服務(wù)器證書只是只驗(yàn)證了域名的DV(Domain Validation)證書,CA通常只是驗(yàn)證申請者的電子郵件屬于申請域名的管理員。然而,這種驗(yàn)證也經(jīng)常出問題。
Mike Zusman在2008年的DEFCON上展示了他從CA廠商Thawte騙取的一個(gè)Login.live.com的證書,因?yàn)門hawte認(rèn)為郵箱sslcertificate@live.com應(yīng)該屬于live. com的管理員,而實(shí)際上live.com是用戶可以自由申請的公用郵箱。
2015年類似的事情再度重演,一個(gè)芬蘭人用hostmaster@live.fi信箱從Comodo騙取了一個(gè)簽發(fā)給live.fi網(wǎng)站的證書。
用戶忽略告警
我們大家都在12306網(wǎng)站上購買火車票,而12306網(wǎng)站在用戶購票過程中,瀏覽器會彈出一個(gè)告警,告知用戶這是不受信任的CA所簽發(fā)的證書。
這種證書會有什么問題呢?如果這個(gè)環(huán)節(jié)中出現(xiàn)中間人,模仿12306,用戶訪問時(shí)同樣也會彈出一個(gè)告警,這導(dǎo)致用戶無從區(qū)分這個(gè)網(wǎng)站究竟是真實(shí)的還是來自攻擊者。PKI的目的是為了有一個(gè)可信的第三方之后,用戶可以通過是否彈出告警以區(qū)別好的網(wǎng)站和問題網(wǎng)站,而12306將有問題變成了一個(gè)常態(tài),用戶真的遇到問題的時(shí)候,卻不知道實(shí)際上已經(jīng)被攻擊了。
使用類似不可信證書的公共服務(wù)在中國遠(yuǎn)不止12306,有些銀行也是。2013年的中美銀行網(wǎng)站的測量表明,美國前一百家銀行網(wǎng)站100%都使用可信證書,但是中國300多家銀行網(wǎng)站中,32%使用了不可信的CA簽發(fā)的證書。
公鑰證書簽名的弱密碼算法問題
在公鑰證書的簽名算法中使用MD5或SHA-1早在2005年前后就已經(jīng)被證實(shí)為不安全的,但是仍有CA使用這兩種算法。2005年王小云教授展示了可以產(chǎn)生兩個(gè)同樣簽名的、不同的證書,2006年Stevens等人指出可以利用選擇前綴碰撞的方法構(gòu)造了兩個(gè)ID不同、密鑰也不同的證書。直到2008年,他們用這種方法從一個(gè)商業(yè)CA真正獲得了一個(gè)假冒的CA證書,證實(shí)了這種攻擊在現(xiàn)實(shí)中是可行的。
2012年,在中東大規(guī)模傳播的火焰(Flame)病毒就是利用這種技術(shù)構(gòu)造了一個(gè)微軟的證書,用它對補(bǔ)丁更新文件進(jìn)行簽名,從而入侵Windows系統(tǒng)。
CDN中間人引發(fā)的信任威脅
現(xiàn)在主流的網(wǎng)站大部分都是通過CDN提供用戶服務(wù),而通過CDN之后,互聯(lián)網(wǎng)原先端到端的模式,有了一個(gè)”中間人”——CDN本身。CDN 是以中間人的方式工作。原始網(wǎng)站是如何授權(quán)給中間的CDN 廠商、如何完成瀏覽器 - CDN - 原始網(wǎng)站之間的身份認(rèn)證、秘鑰交換和數(shù)據(jù)保護(hù),以及如何撤銷這種授權(quán),無論學(xué)術(shù)界還是工業(yè)在以前都沒有系統(tǒng)性的考慮。
我們在世界上首先對CDN中的HTTPS部署進(jìn)行了系統(tǒng)性的研究,研究成果發(fā)表在了安全領(lǐng)域的頂級學(xué)術(shù)會議Security & Privacy上。我們調(diào)研了Akamai、CloudFlare 等世界上主流的20個(gè)左右的 CDN 服務(wù)商,以及一萬多個(gè)支持 HTTPS 的熱門網(wǎng)站(同時(shí)也是上述20個(gè) CDN 廠商的客戶),揭示出了當(dāng)前HTTPS 在 CDN 部署中的許多問題。
首先是 CDN 節(jié)點(diǎn)和后臺源服務(wù)器之間的通信很容易受到中間人攻擊。我們測試了5個(gè) CDN 廠商的后臺通信,發(fā)現(xiàn)盡管瀏覽器到 CDN 節(jié)點(diǎn)的通信使用 HTTPS加密,有的廠商使用明文的 HTTP 與后臺服務(wù)器進(jìn)行通信;有的廠商雖然使用了HTTPS,卻不驗(yàn)證證書的有效性;有的廠商雖然要求合法證書,但是卻不驗(yàn)證證書的持有者是誰。
其次是瀏覽器和 CDN 節(jié)點(diǎn)之間的授權(quán)認(rèn)證問題。我們發(fā)現(xiàn)很多 CDN 廠商要求源網(wǎng)站提交自己的公鑰證書和私鑰,這嚴(yán)重破壞了 PKI 安全信任的基本原則,即私鑰必須是嚴(yán)格保密、不能與第三方共享的。
另外,現(xiàn)有CDN廠商使用的方案——共享證書(shared certificate)或者客戶證書(custom certificate)也存在管理復(fù)雜、無法撤銷等問題。我們針對Alexa網(wǎng)站上Top 1M的網(wǎng)站,經(jīng)過7個(gè)星期的測量,一共發(fā)生了67,290 次證書更換,其中有983個(gè)證書被撤銷,時(shí)間間隔在 0~5 天;有251 個(gè)證書被撤銷卻依然被使用。數(shù)據(jù)表明,約30% 的證書撤銷與更換只更改了密鑰,其他信息不變;73% 的證書更換后沒有被撤銷,絕大部分是 CDN 共享證書。
針對CDN的證書問題,國際互聯(lián)網(wǎng)工作組IETF也因?yàn)槲覀兯赋龅膯栴}提出了標(biāo)準(zhǔn)草案。當(dāng)然,每一種方案時(shí)至今日都并沒有完美地解決現(xiàn)在的問題,到目前為止,很多時(shí)候我們只能是信賴它,為了實(shí)現(xiàn)不可信環(huán)境下的可靠通信,我們還將要付出巨大的代價(jià)。
(本文根據(jù)清華大學(xué)段海新教授在2016年4月“網(wǎng)絡(luò)安全研究國際學(xué)術(shù)論壇”上的演講內(nèi)容整理)