我正在开发一个E2E加密应用程序。我正在使用OpenPGP.js,并在服务器上存储公钥和私钥。私钥是用一个BIP39密码加密的,这个密码被存储在浏览器LocalStorage中,所以它永远不会发送到服务器。但我也需要一些用户的凭证才能登录。
我的想法是从SHA256密码中生成BIP39,并将其拆分成两个字符串。第一个可以用于“用户名”,第二个可以用于服务器密码。
这个方法安全吗?据我所知应该是。BIP39密码具有足够大的熵。我不能使用盐,因为BIP39密码应该是存储的唯一秘密。
这种方法有效吗?谢谢。
发布于 2021-11-13 00:02:45
要回答你的实际问题,是的,你的想法听起来很安全,但这不是通常的做法。
如果您有一个单独的“大师”秘密,并且需要将其分成两个或两个以上的秘密,以致对其中任何一个秘密的了解都不会给出有关主的任何信息,那么您想要的是在RFC 5869中指定的HKDF,它使用HMAC从单个秘密生成任意数量的独立秘密。
在这方面,除香港发展基金外,亦有很多其他选择。如果您没有与SHA-256结婚,您可以使用支持“个性化散列”的BLAKE2,它允许您混合使用个性化的值。唯一的个性化设置值会导致唯一的散列,即使对于相同的输入也是如此。
发布于 2021-11-13 07:20:05
我可以使用来自SHA256的BIP39密码作为auth凭证吗?我的想法是从SHA256密码中生成BIP39,并将其拆分成两个字符串。
从安全设计的角度来看,这似乎是两个严重的错误。
注:设计中可能有其他错误。也许上述两个明显的问题确实被某种东西减轻了。我们无法判断,因为安全目标、假设和详细的设计都没有说明。
https://crypto.stackexchange.com/questions/96095
复制相似问题