文档中心 > 云服务器 ECS

英特尔 SGX 基础介绍

更新时间: 访问次数:2816

英特尔 SGX(Intel Software Guard Extension)是英特尔指令集架构的一个扩展。SGX 为您提供了围圈(Enclave),即内存中一个加密的可信执行区域,由 CPU 保护您的数据和隐私不被恶意代码窃取。

原理

SGX 利用新增的处理器指令,在内存中分配一部分区域 EPC(Enclave Page Cache),通过 CPU 内的加密引擎 MEE(Memory Encryption Engine)对其中的数据进行加密。EPC 中加密的内容只有进入 CPU 后才会被解密成明文。因此,在 SGX 中,您可以不信任操作系统、VMM、甚至 BIOS,只需要信任 CPU 便能确保隐私数据不会泄漏。

应用

实际应用中,您可以把隐私数据加密后以密文形式传递至云上的围圈中,并通过远程证明把对应的秘钥也传入围圈。然后在 CPU 的加密保护下利用数据进行运算,结果会以密文形式返回给您。这种模式下,您既可以利用云计算强大的计算力,又不用担心数据泄漏。

sgx enclave

EDL(Enclave Definition Language)

EDL 是 SGX 编程的核心,其中定义了所有围圈里对外读写、处理数据的函数。在编译阶段,SDK 提供的 Edger8r 工具会根据 EDL 中定义的函数生成围圈和普通内存的桥接函数,并做相应的安全检测。

函数分为信任函数(ecall)和不可信函数(ocall):

  • ecall:定义在信任区域(trusted),在围圈外被调用,并在围圈内执行。
  • ocall:定义在不可信区域(untrusted),在围圈内被调用,并在围圈外执行。
 
 
  1. // demo.edl
  2. enclave {
  3. // Add your definition of "secret_t" here
  4. trusted {
  5. public void get_secret([out] secret_t* secret);
  6. };
  7. untrusted {
  8. // This OCALL is for illustration purposes only.
  9. // It should not be used in a real enclave,
  10. // unless it is during the development phase
  11. // for debugging purposes.
  12. void dump_secret([in] const secret_t* secret);
  13. };
  14. };

安装 SGX

您可以通过安装文件或者源代码安装 SGX,包括驱动、PSW 和 SDK 等。两种安装方式都需要安装对应 Linux 内核版本的头文件。

说明: 样例中的 Makefile 默认安装目录是 /opt/intel/

以安装文件方式安装 SGX

  1. 下载 适用 SGX 版本的安装文件。

  2. 按照 安装指南 的步骤进行安装。

以源代码方式安装 SGX

  1. 官方 Github 下载源代码。

  2. 按 README.md 所述流程编译源代码。

FAQ

关于此文档暂时还没有FAQ
返回
顶部