dungeonsnd
V2EX  ›  问与答

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

  •  
  •   dungeonsnd · Jun 20, 2016 · 2336 views
    This topic created in 3642 days ago, the information mentioned may be changed or developed.

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

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

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

    4 replies    2016-06-20 17:05:31 +08:00
    fetich
        1
    fetich  
       Jun 20, 2016
    都放弃治疗了,就别操太多心了。
    yeyeye
        2
    yeyeye  
       Jun 20, 2016
    一般要限制密码的强度 要不然用户就会乱七八糟设密码 限制了规则 用户又会很遵守 所以稍微限制一下是很有必要的
    jugelizi
        3
    jugelizi  
       Jun 20, 2016
    所以为什么允许用户弱口令?谁背安全的锅?
    密码目前加盐 salt 位数 6 位以上再二次 md5 即便脱裤也不会大范围被爆破呀
    gamexg
        4
    gamexg  
       Jun 20, 2016
    增加解密计算量。
    为了防止预先准备彩虹表,在为每用户独立生成盐即可。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4039 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 00:55 · PVG 08:55 · LAX 17:55 · JFK 20:55
    ♥ Do have faith in what you're doing.