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

如何安全地存储明文密码?

  •  
  •   devliu1 · 2021-12-23 21:34:36 +08:00 · 1861 次点击
    这是一个创建于 1096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在特定的场景下需要存储密码明文,( hash 加盐这些不在讨论范围之内),想问问各位大佬如何安全地对密码进行存储?

    目前想到的办法有通过操作系统的接口进行存储,如 keyring 、keychain 、Credential Manager ,还有什么安全的方式吗?
    第 1 条附言  ·  2021-12-24 10:12:19 +08:00
    原始需求是需要存储大量内部用户的凭据代理用户进行一些操作,所以必须存储明文。
    10 条回复    2021-12-24 10:11:59 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2021-12-23 22:08:04 +08:00
    安全具体是指什么?

    比如这个密码是否需要明文传输到客户端(或在客户端解密),客户端是否受控?

    服务器端(保存这个密码的机器)有多少人能物理接触,这些人要不要防?

    是自己的密码,还是大量用户的密码?(这点也会影响保密措施)
    devliu1
        2
    devliu1  
    OP
       2021-12-23 22:24:50 +08:00
    @cmdOptionKana 感谢回答,如果客户端是安全的,有大量的密码,服务端考虑被攻击的可能。

    想了一下这个场景和 bitwarden 有点类似?
    3dwelcome
        3
    3dwelcome  
       2021-12-23 22:57:07 +08:00
    通过操作系统的接口进行存储,这点没你想的安全。

    黑客里 HOOK 系统 API 是基本功,而你这些系统调用,全都是走标准的系统 API 接口。

    最好就是自己做个虚拟机,明文加密保存在内部,在 VM 建立一个限制频率的授权访问通道。

    这样 1 黑客通常进不去 VM ,改不了程序,2 一旦察觉有非法访问,可以启动自爆程序,销毁全部密码。
    v2tudnew
        4
    v2tudnew  
       2021-12-23 23:16:26 +08:00
    @devliu1 #2 Bitwarden 客户端加密服务器存储,不一样的,拿到服务器数据库也还是得暴力破解。
    FengMubai
        5
    FengMubai  
       2021-12-23 23:39:54 +08:00
    存到 TPM(如果有的话)
    devliu1
        6
    devliu1  
    OP
       2021-12-23 23:57:36 +08:00
    @3dwelcome 很有启发,简而言之就是:建立安全的信道(比如独立一个密码服务),做限流预警


    @v2tudnew 区别应该是客户端拿到密文还是得用自己的 Master Key 解密吧


    @FengMubai 没有 TPM 呜呜
    dingwen07
        7
    dingwen07  
       2021-12-24 00:53:20 +08:00 via iPhone
    那自然是 HSM
    iBugOne
        8
    iBugOne  
       2021-12-24 01:14:11 +08:00
    换个思路,首先想清楚这个明文密码是干嘛的。如果没有特别限制的话,这个明文密码**不要让用户提供**,而是由系统随机生成,这样即使泄露了对用户来说也就是重新登录一次的麻烦,而不至于“重要隐私泄露”这样的灾难性后果
    oott123
        9
    oott123  
       2021-12-24 09:12:40 +08:00 via Android
    感觉这个问题比较像 XY 问题,说说你的原始需求如何
    devliu1
        10
    devliu1  
    OP
       2021-12-24 10:11:59 +08:00
    @iBugOne
    @oott123

    原始需求是需要存储大量内部用户的凭据代理用户进行一些操作,所以必须存储明文。
    有个折中的办法是动态生成按时修改密码-.-,但是还是很难防止外泄


    @dingwen07 我学习一下 HSM 和 TPM
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1298 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:38 · PVG 07:38 · LAX 15:38 · JFK 18:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.