密码安全等级

一、Level 0:明文也就是不加密

username password

tom      123456

二、Level 1:摘要式身份验证

验证流程:

  1. 提交用户名密码
  2. 计算密码哈希值
  3. 比对存储的哈希值和计算出的哈希值是否相等

相同:登陆成功
不同:登陆失败
使用哈希算法(可以是 md5, sha1, sha256,sha512 结果长度依次增长):

123456 → SHA-512 → ba3253876aed6b

username password

tom      ba3253876aed6b…

哈希算法缺点:

1、容易遭受彩虹表(rainbow table,如下)攻击!通过把大量的哈希值和原密码存储的组合存储在表中,达到用得到的hash值反向查询原密码。

hash_value         original_password

ba3253876aed6b…    123456

c70b5dd9ebfb6f…    abc123

b109f3bbbc244e…    password

…                  …

2、另外一个缺点是可以看到谁有相同的密码

username password

tom      ba3253876aed6b…

jerry    ba3253876aed6b…

…        …

三、Level 2: 哈希 + salt

学名叫加盐(salt),salt 可以简单的理解成:随机产生的一定长度的,可以和密码相结合,从而使hash算法产生不同结果的字符串。

123456 + 0x23f22(salt) → SHA-512 → bc22711a45e73e5e50f8...

username salt     password

tom      0x23f22  bc22711a45e73e5e50f8…

优点:这种方法会极大防止受到彩虹表的攻击,因为即便攻击者构造出彩虹表,因为你使用了 hash(密码+ salt),攻击者彩虹表里的哈希值(hash(密码))和你数据库中的哈希值是不同的。
缺点: 如果攻击者知道了 salt 和你的哈希值,就可以计算出你的原始密码(当然也没有那么容易)

增强版本:

两次 MD5,使用一个随机字符串 salt 与密码的 md5 值再进行一次 md5,使用很广泛。

由于现在的彩虹表大部分是针对一次 md5 的,当然可能存在多次 md5 的彩虹表,那么我们可以多次 md5,大大增加他的存储成本和少量的计算成本

四、Level 3: 增加计算的时间 (哈希 + salt + Iteration)

通过迭代计算的方式增加计算密码的成本。迭代的周期控制在用户可以接受范围内,这样攻击者的计算和时间成本就会大大增加。

123456 + 0x23f22(salt) → SHA-512 (500000 times) → bc6567567a45e73...

username iteration salt     password

tom      500000    0x23f22  bc6567567a45e73…

类似的方法可以使用: BCript(比正常的 hash + salt 慢 10000 倍,因此增加了 10000 倍的破解成本)

hashed value = BCript(password,salt,cost factor)

123456 + 0x23f22(salt) + 10 (cost factor) → BCript → bc6567567a45e73...​​​​​​​

username    password

tom         $2a$10$rocuFOLJQLDDM12XMDJ32

注:

  1. 一般的应用做到 LEVEL 3 就可以了,如果需要更加安全的方式请看下文。
  2. 增加迭代次数会增加自己的系统的运行成本,比如说:原来用 MD5 时一台服务器解决用户登录问题负载刚好100%,你用这个该死的 bcrypt 算法就需要该死的上万台服务器才能解决问题。

五、Level 4: 加密哈希后的密码 Encrypt(BCript 的结果或者密码 + salt 经过 hash 的结果)

密钥(Encryption key) + BCript 的结果 → AES 256 → ox2c78a32f...​​​​​​​

username    password

tom         1x2c78a32f…
  • 定时更换密钥(准备一组密钥定时更换,首先通过密钥解密加密存储的密码得到 bscript 计算出的 hash 值,在用新的密钥进行加密)
  • 密钥存储在在不同的数据源
    (通过将密钥存储在不同的数据源的方法,进一步增加了破解难度,因为需要同时获得用户密码表数据,同时要获得其他数据源存储的密钥)

五、Level 5: 在 Level 4 的基础上,将密码分成若干个块,分发到不同的数据库

(略)

转载:常见的密码加密措施_weixin_30731287的博客-CSDN博客

(SAW:Game Over!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值