回想2011年CSDN密码泄露时全是明文的,雅虎这次至少还算是加密过的,那加密过的密码是否就是安全的呢?我们先来看看平时经常遇到的一个问题。 我们经常会在各种网站上注册账号,如果用的全是一个密码,那恭喜你,一旦一个网站中招,那你的账号就全军覆没了,但是如果不是用相同的密码,我们又经常会忘记自己用的什么密码了,于是登陆界面上一般都会有忘记密码的选项,但后续操作大都是回答安全问题后重置密码。 你可能会有一个疑问,既然我都通过了安全问题的验证,都有重置密码这么高的权限了,服务器干脆告诉我原来我用的密码是什么就好了,为啥还要重置密码,搞这么麻烦呢? 虽然我们几乎每天都在登陆,输密码,但是服务器是如何保存密码,我们是不知道的,像CSDN这种居然明文存储密码的,我们自然是万万没有想到,至少也加个密意思一下吧。 不过加密了就安全了吗?显然也不是,先不说技术上能否破解加密,从人员管理角度来讲,如果是加密的密码,掌握后台服务器管理权限的人自然能够知道解密的密钥,这本身就已经非常不安全了,特别是金融行业。 你可能会问,如果后台不能明文存密码,加密的密码也不可以,那登陆时的输入的密码后台怎么存储,怎么通过验证呢? 密码要安全,首先要保证原始密码经过算法转换后的值是唯一确定的,且是不可逆的(比如经常听说的MD5,SHA算法),就是说如果经过算法转换后的值相同,那么就认为输入的密码也是相同,但是没有办法通过得到的值去反推原始密码,即使是服务器的管理员也是不知道的。所以这里也回答了之前的问题,为啥忘记密码每次都得重置密码,而不是告诉你原来的密码是什么,所以一旦你忘记,那就成了永远的秘密。(当然没有绝对的不可逆,一切都只是时间问题) 不过,密码不可逆就安全了吗?当然也不是,同一个密码经过算法转换后的值唯一,虽然不能反推,但是正推还是可以的,比如把常见的密码组合经过算法转换后做成一张对应表,然后将表拿去和服务器的密码库的的值做比对,如果相同,那么就能在表中反查原始的密码。所以平时尽可能还是把密码设的复杂点,不过前提是服务器没有明文存储... |
|