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

2021-12-23 21:34:36 +08:00
 devliu1
在特定的场景下需要存储密码明文,( hash 加盐这些不在讨论范围之内),想问问各位大佬如何安全地对密码进行存储?

目前想到的办法有通过操作系统的接口进行存储,如 keyring 、keychain 、Credential Manager ,还有什么安全的方式吗?
1861 次点击
所在节点    问与答
10 条回复
cmdOptionKana
2021-12-23 22:08:04 +08:00
安全具体是指什么?

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

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

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

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

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

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

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


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


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

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


@dingwen07 我学习一下 HSM 和 TPM

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

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

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

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

© 2021 V2EX