用户提供简单密码时如何保护用户数据

2016-06-20 15:50:50 +08:00
 dungeonsnd

用户提供密码(password)来加密用户的数据,但是通常用户提供的密码较为简单。有没有一个可靠的方案来根据用户密码生成密钥来加密数据,使得加密数据不容易被常规破解?

简单点的方案是使用一个服务端生成的与用户相关的随机串作为盐 salt ,然后生成真正的对称加密密钥(password 和 key 都不存储在服务端,而 salt 存储在服务端),如 key=sha256(password+salt)

但是这样其实最大的隐患是 salt 表不能丢,一旦 salt 表泄漏,还是难免被穷举,而且用户经常使用有意义的词,所以较容易破解成功。

1539 次点击
所在节点    问与答
4 条回复
fetich
2016-06-20 16:58:06 +08:00
都放弃治疗了,就别操太多心了。
yeyeye
2016-06-20 17:00:19 +08:00
一般要限制密码的强度 要不然用户就会乱七八糟设密码 限制了规则 用户又会很遵守 所以稍微限制一下是很有必要的
jugelizi
2016-06-20 17:04:26 +08:00
所以为什么允许用户弱口令?谁背安全的锅?
密码目前加盐 salt 位数 6 位以上再二次 md5 即便脱裤也不会大范围被爆破呀
gamexg
2016-06-20 17:05:31 +08:00
增加解密计算量。
为了防止预先准备彩虹表,在为每用户独立生成盐即可。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/287045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX