如何使用 PHP 管理服务器运行时的密钥


How to manage a while-the-server-runs secret using PHP?

我可能需要保护基于 LAMP 的服务器不被第三方窃取或劫持。

我的想法是使用硬加密来加密使用主密钥加密所有数据记录,如果服务器关闭,则无法恢复。因此,主密钥不能存储在文件系统中。

如果服务器运行,我会使用安全通道提供主密钥。

只要服务器继续运行,服务器就应该能够使用它。如果服务器出现故障,则密钥不可恢复。

在这种情况下,最好的解决方案是什么(共享内存?

您的意思是您要保护物理服务器免遭盗窃吗? 如果是这样,我建议除了操作系统的内置安全性之外,物理安全的主要机制根本不是基于代码的,而是一个很好的老式锁和钥匙。 不稳定的自制加密机制不是答案 - 通过默默无闻的安全性不是安全性。

请提供有关应用程序类型和需要保护哪些数据的更多详细信息。

一种非常常见的方法是:

  • 运行标准 Linux 发行版
  • 拥有 root 密码和/或将登录限制为仅 SSH
  • 当他们的系统启动时,SSH 进入它
  • 挂载加密驱动器(通过 SSH 或其他方式提供密钥文件,但只是暂时的 - 战后删除它们 - 您可以有一个从外部 SFTP 服务器下载的脚本,您可以激活/停用该过程)
  • 当服务器停止(断电等)时,驱动器被卸载,数据是安全的
  • 当服务器运行时,无法访问数据
  • 可以
  • 设置额外的机箱入侵,但实际上不是必需的,可以由真正想要的训练有素的技术人员解决

编辑:

从理论上讲,这是可能的 - 完全了解所有相关的芯片和极其敏感的设备,可以物理劫持带电导体路径并捕获一些数据。(我曾经在ATA-33 PATA电缆上看到过演示。

服务器必须放在移动电源上,并为此进入设备齐全的实验室。

但是,如果您有系统级加密层,则可以完全避免这种情况。 地球上没有设备可以做某事。