华盛顿邮报曾根据斯诺登泄露出来的PPT(如图1所示)报道过美国国家安全局(NSA)在云端监听Google(包括Gmail)和Yahoo用户的加密通信[1]。然而我们知道Gmail是使用TLS保护的,NSA是如何破解Google的TLS加密通信的呢?
问题分析与测试
目前主流网站都依赖HTTPS(HTTPover TLS/SSL)实现服务器认证、数据加密和完整性保护,比如Google几乎所有应用都在HTTPS的保护之下。同时,主流网站也普遍使用了CDN(Content Delivery Network)技术(虽然有些互联网公司使用自己开发的类似平台,他们并不叫CDN这个名字),用以提高网站的性能、可靠性和安全性。目前,HTTPS和CDN技术几乎都已成为商业网站必需的基础服务。
然而长期以来,HTTPS和CDN两种技术的设计和发展是独立的,HTTPS设计之初是一种端到端(End-to-End)的协议,而CDN却是以中间人(Man in the Middle)的方式工作。原始网站是如何授权给中间的CDN厂商、如何完成浏览器-CDN-原始网站之间的身份认证、秘钥交换和数据保护,以及如何撤销这种授权,无论学术界还是工业在以前都没有没有系统性的考虑。
我们在Oakland‘14(IEEE Symposimon Security & Privacy)发表了论文WhenHTTPS Meets CDN:A Case of Authenticationin Delegated Service[2],首次提出了HTTPS在CDN环境中授权服务的认证问题,把两种技术结合在一起进行了系统性的研究。通过调研Akamai、CloudFlare等世界上主流的20个CDN服务商,以及一万多个支持HTTPS的热门网站(同时也是上述20个CDN厂商的客户),揭示出了当前HTTPS在CDN部署中的许多问题。
首先是CDN节点和后台源服务器之间的通信很容易受到中间人攻击(如图2所示):通过测试了5个CDN厂商的后台通信,发现尽管浏览器到CDN节点的通信使用HTTPS加密,有的厂商使用明文的HTTP与后台服务器进行通信(CDN77、CDN.NET);有的厂商虽然使用了HTTPS,却不验证证书的有效性(即可以使用自签名的证书伪造任何网站,存在问题的厂商包括CloudFlare和InCapsula);有的厂商(如Amazon公司的CloudFront)虽然要求合法证书,但是却不验证证书的Common Name。
其次是浏览器和CDN节点之间的授权认证问题。我们发现很多CDN厂商要求源网站提交自己的公钥证书和私钥,这严重破坏了PKI安全信任的基本原则,即私钥必须是严格保密、不能与第三方共享的。尽管也有替代的方案不要求用户共享私钥,比如使用客户证书(Custom Certificate)或者共享证书(SharedCertificate)方案,但是秘钥管理复杂,客户网站无法自主撤销自己对CDN厂商的授权,作为可信第三方的CA也没有撤销体现授权关系的共享证书。
具体细节可以参考论文原文和Oakland会上所作报告的Slides[2]。
参考文献
[1]NSA infiltrates links to Yahoo.Google datacenters worldwide , Snowden documents say.https://www.washingtonpost.com/world/national-security/nsa-infiltrates-links-to-yahoo-google-data-centersworldwide-snowden-documents-say/2013/10/30/e51d661e-4166-11e3-8b74-d89d714ca4dd_story.html
[2]Jinjin Liang,Jian Jiang,Haixin Duan,Kang Li,Tao Wan,and Jianping Wu.When HTTPS Meets CDN:A Case of Authentication in Delegated Service,in2014IEEE Symposium on Security and Privacy(SP),2014,pp.67-82, PDF and PPT Download: http://netsec.ccert.edu.cn/duanhx/archives/1803
来源:中国教育和科研计算机网(节选)
聚焦云计算,扫描二维码,关注HostUCan云计算