TrustFlow 可信执行环境之 Intel SGX TEE 方案
打开链接即可点亮社区 Star,照亮技术的前进之路。
Github 地址:https://github.com/secretflow/trustflow/*
Intel SGX(Software Guard Extensions)是由 Intel 推出的一种 TEE 方案。SGX 的安全模型是只信任 CPU 和微码。
Enclave
SGX 最重要的核心概念是 Enclave(飞地),Enclave 可以被视为进程中安全可信的部分,其中运行的程序和数据的机密性和完整性受到 SGX 的保护。Enclave 所处的内存是加密的,除了 Enclave 自身和 CPU 之外, 其他系统软件包括 Operating system (OS), Virtual Machine Monitor (VMM), System Management Mode (SMM), BIOS 等都无法访问 Enclave,从而避免 Enclave 被恶意攻击。
下图中黄色部分表示了 Enclave。从图中我们可以看到,在标准的 SGX 模型下,应用被分为可信和不可信两部分,可信部分为 Enclave, 非可信部分为运行在外面的代码和数据。
关于 Enclave 的更详细介绍,可以阅读SGX Enclave.
Enclave 身份标识 - MRENCLAVE 和 MRSIGNER
每个 Enclave 都具有两个与其绑定的身份标识。
第一个是 Enclave Identity(飞地身份),它由 MRENCLAVE 的值表示,MRENCLAVE 是 Enclave 的度量值,度量了 Enclave 构建和初始化过程的每个步骤的加密哈希值。MRENCLAVE 唯一标识任何特定的飞地。不同版本的飞地构建/版本将导致不同的 MRENCLAVE 值。
第二个是由授权机构提供的 Signing Identity(签名身份),该机构在分发之前对 enclave 进行签名。该值称为 MRSIGNER,对于所有使用相同授权机构签名的飞地,该值均是相同的。
根据场景的不同,您可以选择用 MRENCLAVE 或者 MRSIGNER 来唯一确认 Enclave 的身份,通常情况下应该使用 MRENCLAVE。若您可以信任某个机构,则可以使用 MRSIGNER,从而减缓使用中可能遇到的潜在问题,比如代码频繁升级带来的困扰。
远程认证
远程认证提供了一种机制,允许远程用户验证远程进程中软件的真实性。SGX 的远程认证可以对以下内容进行验证:
Enclave 运行在 SGX 内部
Enclave 运行在具有最新安全级别的系统上
Enclave 的代码
通过远程认证,用户可以确保 enclave 运行环境是可靠的,且运行的代码未被篡改。
目前 SGX 支持两种类型的远程认证:ECDSA(Elliptic Curve Digital Signature Algorithm)认证和 Intel EPID(Intel Enhanced Privacy ID) 认证,更详细说明参见intel remote attestation。SecretFlow 目前仅支持 ECDSA 认证模式。
ECDSA 配合 Intel SGX DCAP(Intel Software Guard Extensions Data Center Attestation Primitives)可以允许用户构建自己的认证服务,而不需要依赖 intel 的远程认证服务。intel 提供了 Provisioning Certification Caching Service (PCCS)来帮助用户完成这一目标。
(图片来源)
如何部署 PCCS 服务
情形一:使用云厂商自带的 PCCS 服务
如果您购买的是云厂商的机器,则云厂商通常会默认提供 PCCS 服务。 比如您的服务器提供商是阿里云,则可参考阿里云远程证明服务。
具体可以查阅对应云厂商的官方文档。
自行搭建 PCCS 服务
如果您希望自行搭建 PCCS 服务,则可以参考Intel PCCS。







评论