常见的用户密码加密方式以及破解方法

“ 要完全防止信息泄露是非常困难的事情“”,除了防止黑客外,还要防止内部人员泄密。但如果采用合适的算法去加密用户密码,即使信息泄露出去,黑客也无法还原出原始的密码(或者还原的代价非常大) 。也就是说我们可以将工作重点从防止泄露转换到防止黑客还原出数据。

作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。目前已经曝光的信息泄露事件至少上百起,其中包括多家一线互联网公司,泄露总数据超过 10 亿条。用户密码加密用户密码保存到数据库时,常见的加密方式有哪些,我们该采用什么方式来保护用户的密码呢?以下几种方式是常见的密码保存方式:

明文保存

直接明文保存, 比如用户设置的密码是“ 123456”,直接将“ 123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。使用对称加密算法来保存,比如 3DES 、AES 等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。

MD5 、SHA1 等单向 HASH 算法

使用 MD5 、SHA1 等单向 HASH 算法保护密码,使用这些算法后,无法通过计算还原出原始密码, 而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。

特殊的单向 HASH 算法

特殊的单向 HASH 算法,由于单向 HASH 算法在保护密码方面不再安全, 于是有些公司在单向 HASH 算法基础上进行了加盐、 多次 HASH 等扩展, 这些方式可以在一定程度上增加破解难度, 对于加了“固定盐”的HASH 算法,需要保护“盐”不能泄露, 这就会遇到“保护对称密钥”一样的问题, 一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH ,也只是增加了破解的时间,并没有本质上的提升。

PBKDF2 算法

PBKDF2 算法,该算法原理大致相当于在 HASH 算法基础上增加随机盐, 并进行多次 HASH 运算,随机盐使得彩虹表的建表难度大幅增加, 而多次 HASH 也使得建表和破解的难度都大幅增加。使用 PBKDF2 算法时, HASH 算法一般选用sha1 或者 sha256 ,随机盐的长度一般不能少于 8 字节,HASH 次数至少也要 1000 次,这样安全性才足够高。一次密码验证过程进行 1000 次 HASH 运算,对服务器来说可能只需要 1ms ,但对于破解者来说计算成本增加了 1000 倍,而至少 8 字节随机盐,更是把建表难度提升了 N 个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。

bcrypt 、scrypt 等算法

bcrypt 、scrypt 等算法,这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要指定相应的参数,使破解难度增加。

下表对比了各个算法的特性:

算法特点有效破解方式破解难度其它
明文保存实现简单无需破解简单极不安全
对称加密可以解密出明文获取密钥需要确保密钥不泄露
单向 HASH不可解密碰撞、彩虹表可以建立彩虹表进行查表破解已经很不安全了
特殊 HASH不可解密碰撞、彩虹表根据“盐”重新建立彩虹表可以进行破解需要确保“盐”不泄露
Pbkdf2不可解密需要设定合理的参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gxhlh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值