未来的英特尔处理器将支持SGX(软件保护扩展),它允许以与所有其他代码隔离的方式在您的处理器上运行安全关键软件。硬件提供安全隔离,因此其他代码无法篡改在 SGX 飞地中运行的安全关键代码。甚至操作系统内核也不可信,也无法篡改 SGX 飞地中的代码。enclave 本身是无状态的,但有一种方法可以将数据安全地保存在外部存储中:硬件支持密封存储,其中数据在写入磁盘之前被加密和 MAC 化。
对密封数据的新鲜度有任何保证吗?换句话说,我担心回滚攻击,其中恶意操作系统试图将飞地的状态回滚到某个较早的时间点:例如,检查保存的状态,运行飞地一段时间,然后可能恢复回到检查站。SGX 代码能否抵御此类回滚攻击?如果是这样,怎么做?