Security 什么';在MD5这样的散列上使用蛮力有什么大不了的
我只是花了一些时间阅读(我强烈推荐!)Security 什么';在MD5这样的散列上使用蛮力有什么大不了的,security,hash,cryptography,md5,sha1,Security,Hash,Cryptography,Md5,Sha1,我只是花了一些时间阅读(我强烈推荐!) 在这本书中,它讨论了散列冲突。也许我在这里遗漏了一些东西,但是你不能只使用MD5加密你的密码,然后使用SHA-1(或者任何其他的,没关系)。这难道不会增加强制哈希和减少冲突的可能性所需的处理能力吗?首先,MD5和sha1不是加密函数,它们是消息摘要函数。此外,在现实世界中,大多数散列都是使用诸如和之类的字典攻击破坏的 John The Ripper最适合攻击者知道salt值的salt密码。Rainbow Crack适用于含有少量未知盐和直接散列的密码,如m
在这本书中,它讨论了散列冲突。也许我在这里遗漏了一些东西,但是你不能只使用MD5加密你的密码,然后使用SHA-1(或者任何其他的,没关系)。这难道不会增加强制哈希和减少冲突的可能性所需的处理能力吗?首先,MD5和sha1不是加密函数,它们是消息摘要函数。此外,在现实世界中,大多数散列都是使用诸如和之类的字典攻击破坏的 John The Ripper最适合攻击者知道salt值的salt密码。Rainbow Crack适用于含有少量未知盐和直接散列的密码,如
md5($pass)
Rainbow Crack需要很长时间来构建表,但之后密码会在几秒钟内被破解。这取决于磁盘驱动器的速度 散列是一种“通过模糊处理进行加密”,这并不是最佳实践。你是对的,理论上它可以“减少”碰撞的可能性,但它可能不会消除这种可能性。更重要的是,散列函数并不是真正的加密函数,谷歌“散列vs加密”提供了数百种解释。当您对密码进行多次散列时,实际上会增加散列冲突的机会,因此最佳做法是只进行一次散列 它也与执行暴力攻击的容易程度无关。这种攻击将系统地尝试给定范围内的所有可能密码。因此,如果您的密码是“foobar”,并且攻击测试了密码“foobar”,那么无论您对密码进行了多少次散列,都无关紧要,因为暴力攻击成功地猜到了密码 因此,如果您希望防范暴力攻击,您可以限制用户尝试授权的频率或要求密码超过一定长度
在旁注上;Rainbow表和类似的方法被黑客使用,他们已经获得了对您数据库的访问权,并打算解密存储的密码。为了使这种攻击更加困难,您应该使用静态和动态盐。您正在讨论两个不同(尽管相关)的问题。第一个是可能发生冲突,第二个是能够对大量值运行算法,以找到创建哈希的原始值
(1/2^128)+(1/2^128)
或1/2^127
碰撞攻击用于完全不同的目的。已经执行的一个示例是为两个冲突的不同身份创建两个X.509证书。提交一个由证书颁发机构签名,然后您可以使用另一个声明您完全是另一个人。由于哈希将与第一个冲突,当/如果用户尝试验证证书时,它将显示为已验证。首先不使用哈希函数创建消息摘要 你的问题: 但是你不能只加密(散列)你的 使用MD5密码,然后, 比如说,SHA-1(或任何其他,都不会 重要的事。) 如果散列函数不提供这些属性中的任何一个,则不管您散列多少次,攻击者也可以散列n次以获得冲突
if H(password+salt)(in system)=H(Your password+salt) (login process)
login else
print<<error