是否可以远程安全地启动加密服务器?

信息安全 中间人 磁盘加密
2021-08-15 09:41:49

想象一下,您的服务器位于不值得信赖的位置。人们可能对不应该查看存储在其上的数据的机器进行物理访问。

在这种情况下,我考虑设置具有全盘加密的服务器。这意味着在系统完全启动之前需要输入密钥。只要我有物理访问权限,在第三方不知道的情况下输入密钥是可行的。

但是,当需要远程启动服务器时,我需要在不存在的情况下输入密钥。Linux 提供了在完全启动系统之前运行轻量级 SSH 服务器的可能性,以便您可以输入密钥。然而,这个 SSH 服务器的证书显然需要不加密存储(因为需要在输入密钥之前读取它),以便攻击者可以访问它并伪造我们的服务器,从而获得密钥的知识。

有什么方法可以使这个过程安全吗?在最好的情况下,这甚至是独立于操作系统的。

4个回答

微软第三条不可变定律:“如果坏人可以不受限制地物理访问您的计算机,那么它就不再是您的计算机了。” 因此,您必须信任运行数据中心的人员。这就是信息安全中信任的含义:当您无法完全控制、避免或转移风险时,您不情愿地被迫这样做。

尽管如此,您仍需要尽可能多地放入控件。在这种情况下,TPM 模块可能是您最好的选择——密钥在制造时被烧入芯片的硅片中,因此很难提取。

Windows 和 Linux 都支持基于 TPM 的全盘加密;VMWare ESXi 也是如此,它也可以让您独立于操作系统。

最后,@hopelessn00b 等人指出了一些我应该记住的事情 - 您可以在企业级服务器上获得的远程管理卡使用强加密。这是在硬件中通过 ssh 访问控制台的好方法,因此您不必弄乱盒子的配置。

你描述的问题是准确的。我考虑过同样的问题,并提出了一些有用的“解决方案”。

让我们首先列出一些可能的攻击:

现在,让我们列出一些对策。

  • TPM - 理想情况下,您会将密钥存储在 TPM 模块中。这个问题涵盖了如何配置 LUKS 以支持 TPM。此时,您将能够“安全地”存储您的 SSH 密钥,使其免受大多数离线攻击。

  • 机箱信任 - 如果有人打开您的机箱,您会很感兴趣。许多主板都带有入侵检测功能,可以连接到机箱。根据您的主板,如果有人打开计算机机箱,您应该能够触发关机+删除键。在这个问题中可以找到对此的一些解释

  • 胶水 - 当系统运行时,它是未加密的。您希望通过将攻击面粘合起来来最小化攻击面。USB 外围设备、PCI 总线等应该是不可访问的。这与机箱入侵相结合,在计算机开始关闭之前很难访问内存。

  • 禁用其他启动方法和外围设备——冷启动攻击可以使用可启动 USB 设备在内存内容丢失之前快速转储内存内容。

  • 禁用控制台访问 - 如果您不使用控制台,禁用它也会阻止其他人使用它。您还可以在不支持 VGA 的情况下编译内核,以使任何连接的显示器保持黑暗

这些是您拥有的一些选项,有些更极端和偏执,但这可能是您的设置所需要的。

如果您有要在服务器上使用的敏感加密密钥,您应该使用硬件安全模块这是一种提供防篡改功能以防止物理攻击的设备。此外,针对此模块的离线攻击更难执行(如果攻击者从您最终看到的服务器中删除 HSM)。一些模型还可能提出用于远程访问的安全通道,以允许具有有效凭证的远程用户解锁密钥。

更新答案:

是的。这不仅是可能的,而且这是 Microsoft 提供的现有功能(注意:Microsoft 的系统在理论上很可能是可破坏的,因为 TPM 和理论上可能会妥协)。“受防护的虚拟机”专为远程托管而设计,同时仍可防止“结构中的受损或恶意管理员,例如存储管理员、备份管理员等”。他们通过加密虚拟机的磁盘/状态来实现这一点。

请参阅详细了解 Windows Server 2016 中受防护的 VM 以进行讨论(Server 2019 添加了 Linux 支持)。

您应该怀疑下面​​信息图中“服务器管理员”旁边的巨大星号。高级别的,从服务器管理员保护 VM 需要使用基于密钥或基于 TPM 的证明。

微软信息图的小节


上一个答案:

好吧,让我为这个问题提供一个安全的理论解决方案当然,这仅对理论目的有用,但它表明您的问题至少在原则上是可以解决的:

您有以下“东西”:
1. 密钥:私钥。
2. 明文:您的私人数据
3. 服务器:不受信任的机器(不受信任,因为其他人有物理访问权限)

要更新服务器的内容:
1. 用您的密钥加密整个明文。
2. 将加密明文更新到服务器。

要检索服务器的内容:
1. 从服务器下载整个密文。
2. 用您的密钥解密密文。

我相信这种方法被证明是安全的,前提是您愿意做出各种假设(即,您在使用 SSL 等时做出的相同假设)。

因此,至少在理论上,将安全的东西存储在不受信任的机器上是可能的。更进一步,人们甚至找到了在不受信任的机器上执行加密 CPU 指令的方法(目前不切实际)。

因此,我相信理论上可以远程启动加密服务器。当然,下一个问题是是否有任何实用的、可证明安全的解决方案。我不确定。然而,即使答案是否定的,也不一定永远不会。