Wal*_*ssa 0 security passwords hash
我并不认为自己是安全方面的专家,但在我看来,添加盐并没有真正产生巨大的影响.
例如,如果用户的密码是john1970且salt是123456,这意味着密码是123456john1970,这会使攻击者更难(如果使用字典攻击,例如彩虹表),攻击者很可能猜猜第一部分是盐.我发现使用非标准方法(如使用一些键进行异或或对字符的代码应用一些简单的数学运算)更有效.我知道你们中的大多数人可能不会同意我的观点,但这对我来说似乎更有意义.
你的意见?
重复:
Jim*_*m T 21
不添加盐以使前端猜测密码更难,添加它们是为了确保密码的存储不会泄漏额外信息.
事实上,盐是为每个密码随机生成的,并且在密码旁边没有任何形式的混淆存储.
密码永远不会存储在数据库中,只存储散列(MD5,SHA1,SHA2*等).
"密码"的MD5始终为286755fad04869ca523320acce0dc6a4.如果您只是将MD5存储在密码数据库中,您只需查找该字符串并知道密码是否为"密码".
通过添加'84824'的盐,总和变为2ca20e59df3a62e5dc4a3a0037372124.但是如果你有另一个数据库(或其他用户使用相同的密码),他们可能有一个'8999'的随机盐,给出:4e7a210a07958cfe24138a644cbb7f84
关键是如果攻击者要获得密码数据库的副本,密码哈希将毫无意义; 您甚至无法判断2个或更多用户是否使用相同的密码.
编辑:
相比之下 - 你应用的数学公式可以颠倒过来.如果您选择salt,然后使用密码哈希对盐进行异或,那么攻击者可以撤消XOR操作并获取原始哈希值,此时彩虹表非常有用.
如果您认为数学公式无法逆转,那么您实际上可能会丢失数据,并且您正在将多个密码映射到相同的最终哈希值.这实际上会增加攻击者为哈希找到密码的机会,因为任何适当的密码都可以使用.
如果你是XOR'ing并保持XOR值安全,那么它只是需要保存在某个地方的额外秘密,泄露这个秘密会有效地丢失所有密码(同样由于彩虹表).使用盐没有额外的秘密,操作不能反转,但可以重复,每个密码需要单独攻击.
编辑:当然现在这完全相关:我刚刚以你的身份登录
Log*_*ldo 10
salt与加密哈希一起使用,而不仅仅是在密码的前面加上.您不存储盐渍密码或密码,而是存储盐渍密码的哈希值.salt的目的是保护用户免受"错误"密码选择的影响,而不是模糊密码.你永远不会只使用盐.
澄清:盐不会防止字典攻击.它可以防止彩虹表式攻击,其中生成大型哈希表和相应的输入文本.良好的密码可防止猜测(字典攻击),盐可帮助防止某人掌握您的散列密码,使用预先计算的表格变得昂贵.当我说"坏"时,我的意思是可能存在于现存表中的密码.
盐被设计成防御彩虹桌,但它的美妙之处在于,它知道它是一种盐,绝不会削弱它作为防御措施.这是因为盐不具有某些神奇属性或任何东西 - 这是因为它是攻击者输入的密码中添加的额外信息,并且特定于他正在攻击的密码 - 它不是可以的重用于多个帐户 - 甚至不是同一服务器上的多个帐户.
当然,攻击者可以将盐添加到他的彩虹表中,但是你刚刚制作的彩虹表必须比你用作盐的数据更大.
如果你添加两个随机字节,你就会使攻击者彩虹表必须是65536倍.这并非无关紧要.添加四个随机字节,因子超过40亿.
你所说的没有任何意义.我们来看一个简化的例子来演示.假设您正在使用MD5,并且攻击者有一个表.该表包括:
john1970-> D3 88 99 BC 0C B5 DC 0E D1 7F BB F7 EB F4 EA B2
如果他们然后窃取你的无盐数据库并看到一个哈希D3 ... B2,他们就会知道(忽略冲突)密码是john1970,然后他们就可以在你的网站上使用该密码,也可能使用其他密码.但是,如果你使用盐123456(显然,随机的一个会更好),他们会看到一个哈希:
2A CA 76 59 03 23 35 61 E0 20 49 11 8F FE F3 0E
代替.即使他们在获得哈希值时能够妥协盐(你应该试着通过单独存储来防止这种情况),他们将留下:
md5(x + 123456)= 2A ... 0E
而且无法轻易确定x.盐是一种非常强大的技术,应尽可能使用.另一方面,你所谓的"非标准方法"似乎是发明你自己的未经证实的散列算法的半试图.算了.
| 归档时间: |
|
| 查看次数: |
3614 次 |
| 最近记录: |