Board logo

标题: MD5 SSL证书安全问题深究 [打印本页]

作者: 210007508803    时间: 2010-1-18 19:58     标题: MD5 SSL证书安全问题深究

2008年12月31日,对SSL证书而言有一个巨大的意义,第一次有人利用了MD5算法的漏洞和CA的不严密性,伪造了一个真实CA的签发的中间
证书,籍此获得签发任意证书的能力,这使所有人对SSL证书的安全性产生了巨大的怀疑,不过经过对该过程的深入分析,我们发现,虽然MD5算法的确存在漏
洞,但要破译一个SSL证书不仅仅是非常困难,而且还存在着很大的运气成分,所以过分的担心也是不必要的。


       

 


       

首先,我们要明白MD5算法漏洞的真实含义:


       

 


       

MD5算法是由Ronald Lynn Rivest于1992提出来的一种散列HASH算法,它的作用是将一个任意长度的消息散列成一串固定长度(比如128byte)的数字信息,称为散列值(或哈希值、消息摘要)。


       

 


       

一个安全的散列算法具有如下特点:


       

(1)仅从散列值无法反推出原信息;


       

(2)两个不同数字信息产生同样的散列值的概率是非常小的,几乎为零;


       

(3)原信息的微小改变(哪怕只改变一位),将导致散列值的很大变化。


       


于特点(2),需要明确的是,散列算法是一个将无穷维空间的信息映射到有限维空间的变换,不是一个一一映射。实际上一个散列值可能对应有无穷多个数字信
息,换言之,会有无穷多个数字信息产生同样一个散列值。产生相同散列值的两个不同的消息被称为碰撞(Collision),所以,散列函数存在碰撞是必然
的。我们定义一个“安全”的散列算法,主要是指在以下三种意义上是“计算安全”的:


       

 


       

1、原像攻击-Preimage Attack


       

 


       

给定明文M1,找到另一明文M2(不等于M1),使得hash(M1)=hash(M2);


       

 


       

2、次原像攻击-Second Preimage Attack


       

 


       

给定明文M1,找到另一明文M2(不等于M1),使得hash(M1)=hash(M2);


       

 


       

3、碰撞攻击-Collision Attack


       

 


       

找到两个不同的M1和M2,使得hash(M1)=hash(M2)。


       

 


       

对于原像攻击(Preimage Attack),实际应用中最常见的是采用“字典法”,将明文和密文对存储起来,使用时只需查询出来即可。这种方法看似技术含量不高,事实上确实最具威胁性。目前互联网上已经有近百个此类查询站点了。


       

对于次原像攻击(Second Preimage Attack),目前密码学界尚未有突破性进展,可以认为是MD5算法是“计算安全”的。


       


前对MD5的攻击主要就是碰撞攻击。散列算法的安全性从理论上来说与消息摘要的长度是成正比的,对于具有128位消息摘要的MD5,理论上要找到一对碰撞
的时间复杂度是O(2^N),基本是不可行的。也因此MD5曾一度被认为牢不可破,是安全的,加之MD5算法简单紧凑,易于实现,因而被广泛应用在各类安
全协议或应用程序中。


       

 


       

但是,MD5算法的原理,使它天生有一个弱点,即If MD5(A)=MD5(B) 则MD5(A||C)=MD5(B||C)


       

 


       

2004年的Crypto2004会议上,王小云教授做了关于破译 MD5、HAVAL-128、 MD4和RIPEMD算法的报告,提出一种可在1个小时左右找到MD5 Collision的方法,将复杂度降为了2^39。这就使得破译的门槛大幅下降了。


       

 


       

2007年,Marc Stevens改进了王小云的算法,提出选择前缀碰撞,碰撞可以在不同的任意初始IHV发现,因此,由于MD5的,所选择前缀碰撞方法能够使任意所选定的输入{P,P'}和任何后缀S ,可以找到1对碰撞对{C,C'},使得MD5(P||C||S) = MD5(P'||C'||S)


       

  


       

其次,如何利用合法CA签名的证书来伪造现有CA的证书。


       

 


       

我们知道CA对证书的签名,是基于证书请求中申请人的信息和公钥部分的HASH值来进行的。


       

图片点击可在新窗口打开查看


       

 


       


签发者处,首先求出传递消息Info的HASH值,然后用私钥Private
Key对Hash值做加密,然后将传递消息原文Info和经过加密的HASH值一起发给接受者,接受者首先用签发者的公钥揭开密码,然后对收到的Info
原文计算HASH值,然后比对是否相对,如果相同,则认证成功。


       

 


       

客户端验证证书,用CA的公钥解出
HASH值,并对Info原文做匹配,如果想对,就认证成功,所以关键是要使伪造证书的info原文和一个合法证书的info原文的HASH值出现碰撞。
但我们目前仅仅能通过碰撞方式获取一对M1,
M2,即无对先确认M1的值,然后去获得M2的值,这就需要我们必须计算出一个可行的M1M2对后,让CA按我们希望的颁发出一个M1的合法证书。


       

 


       

而这里就存在了2个巨大的问题,根据我们向CA提交的资料到CA签发出的证书,有2个变量是无法事先确定的:


       

 


       

1、签发时间


       

2、证书序列号


       

 


       

所以要正确预测出证书签发的时间和序列号,并且保证在这个时刻获得该序列号的证书,是完成攻击的必要条件。


       

 


       

在这里,我必须要向证书攻击小组致敬,他们有无比的耐心,并且购买了上百个合法的证书,终于完成这一艰巨的任务。


       

 


       


先他们测试出了,从点击确认按钮到证书颁发的确切时间,是6秒,所以他们必须保证点击鼠标的准确性必须小于1秒,其次,他们发现CA的证书颁发序列号是按
顺序出的,所以他们调查了序列号增加的速度,发现在周末2天,证书序号增加速度最少,大概是800-1000一天,所以他们选择周日的时间,(因为获取一
个碰撞对,即使是使用200台PS3的运算能力也需要3天的时间),他们实时监测CA序列号的增加速度,当速度低于他们预期时,会自动加入一些证书来是序
列号迫近那个时刻办法,最后他们终于成功了。


       

 


       

 


       

最后,我们来讨论一下伪造的证书


       

 


       


造的证书必须是采用MD5做为签名算法,同时为了使伪造的证书具备合法证书相同的HASH值,必须写入一些无用的字符,而将任何字符写入普通的字段,用户
都会发现乱码,并且怀疑证书合法性,所以他们将这些字符写入Netscape
comment,所以如果是伪造的证书,在查看属性的时候一定会有Netscape
comment=3,但是具体的Extension的乱码是不会显示的,所以除非是专业的人员,是无法差距证书资料有什么不妥的。


       

所以我们要分辨一张证书是伪造的,可以通过2个方式来初步认定:


       

1、签名算法是否是MD5


       

2、是否有Netscape comment=3


       

只有以上2个条件都满足,才可能是伪造的证书。


       

另外,可以检查该证书是否是单根证书,如果是单根证书,一般不会被伪造,如果是级联证书,则需要好好检查中间证书是否具备以上2个条件,如果有,则需要好好当心了。


       



上所述,其实要完成一次对SSL证书的攻击,即使是对MD5算法的,仍然是几乎不可能的,现在CA对证书序列号的控制,已经不再按顺序方式发布,通过加入
随机增量和校验就可以是攻击者无法轻易预测序列号,同时对证书签发时间也加入随机量,使每次攻击的成功率降低到一个新的水平,当然MD5的算法毕竟已经不
再适用了,所以2009年1月1日,所有的CA都宣布改用SHA-1。当然,目前仍然有很多MD5的旧证书在用,这些证书仍然将是安全的,我们可以用上面
来个方法来简单的甄别这些证书,而且到目前,也没有任何MD5实际证书被伪造的案例出现。


       

 


       

SSL证书的安全要
获得提高,一方面是对签名算法有不断的改进要求,目前的SHA-1算法,碰撞计算需要2^80的复杂度,不过新的SHA-2算法就快出现,相信3年内,应
该可以投入使用,另外一个重要的方面,就是CA对证书的审核过程,需要更加严格,避免审核工程,被黑客攻击,相信上一次伪造证书的案例,今后将很难再出现
了。


作者: @cmule    时间: 2010-1-18 20:08

提示: 作者被禁止或删除 内容自动屏蔽
作者: 210007508803    时间: 2010-1-18 20:11     标题: 回复@cmule的帖子

我理解错了
作者: phranksun    时间: 2010-1-19 01:26

TG要弄个假证书还是很容易的,他有的是资源。




欢迎光临 ::电驴基地:: (https://www.cmule.com/) Powered by Discuz! 6.0.0