机密计算信任决策依赖芯片厂商?-探究SGX2远程认证协议
如果无法正常显示,请先停止浏览器的去广告插件。
1. 可信计算的信任决策依赖
芯片厂商?
-探究SGX2远程认证协议
阿里安全双子座实验室 张晓丽
2. 01
机密计算
数据可用不可见
3. 机密计算-数据可用不可见
•
TEE (Trusted Execution Environment) 发展趋势
Ø 2009年,OMTP(Open Mobile Terminal Platform) 提出 TEE 标准
Ø 2015年,Intel 发布具备 SGX 技术的商业化CPU,创建应用级的可信执行
环境 (SGX enclave)
Ø 2017年,AMD 发布具备 SEV 技术的商业化CPU(EPYC Naples),创建加
密虚拟机
Ø 2020年,海光发布CSV(China Security Virtualization),基于海光C86架
构创建加密虚拟机
Ø 2022年:Intel Sapphire Rapids CPU支持 TDX 技术,可创建加密虚拟机
3
4. 机密计算-数据可用不可见
SGX 技术
Ø
Ø
Intel CPU 扩展指令集:
p ENCLS(特权指令): EADD, ECREATE, EEXTEND, EINIT, …
p ENCLU(非特权指令): EENTER, EEXIT, EGETKEY, EREPORT,
ERESUME
p ENCLV: 管理虚拟化环境中Enclave
软硬件协同: 处理器、内存管理部件、BIOS、驱动程序、运行
时环境等
p 内存加密:内存加密引擎加解密特定的内存区域 (e.g., Ice
Lake 架构中MKTME)
p 远程认证:允许第三方验证程序是否按照预期运行在
Enclave中
p 数据密封:为数据持久化存储提供机密性+完整性保护
Enclave
程序
•
程序
操作系统
X
X
虚拟机监视管理器
CPU
内存 EPC
…
4
5. 机密计算-数据可用不可见
•
SGX1 -> SGX2
SGX1
过渡期*
SGX2*
支持处理器* CPU架构 安全性
Sky Lake, … 仅支持 single-
socket 内存完整性、机密性
保护 (MEE提供)
EPC 大小
最大 256MB
Enclave 启动支持 远程认证协议
静态内存管理 Intel-signed launch
enclave 基于 EPID 算法
FLC (Flexible launch
DCAP (Datacenter
control) => enclave
Attestation
启动无需由intel签名
Primitive)
的LE控制
J4005(NUC),
…
Ice Lake,
J4005(NUC),
…
内存管理
支持 multi-
socket
Ice Lake MKTME不提
供内存完整性保护 =>
无法防御相关物理攻
击
最大1T
FLC (Flexible launch
DCAP (Datacenter
动态内存管理 control) => enclave
Attestation
(EDMM)
启动无需由intel签名
Primitive)
的LE控制
* https://github.com/ayeks/SGX-hardware
* https://software.intel.com/content/www/ca/en/support/articles/000057420/software/intel-security-products.html
* https://www.intel.com/content/www/ca/en/support/articles/000058764/software/intel-security-products.html
5
6. 02
SGX 信任链建立过程
7. SGX 信任链建立过程
• 编译阶段:SGX 程序签名
• 程序加载阶段:SGX 程序加载
• 程序运行阶段:SGX 远程认证
7
8. SGX 信任链建立过程:编译阶段
•
编译阶段:SGX 程序签名
Enclave 开发
Enclave 签名
SO
RSA 3072-bit key with
public exponent 3
SO
Enclave 部署
SO
不可信
Enclave Signature (SIGSTRUCT) 包含内容:
Enclave measurement: 256-bit hash(code + initial data + …),
Enclave author’s pk (RSA 3072-bit key),
ISVSVN,
ISVPRODID,
…
SIGSTRUCT 作用:Enclave加载时CPU验证其是否被篡改过
8
9. SGX 信任链建立过程:加载阶段
•
程序加载阶段:SGX 程序加载
Ø SGX ECREATE:创建enclave上下文(SECS*)
Ø SGX EADD:将enclave segment内容加载到 EPC page 中
Ø SGX EEXTEND:针对加载页面计算measurement,存储到特定
区域
Ø SGX EINIT:
p 验证 SIGSTRUCT中 signature 是否正确
p 验证 SIGSTRUCT中 measurement 是否等于CPU计算的值
p
在SECS区域中记录mrsigner(开发者标识),
mrenclave(enclave标识)等信息
* SECS(SGX Enclave Control Structure)区域页面类型为PT_SECS, 没有被映射到enclave地址空间,程序无法访问
9
10. SGX 信任链建立过程:运行阶段
•
程序运行阶段:SGX 远程认证(简化版,以SGX1 EPID协议为例)
SGX
APP Enclave
Quoting Enclave
Attestation key
1. Challenge
2. Enclave quote 3. Enclave quote
5. 远程认证成功? 4. Enclave 运行在SGX
平台?
Quote:
…
report_body (开发者验证)
mrenclave,
mrsigner,
…,
report_data, (开发者设置)
…
signature (依赖Intel服务验证)
Client
Intel IAS 服务
1) intel 服务验证: Quote 签名是否正确,即程序是否运行在enclave中
2) 客户验证: Quote 中 mrenclave (enclave标识) & mrsigner (开发者标
识) 等是否符合预期, 即验证程序完整性
Ø Quote 生成: Intel 签名的Quoting enclave中attestation key 对相关信息签
名,该签名可由 Intel 服务验证
Ø 远程认证一般与 Diffie-Hellman 密钥交换过程耦合在一起,远程认证成功后,
利用协商的会话密钥发送机密数据
10
11. SGX 信任链建立过程
程序编译阶段
程序加载阶段
程序运行阶段:远程认证
Enclave
SO
生成 SIGSTRUCT:
mrenclave,
author’s pk,
ISVSVN,
ISVPRODID,
…,
sig
SO
Quoting Enclave
Attestation key
Quote
验证 SIGSTRUCT;
存储 enclave 身份信息:
mrenclave, mrsigner. …
1)程序运行在SGX enclave中;
2)Enclave完整性符合预期
11
12. 03
SGX2 远程认证
的离线 实现
13. SGX 远程认证协议演进
Before
After
公网服务
RA协议
隔离环境 (局域网)
SGX
SGX
Enclave
RA协议
数据方
Enclave
RA协议
数据方
Enclave运行时
13
14. SGX2 远程认证的离线实现
•
SGX2 远程认证 (Remote Attestation,RA) 协议:
Ø 协议设计初衷:Quote 验证行为可以交给第三方验证
Ø 该模式可解决以下问题:
p SGX APP用户将SGX APP部署在局域网中,其中设备在运行时不能访问互联网服务
p SGX APP用户不愿将信任决策交给第三方(Intel 服务)完成
p SGX APP 分布式部署模型 v.s. SGX1远程认证的单点验证
Ø SGX2 RA协议实现的一整套解决方案: DCAP(Data Center Attestation Primitives),
包括 quote 生成库 、quote 验证库、PCCS(provisioning certification caching
service), …
Ø SGX2 RA协议的核心算法: ECDSA (Elliptic Curve Digital Signature Algorithm)
14
15. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
信任链建立过程:基于 ECDSA 算法
1. PCE(provisioning certification enclave):
Intel-signed enclave;
角色:local CA for local QEs;
1) provisioning certification key (PCK), 256-bit EC signing key
生成方式: EGETKEY(hw root key, devID, CPUSVN, PCE ISVSVN)
使用方式:CertifyKey(info) à SIG_info(PCK signed)
2) platform provisioning ID(PPID)
生成方式:EGETKEY(hw root key, devID, PCE mrenclave)
使用方式:GETPCInfo(enc_pk, algo) à Enc(PPID)
作用:根据平台Enc(PPID)向 Intel PCS 服务申请对应的PCK证书
图片来源:Intel 文档
Intel PCS
15
16. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
信任链建立过程:基于 ECDSA 算法
2. QE(quoting enclave):以Intel提供的解决方案为例
Intel-signed enclave/ customized enclave;
角色:根据app enclave的信息生成quote
1) 生成 attestation key:
KEY gen: EGETKEY(root seal key, SGX TCB)
KEY certification: signing key cert (PCE signed)
特性:repeatable,无需 persistent storage
图片来源:Intel 文档
Intel PCS
2) 生成 quote
16
17. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
信任链建立过程:基于 ECDSA 算法
Client 验证 Quote [Intel 参考实现]
1) 验证证书链的完整性
2) 验证证书链中key没有被撤销
3) 验证 QE mrsigner, mrenclave, ISVSVN
4) 验证 Intel SGX TCB 状态 (如是否过期等)
5) 验证 quote 中app enclave 信息,包括mrsigner, mrenclave
图片来源:Intel 文档
Intel PCS
Client 需要哪些信息,实现上述验证?
1) PCK cert (Intel signed),包含:1) PCK pk, 2) PPID, 3) TCB
info(CPUSVN+PCESVN),… <-- Intel PCS PCK Cert API
2) PCK cert 对应的撤销列表 <-- Intel PCS PCK CRL API
3) TCB info (一系列组合 CPUSVN+PCESVN) <-- Intel PCS TCB
Info API
4) QE ID (qe mrsigner, mrenclave, isvsvn) <-- Intel PCS QEID
API(可选)
17
18. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
架构图
Intel PCS
拉取相关
证书
DB
PCCS缓存服务
(云厂商/开发者搭建)
Quote
Quote
验证
生成
Enclave
PCCS (SGX Provisioning Certification Caching Service):
作为Intel PCS的缓存,缓存信息有:
1) PCK cert (Intel signed),包含:1) PCK pk, 2) PPID, 3) TCB
info(CPUSVN+PCESVN),…
2) PCK cert 对应的撤销列表
3) TCB info (一系列组合 CPUSVN+PCESVN)
4) QE ID (qe mrsigner, mrenclave, isvsvns)
PCCS 交互:RESTful API ,json格式
Quote
Client
18
19. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
PCCS 部署模式
p
LAZY mode: 在enclave运行时, PCCS根据请求实时从Intel PCS获取PCK证书等信息,
缓存到数据库中
• 特点:PCCS 需要一直联网
p
REQ mode: 在SGX平台部署时,向PCCS发起平台注册请求,PCCS进而自动请求Intel
PCS服务获取PCK证书等信息,缓存到数据库中
• 特点:PCCS 在平台部署时联网,在运行时无需联网
p
OFFLINE mode: 请求PCK证书(PCCS->Intel) 可通过联网设备获取相关信息,并将该
信息注入到PCCS服务中
• 特点:PCCS 无需联网
19
20. SGX2 远程认证的离线实现
•
SGX2 远程认证协议:DCAP
Ø
PCCS 离线部署模式:风险可控
3. 获取平台PCK证书
platform_collaterals.json
Intel PCS
联网设备
隔离环境
4. 注入平台PCK证书
platform_collaterals.json
PccsAdmin
Tool
2.拉取平台注册信息
platform_list.json
PCCS
pckcache.db
5.Quote 生成
1.平台注册
Enclave
PCKIDRetrieval
Tool
SGX Platform
7. 拉取PCK证书
等信息,验证quote
6. Quote
client
8. Quote
验证结果
20
21. 04
SGX 相关应用介绍
22. SGX 相关应用介绍
•
SGX License
Ø
Ø
功能:
p 代码知识产权保护
p 鉴权限制:CPU绑定、执行时间、多任务并发数量
p 支持在线授权&离线授权
p 兼容各类SGX应用架构,SGX SDK & OCCLUM
应用:
p
成功服务了若干个全离线客户
22
23. SGX 相关应用介绍
•
SGXDB & SGXML
Ø
Ø
功能:
p 全周期的数据隐私保护
p 支持丰富的SQL语义,支持python脚本执行
p 完善的审批与鉴权机制
p 支持上云部署及私有部署
应用:
p
成功服务近亿级记录数据融合场景
23
24. 非常感谢您的观看