加盐Hash与密码扩展

本文探讨了在保护用户密码安全方面,加盐Hash和密码扩展的重要作用。通过加盐Hash,可以增加攻击者反推原始密码的难度,而密码扩展如bcrypt则进一步提升安全性。在认证过程中,服务器使用独立生成的Salt,确保即使数据被拖库,攻击者也无法轻易伪造登录请求。此外,文章还提出了如何快速检测拖库攻击的方法,包括设置账号数据表陷阱和数据值陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

保护一个网站的安全,是多方面的努力,如何保障数据不被拖库,这里就不讲了。
首先来说说密码加密,现在很少有系统会直接保存用户的密码了。至少也应该是计算密码的MD5/SHA哈希后保存。这种不可逆的加密方法理论上已经很安全了,但是随着彩虹的出现,GPU并行计算能力的不断提升,使得大量长度不够的密码可以直接从彩虹表反推出来。

安全的终极目的:

即使在数据被拖库,代码被泄露,请求被劫持的情况下,也能保证用户的密码不被泄露。
具体来说,我们的心中的安全系统大概是这样的:
1. 首先保障数据很难被拖库。
2. 即使数据被拖库,攻击者也无法从中破解出用户的密码。
3. 即使数据被拖库,攻击者也无法伪造登录请求通过验证。
4. 即使数据被拖库,攻击者劫持了用户的请求数据,也无法破解出用户的密码。

加盐Hash的应用

只对密码进行哈希运算时肯定的不够,这样程序员想出了一个办法,即使用户的密码很短,只要我在他的短密码后面加上一段很长的字符,在进行HASH运算,那么反推出原始密码就非常困难了。加上的这段长字符,我们称为盐(Salt),通过这种方式加密后,我们称为加盐Hash,例如:

SHA512(SHA512(Password)+ Salt)

通过以上加盐运算,即使攻击者拿到最终结果,也很难反推出原始的密码。不能反推,但是可以正推,假设攻击者将Salt值也拿到了,那么他可以枚举密码,加盐Salt哈希,计算出一个结果对照表,从而破解出简单密码,为了增加攻击者的成本,我们可以采用密码扩展。

密码扩展

为了增加攻击者的成本,我们采用密码扩展,使用加盐的慢Hash。慢Hash是指执行这个Hash函数非常慢,这样暴力破解就需要花上非常非常长的时间。
比如:bcrypt就是这样一个慢哈希函数:

bcrypt(SHA512(password),salt,cost)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值