MD5和SHA1的安全性如何

时间:2013-05-23 12:21:10

标签: md5 sha

嘿,这只是一个简单的问题,因为我试图更多地了解Hash函数,我知道它们是如何工作的以及它们的作用但是它们有多安全?

我很感激一个简单的答案而不是链接,因为我从未发现它们有用。

3 个答案:

答案 0 :(得分:23)

现在的技术,都可以是cracked。还有hash dictionaries可以帮助找到哈希对短字符串的意义。

如果它们是否安全,则高度取决于您想要保护的内容。如果您正在构建在线银行系统,则根本不建议使用它们(取决于他们使用的在线银行系统中的位置)。例如,如果您仅为在线用户密码哈希实现它们,它还取决于:您的网站是否值得破解,您拥有多少用户等等。

一般建议是首先研究您希望在您的场景中实现的安全级别,并确定您使用的技术(在本例中为散列)。也没有100%的安全性。也不要在一个安全问题上投入太多时间,而忽略那些可能不那么明显或技术性的问题(人为错误,默默无闻,人类工程安全)。

检查出来:

  1. 为小词here生成哈希值。例如,password具有MD5哈希:5f4dcc3b5aa765d61d8327deb882cf99
  2. 现在转到here并回复文字。
  3. 上面的例子只是众多(字典攻击)破解它们的可能方法之一。此外,每个安全算法的维基百科文章都为您提供了漏洞列表。

    另见:

    SIDE NOTE

    从不让网站为您拥有的真实密码生成哈希值(如果您出于测试或其他原因需要它)。 始终使用测试密码,或在本地计算机上生成哈希值。构建哈希数据库的人(黑客或非黑客)也提供用于捕获哈希的在线哈希工具。

答案 1 :(得分:0)

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

enter image description here

答案 2 :(得分:0)

在讨论哈希安全与蛮力时,我们不应该考虑更多吗?

首先,md5是否存储在受信任区域中的模糊数据。换句话说,我们是否相信我们的数据库管理员不会尝试从数据库中读取用户密码并强制反转它们。这可以通过某些安全过程来信任或技术上授予(db admin可能无权访问存储密码哈希的表,这可能仅供安全人员访问)。

另一种可能是从客户端或客户端 - 服务器事务中进行登录+密码哈希对劫持。如果客户端中没有特洛伊木马,并且客户端和服务器之间的通信是TLS安全的,则该对应该是安全的,不受中间人攻击。

攻击者剩下的是(除社交工程,xss和托管安全中断之外)随后将生成的请求数发送到登录服务器并查看是否成功。这也可以管理:

  • 登录成功和失败后,可能会有一些随机的 服务响应减速蛮力过程之前的滞后时间
  • 登录进程可以将具有相同登录名的相同IP和并行登录的并行登录请求排队(以强制执行上述规则)
  • 对于不成功的登录可能会有限制,超过帐户被锁定并启动安全警报后

我相信当实施上述规则时,md5哈希足够安全。事实上,它与普通密码同样安全:)如果我们相信我们的md5哈希是安全的,那么我们可能只是简单地保留密码。现在的扭曲是根本没有使用md5(在密码混淆的问题上)。应该做的是将其保留在受信任区域的存储中,或者在不管理受信任区域时使用一些更强大的工具(如SHA)。在我看来,受信任的区域仍然存在服务器(托管服务)安全中断的风险,因此无论如何都只是使用SHA(或更好)简单地模糊密码:)这对于强化密码哈希本身而言并不是代价高昂的带来一些好处(降低风险)所以我的建议永远不会再次重新讨论这个讨论。

即使使用SHA哈希,仍应实施所有语音安全规则。特别是TLS,它可以防止破坏登录+密码对(无论密码是普通的还是使用md5或sha进行散列,都可以成功登录)。还应监视登录尝试。即使我们相信我们的网站是强力证明的,但知道有人试图破坏安全性也是件好事。