MD5攻陷之际,SHA-1还能走多远

admin 2021年12月29日19:17:28评论233 views字数 3925阅读13分5秒阅读模式

三张不同的图片,同一个MD5值,亲手试试呗。

MD5攻陷之际,SHA-1还能走多远


零、前言


众所周知,SHA-1算法已经不再被认为是一个安全的加密哈希函数。研究人员认为,在未来几个月中将会找到一个哈希碰撞(两个不同的信息使用SHA-1哈希后得到相同的值)的实例,这是无法避免的。由于许多网站使用的证书都是基于SHA-1算法进行数字签名的,所以这将成为可信网络上的潜在威胁。然而令人侥幸的是,仅仅找到一个哈希碰撞还不足以伪造数字证书。


今天light教授继续抛砖引玉,和大家探讨一下哈希碰撞曾经是如何被用来伪造数字签名的,另外我们也会讨论未来如何通过在证书序列号中添加随机性等措施来增加攻击者伪造签名的攻击成本。


壹、信任的基石——数字签名


互联网依赖于信任。无论是登录网银还是淘宝购物,HTTPS通过加密数据传输、认证站点数字证书来保护你的浏览安全。


HTTPS可以证明一个网站的真实性,只要这个网站拥有一个包含了资产所有者的身份和主机名等信息的数字证书。证书是由可信任的第三方证书颁发机构(CA)颁发的数字签名的小文件。对于浏览器来说,数字签名是信任的权威来源。如果您的浏览器信任该CA,并且证书上的数字签名是正确的,那么浏览器将信任这张证书。这套身份验证系统被称为公钥基础设施(PKI)。


如果数字签名不再可信,那么这套身份验证系统就彻底崩溃了。例如黑客如果能够从一个受信任的CA创建whitecell-lab.org的签名证书,那他们就可以用它来冒充一个whitecell-lab.org来欺骗广大网民。


数字签名是一种捆绑到一个公钥上的加密数字信息。每个数字签名需要一个公私密钥对和一个哈希函数。哈希函数的作用是以它来生成一个唯一的摘要,私钥用来签名、公钥验证签名。


MD5攻陷之际,SHA-1还能走多远


获得一个网站的数字签名证书有这么几种方法。典型的方法是从证书颁发机构购买证书。CA遵循一套关于证书颁发规则。


另一种方法是窃取CA的私钥。除了作为潜在的违法行为,也很难实现:CA私钥通常存放在被称为硬件安全模块(HSM)的专用安全设备中,旨在防止密钥被窃。


第三个方法比较有趣,我们可以创建一个与已经存在的可信证书具有相同哈希值的伪造证书。


MD5攻陷之际,SHA-1还能走多远

如果可以找到一个具有相同哈希值的信息,那我们就可以顺利通过签名验证,达到欺骗的效果。


MD5攻陷之际,SHA-1还能走多远


加密哈希函数被设计出来用于对抗这类攻击,但是收效并不理想。


贰、哈希算法的安全性


加密哈希算法满足以下三大安全特性:

  • 抗碰撞攻击

  • 抗第二原像性

  • 抗原像性

(名词解释请参考相关学术论文等资料,这里不做展开讲解)


这里的抗碰撞攻击意味着没有比暴力攻击更快的方法来找到两个具有相同哈希值的信息。这是最强的安全要求,而往往也是第一个被打破的原则。


当给定一个信息和它的哈希,无法找到第二个能够获得同样哈希值的信息,这时我们认为这个哈希算法具有抗第二原像性。表面上看,这似乎能够有效保护数字签名证书的安全性,然而黑客仍然有可能伪造一次具有抗第二原像性的证书。


抗原像性指的是攻击者拿到一个哈希值,不能够计算出其原始值。


叁、攻陷MD5


MD5算法是一种非常流行的加密哈希函数,目前它已经被碰撞攻击彻底打破。虽然不能被用于数字签名,MD5哈希算法依然被广泛的使用着。


MD5的首次成功碰撞是在2004年由王小云教授的团队研究发现的。当时使用了大量的数学演算,并用超级计算机计算了将近一个小时。而今天,即使没有超级计算机,我们也可以复现这个碰撞。


安全研究人员Nat McHugh在他的博客中展示了MD5存在的安全问题。Nat McHugh展示了两张不同的摇滚歌星的图片, 这两张图片尽管分别是不同的人, 但是却有相同的MD5值。 Nat McHugh写道:“这两张图片的原始图片是我从Internet上找到的。 而实际上给我任何的数据, 我都能够找到一个相同的MD5’碰撞’”。而通过NatMcHugh那样采用填充数据的方式寻找MD5碰撞在主流的云计算平台比如Amazon的云平台上只需要几个小时, 大约耗费的成本不足1美元。


于此相比, 如果采用暴力破解的方式寻找MD5碰撞目前来说如果不采用超级计算机的话依然是不现实的。 而McHugh采用的方法则是分别在两个文件的后面填充一些特定的数据从而使得修改后的文件具有相同的MD5。这种攻击方式被称为可选前缀碰撞(Chosen Prefix Collision)。 而针对MD5的可选前缀碰撞攻击最早在2007年就已经出现了。


在可选前缀碰撞攻击中, 一些特别的用于碰撞的数据被添加的文件的尾端, 而这些数据之前的数据可以完全不同。 在博客中 Nat McHugh写道:“可选前缀碰撞攻击时通过不断地添加接近碰撞的数据块从而慢慢地把MD5内部状态的不同之处慢慢减小直到两个MD5值变得相同。 在此之前,两个文件的长度必须一致,而文件比特的不同必须是一种特定的形式。 然后可以通过”生日“攻击方式实验不同的随机数值直到找到碰撞。 这一方式大大降低了碰撞攻击的复杂度。”


MD5攻陷之际,SHA-1还能走多远

MD5攻陷之际,SHA-1还能走多远

MD5攻陷之际,SHA-1还能走多远


可以使用curl和md5的方式来做个验证:(注:kali系统可以使用md5sum命令来计算文件的md5哈希值)

$ curl -s https://blog.cloudflare.com/content/images/2015/08/white.jpg | md5 b69dd1fd1254868b6e0bb8ed9fe7ecad   $ curl -s https://blog.cloudflare.com/content/images/2015/08/brown.jpg | md5 b69dd1fd1254868b6e0bb8ed9fe7ecad   $ curl -s https://blog.cloudflare.com/content/images/2015/08/black.jpg | md5 b69dd1fd1254868b6e0bb8ed9fe7ecad  

尽管发现了MD5碰撞,我们仍然做不到针对MD5的抗第二原像性的攻破。例如,给定一个数字签名证书,没有人能够用相同的散列创建一个证书。尽管如此,研究人员创建一个具有相同的签名证书的证书也是可以骗过浏览器的。


肆、可选前缀攻击


如果能够找到一个碰撞,可以使两个不同的值经过附加数据处理得到相同的哈希值。在最初的MD5碰撞攻击中,研究人员计算两个不同的信息M1和M2,如H(M1)=H(M2)。Stevens扩展了这一研究,找到一种新的方式使两个经过附加字节的已知值P1和P2发生碰撞。通过前缀P1和P2,可以演示如何找到S1和S2,公式为:H(P1|S1)=H(P2|S2)。


这足以让攻击者用相同的哈希创建2个证书。我们看看证书的近似结构有哪些:

  • 序列号

  • 有效期

  • 域名公钥

  • X.509扩展

  • 签名



如果攻击者可以获得域名前每一个值,可以计算:

P1 = 序列号 | 有效期 | 真实域名 
P2 = 序列号 | 有效期 | 冒牌域名  

并将攻击深入至公钥部分S1、S2的值,如果可以预测序列号和有效期,可以通过以下步骤来实现碰撞:

  • 1、猜解证书发布时间

  • 2、在有效期内预测证书序列号

  • 3、计算匹配前缀


MD5攻陷之际,SHA-1还能走多远

一旦碰撞被计算出来,攻击者必须使CA在正确的时间为一个可验证的域和一个公钥对应的碰撞位的正确序列号颁布一个证书。如果幸运,证书的认证证书将有可能与恶意证书具有相同哈希值。


伍、伪造MD5证书在现实中的应用


可选前缀碰撞的一个优点就是可以使得找到一个有意义的碰撞。 这一使得黑客就有可能利用这样的攻击来伪造基于MD5的数字证书。


事实上, 在2012年发现的美国用来攻击伊朗等国工控系统的“火焰“病毒, 就是利用了针对MD5的可选前缀碰撞攻击, 伪造了微软的数字证书, 以Windows Update的方式入侵系统的。


陆、SHA-1 vs MD5


SHA-1比MD5更安全的哈希算法,常用于数字签名。美国国家安全局在1995年公布了SHA-1算法,并把它作为一个标准的加密安全散列。设计为可以抗碰最高280比特的碰撞,SHA-1已经过了很长时间的使用,而至今还没有出现成功碰撞。


即使SHA-1的成功碰撞从未发表,但是一些理论层面的攻击(2005提出,2012修改)表明,SHA-1哈希算法并没有它宣称的那么强。最新的研究表明,它的耐撞性是最高为265,包括一些政府使用的领域。事实上,研究人员在今年早些时候发表了一种针对SHA-1算法的freestart碰撞(一个完整的碰撞体)。


MD5攻陷之际,SHA-1还能走多远

针对密码学的攻击就像水中的鲨鱼。如果水里有血,它们就会群攻而上。从第一次发表MD5哈希碰撞的弱点到实现碰撞花了九年时间(1996)到(2005),接下来的三年,研究人员打造出一个可信的伪造数字签名(2008)。


攻击可能是缓慢的,但绝对是无情的。


攻击总是随着电脑计算能力的提高而变得更加强大。MD5哈希碰撞用了九年;SHA-1的安全研究已经十年了。如果根据“历史总是相似的”原则,对SHA-1的碰撞的实现可能随时随着可选前缀碰撞攻击的成功而公布。


柒、总结


SHA-1散列函数,广泛用于文件完整性校验和数字签名等,但很快就要光荣退伍了。有些浏览器甚至会对使用以SHA-1算法签名证书的网站提示安全警告。


在网络上,数字签名伪造是个大麻烦,要求CA对序列号随机编号可以显著提高这种伪造攻击的成本。这就是为什么我们建议序列号强制性使用至少20位熵(LV)的SHA-1证书。


参考资料:

https://blog.cloudflare.com/why-its-harder-to-forge-a-sha-1-certificate-than-it-is-to-find-a-sha-1-collision/?mbid=social_twitter

https://www.google.com


MD5攻陷之际,SHA-1还能走多远

MD5攻陷之际,SHA-1还能走多远




本文始发于微信公众号(WhiteCellClub):MD5攻陷之际,SHA-1还能走多远

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月29日19:17:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MD5攻陷之际,SHA-1还能走多远http://cn-sec.com/archives/490465.html

发表评论

匿名网友 填写信息