V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dungeonsnd
V2EX  ›  问与答

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

  •  
  •   dungeonsnd · 2016-06-20 15:50:50 +08:00 · 1506 次点击
    这是一个创建于 2868 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    4 条回复    2016-06-20 17:05:31 +08:00
    fetich
        1
    fetich  
       2016-06-20 16:58:06 +08:00
    都放弃治疗了,就别操太多心了。
    yeyeye
        2
    yeyeye  
       2016-06-20 17:00:19 +08:00
    一般要限制密码的强度 要不然用户就会乱七八糟设密码 限制了规则 用户又会很遵守 所以稍微限制一下是很有必要的
    jugelizi
        3
    jugelizi  
       2016-06-20 17:04:26 +08:00
    所以为什么允许用户弱口令?谁背安全的锅?
    密码目前加盐 salt 位数 6 位以上再二次 md5 即便脱裤也不会大范围被爆破呀
    gamexg
        4
    gamexg  
       2016-06-20 17:05:31 +08:00
    增加解密计算量。
    为了防止预先准备彩虹表,在为每用户独立生成盐即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   872 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:53 · PVG 05:53 · LAX 14:53 · JFK 17:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.