机密计算 - 使用 AWS Nitro Enclaves 隔离保护处理中的数据

详解使用 AWS Nitro Enclaves 进行机密数据的隔离处理。介绍加密证明、KMS 集成以及 PII 处理和加密密钥管理的用例。

机密计算的必要性

传统安全模型通过静态加密(at rest)和传输加密(in transit)实现数据保护。然而,处理数据时需要解密并展开到内存中,这些"处理中的数据"成为攻击目标。OS 或虚拟机管理程序的漏洞、内存转储、侧信道攻击等都可能导致处理中的数据泄露。基于 Nitro 的 EC2 实例通过 Nitro Enclaves 提供隔离的执行环境,即使 EC2 实例的 root 用户也无法访问 Enclave 内的内存和进程。这实现了"处理中数据"的保护,补全了数据保护的三个阶段。

Enclave 的机制与证明

Enclave 通过分割父 EC2 实例的 vCPU(最多为父实例的一半)和部分内存来创建。与父实例的通信仅限于 vsock(虚拟套接字),不能使用 TCP/IP 网络。应用程序以 Docker 镜像形式部署到 Enclave,通过 Nitro CLI 启动。加密证明(Attestation)是 Enclave 向外部证明其代码和配置未被篡改的机制。Enclave 启动时 Nitro Hypervisor 生成包含 PCR(Platform Configuration Register)值的证明文档,KMS 可验证此文档,仅在 PCR 值匹配时才允许解密操作。

用例与 KMS 集成

Nitro Enclaves 的主要用例是 PII(个人信息)处理。在 Enclave 内处理医疗数据、金融数据和个人识别信息,仅将汇总结果返回给父实例,从而消除原始数据泄露风险。在加密密钥管理中,作为 CloudHSM 的替代方案,在 Enclave 内生成和使用加密密钥,确保密钥不会离开 Enclave。与 KMS 集成时,KMS 密钥策略中指定 Enclave 的 PCR 值作为条件,仅允许特定 Enclave 执行解密操作。这确保即使父实例被入侵,也无法在 Enclave 外解密数据。 关于机密计算的详细信息,可参考Amazon 的相关书籍

Nitro Enclaves 的费用

Nitro Enclaves 本身不产生额外费用。成本在于分配给 Enclave 的 vCPU 和内存会减少父实例的资源。例如在 m5.2xlarge(8 vCPU,32 GB)上为 Enclave 分配 2 vCPU 和 8 GB,父实例将以 6 vCPU 和 24 GB 运行。为 Enclave 选择较大实例时需要考虑这一点,但由于不需要额外的许可证或服务费用,总体成本影响有限。

总结 - Nitro Enclaves 的活用指南

AWS Nitro Enclaves 是完全隔离保护处理中数据的机密计算服务。Nitro Hypervisor 的隔离、加密证明和通过 KMS 集成的加密密钥保护是其主要优势。适用于 PII 处理、加密密钥管理、多方计算等需要保护处理中数据的合规和安全策略用例。无需额外费用即可使用,可在现有 EC2 工作负载中轻松引入。