如果您查看过 ASP.NET 会员系统的表架构,它们会存储原始密码的哈希值以及用于生成密码的盐。请参阅下面的架构,
dbo.aspnet_会员资格
ApplicationId
UserId
Password
PasswordFormat
PasswordSalt
MobilePIN
Email
. . .
Related
如果攻击者知道盐,那么它们对安全性是否毫无用处? https://stackoverflow.com/questions/1098452/are-salts-useless-for-security-if-the-attacker-knows-them
有关 ASP.NET 密码/哈希/盐存储的详细信息,请参阅示例http://msdn.microsoft.com/en-us/library/aa478949.aspx http://msdn.microsoft.com/en-us/library/aa478949.aspx
攻击者是“允许”了解盐 - 您的安全性设计必须确保即使了解盐,它仍然是安全的。
盐有什么作用?
Salt 使用预先计算的“彩虹表”帮助防御暴力攻击。
对于攻击者来说,盐使得暴力破解的成本更高(在时间/内存方面)。
计算这样一张表的成本很高,并且通常仅在可用于多个攻击/密码时才进行。
如果您对所有密码使用相同的盐,攻击者可以预先计算这样的表,然后将您的密码暴力破解为明文......
只要您为每个要存储散列的密码生成一个新的(最好的加密强度)随机盐,就没有问题。
如果您想进一步加强安全性
您可以多次计算哈希值(哈希哈希值等) - 这不会花费您太多钱,但它会使暴力攻击/计算“彩虹表”更加昂贵......请不要发明自己- 有经过验证的标准方法可以做到这一点,请参见示例http://en.wikipedia.org/wiki/PBKDF2 http://en.wikipedia.org/wiki/PBKDF2 and http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx
NOTE:
如今使用这样的机制强制的因为“CPU 时间”(可用于彩虹表/暴力破解等攻击)变得越来越广泛(例如,亚马逊的云服务跻身全球最快超级计算机前 50 名,任何人都可以使用相对较小的金额)!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)