安装SGX
本文介绍SGX的原理,并给出了安装说明。
背景信息
英特尔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的加密保护下利用数据进行运算,结果会以密文形式返回给您。这种模式下,您既可以利用云计算强大的计算力,又不用担心数据泄漏。
EDL(Enclave Definition Language)是SGX编程的核心,其中定义了所有围圈里对外读写、处理数据的函数。在编译阶段,SDK提供的Edger8r 工具会根据EDL中定义的函数生成围圈和普通内存的桥接函数,并做相应的安全检测。
函数分为信任函数(ecall)和不可信函数(ocall):
- ecall:定义在信任区域(trusted),在围圈外被调用,并在围圈内执行。
- ocall:定义在不可信区域(untrusted),在围圈内被调用,并在围圈外执行。
// demo.edl
enclave {
// Add your definition of "secret_t" here
trusted {
public void get_secret([out] secret_t* secret);
};
untrusted {
// This OCALL is for illustration purposes only.
// It should not be used in a real enclave,
// unless it is during the development phase
// for debugging purposes.
void dump_secret([in] const secret_t* secret);
};
};
以安装文件方式安装SGX
需要先安装对应Linux内核版本的头文件,安装SGX时包括驱动、PSW、SDK等组件。
说明 样例中的 Makefile 默认安装目录是/opt/intel/。
以源代码方式安装 SGX
需要先安装对应 Linux 内核版本的头文件,安装SGX时包括驱动、PSW、SDK 等组件。
说明 样例中的 Makefile 默认安装目录是/opt/intel/。
- 从官方 Github下载源代码。
- 按README.md所述流程编译源代码。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论