1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 如何安全存储用户密码/数据库安全存储密码的方式

如何安全存储用户密码/数据库安全存储密码的方式

时间:2023-11-16 10:32:31

相关推荐

如何安全存储用户密码/数据库安全存储密码的方式

总的来讲,目前公认比较安全的存储密码方式是PBKDF2, BCrypt 或 SCrypt 算法产生的密码

历史上密码加密存储经历了如下几个阶段:

1. 单向hash(MD5)

做单向的hash加密,以MD5和sha算法为代表,这类做法比明文直接存储看起来要安全,但是如果在db被攻破的时候,以目前计算机的算力加之黑客的各种技术手段,其实跟明文是差别不大的,我们知道密码学里面破解密码最笨的一种方法是暴力破解,随着目前计算机硬件的发展,带来计算能力的提升,每秒钟上亿次的hash计算已经不是问题,直接暴力破解几乎是分秒的事情,另外与之相近的有一种字典表/彩虹表破解的手段,原理很简单,黑客们会把常见密码以及各种hash算法加密后的字符串整理到一个表中,因为只要是同一明文密码同一hash算法得出的值就是一样的,也就是说黑客不断完善整理的彩虹表可以用来任何MD5加密系统的破解,带着破解的db用户MD5密码那一列信息,直接循环去select 明文 from 字典表/彩虹表 where 密文 = 密码,基本可以破解目前多数人设置的普通密码。

2. hash+盐

早期为了改进单向hash的缺陷,为了让彩虹表失效,引入了盐,盐是随机生成的一个唯一字符串,连在明文密码后增强密码的随机性,然后再做hash得到的加密密文存储在db中,这样一个是相同的密码存在db中的值就不同了,另一个是彩虹表也不会再起作用了。但是同样以目前计算机的算力,暴力破解也是分分钟的事情,因为为了校验密码的原因,我们一般会把这种方法生成的密码和盐一块存在db中,明文+盐 hash= 密码,黑客在拿到盐和加密密码后,只需要用计算机不断去生成明文,然后计算就可以很快破解。这种方法是避免了彩虹表,但是暴力破解还是避免不了。

这种情况类似于目前比特币挖矿,以目前矿机的算力挖矿,加之比特币不断增加hash碰撞难度,暴力破解确实越来越困难,比特币越来越稀有,但是随着量子高性能计算机的发展,未来可能比特币这种hash碰撞的难度也是分秒钟的事。

3.PBKDF2, BCrypt 或 SCrypt 算法

这类算法有一个特点,算法中都有个因子,用于指明计算密码摘要所需要的资源和时间,也就是计算强度。计算强度越大,攻击者建立rainbow table越困难,以至于不可继续。这类算法也可以保证即使计算能力不断提高,只要调整算法中的强度因子,密码仍然不可能被轻易的攻破。

另:第三方密码存储服务商

如果一个系统对于密码存储的要求实在很高,比如说如果用户密码泄露会造成大量现金流失,损失是毁灭性不可逆的,那么可以考虑第三方密码存储服务商。在欧美金融界以及电商界,许多早期的大型银行,信用卡,金融机构的线上密码存储,就使用了比较靠谱的第三方存储服务,一方面是自身去开发维护一套复杂的密码存储系统成本可能比整个线上系统还要高,另一方面为了风险规避以及转移。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。