假设我有一台服务器在启动时在内存中生成一个私钥。
在服务器实例运行时(或以某种方式在内存中访问它),是否有窥探管理员(例如来自Heroku或Nodejitsu)恢复该私钥?
如果重要,我在Node.JS上运行它
答案 0 :(得分:0)
这取决于他们使用的系统以及是否具有防止这种情况发生的功能。否则,我可以说有权访问主机的管理员可以通过很多方式获取您的私钥。例如,他们可以冻结您的瞬间并保存其状态,基本上将内存复制到硬盘,然后解冻它,并且在快速系统上不需要很长时间。他们也可以转储你的实例的内存,因为它只是一个在虚拟机管理程序下运行的应用程序。这些可能并不容易,但根据我在安全领域的经验,我可以说它们很有可能。
但是,我认为您应该将密钥的加密版本存储在内存中。并且仅在使用时对其进行解密,因此解密版本仅临时存储在CPU寄存器中。
答案 1 :(得分:0)
您不只是生成私钥,而是生成密钥对。然后,您必须确保另一方使用该密钥对的 trusted 公钥(以验证签名或加密数据)。如果他们只使用任何公钥,那么他们无法确定它不属于攻击者。因此,即使管理员没有访问私钥,他们也可以将公钥替换为他们生成的公钥。所以你将有一个巨大的机会让一个人在中间发作。
密钥管理很难。你不能简单地用一些偶然的方案来代替它。关于在每次运行中生成密钥对,存在许多(安全性)缺点。一般来说,这不是一个好主意。