揭秘远程证明架构EAA:机密容器安全部署的最后一环
The following article is from OpenAnolis龙蜥 Author 周亮
但是在云环境中,依旧存在如下的问题:
怎么证明用户的机密容器确实运行在云上真实 HW-TEE 环境中? 怎么证明运行在云上 HW-TEE 环境中的程序或者容器内容是符合预期的或者没有被篡改? 更进一步,如果需要在云上 HW-TEE 环境里启动一个加密容器,如何在启动过程中获取容器的解密密钥?
EAA设计
RATS 参考架构
EAA 架构
其主要组件和功能:
Attestation Agent(Attester):运行在 HW-TEE 中的组件。作用是获取 HW-TEE 中运行程序的度量值信息,该度量值信息由 HW-TEE 进行签名。 Chip Manufacturer Specific Attestation Service(Endorser):运行在公有网络中,由芯片厂商提供的服务。作用是验证度量值信息的签名,以确定度量值信息确实是由真实 HW-TEE 生成的。 Verdict & Reproducible Build Infrastructure(Reference Value Provider):运行在用户可信环境中的服务。作用是生成 HW-TEE 中运行程序的度量值的参考值,以判定在 HW-TEE 环境中的运行程序是符合预期的或者程序是没有被篡改过的。 Verdictd(Relying Party + Relying Party Owner + Verifier Owner):运行在用户可信侧环境中的服务。职责是调用 Chip Manufacturer Specific Attestation Service 和 Verdict & Reproducible Build Infrastructure 检查度量值信息的签名和其内容,以完成整个远程证明流程。 KMS:运行在用户可信侧环境或者公有网络中的密钥管理服务。作用是进行密钥的管理。
EAA工作原理
1、当需要进行远程证明时,运行在云上 HW-TEE 环境中的 Attestation Agent 获取当前 HW-TEE 运行环境的度量值信息并发送给 Verdictd 服务进行相关验证。
2、当 Verdictd 收到度量值信息后会把它发送给 Chip Manufacturer Specific Attestation Service 来检查度量值信息的签名,以验证生成度量值信息的 HW-TEE 是一个真实的 HW-TEE。目的是防止黑客伪造一个 TEE 环境来骗取用户的信任。
3、如果度量值信息的签名验证成功,Verdictd 会检查度量值的具体信息。目的是确定云上HW-TEE环境中的运行程序是符合预期的或者程序是没有被篡改过的。
4、如果上述检查都成功,则远程证明流程已经成功完成,用户可以确定云上 HW-TEE 环境是一个真实的 HW-TEE,并且运行在 HW-TEE 环境中的程序满足:
是用户自己部署的程序,并且该程序没有被黑客篡改。 是第三方部署的程序,但这些程序是符合预期的,比如这些程序是经过代码审核并确定是没有漏洞的。
贡献
EAA 致力于通过和开源社区贡献和合作以实现落地实践能力,它作为首个支持 Intel TDX 远程证明的 Key Broker Service(KBS),是 confidential-containers 首个支持 TDX HW-TEE 的 E2E demo 的 KBS 服务,并成功地完成了 confidential-containers V0 阶段 E2E Demo 关键节点。
结束
EAA 填补了基于 HW-TEE 的机密容器在云原生场景下应用的最后一环,为机密容器在云环境中的安全部署和启动提供了必要的基础。
目前 EAA 作为 Inclavare Containers(CNCF 项目)的子模块,支持的 HW-TEE 环境包括 Intel SGX 和 Intel TDX,支持的机密容器包括 Inclavare Containers 和 Kata CC。未来,EAA 将持续演进,以支持新的不同的机密容器方案,并支持新的 HW-TEE 环境,让 EAA 成为机密容器领域内真正的通用远程证明架构。
网址链接:
https://github.com/alibaba/inclavare-containers
https://github.com/confidential-containers
https://openanolis.cn/sig/coco
https://www.youtube.com/watch?v=9Lgo9_JtUsc
4.sysAK(青囊)系统运维工具集:如何实现高效自动化运维?
5.直播回顾:如何基于Linux内核构建起商用密码基础设施?