MD5是否将会被SHA-1取而代之?

安全 数据安全
MD5算法是一个用于加密的单向散列函数。美国政府的大多数应用被要求在今年年底以前改用SHA-2散列函数系列。SHA-1散列算法也具有安全漏洞,而迄今为止还没有出现关于成功攻击SHA-2散列函数系列的报道

问:许多组织已经用SHA-1算法取代了MD5算法,那么MD5算法现在仍可以安全地使用吗?

答:MD5(Message-Digest Algorithm 5,消息摘要算法5)算法是一个用于加密的单向散列函数。散列函数可以对一段数据(如文件或消息)进行运算,生成一个较短的、固定长度的数值,称为散列值。一个MD5散列值通常表示为一个32位的十六进制数。散列函数在加密方面用途广泛,因为对原始输入的任何修改(包括故意的和无意的修改)都将会引起结果散列值的变化。散列函数可用于多种形式的认证,例如数据签名和消息认证码。另外,散列函数还可用于验证文件的完整性,因为即使是对文件最细微的修改,也会改变其散列值。例如,许多软件出版商都会提供其可下载软件的MD5散列值,从而使用户可以验证该文件是可信的,没有被篡改的。

然而,由于散列算法生成一个较短的、固定长度的散列值来代表任意长度的数据,这就意味着,可能的输入值要远远多于散列算法生成的唯一散列值。因此,必定会有多个输入值将产生相同的散列值,这就是所谓的散列碰撞。对于一个在密码学意义上被认为是安全和具有抗碰撞性的散列函数来说,找到能够产生相同散列值的两个输入值非常困难。2005年3月,两名研究人员创建了两个公钥不同但MD5散列值相同的X.509数字证书。从那以后,可以在一分钟内找到一个MD5碰撞的各种方法层出不穷。正是因为如此,MD5算法在密码学上被认为已经遭到破解,并逐渐被SHA-2散列函数系列所取代。

MD5算法肯定不适合基于安全性的应用和服务,例如SSL(安全套接字层)和依赖抗碰撞性的数字签名。对于使用MD5散列值存储用户密码的早期应用来说,降低MD5算法脆弱性的一种可能的方法是,先向密码中添加一段随机字符,然后再计算其散列值。这种方法在一定程度上可以抵抗针对散列密码的字典攻击。尽管MD5散列值不再能保证文件未被篡改,但是在下载较大的文件时,可以使用MD5散列值检查错误,并验证文件是否损坏和完整。

需要指出的是,在新的应用中没有理由再使用MD5。美国政府的大多数应用被要求在今年年底以前改用SHA-2散列函数系列,早期的应用也要尽可能地进行升级。至于你在问题中提到的SHA-1散列算法也具有安全漏洞,而迄今为止还没有出现关于成功攻击SHA-2散列函数系列的报道。同时,研究人员已经在进行SHA-3算法的开发。一个紧跟加密技术最新发展的好方法是,及时关注标准机构(如美国国家标准与技术研究所)的新闻并接受其建议。

【编辑推荐】

  1. ASP.NET中MD5和SHA1加密的几种方法
  2. 使用MD5变换算法来防止穷举破译密码
责任编辑:许凤丽 来源: TechTarget中国
相关推荐

2009-07-24 15:58:20

ASP.NET MD5ASP.NET SHA

2009-09-09 18:35:07

C# 加密MD5和SHA1

2016-12-15 09:26:53

MD5加密

2016-01-08 13:39:27

2017-01-04 15:30:33

Android Stu开发工具自动签名

2017-02-24 10:46:34

2016-12-22 09:31:35

UbuntuSHA-1资源

2014-09-23 09:08:41

2017-02-27 18:00:24

2022-10-18 22:21:51

2015-03-23 11:21:08

2020-10-15 08:20:52

MD5算法加密的过程

2009-06-06 18:57:47

MD5加密类Java Bean

2017-01-04 13:27:31

网络安全技术周刊

2010-01-06 09:54:30

.NET Framew

2021-12-06 18:16:14

SQLCRCMD5

2020-02-25 16:30:36

MD5是不是加密

2009-06-30 10:05:24

MD5加密JSP源码

2022-10-19 07:35:28

2021-06-07 10:00:41

MD5算法加密
点赞
收藏

51CTO技术栈公众号