上下文:我试图为你的个人秘密设计一个SRS溶液 --“密码的安基”。(这主要是一个学习练习,以帮助我发展我的直觉写作安全(-ish?)代码,并探索问题-空间-我对我自己的能力没有很高的期望来实现这一切,所有这些都是有效的…)特别是,花了一些时间思考这个问题,我决定最好专注于现有密码不提供服务的领域--像1 password这样的管理人员--他们非常、非常擅长他们所做的事情,我不认为我能改进他们!然而,密码管理器存在于“方便与安全”的特定位置上:
我的计划是将这两者颠倒过来,并提供一个专门针对机密的工具--您不愿意在这两点上妥协。(例如,假设您希望将您的电子邮件密码专门保存在“您的头脑中”),并且永远不要将它存储在云中。当然,这方面的主要用途之一是密码管理器本身的“主密码”(…)。
因此,我的问题是:实现上述目标的基本方法是在本地存储一个密码散列的小数据库--您已经--在一台计算机的本地文件系统上存储了该数据库。(通知您需要检查已记住的密码;转到该计算机;尝试输入密码,请告知您是否正确。轻轻松松
然而,为了做得更好,我觉得把秘密存储在HSM上,而不是在文件系统上--特别是许多用户已经拥有的那种HSM --像Yubikey或NitroKey这样的消费者的秘密是非常好的。(否则,内置的现代孤立计算机制,比如苹果的TouchID或TPM?)
我看了一下文档,但是除了OTP或键盘式的“你不能指定特定的秘密”选项和配置之外,我没有什么运气。
tl;dr:有什么众所周知的协议或方法来存储你在消费者HSM上口授的东西吗?否则,我是否缺少一种安全方法,将HSM的安全性“混合”到文件系统存储方法中,这样的话,没有HSM,文件系统信息就毫无价值了?
(当然,既然这是SSE,肯定会在我的总体想法中戳出任何漏洞。)我很喜欢你的反馈,或者任何建议。)
我对安全知之甚少(嗯,我是一个“安全书呆子”,但我不从事这个领域的工作;我认识到我对;_的了解是多么微小--实际上我对此知之甚少),但我足够了解的是,对威胁建模是很重要的。对于上述问题,让我们做一些假设:
发布于 2022-11-11 02:31:35
Yubikey支持支持非对称加密的OpenPGP。这里的标准答案是用对称密钥加密数据库,然后用非对称加密对对称密钥进行加密。
因此,可以使用OpenPGP来使用任何支持OpenPGP的普通高速机器加密/解密数据库加密密钥,从而构建一个密码管理器。
使用流密码,可以解密数据库的最小部分。一旦不再需要,就立即从RAM中清除密钥。应该尽量减少暴露。
我不认为大多数这些商品HSM想要存储散列,没有一个真正的理由把散列在HSM中。所以我不认为有什么标准的方法。
但是,它确实存储哈希大小的东西。幸运的是,ECC键通常是哈希大小的。更好的是,私有ECC密钥只是随机数,散列是统计上的随机数。
因此,散列密码,将其存储在ECC密钥槽中。当用户要验证他们的密码时,散列他们的条目,使用哈希作为私钥并导出公钥。用yubikey签名,看看从用户输入中派生出来的公众是否正确地验证了它。如果是这样的话,用户必须输入正确的密码。
我从来没有见过这样做的地方,所以带着健康的怀疑。它还需要为记忆的每一个密码哈希设置一个键槽。不知道Yubikey有多少插槽,但纯粹主义和Nitrokey在实惠车型上都只有不到5个插槽。
https://security.stackexchange.com/questions/266280
复制相似问题