【发布时间】:2013-05-18 19:20:39
【问题描述】:
嘿,只是一个简单的问题,因为我试图更多地了解哈希函数,我知道它们是如何工作的以及它们做什么,但是它们有多安全?
我会很感激一个简单的答案而不是链接,因为我从来没有发现它们有用。
【问题讨论】:
嘿,只是一个简单的问题,因为我试图更多地了解哈希函数,我知道它们是如何工作的以及它们做什么,但是它们有多安全?
我会很感激一个简单的答案而不是链接,因为我从来没有发现它们有用。
【问题讨论】:
使用当今的技术,两者都可以是cracked。还有hash dictionaries 可以帮助找到哈希对短字符串的含义。
它们是否安全,很大程度上取决于您要保护的内容。如果您正在构建网上银行系统,则根本不推荐使用它们(取决于他们在网上银行系统中使用的位置)。如果你只是为了在线用户密码哈希来实现它们,例如,它还取决于:你的网站是否值得破解,你有多少用户等。
一般建议是首先研究您希望在您的场景中实现的安全级别,并决定您使用哪些技术(在本例中为哈希)。也没有 100% 的安全性。也不要在一个安全问题上投入太多时间,而忽略其他可能不那么明显或技术性不强的问题(人为错误、默默无闻的安全性、人为工程)。
看看这个:
上面的例子只是破解它们的众多(字典攻击)方法之一。每个安全算法的维基百科文章还为您提供了漏洞列表。
另见:
旁注
切勿让网站为您拥有的真实密码生成哈希(以防您在某处出于测试或其他原因需要它)。 始终使用测试密码,或在本地计算机上生成哈希。构建哈希数据库的人(黑客或非黑客)也提供用于捕获哈希的在线哈希工具。
【讨论】:
在讨论哈希安全与蛮力时,我们不应该考虑更多吗?
首先,md5 混淆数据是否存储在受信任区域。换句话说,我们是否相信我们的数据库管理员不会尝试从数据库中读取用户密码并暴力破解它们。这可以通过一些安全程序获得信任或技术授权(数据库管理员可能无权访问存储密码哈希的表,这可能仅供安全人员访问)。
另一个是从客户端或客户端-服务器事务劫持登录+密码哈希对的可能性。如果客户端中没有特洛伊木马,并且客户端和服务器之间的通信是 TLS 安全的,则该对应该是安全的,不会受到中间人攻击。
留给攻击者的是(除了社会工程、xss 和主机安全漏洞之外)随后将生成的请求数量发送到登录服务器并查看一个是否成功。这也可以管理:
我相信当实施上述规则时,md5 散列是足够安全的。事实上,它和普通密码一样安全 :) 总而言之,如果我们相信我们的 md5 哈希是安全的,我们可以简单地让密码不被发现。扭曲的是,现在根本没有使用 md5(在密码混淆方面)。应该做的是将其保留在受信任区域的存储中,或者在不管理受信任区域时使用一些更强大的工具(如 SHA)。而且在我看来,受信任的区域仍然面临服务器(托管服务)安全漏洞的风险,所以无论如何简单地用 SHA(或更好)来混淆密码带来一些好处(降低风险),所以我的建议是永远不要再重新讨论这个讨论。
即使使用 SHA 散列,仍应实施所有口头安全规则。特别是 TLS,它可以防止破坏登录+密码对(无论密码是明文发送还是使用 md5 或 sha 散列,它都可以成功登录)。还应监控登录尝试。即使我们相信我们的网站是暴力破解的,也很高兴知道有人试图破坏安全性。
【讨论】: