关于SHA-1构建的证书安全问题( 二 )


关于SHA-1构建的证书安全问题

CA机构向浏览器开发商颁发CA的根证书(在图表中白色的证书图形),开发商将CA机构的根证书放置于浏览器的一个证书信任列表里面。当用户下载该浏览器到自己的电脑里面,此时用户的浏览器会信任证书信任列表里面的任意CA证书签署的证书。当一间公司希望它的网站可以通过HTTPS通信的时候,公司在CA机构购买一个网站证书(在图表中绿色的证书图形),由该CA机构签发的网站证书可以向用户确保网站的安全。当用户需要浏览这一个安全网站的时候,浏览器首先向服务器请求证书,检查该证书的根证书是否在浏览器的证书信任列表里面并验证证书的签名是否正确,当检查无误的时候浏览器继续跟服务器建立HTTPS连接。接下来是一张描述研究团队如何通过攻破MD5算法来扮演网站的图表:
关于SHA-1构建的证书安全问题

1a. 向正常的CA机构获取一张合法的网站证书(在图表中蓝色的证书图形)。
1b.建立一张假的CA根证书(在图表中黑色的证书图形),它具有跟合法的网站证书一样的签名,就好像是正常的CA机构颁发的中级证书一样(中级证书也可以签发合法的网站证书)。
2. 创建一张假的网站证书(在图表中红色的证书图形),这张假的网站证书由假的CA根证书签发,并具有跟真实的网站相同的信息但是公钥不一样。OK,将这张假的网站证书放在一个服务器上运行就能代替真正的网站证书了。
3.当一个用户想要浏览安全的网站时,浏览器在寻找真实的网站的过程中,被重定向(比如ARP欺骗,DNS劫持)到虚假的网站,此时假的网站呈现它的网站证书,浏览器通过追溯假的网站证书的证书链,验证假的CA根证书是否有效,由于假的CA根证书是被真实的CA机构签发的所以有效(真实CA机构的根证书在浏览器的证书信任列表里面)。
这里有两个地方用到了MD5碰撞,一是替换合法网站证书为假的中间证书,一是创建假的网站证书。
【关于SHA-1构建的证书安全问题】 以上是我的一些理解,有不足之处请多多指教。

■网友
按照惯例: 先回答是不是,再回答为什么。目前(2016年底)在大众可知范围内的技术水平还无法有效的制造sha1哈希值碰撞,也没有任何个人和机构拥有对sha1签署的X509证书进行碰撞攻击的能力。但是算法本身的安全性已经被证明有缺陷,和之前的理论值相比差了很多个数量级。业界主动淘汰SHA1证书一方面是出于谨慎,同时也有对此前未能及时应对MD5碰撞攻击事件的矫枉过正心态。证书碰撞攻击的详细做法可以看下面的公开课视频。简单的说,证书的指纹值是此证书完整和可信的保证,如果能修改证书内容而指纹值不变是很可怕的,拥有这种手段的人可以任意签署任何证书而不需要上级CA审核,这就破坏了CA体制下的信任链。MD5碰撞--从理论到现实【25c3】【自译】_演讲?公开课_科技_bilibili_哔哩哔哩弹幕视频网


推荐阅读