吐槽TLS:能用和能用好之间差别很大
作者:星期日, 七月 17, 20160

互联网,正是因为有加密技术,尤其是TLS(传输层安全,原名SSL安全套接字),才呈现出今天这种如我们所知的景象。没有了这一关键技术提供在线私密通信方法,电子商务可能根本不会出现,互联网也可能仅仅是分享冷笑话的全球联欢热线。

640

尽管SSL/TLS至关重要,却一直备受忽视,甚至还不断被削弱。在出口算法上,政府监管部门任由FREAK和各种降级攻击肆虐。不过,因研究方面忽视而直到实际攻击出现的例子也不少。上个月的AusCERT上,研究员汉诺就用一张幻灯片很好地总结了一下:

640-2

幻灯片中是一张针对SSL/TLS漏洞所做研究的列表,以及研究发表后数年才暴露出来的攻击事件。这些攻击,本可以用研究中描述的缓解方法避免掉的。

从上述这些例子中我们可以看出,问题暴露在安全社区眼皮底下的年限通常都有12年左右,但缓解措施却经历了这漫长的12年都还未部署。其中一些攻击引发了恐慌和对SSL的操练式升级,据称其中一些甚至因为管理员匆匆忙忙的错误配置而导致了更深层次的不安全。

这种在修复弱点上的懈怠,让那些依赖加密的人在网络攻击面前毫无防备。在已弃用的MD5散列算法的例子中,1993至1996年间的研究表明了MD5压缩碰撞的可能性,让密码学家们认为,在抗碰撞性上,MD5已经完全不能用了。

大约10年后,在2004年,大学研究人员演示了用 IBM P690 集群在1小时内产生具有相同哈希值的两个输入的可能性。密码学家随后精炼了这些攻击,产生出了使用碰撞散列的X.509数字证书标准,产生碰撞的过程甚至能在一台笔记本电脑上完成。

计算机紧急响应小组(CERT)/通信中心(CC)敲响了VU#836068的最后丧钟,标题很直白——《MD5容易受到碰撞攻击》。文章很直接地揭示了密码社区知晓了很多年的事实:MD5不保密,不应该用在安全应用上。

数年后,复杂恶意软件Flame出现在全球人民面前。多少年的警告都挡不住真实世界系统依然留有MD5热爱者。Flame的作者便利用了这一点,通过伪造的证书骗取目标系统的信任。

除了使用具有著名漏洞的算法,顶着需与具漏洞软件互通的名头,往系统中引入弱点的做法也算是历史悠久了。比如说,在OpenSSL开发早期,开发者就意识到 Netscape Enterprise v2.01 有会话重用相关的漏洞。具体说,SSLv2/v3 兼容模式的连接,可能随后会被另一个SSLv3特定密码套件重用。

然后,为避免兼容问题,代码中被加入了‘SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG’这个权宜选项。这一选项(作为‘SSL_OP_ALL’的一部分,被普遍开启了)随后被证实是一个漏洞,因为恶意客户端可以操纵会话缓存来降级重用连接中使用的密码。这个漏洞,连同提供出口级密码的服务器,意味着仅仅因为一个想兼容不良实现的决定,就让很多用户暴露在攻击面前十好几年。

很多攻击实际上都可归结到想与已损坏SSL/TLS栈兼容的善意决定上。不幸的是,很多实现都受害于我们所谓的“版本不兼容”。当客户端向服务器发起TLS连接,发出的第一条消息(客户端Hello)会打出该客户端支持的最高版本的TLS协议。比如说,SSLv3被表示为0x0300,TLSv1.0是0x0301,最新版本的TLSv1.2则是0x0303。

服务器则将响应一条服务器Hello消息,表明两者都支持的最高版本协议标准。如果服务器在握手过程中遭遇了问题(例如:不支持的扩展、密码不匹配等等),客户端应该收到一条TLS警告。然而,当研究人员对互联网上的TLS服务进行扫描时,他们发现,1120万响应旧版协议的主机中,17%都向TLSv1.2客户端Hello发送了不合适的响应消息。

进一步分析揭示出,21%具备可信证书的服务器发送无效响应的事实,表明这一行为不仅仅局限于错误配置或不再维护的服务,这种版本不兼容导致所有主流浏览器不得不实现所谓的“回退舞步”。

为避免用户因页面加载失败而暴怒,浏览器被设计为在完全放弃之前用不断降低的安全参数连续尝试访问。简言之,如果服务器响应 TLSv1.2 hello ,浏览器将用 TLSv1.1 再次尝试,然后用 TLSv1.0 ,以此类推。

对采用中间人攻击的黑客而言(TLS本应能防御中间人攻击),他所需要做的,仅仅是在浏览器降到攻击者能破解的协议时,用更新的协议尝试建立连接就行了。浏览器厂商已经通过禁止危险回退来处理这个问题了,但TLSv1.3标准被确认时,恐怕还会出现问题。

迈步向前,企业和用户,都需要向厂商施加压力,免得他们对自己的TLS自满。对TLS而言,能用和能用好之间,差别很大。不幸的是,这些实现威胁缓解的变通方法和失败之处都并非处于真空之中,往往是与改变拉锯的直接结果。通过讨论这些问题,希望更多的人会赞成采用经过严格测试的标准化的TLS实现。

 

关键词:

相关文章

写一条评论

 

 

0条评论