揭秘远程证明架构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 ...
随机推荐
- Bitmap优化详谈
目录介绍 01.如何计算Bitmap占用内存 1.1 如何计算占用内存 1.2 上面方法计算内存对吗 1.3 一个像素占用多大内存 02.Bitmap常见四种颜色格式 2.1 什么是bitmap 2. ...
- npm install安装依赖包时报错npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.js,npm ERR! ChromeDriver installation failed Error with http(s) request: Error: read ECONNRESET
PS E:\20231213\uirecorder> PS E:\20231213\uirecorder> PS E:\20231213\uirecorder> PS E:\2023 ...
- openApi generator总是生成类名为 defaultApi
生成器可以开启 useTags 设置,开启之后会根据 api 文档中的 tags 生成前缀类名,因此,要不生成 defaultApi 需要以下操作: 1.openApi 文档中每个 url 必须要有 ...
- 记录--form 表单恢复初始数据
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 form 表单恢复初始数据 在现代的 Web 开发中,表单是不可或缺的组件之一.用户可以通过表单输入和提交数据,而开发者则需要对这些数据进 ...
- 记录-一个栗子让你彻底弄懂CSS3补间动画和逐帧动画
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 CSS3提供了Animation关键帧动画,我们在工作中比较常用.但在写CSS动画的时候,其实Animation能实现两种动画模式: 补间 ...
- java 计算两个日期相差工作日天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.DayOfWeek; impo ...
- Linux实现远程登录基本操作
Linux配置远程登录 1.实验目的 通过配置redhat的静态IPV4,通过xshell登录,实现远程指令控制.在实践过程中,了解linux的基本结构和操作,能够初步地使用linux的常用软件.目的 ...
- CSP:Object as Point同会议论文,相似思想用于人脸和行人检测 | CVPR 2019
CSP将目标定义为中心点和尺寸,通过网络直接预测目标的中心和寸尺,相对于传统的RCNN类型检测算法轻量化了不少.整体思想与Object as Points撞车了,真是英雄所见略同 来源:晓飞的算法 ...
- 【已解决】Android学习---注册和登录功能模块合并报错以及解决办法
问题① 我在另外一个项目里写了一个注册和登录功能的几个文件,当我想把这些代码和另一个文件合起来的时候就出现了问题. 首先不可以直接把另外一个项目的某个文件直接复制过来, 最好的办法是重新新建一个相同名 ...
- C# 继承、多态性、抽象和接口详解:从入门到精通
C# 继承 在 C# 中,可以将字段和方法从一个类继承到另一个类.我们将"继承概念"分为两类: 派生类(子类) - 从另一个类继承的类 基类(父类) - 被继承的类 要从一个类继承 ...