关于SHA-1构建的证书安全问题
sha-1不是加密是签名算法。证书能得到信任的根本是证书的内容被ca(可信第三方)签名保证。签名算法强度和签名密钥的私密性保证了这个证书的内容是可信的。签名算法一般是基于完整性校验的算法,一般是对要签名信息部分做一个摘要,再用密钥和摘要经过一定计算得到的结果。如果密钥(ca的私钥)泄露,那么分分钟可以伪冒一个证书出来。如果签名算法被破解,那么就存在证书信息被修改的可能性。修改的部分有可能有几个:1. 个人信息部分。有可能把自己已有被签好名的合法证书修改名称,例如把腾讯的证书修改为阿里的。这样就可以伪冒阿里2. 证书有效期,可以把过期证书改成有效的。3. ca和ra信息部分。本来是随意生成的证书,伪冒成是被大公司签名,比如被谷歌签名。自己随意生成一个证书,里面ca部分修改。但是这部分被修改后,验证端的可信公钥如果还是大公司的,那么校验还是通不过。可以修改ra地址,让验证端下载错误的crl,把一个已被撤销的证书用起来。4. 算法信息部分。这部分修改可能造成的后果,是把一个原来sha-192的改成sha-1。这个改动虽然可能,但意义不大。因为你只有破解了sha-192才有意义。5. 公钥部分。只改这部分意义不大,公私钥本来就是自己拥有的。但是公钥部分是二进制码。改其他部分都是明文,明文的信息空间有限,所以改完很可能找不到碰撞。可以在改完其他明文信息后,通过修改公钥部分去寻找碰撞。但是必须先算好符合代数结构的公私钥对,才能去检查碰撞。并不是随意找一个值可以做公钥的6. 如果是v3证书,则辅助信息也要注意。首先扩展字段可能被修改,比如证书用途。其次他为了凑碰撞,可能生成一个二进制的串作为扩展信息。扩展字段随意定义可以更容易找到碰撞。7. 签名部分。这部分不能变,因为验证端要用可信ca的公钥去做验证的。从上面的说明可以看出,伪冒者必须先有一个“曾经合法”的证书(并持有对应的私钥),然后通过修改去达到目的。这个是前提。这和ca私钥被泄露后可以随意伪造还是有很大差别。碰撞也不是能随意找到的,因为明文的信息空间太小,所以必须配合某些二进制字段的改动去寻找碰撞。找到碰撞但是并不一定能修改成自己想要的内容。这个修改还是有难度,花时间,花计算量的。即使如此,我们还是无法判断到底被修改的可能性有多大。为防止意外发生,还是假定“可以任意修改”。防止的办法很简单,在验证策略里配置不允许弱算法的签名证书即可。但是可能有兼容性问题。这个没办法,上面分析了,只要你允许了,别人可以伪造出来。
■网友
现在是17年2月,前几天刚宣布:Google 宣布攻破 SHA-1 加密:证明哈希值可与 PDF 文件内容冲突。
以SHA-1在HTTPS中作为签名算法为例,当申请SSL证书的网站在提交了csr(证书请求)文件以后,CA会对提交的csr文件用哈希算法做一次摘要,然后用CA的私钥(或者中级证书)对摘要进行加密,这就是数字签名,数字签名通常是为了确保文件的完整性,没有被篡改。
不同的文件通过哈希函数得到的哈希值不一致,如果不同文件也能计算出一致的哈希值也就是发生了哈希碰撞,则此哈希算法不再安全。
其中,现在常用的哈希算法是SHA-256,而早期的哈希算法也包括了SHA-1以及MD5。以下是的SSL证书的截图:
回到题主的问题,既然SHA-1作为签名算法使用,那么它发挥的作用应该跟更早被淘汰的MD5算法作用应该是一致的。如果要了解SHA-1算法被攻破的危害,题主可以参考当年研究团队攻破MD5算法所使用的测试例子。传送门:MD5 considered harmful today 。
我粗略概(fan)括(yi)一下当年研究团队所使用的攻击手段。
首先是一张描述了正常网站证书操作流程的图表:
推荐阅读
- 大别山区贫困村的致富经:筑牢产业根基构建乡村振兴高楼
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- 废弃矿坑建乐园安徽马鞍山构建完善长三角生态屏障
- 上海构建现代环境治理体系集成示范区打造超大城市生态环境治理的“样本”
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- 关于人工智能虚拟人的一些问题