Encryption 服务器内存中私钥的安全性

Encryption 服务器内存中私钥的安全性,encryption,Encryption,假设我有一个服务器,它在启动时在内存中生成一个私钥 在服务器实例运行时(即,以某种方式在内存中访问该私钥),窥探管理员(比如来自Heroku或Nodejitsu)是否可以恢复该私钥 如果有关系的话,我会在Node.JS上运行它,这取决于他们使用什么系统,以及他们是否有防止这种情况发生的功能。否则,我可以说有权访问主机的管理员可以通过多种方式获取您的私钥。例如,他们可以冻结你的瞬间并保存它的状态,这基本上将内存复制到硬盘上,然后解冻它,这在快速系统上不需要很长时间。他们还可以转储实例的内存,因为它

假设我有一个服务器,它在启动时在内存中生成一个私钥

在服务器实例运行时(即,以某种方式在内存中访问该私钥),窥探管理员(比如来自Heroku或Nodejitsu)是否可以恢复该私钥


如果有关系的话,我会在Node.JS上运行它,这取决于他们使用什么系统,以及他们是否有防止这种情况发生的功能。否则,我可以说有权访问主机的管理员可以通过多种方式获取您的私钥。例如,他们可以冻结你的瞬间并保存它的状态,这基本上将内存复制到硬盘上,然后解冻它,这在快速系统上不需要很长时间。他们还可以转储实例的内存,因为它只是hypervisor下正在运行的应用程序。这可能不容易做到,但根据我在安全领域的经验,我可以说这是非常可能的


但是,我认为您应该将密钥的加密版本存储在内存中。并且仅在使用时对其进行解密,因此解密版本仅临时存储在CPU寄存器中。

您不仅生成私钥,还生成密钥对。然后,您必须确保另一方使用该密钥对的受信任公钥(验证签名或加密数据)。如果他们只是使用任何公钥,那么他们无法确定它是否属于攻击者。因此,即使管理员不能访问私钥,他们也可以用自己生成的私钥替换公钥。所以你会有一个中间人攻击的巨大机会。

密钥管理很难。你不能简单地用一些随意的计划来代替它。在每次运行时生成密钥对也有很多(安全)缺点。一般来说,这不是一个好主意。

我试图回答这个问题(恐怕是否定的),但在stackoverflow上确实不应该问这个问题。下次试试。