5种用户密码加密方式介绍,选择哪种最安全?

安全 数据安全
用户密码保存到数据库时,常见的加密方式有哪些?以下几种方式是常见的密码保存方式。

作为互联网公司的信息安全从业人员经常要处理撞库扫号事件(撞库是黑客无聊的“恶作剧”,黑客通过收集互联网已泄露的用户+密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登陆的用户),产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。

以京东之前的撞库举例,首先京东的数据库并没有泄漏。黑客只不过通过“撞库”的手法,“凑巧”获取到了一些京东用户的数据(用户名密码),而这样的手法,几乎可以对付任何网站登录系统,用户在不同网站登录时使用相同的用户名和密码,就相当于给自己配了一把“万能钥匙”,一旦丢失,后果可想而知。

今天主要分别介绍用户密码的加密方式以及主要的破解方法。

超详细的5种用户密码加密方式介绍,选择哪种最安全?

彩虹表

用户密码加密方式

用户密码保存到数据库时,常见的加密方式有哪些?以下几种方式是常见的密码保存方式:

1. 明文保存

比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。

2. 对称加密算法来保存

比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。

超详细的5种用户密码加密方式介绍,选择哪种最安全?

3. MD5、SHA1等单向HASH算法

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

其实之前公司也是采用的这种MD5加密方式。

超详细的5种用户密码加密方式介绍,选择哪种最安全?

4. PBKDF2算法

该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。

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

超详细的5种用户密码加密方式介绍,选择哪种最安全?

5. bcrypt、scrypt等算法

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

在密码学中,scrypt(念作“ess crypt”)是Colin Percival于2009年所发明的金钥推衍函数,当初设计用在他所创立的Tarsnap服务上。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量内存运算。

Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利 用rainbow table进行暴力攻击更加困难。Scrypt 没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,Scrypt 在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。

各个算法的特性

超详细的5种用户密码加密方式介绍,选择哪种最安全?

总结

采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2012-11-15 13:52:07

系统密码加密加密系统安全

2018-11-13 12:56:57

2016-05-03 10:05:36

2013-04-11 09:51:43

编程语言

2010-02-22 14:53:17

WCF用户密码

2018-10-22 14:34:51

欺骗技术网络安全攻击

2019-06-05 13:39:11

2020-02-29 09:21:19

信息安全人工智能网络安全

2010-05-19 13:37:39

MySQL数据库密码

2019-11-21 11:10:21

云迁移云计算

2017-10-23 13:20:37

2022-10-18 22:21:51

2018-05-30 08:31:08

2010-03-10 09:44:51

Linux启动引导加密

2020-11-24 05:59:41

容器

2018-03-13 09:34:30

人工智能编程语言Python

2011-07-27 13:48:30

iPhone 安全

2011-08-16 17:18:44

iPhone开发安全

2014-03-14 09:45:18

2019-06-03 12:02:37

点赞
收藏

51CTO技术栈公众号