我有一个用户系统来管理用户属性、散列加盐密码、一个 RSA 公钥和一个加密的 RSA 私钥(通过实际的盐 + 密码)。
RSA 密钥是在用户注册期间生成的,或者如果密码被重置(由用户管理员或忘记密码),因为没有密码,私钥基本上会丢失。
目前,RSA 密钥是在客户端机器上生成的,用他们的密码加密(安全地存储在浏览器内存中),然后发送回服务器以存储数据。
但现在,我想为 RSA 密钥生成创建另外两个选项。这两个都将在消息队列系统上工作,该系统将在本地系统(通过 cron)上处理,或者系统将消息发送到另一个服务器(通过对称加密通道),该服务器创建密钥并将其发送回存储系统。
虽然这些方法是进行 RSA 生成的硬位的有效安全方法,但我目前的难题是如何保护该用户的计算私钥。拥有由密码保护的私钥意味着需要密码,并且任何其他机制都需要密钥可供代码使用,或者临时存储可供双方(用户和系统)使用的加密密钥.
我最初认为使用系统 RSA 密钥对存储用户密码会很好,当生成新密钥时,会获取用户密码(并从存储中删除)并用于加密新的私钥并存储它与用户。但这要求系统可以访问其私钥,这将使黑客可以访问用户密码。
如果将命令发送到单独的安全服务器(甚至是物理服务器),上述方法可能会起作用,因为如果这是唯一存储内部私钥的服务器,那么只有在该服务器被黑客入侵时才能访问它。
有没有人对我如何处理和保护即使黑客可以访问完整的源代码和数据库也无法破解的用户私钥有任何建议?