graphene attestation and secret provisioning
graphene 通常情况下用于创建和运行可信执行环境。TEE 的一个非常重要的特征是 attestation,其是一种供远程用户验证应用程序在具有预期初始状态的最新 TEE 中的真实硬件上运行的机制。
有两种类型的 attestation:local attestation 和 remote attestation。当两个 TEE 在同一台物理机上运行时使用 local attestation,当用户证明在远程物理机上运行的 TEE 时使用 remote attestation。
就其本身而言,attestation 仅向用户保证远程执行的 TEE 是可信的,执行正确的代码以及安全地处理数据。除了这种保证之外,用户还需要创建一个安全通道,以便与远程 TEE 进行可信通信。在许多情况下,用户还希望 Secret Provisioning 向远程 TEE 透明地供应密钥和其他敏感数据。
graphene 为 attestation 流程提供了三个级别的支持:
- remote attestation 通过 /dev/attestation 伪文件系统暴露给应用程序。graphene 中的远程证明使用英特尔 SGX PSW 的 AESM 服务和幕后的 DCAP 库。
- secure channel 通过使用 RA-TLS 库构建。 RA-TLS 在底层使用原始的 /dev/attestation 伪文件。
- secret provision 使用 Secret Provisioning 库构建的。这些库在后台使用 RA-TLS。
在 Graphene 下运行的应用程序可以使用上述三个级别中的任何一个级别来构建其 attestation 流程。每个下一级别都建立在前一级的基础上,并向应用程序公开一个更简单的 API(但其功能也受到更多限制)。
EPID 和 DCAP 的 remote attestation 流程
英特尔 SGX 中的 remote attestation 有两种形式:EPID 和 DCAP。前者用于客户端机器,而后者用于数据中心环境。
上图显示了基于 EPID 的 remote attestation。用户应用程序在远程未受信任机器上的 SGX enclave 中运行,而最终用户在受信任机器上等待来自该 enclave 的证明证据。
- 基于 EPID 的 remote attestation 开始于 enclavized 化的应用程序打开特殊文件 /dev/attestation/user_report_data 进行写入
- 在后台,graphene 使用 EREPORT 硬件指令生成 SGX report
- SGX report 生成后,应用程序打开另一个特殊文件 /dev/attestation/quote 进行读取
- 在幕后,graphene 与 Quoting Enclave 通信以接收 SGX quote
- 若是第一次部署,Quoting Enclave 向 Provisioning Enclave 请求 EPID 密钥
- 对于首次部署,Provisioning Enclave 从可访问互联网的 Intel Provisioning Service 请求与此 SGX 机器关联的 EPID 密钥
- Quoting Enclave 根据应用程序提供的 SGX report 生成 SGX quote,并将其发送回 enclavized 用户应用程序。应用程序将此 SGX quote 存储在其 enclave 内存中,稍后可以根据请求将其发送给远程用户(验证者)
- 当远程用户想要验证 SGX enclave 时,它会用它请求 remote attestation,并且 enclavized 应用程序将 SGX quote 转发到远程机器
- 远程用户咨询 Intel Attestation Service(通过将 SGX quote 转发给该服务),该服务返回此 SGX quote 是否可信
最后,远程用户还根据预期验证嵌入在 SGX quote 中的 enclave 度量值。在此验证过程之后,远程用户可以信任 SGX enclave,并可以开始与其通信。
上图显示了基于 DCAP 的 remote attestation。DCAP 流程与 EPID 流程非常相似,只是 DCAP 流程不是使用 EPID 密钥和咨询 Intel Attestation Service,而是使用带有 X.509 证书链的经典 PKI(
Public Key Infrastructure)公钥基础设施)。
- 步骤 1-4 与上图 EPID 相同
- 步骤 5 Quoting Enclave 与 Provisioning Certification Enclave (PCE) 通信,而不是上图中的 Provisioning Enclave
- 步骤 6 PCE 使用另一项名为 Intel Provisioning Certification Service (PCS) 的 Intel 服务来获取证明抵押品:SGX attestation 证书和证书吊销列表
- 最终用户无需在每次收到新的 SGX quote 时咨询 intel Web 服务——相反,最终用户会定期获取 DCAP attestation 证书并将其缓存在本地计算机上(初步步骤 0)。
- 当 SGX quote 到达时,用户将 quote 中内嵌的证书与这些缓存的证书进行比较