MD5和SHA1有多安全?

7

嘿,只是一个简单的问题,因为我正在尝试更多地了解哈希函数,我知道它们如何工作和它们的功能,但它们有多安全?

我希望得到一个简单的答案,而不是链接,因为我从来没有觉得它们有用。

3个回答

25

随着现今的技术,两者都可以被破解。同时也有哈希字典可以用来找到短字符串所对应的哈希值。

它们是否安全,高度取决于您想要保护什么。如果您正在构建一个在线银行系统,不建议使用它们(具体取决于在线银行系统中它们的使用方式)。如果您仅将其用于在线用户密码散列,那么还要考虑:您的网站是否值得破解,您有多少用户等等。

一般建议是,先研究您在场景中要实现的安全级别,然后决定使用哪些技术(在这种情况下是哈希)。而且没有100%的安全性。同时,不要将太多时间投入到一个安全问题上,并忽略其他可能不太明显或技术性不强的问题(如人为错误,安全性通过深奥难懂实现,社交工程)。

请看这个:

  1. 这里为一个小单词生成哈希值。例如,password 的MD5哈希为:5f4dcc3b5aa765d61d8327deb882cf99
  2. 现在去这里查询对应的文本。

上面的例子只是许多可能存在的(字典攻击)方式之一。而且每种安全算法的维基百科文章都会提供其漏洞列表。

还可以看看这个:

顺便说一下

永远不要让网站为您使用的真实密码生成哈希值(例如您需要在某处进行测试或出于其他原因)。始终使用测试密码,或在本地计算机上生成哈希值。那些构建哈希数据库的人(无论是黑客还是其他人),都提供在线哈希工具以捕获哈希值。


如果您觉得这篇文章有帮助,请点赞!这不仅仅是为了我的声誉,也是为了其他有同样问题的人。 - Gabriel Petrovay

1

这里是MD5和SHA1之间的比较。您可以清楚地了解哪个更好。

enter image description here


为了完整起见,SHA-1已经存在“成功攻击”,谷歌发现两个不同的消息生成相同的哈希值。MD5像可以一样不安全。如果可以的话,请不要使用它们,而是转向SHA-512或其他更安全的哈希函数。 - Ordoshsen

1
当讨论哈希安全性与暴力破解时,我们应该考虑更多因素吗?
首先,MD5混淆数据存储在可信区域中还是不是。换句话说,我们是否信任数据库管理员不会尝试从数据库中读取用户密码并进行暴力反转。这可以通过某些安全程序(数据库管理员可能无法访问存储密码哈希的表,只能由安全官员访问)来信任或技术上授权。
另一个是从客户端或客户端服务器事务中劫持登录+密码哈希对的可能性。如果客户端中没有特洛伊木马,并且客户端和服务器之间的通信是TLS安全的,则该对应该免受中间人攻击。
攻击者剩下的就是(除了社交工程、xss和托管安全突破之外),随后向登录服务器发送大量生成的请求,并查看其中一个是否成功。这也可以管理:
- 成功和失败的登录后可能会有一些随机的延迟时间,以减缓暴力破解过程 - 登录过程可能会排队同一IP的并行登录请求以及具有相同登录名的并行登录(以执行上述规则) - 可以实现未成功登录的限制,在超过限制后,将锁定帐户并启动安全警报。
我认为,如果实施了上述规则,MD5哈希就足够安全了。事实上,它与普通密码一样安全 :) 总之,如果我们相信我们的MD5哈希是安全的,我们可以简单地留下密码不加密。但是,现在根本没有使用MD5(用于密码混淆)。当可信区域不需要管理时,应该将其存储为明文或使用更强大的工具(如SHA)。在我看来,可信区域仍然面临服务器(托管服务)安全破坏的风险,因此无论如何都要使用SHA(或更好)来混淆密码 :) 这不应该花费很多成本来加固密码哈希本身,并带来一些好处(减少风险),所以我的建议是永远不要再讨论这个问题。

即使使用SHA哈希,所有上述安全规则仍应实施。特别是TLS,它可以防止登录+密码对被攻击者妥协(无论密码是以明文还是使用MD5或SHA散列,都可能导致成功登录)。同时还应监控登录尝试。即使我们相信自己的网站是防暴力破解的,了解有人正在尝试破解安全性也是有益的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接