揭秘远程证明架构EAA:机密容器安全部署的最后一环 | 龙蜥技术
简介:如果需要在云上 HW-TEE 环境里启动一个加密容器,如何在启动过程中获取容器的解密密钥?
文 / 周亮, 云原生机密计算 SIG 核心成员。
在云原生场景下,基于HW-TEE(如Intel SGX, Intel TDX 和 AMD SEV)的机密容器技术(如 Inclavare Containers 机密容器和 Kata CC 机密容器)可以为用户在使用(计算)过程中的敏感数据提供了机密性和完整性的保护。
但是在云环境中,依旧存在如下的问题:
- 怎么证明用户的机密容器确实运行在云上真实 HW-TEE 环境中?
- 怎么证明运行在云上 HW-TEE 环境中的程序或者容器内容是符合预期的或者没有被篡改?
- 更进一步,如果需要在云上 HW-TEE 环境里启动一个加密容器,如何在启动过程中获取容器的解密密钥?
Inclavare Containers 现已是龙蜥社区云原生机密计算 SIG 的项目之一。而 Inclavare Containers 的组件 Enclave Attestation Architecture (EAA) 正是为解决这些复杂的问题而生的。其设计目标是在解决上述问题的基础上,提供一个支持不同类型机密容器和 HW-TEE 环境的通用远程证明架构。
EAA设计
RATS 参考架构
机密计算联盟定义了 RATS 参考架构,并建议所有远程证明服务都应该遵循 RATS 的参考架构,RATS 架构如下:


EAA 架构
因此 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 环境中的程序满足:
- 是用户自己部署的程序,并且该程序没有被黑客篡改。
- 是第三方部署的程序,但这些程序是符合预期的,比如这些程序是经过代码审核并确定是没有漏洞的。
5、远程证明流程已经成功,所以 Attestation Agent 和 Verdictd 之间可以建立一个安全并可信的通道。Attestation Agent 可以发送请求给 Verdictd 以获取一些机密数据,比如加密容器镜像的解密密钥。
贡献
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 成为机密容器领域内真正的通用远程证明架构。
本文为阿里云原创内容,未经允许不得转载。
揭秘远程证明架构EAA:机密容器安全部署的最后一环 | 龙蜥技术的更多相关文章
- Spring Boot 揭秘与实战(八) 发布与部署 - 远程调试
文章目录 1. 依赖 2. 部署 3. 调试 4. 源代码 设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖. <plugins> &l ...
- 分布式系统的应用程序性能监视工具,专为微服务、云本机架构和基于容器(Docker、K8s、Mesos)架构而设计。 SkyWalking
Apache SkyWalking™ | SkyWalking Teamhttp://skywalking.apache.org/zh/ Application performance monitor ...
- 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介
️Reference: IoT 边缘计算系列文章 什么是边缘容器? 边缘容器的概念 边缘容器是分散的计算资源,尽可能靠近最终用户或设备,以减少延迟.节省带宽并增强整体数字体验. 可以访问互联网的设备数 ...
- 谈谈surging引擎的tcp、http、ws协议和如何容器化部署
1.前言 分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿.从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果.esb,网关, ...
- Docker容器学习梳理 - 应用程序容器环境部署
关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...
- Jaeger容器化部署
概述 Jaeger是由Uber开源的分布式追踪系统,一套完整的Jager追踪系统包括Jaeger-client.Jaeger-agent.Jaeger-collector.Database和Jaege ...
- 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署
庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介 从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...
- elk 7.9.3 版本容器化部署
ELK-V7.9.3 部署 为什么用到ELK? 平时我们需要进行日志分析的时候,可以直接在日志文件中 grep.awk 就可以过滤出自己想要的信息及关键字,但规模较大的场景中,此方法极大的减低了效率, ...
- .NET Core容器化之多容器应用部署@Docker-Compose
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题. 2. Why Need Ngin ...
- .NET Core+MySql+Nginx 容器化部署
.NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...
随机推荐
- vscode自动生成头文件
Ctrl Shift P 输入:snipp,选配置用户代码片段,新建全局代码片段文件,修改下列模板: { // Place your 全局 snippets here. Each snippet is ...
- 不使用microlib实现STM32串口printf重定向:
不使用microlib实现STM32串口printf重定向: 突然发现有一篇markdown忘记上传了,补一下 注:使用的是CubeMX生成的工程文件 生成后,在usart.c中添加如下代码: //u ...
- 记录--为啥面试官总喜欢问computed是咋实现的?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 从computed的特性出发 computed最耀眼的几个特性是啥? 1. 依赖追踪 import { reactive, compute ...
- nginx完全卸载删除
nginx卸载 其实很简单,只需要两步即可完成! 第一步:输入以下指令全局查找nginx相关的文件: sudo find / -name nginx* 第二步:删除查找出来的所有nginx相关文件 s ...
- quartus之LPM_COMPARE测试
quartus之LPM_COMPARE测试 1.IP描述 比较器的IP,可以比较两路数据是否相等.相等输出为1,不等输出为0的aeb信号是需要测试的量. 2.基础测试 module compare_t ...
- KingbaseESV8R6全局临时表不能进行reindex操作
背景 我们经常遇到两种情况下会重建索引,reindex 1.索引崩溃,由于软件或硬件问题导致索引内数据失效而不可用. 2.索引膨胀,当索引膨胀会占用过多磁盘空间,reindex可以解决此问题. 对于临 ...
- KingbaseES Json 系列十一:Json数组操作函数
KingbaseES Json 系列十一--Json数组操作函数(JSONB_ARRAY_ELEMENTS,JSONB_ARRAY_ELEMENTS_TEXT,JSONB_ARRAY_LENGTH,J ...
- KingbaseES date 数据类型的两种格式
关于date 数据类型,Oracle 与 PostgreSQL 格式是不同的,Oracle 是 日期 + 时间的类型,而PG 则只有日期.KingbaseES Oracle 模式则同时实现了二者类型, ...
- Scala打印输出
1 package com.atguigu.chapter02 2 object TestCharType { 3 def main(args: Array[String]): Unit = { 4 ...
- #排列组合#美团2018年CodeM大赛-决赛 A-Exam
题目 分析 因为第一名所在的学校一定会发喜报, 所以只有一个学校发喜报说明其它学校都没有发喜报 钦定第一名所在的学校为1,总方案要乘\(n\),那么两个1之间不可能出现两个相同的学校的学生 那么可以分 ...