随着组织越来越多地采用多云、混合云和边缘计算,他们的应用程序在广泛的环境中跟踪、存储和分析敏感的用户数据。为了确保使用应用程序的个人的合规性和隐私,数据需要在其整个生命周期内得到保护。我们对文件系统和存储驱动器进行加密,并使用SSH 协议来保持静止数据和传输中的数据即使被盗也能保持安全,从而在没有加密密钥的情况下使其无用。但是,使用中的数据通常是未加密的,容易受到攻击和利用。为了在运行时保护应用程序和数据,开发人员越来越多地转向可信执行环境,通常被称为“安全飞地”。
什么是可信执行环境?
可信执行环境 (TEE) 是内存中 CPU 加密的隔离私有飞地,用于在硬件级别保护正在使用的数据。虽然敏感数据位于 enclave 内,但未经授权的实体 无法将其移除、修改或添加更多数据。飞地的内容对外部各方来说是不可见的和不可访问的,受到保护以免受外部和内部威胁。
因此,TEE 可确保以下内容:
- 数据的完整性
- 代码完整性
- 数据保密
根据供应商和底层技术,TEE 可以启用其他功能,例如:
- 代码机密性——保护被认为是知识产权的算法。
- Authenticated launch——仅用于启动已验证进程的授权或身份验证强制执行。
- 可编程性——从制造商或其他安全来源访问 TEE 编程代码。
- 证明——测量起源和飞地的当前状态以防篡改。
- 可恢复性——回滚到以前的安全状态,以防 TEE 受到威胁。
这些功能使开发人员能够完全控制应用程序的安全性,即使在操作系统、BIOS 和应用程序本身受到威胁的情况下也能保护敏感数据和代码。
安全飞地如何工作?
要了解 TEE 的工作原理,让我们看看英特尔® Software Guard Extensions (SGX)。借助英特尔® SGX,应用程序数据分为可信和不可信部分。代码的受信任部分用于在受保护的飞地内运行应用程序。CPU 拒绝所有其他对 enclave 的访问,无论请求它的实体的权限如何。一旦处理完毕,可信数据将保存在 TEE 内,而提供给 enclave 外应用程序的信息将再次加密。
Enclave 是通过硬件命令创建和配置的,这些命令支持内存页面的创建和添加,以及 enclave 初始化、删除或测量。平台的固件使用其配置设置来设置 TEE 区域。启用扩展后,CPU 会保留一部分 DRAM 作为处理器保留内存 (PRM)。PRM 大小可以通过固件工具指定。
然后,CPU 通过设置一对特定于模型的寄存器 (MSR) 来分配和配置 PRM。接下来,在 PRM 中创建 Enclave Page Caches (EPC),其中包含带有基地址、enclave 大小和数据安全信息的元数据。最后,CPU 创建 enclave 初始状态的加密散列并记录随后的其他状态。此散列稍后用于通过加密密钥和硬件信任根进行证明。一旦初始化,飞地就可以托管用户应用程序。
可信执行环境有多安全?
为了最好地解释 TEE 的安全性,我们首先需要解决 CPU特权环。加密密钥传统上存储在应用程序中,在环 3 级别。一旦受到损害,这种模型就会危及应用程序中受保护的机密。
在现代架构中,特权环超越了内核和管理程序,扩展到系统管理模式 (SMM) 和管理引擎 (ME)。这允许 CPU 保护 TEE 使用的内存,将攻击面减少到硬件的最低层,并拒绝访问除最高级别权限之外的所有权限。TEE 的功能和安全性的另一个关键是证明。通过证明,在共享任何数据之前,对整个平台和飞地进行测量和验证。
例如,一个 enclave 可以从它自己或同一平台上的另一个 enclave 请求本地报告,并使用该报告进行数据检查和验证。类似地,远程验证者可以在从 enclave 请求任何敏感数据之前请求证明报告。一旦建立信任,他们就可以通过外部各方不可见的安全通道共享会话密钥和数据。
由于未加密的秘密永远不会离开 TEE,因此安全飞地可以保护数据免受:
- 主机上的其他应用程序
- 主机操作系统或管理程序
- 系统管理员
- 服务供应商
即使是基础设施所有者和其他对硬件有物理访问权限的实体也无法访问数据。
机密计算中的安全飞地
为了实现跨不同云环境的私有工作负载的安全和标准化处理,Linux 基金会于 2019 年成立了一个名为机密计算联盟 (CCC)的社区。自成立以来,CCC 成员一直致力于加速云计算的采用并实现开放式协作。由于它们提供了高水平的数据保护,基于硬件的安全飞地是该计划的核心。通过 TEE 支持的机密计算,组织可以在使用其应用程序时保护从单个加密密钥到整个工作负载的所有内容。
为什么要采用机密计算?
今天,秘密远远超出了密码,包括高度机密和不可替代的信息,例如医疗记录或生物特征数据。机密计算通过保护这些数据并防止财务损失或声誉损害为企业提供竞争优势。但是,这种不断发展的技术还有其他用例。
多方计算
机密计算使组织能够处理来自多个来源的数据,而无需将其底层代码、知识产权或私人客户信息暴露给合作伙伴。无论竞争与否,政府组织、医疗保健或研究机构都可以利用此功能进行协作和分享见解,以实现联邦学习的目的。
金融保险
利用机密计算,金融机构可以防止洗钱等欺诈活动。一家银行可以与其网络内外的另一家银行共享一个可疑账户,以对其进行审计并最大限度地减少误报的可能性。保险公司可以使用类似的方法来防止欺诈。他们可以在彼此之间分享一项可疑的声明以进行模式识别。通过将敏感数据存储在飞地中并在不同来源之间共享数据记录,可以在不泄露任何机密信息的情况下获得结果。
结论
随着机密计算的发展,不断开发用于增强安全性的企业工具。这刺激了云计算的采用、增长和安全性,释放了它的全部潜力。通过在执行期间对敏感数据和代码提供前所未有的保护,可信执行环境使组织能够加强其安全态势并利用当今面向未来的技术。