新交所飞地的新鲜度

信息安全 应用安全 硬件 英特尔-sgx
2021-08-29 09:26:32

未来的英特尔处理器将支持SGX(软件保护扩展),它允许以与所有其他代码隔离的方式在您的处理器上运行安全关键软件。硬件提供安全隔离,因此其他代码无法篡改在 SGX 飞地中运行的安全关键代码。甚至操作系统内核也不可信,也无法篡改 SGX 飞地中的代码。enclave 本身是无状态的,但有一种方法可以将数据安全地保存在外部存储中:硬件支持密封存储,其中数据在写入磁盘之前被加密和 MAC 化。

对密封数据的新鲜度有任何保证吗?换句话说,我担心回滚攻击,其中恶意操作系统试图将飞地的状态回滚到某个较早的时间点:例如,检查保存的状态,运行飞地一段时间,然后可能恢复回到检查站。SGX 代码能否抵御此类回滚攻击?如果是这样,怎么做?

2个回答

不,不是直接的。

正如您所观察到的,SGX 确保内存中瞬态状态的新鲜度和完整性,但不提供任何机制(如单调计数器)来确保持久状态的新鲜度。所以如果你只想依赖本地 CPU 上的 SGX,你就无法防御状态回滚攻击。这个问题的一般解决方案是与另一个可信方进行通信,它可以为您提供确保新鲜度的基本机制。这可能是网络另一端的受信任机器/服务,也可能是其他一些受信任的硬件,例如 TPM。在任何一种情况下,因为您将通过不受信任的通道进行通信,所以您需要保护它(即加密)。如果您的工作量更新繁重,那么您

SGX 提供单调计数器来防止回滚攻击,但这些计数器并非在所有机器上都可用。英特尔对写入操作应用频率限制,以防止内存耗尽,在此之后计数器变得不可用。这在官方文档中有说明

创建单调计数器 (MC) 涉及写入平台中可用的非易失性存储器。重复的写入操作可能会导致内存在平台的正常生命周期中耗尽。英特尔® SGX 通过限制可以执行 MC 操作的速率来防止这种情况。如果超出限制,MC 操作可能会在几分钟内返回 SGX_ERROR_BUSY。

根据这篇论文还有其他问题

  • 单调的计数器很慢,
  • 在他们的测试中写入超过 100 万次后磨损(5 台笔记本电脑,一台不支持 MC),
  • 如果移除 BIOS 电池或重新安装 PSW,计数器可能会消失。它们没有被重置,就好像它们从一开始就没有被创建。