使用来自特定 CA 的 X.509 证书,会使基于 SSL 的安全措施即使在“安全”连接之下,也容易受到伪造 X.509 证书的欺骗而防范不住仿冒网站。近日在柏林举办的 Chaos 会议上,演讲者通过仿冒一份真实的证书演示了这一漏洞。
“让理论成为可能,有时候唯有这样才能推动变革,保障互联网的安全。”这番话是 2008 年 12 月 29 日第 25 届 Chaos Communication Congress 上一篇"MD5 Considered Harmful Today: Creating a rogue CA certificate"演讲的结论。演讲者介绍了他们如何用2004 年提出的理论上可行的MD5 签名攻击方法,构造出伪造的证书,从而实现对SSL 安全网站“完美的中间人攻击”。
攻击的原理是这样的:SSL 服务器用X.509 证书来证明自己的身份,证书由“受信任的证书签发机构”或称CA 发出。签发机构在证书上“签名”,用的是通过一种密码算法产生的散列值。而所用密码算法在设计上要使从两组不同数据得到同一个散列值——即“碰撞”——的概率极其小。
要实现攻击,攻击者需要先从使用MD5 算法签署证书的CA 购买若干SSL 证书。利用从这几张证书中得到的信息,有可能构造出貌似合格的伪造的证书。证书的签名来自先前购买的证书,内容却不同,并且添加了特别计算出来的数据块以制造碰撞 。因此MD5 算法会错误地认为签名与新内容是匹配的。效果上就好像在一份有真实签名的白纸上写上内容来伪造信件。
证书伪造出来后,就可以用在“中间人”攻击里。有了证书,就可以设置一个SSL 连接双方都认为合法的代理。通过这个代理,所有加密信息都可以被攻击者捕获并保存下来。
这种攻击要求很大的运算量,但技术进步和摩尔定律已经使碰撞证书运算成为可行的现实。在演讲者的例子中,运算大约需要在Amazon EC2 云花费$2000,也可以用 PS3 游戏机集群搭建的“家用超级计算机”解决。
这种攻击并不意味着整个互联网或者 SSL 安全已经被突破,但的确意味着厂商应该不再用 MD5 作为签名算法。演讲者提醒了几家仍然有 MD5 签名证书处于生效状态的签发机构。
评论