分类: 网络与安全
2009-03-31 11:01:11
ZDNET安全频道原创文章 转载请注明出处
密码破译者们已经发现了MD5算法中的一个漏洞,并能够通过这个漏洞创建伪造的数字证书。这一发现使得所有采用HTTPS协议的安全机制都存在了潜在的被攻击风险。
SSL的一部分已经被破解了,这是千真万确的。而采用SSL安全的网站已经不再被信任了,这种问题会影响到我们所有人。作为一个IT人士,如果我不能让周围的朋友真正了解到这一危机,那就是我们的失职了。
要详细解释这个问题,我们首先要知道什么是SSL证书。如果大家对此毫无概念,或者了解的不是很清楚,不妨先补补基础课。
在本文中,ZDNET安全频道首先会解释未知证书的不安全性以及它在网络钓鱼领域中的成熟运用。之所以首先介绍这个问题,是因为我们很多人为了立刻看到网页内容,在面对浏览器给出的警告信息时,都会不假思索的点击OK按钮。如今这个习惯会导致更严重的后果。
创建SSL证书
在以前我们介绍SSL时,总是说SSL证书是可信任的,因为它们是由Verisign和Network Solutions这样的证书颁发机构 (CA)提供的。这种信任的逻辑很简单。CA信任网站的主人,因此用户可以对拥有CA证书的网站予以信任。行家将这种方式称为信任链 。在《MD5 Considered Harmful Today》一书中,研究如何破解SSL的小组对于SSL证书有一个非常精妙的定义:
“证书是一个同时包含了身份信息和公钥的文本,通过数字签名方式将其二者结合起来。这一数字签名是由称作证书颁发机构CA的机构创建的。该组织确保所创建的数字签名拥有者(比如网站)的身份和公钥的真实性,并确保该拥有者拥有与公钥相对应的密钥。任何拥有CA的公钥的人都验证证书中的CA数字签名,因此CA可以确保证书中的公钥属于那个身份信息与公钥包含在相同证书中的拥有者。”
为了避免混淆,这里先要澄清一下, SSL证书是数字签名的一个子集。解释了这个概念,接下来将继续使用数字签名这个术语进行讲解。
为什么使用数字签名?
要回答这个问题,我们首先要知道为什么数字签名对于SSL如此重要。之前说过,数字签名是用来创建信任链的,而数字签名是通过公钥的加密特性来完成这一工作的。公钥的加密方式本身就可以写一大篇文章了”。
有了公钥加密,我们接下来就要看看CA是如何利用私钥实现身份信息确认的。 这个确认过程分为两部分,签名生成以及签名确认:
(*)数字签名是通过特定信息(由CA的身份信息和网站的公钥共同构成)以及CA的私钥通过哈希算法生成的
(*)数字签名的确认是通过Web浏览器和网站间进行HTTPS连接握手时完成的。
如果一切顺利,Web浏览器会使用CA的公钥去解码数字签名,并将解码后得到的CA身份信息与浏览器程序内置的CA签名文件(目前有超过300个)信息相对比,进行确认。
一旦身份确认成功,Web浏览器会使用CA数字签名中的公钥向Web网站发起SSL隧道连接请求。下面的图示演示的就是常见的HTTPS握手过程。
受信证书也不再安全
在Web浏览器和网站之间,并不是所有连接都是使用HTTPS的安全连接。尤其是在IT安全方面,某些算法,协议和概念元素都相当有年头了,已经逐渐显现出问题。MD5算法就是其中一个古老的元素。
发现MD5缺陷的团队在《MD5 Considered Harmful Today》”一文中介绍了根据这种缺陷制造的攻击过程,下面我们就将重点部分摘录出来。该团队成员包括Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, 以及 Benne de Weger:
“我们的攻击情况基本是这样的。我们向一个所有常见浏览器都认可的商业CA请求一个合法的网站证书,由于请求是合法的,因此CA会很快将证书签署并发给我们。
另外我们自己建立一个CA,使用MD5哈希算法生成证书签名,这一步很重要,因为我们的证书请求是被精心修改过的,它生成的MD5哈希数与之前的合法证书是一致的。这个新证书并不是合法网站的证书,而是一个可以用作任何网站的CA证书。
由于这两个证书的MD5哈希数一致,从商业CA处获取的数字签名可以直接被拷贝进我们自己建立的CA生成的证书中,由此我们自己生成的数字证书就变成合法的了,并且仍然可以用于任何我们希望的网站。”
冲突是罪魁祸首
对于大多数加密理论来说,其所基于的安全性理论是需要花费大量的时间和金钱才能破解密码或者制造出相同的密码。而我们提到的这个MD5破解小组却实现了一个近乎不可能的任务,制作出了两个MD5哈希数列一样的数字签名。
由于数字签名的强壮性就在于几乎不会出现两个相同的数字签名,因此一旦出现了这种完全一致的冲突,就会引来大麻烦。接下来这些天才研究者们将做什么呢?没错,他们将告诉我们如何去制造这种冲突。
更重要的是,制造这种冲突并不需要很长时间,也不需要投入大量资金。研究小组使用的是位于EPFL的Arjen Lenstra的Playstation实验室,包括了大约200台PS3,如下图所示:
在我再次推荐大家阅读《MD5 Considered Harmful Today》这篇文章,因为该小组在文章中详细解释了他们为什么能制造出引起冲突的MD5序列的。
一切意味着什么?
这意味着黑客可以模拟出一个公认安全的Web网站,比如Amazon.com,而用户和浏览器都会认为所显示的页面内容的确是来自Amazon的Web服务器。浏览器的地址栏上还会有https标记,但已经毫无安全性可言,用户对此却仍然一无所知。这听上去很严重,但是漏洞本身很难被直接用来攻击。
那么问题出在哪里呢?实际上,大部分专家都认为,当MD5冲突漏洞与重定向攻击结合起来,才是真正的危机,比如将Kaminsky漏洞和MD5冲突结合起来的攻击。这种攻击会将用户重定向到一个伪造的合法网站,比如网络银行网站。
另一种攻击组合是首先采用DNS Changer木马攻击网络,然后建立一个伪造的DNS记录,当用户访问网络银行站点时,会直接被错误引导至恶意网站。下图演示了一个重定向攻击和MD5冲突结合的攻击模式。
如何解决问题?
这个问题是每个网民都非常关注的,但是遗憾的是,作为一个普通网民,很难预防这种新型的攻击。目前来说,理解这种攻击的原理也许就是最好的防御手段了。 因此接下来我会告诉大家,常见的浏览器会将数字签名文件存放在何处。尤其要注意的是签名的算法,因为CA是通过私钥算法生成数字签名文件的。接下来就介绍一下如何在IE浏览器和火狐浏览器中查看数字签名文件:
IE浏览器
1. 启动 Internet Explorer.
2. 进入“工具”菜单,选择“Internet选项”
3. 进入“内容”选项卡,点击“证书”按钮
4. 选择“受信任的根证书颁发机构”
5. 双击一个你感兴趣的证书颁发机构
6. 选择“详细信息”查看签名算法
火狐浏览器
1. 启动 FireFox.
2. 进入“工具”菜单,选择“选项”
3. 进入“高级”,点击“加密”选项卡
4. 点击“查看证书”并选择“颁发机构”
5. 选择一个感兴趣的证书,并点击“查看”
6. 选择“详细信息”选项卡,并选择“证书签名算法”
可能大家注意到了,我在上面两个浏览器中都选择了Equifax证书,因为这个证书是破解组织成功制作出MD5冲突的证书之一。正如我们看到的,Equifax使用的就是MD5数字签名算法。
因此我们也有了选择的余地。如果一个SSL证书的签发机构使用的仍然是MD5算法,那么我们可以认为它是存在安全风险的。如果一个CA是采用SHA-1算法生成数字签名的,那么这个SSL证书不会受到上述攻击的影响。不过现在也有人怀疑, SHA-1算法也会存在和MD5算法一样的冲突问题。
总结
总之,互联网上又出现了如此重大的安全隐患。如果和DNS漏洞结合起来,普通网民就会变得任人摆布。因此我希望所有CA和网站都停止再使用MD5算法,甚至是停止使用SHA-1算法,而采用更难于破解的SHA-2算法,这也是发现SSL漏洞的MD5破解组织给大家的建议。
在我看来,网络零售商肯定是推动这一进步的最大动力,因为谁都不想看到自己的业务因为网络安全问题受到影响。