过时的MD5如何使您的密码置于危险之中

MD5 Outdated Hashing Function

5F4DCC3B5AA765D61D8327DEB882CF99 - 对于绝大多数人来说,这可能看起来像一个随机的字母和数字串。然而,对于追踪人们个人数据的网络犯罪分子来说,这种特殊的字母数字符号可能是一个非常好的迹象。

5F4DCC3B5AA765D61D8327DEB882CF99是使用MD5进行哈希处理时“密码”一词的哈希值,今天,我们将解释如果在在线数据库中找到此特定字符串会产生多大的后果。首先,让我们确保我们熟悉基本概念。

我们已经讨论了密码存储的重要性,并且我们已经确定散列实际上是处理此类信息的唯一正确方法。

Hashing是一种加密函数,正如您从第一段中看到的那样,它将密码转换为难以辨认的文本字符串。从这个意义上说,它与加密类似,但由于没有密钥,因此无法逆转这一过程。换句话说,您可以使用散列将密码转换为符号字符串,但不能将字符串转换回密码。从理论上讲,这就是使散列成为存储密码的最佳方法的原因。不幸的是,现实情况有点复杂。

选择正确的散列函数的重要性

有许多不同的散列函数(也称为算法),即使您将它们应用于相同的密码,它们中的每一个都会产生完全不同的结果。正如您可能猜到的,某些算法比其他算法更安全。 MD5,我们上面提到的功能,可以说是最糟糕的。

MD5于1992年推出,但在四年内,人们开始对其安全性产生怀疑。起初,这些攻击并不真实,而且使用MD5进行哈希登录数据的普通用户并没有立即发生任何危险。研究仍在继续,计算机硬件变得更加强大,当然,在2008年,一群加密专家设法使用三台PlayStation 3游戏机的计算能力打造了MD5签名的SSL证书。当时,安全行业最知名的公司之一布鲁斯施奈尔表示“没有人应该再使用MD5了”。如今,这些话比以往任何时候都更加真实。

研究人员发现MD5仍在广泛使用

自加密社区证明MD5的安全性不足以来已有十多年了,您认为在那个时候,人们会意识到使用它是一个坏主意。不幸的是,虽然SSL证书不再与MD5有任何关系,但在最近的黑客攻击事件中泄露的数据库确实表明一些在线服务提供商继续使用古老的哈希函数。

但是,找出他们中有多少人这样做是不可能的。通常,您不知道密码是如何存储的,虽然您可以随时询问每个网站运营商,但您不会得到所有这些密码的回复。. 即使你这样做,进行可能提供任何有意义数据的规模的调查也是不切实际的。

然而,来自希腊比雷埃夫斯大学的研究人员仍然很好奇,他们组织了一个实验,可能只是给我们一些网站存储我们密码的数据。

今天的大多数网站都建立在开源内容管理系统(CMS)上 - 这些软件可让您通过相对易于使用的后端管理面板控制整个在线平台。甚至一些更加个性化的在线服务通常也基于Web应用程序框架 - 预先编写的计算机代码,作为网站其余部分的基础。

为了避免网站所有者选择和实施密码散列机制的麻烦,几乎所有的CMS和一些应用程序框架都有自己的。希腊的eggheads想知道他们的设计是多么好。结果并不完全令人鼓舞。

研究人员对49个流行的内容管理系统和47个Web应用程序框架进行了实验,他们关注三个主要因素 - 哈希算法本身;散列机制是否采用多次迭代;密码是否在被散列之前被腌制。

默认情况下,13个经过测试的CMS仍依赖MD5进行用户密码的散列,还有6个使用SHA1 - 另一个早已被宣布为过时的功能。有点令人惊讶的是,据报道,据报道,全世界所有网站中占三分之一的CMS都是依赖MD5的CMS之一。

还有更令人不安的数据。 WordPress可能会使用MD5,但至少它会在对它们进行哈希处理之前对其进行处理,并且哈希函数应用了8000多次,所有这些都使密码破解者的工作变得更加困难。 18个测试的内容管理系统不使用迭代,7个不使用用户的密码。

在Web应用程序框架方面,事情并没有根本的不同。只有1个测试框架使用MD5,但总共10个依赖弱哈希函数,6个不使用迭代。其中两个框架不会限制用户的密码。

银色衬里

很容易让毫无疑问令人失望的数字耸人听闻,并说所有使用WordPress的网站都在不安全地存储密码。但这是错误的。

专家研究的目标是CMS的默认散列机制。每个开发人员都可以将其更改为依赖于更强大功能的不同开发人员。更重要的是,即使散列算法不那么强大,盐析和大量迭代仍应足以阻止大多数黑客进入他们的轨道。

该研究确实表明,许多CMS的散列机制并不像它们应该的那样强大,支持和开发它们的社区应该考虑做20个测试系统已经做的事情 - 使用bcrypt作为默认算法保护人们的密码。

如果您的易于猜测和广泛重用的密码落入坏人手中,那么不完美的存储实践永远不会成为借口。因此,普通用户的优先级应该不同。

July 16, 2019

发表评论