1
txlty 2014-12-11 21:35:00 +08:00
明文——md5 不是先后出现,而是并行出现。互联网普及之前,md5就发明出来了。
2003年主流的建站程序都已经采用了md5。而今天,还有很多新开发的网站明文储存密码。 |
2
CoX 2014-12-11 22:05:57 +08:00
PHP用Password Hashing 函数, Python用bcrypt库
应该是一个比较好的解决方案 |
3
bellchu 2014-12-11 22:13:48 +08:00
多重密码是现在比较好的保密措施,05年开始用RSA的Token Ring,虽然是混合加密的老大,但是每天带这个钥匙环一样的东西实在麻烦,还不能忘记带。后来出了手机上的RSA的APP,稍微方便一点,但是时间服务器配对也很烦。
现在给公司用的DUO双重验证,效率很高,三种方式拿密钥,楼主说的手机验证码就是其中一种,也可以语音验证,App验证。 感兴趣的可以看看 https://www.duosecurity.com/ |
4
ChanneW 2014-12-11 22:17:23 +08:00
多重认证 麻烦啊
|
5
whywhywhy 2014-12-11 22:44:20 +08:00
如果算法和密文都暴露,那破解真的只是时间问题,特别是有钱或者有权利的时候,这个时间会大大缩短
所以最重要的是,不要被获得密文,或者不要被获得算法,你可以在MD5的基础上修改它的算法,甚至存储的时候依然叫MD5,让破解者依旧用md5的方式去寻找原文(说是原文也不对,算是彩虹表中一条对应的记录吧),很显然就算他找到“原文”,也依然不会通过验证,因为你的算法根本不是MD5。 只要你在程序里限制了验证的频率又不同时暴露密文和算法,这样基本上就安全了。 嗯 最后还要排除掉传输的时候不要使用明文的方式……比如可以采用签名的方式 |
6
zhicheng 2014-12-11 22:50:31 +08:00
用 PBKDF2 吧,对于非密码专业人士,最好不要自己相当然的 roll 一套机制。
多重认证也不一定安全,尤其是在密码已经泄露的时候。 GSM 短信是明文可以监听的。 二阶段认证很多人的使用是不合理的,在上一家公司做顾问的时候,review 他们的代码,他们就犯了典型的错误,在取消二次认证的时候,需要认证,但是在设置的时候不需要,如果我拿到密码,直接用 curl 提交一个新的key到他们的设置二次认证的接口上就可以了。告诉他们工程师是完全不理你的。 另外,任何加密手段,暴力破解都是有效的,除了一次一密密码本。 可以提几点来简单增加安全性, 在传输密码的接口上用 HTTPS ,最好带绿条的。 在登录接口加 rate limit ,不要只限制 IP ,要限制 ID 。 Session ID 不要用自增 int 。 服务器时间尽量准确。 生成密码摘要的 salt 要每个都不一样,如果自己 roll 的话。 进阶的可以, 敏感数据分库分权限存储,密码,信用卡号码等。 买套代理服务器IP库,限制代理访问。 上 WAF 。 |
7
mybin 2014-12-12 10:35:43 +08:00
严格的来讲password应该叫做口令吧,对于口令来讲定期更换能解决一些问题,如果再结合动态口令的话会更好一些。
MD5碰撞是针对数字签名的,虽然能碰撞但不能形成有意义的碰撞,对数字签名来讲目前还没有实质性的影响。 用MD5 |