Intel SGX可以很好的保证enclave(安全区域)内代码和数据的隐私性和完整性。但是如果需要多个enclave合作的话,在合作之前需要确认对方时SGX enclave。这种验证机制并不简单,分为本地验证和远程验证两种,下面会分别介绍。SGX的验证机制有很多细节,这里不会涉及太多的细节,重在帮助大家理解SGX的验证机制,更好的理解SGX的安全性以及它可能存在的弱点。
本地验证 Local Attestation
SGX的本地验证用于一个enclave(称之为被验证enclave)向同一机器上的另一个enclave(称之为目标enclave)证明它的身份。
本地验证流程:
- 被验证enclave调用EREPORT指令,,生成验证报告并发送给目标enclave
- 目标enclave收到验证报告后,判断验证报告是否可信
EREPORT产生的验证报告中包含以下信息:
MAC(Message Authentication Code)标签
由MAC加密系统产生的标签。
MAC加密系统:
发送者利用MAC算法读取对称密钥和一个变长的消息,产生一个定长的MAC标签。接受者只要提供原始消息、对称密钥和MAC标签,就可以验证消息的真实性。
enclave当前的身份信息
- enclave的measurement
- 基于证书的身份信息(比如软件开发商的安全版本号等)
SGX实现的安全版本号(CPUSVN)
enclave提供的64-byte(512-bit)的消息
KEYID
enclave初始化时产生的一个随机数。
验证报告的详细内容如下图:
目标enclave想要通过MAC标签验证消息是由SGX实现发出的,那么生成MAC标签的对称密钥只能SGX实现和目标enclave知道。被验证enclave是不可以知道这个对称密钥的,一旦这个对称密钥泄露,验证报告就可能被伪造。
这个对称密钥成为Report Key,由EGETKEY指令产生。EGETKEY指令生成密钥的依据包括:
- 嵌入到处理器中的一个秘密
- 包括目标enclave的measurement在内的一些信息
目标enclave可以自己生成相应的对称密钥,验证报告中的信息。
目标enclave可以确定验证报告中的MAC标签是由SGX实现生成的,原因有二:
- EGETKEY生成密钥的算法和MAC加密系统的MAC算法都是保密的,只有SGX实现才能产生这个MAC标签
- 只有SGX实现可以读取内嵌在处理器中的秘密
远程验证 Remote Attestation
相比于本地验证,远程验证要更加复杂。在介绍远程验证前,先介绍将会涉及到的一些内容:
在生产的过程中,处理器中的一个叫做e-fuse存储器中烧有两个秘密,我们称这两个秘密为Provisioning Secret和Seal Secret。
Provisioning Secret是intel的密钥生成工具产生的,处理器生产过程中与intel的密钥生成工具通信,获取Provisioning Secret。在烧入处理器e-fuse的同时也会被intel保存在数据库。
Seal Secret是在处理器芯片中生成的,所以Intel不知道这个秘密是什么。Seal Secret存在的好处在于,即便攻击者攻破了intel的密钥生成工具,也没办法生成EGETKEY生成的密钥。Seal Secret只有被EGETKEY做为密钥生成依据时才可以被访问,而不会暴露给任何软件。
远程验证流程:
被验证enclave利用EGETKEY指令生成Provisioning Key,生成Provisioning Key的依据包括:
- Provisioning Secret
- enclave当前以证书为基础的身份信息
- SGX实现的安全版本号
被验证enclave利用Provisioning Key向intel的Provisioning服务证明自己是可信的。
上面提过,intel记录了Provisioning Secret,同时拥有生成密钥的算法。
通过验证后,intel的Provisioning服务会生成一个Attestation Key并返还给被验证enclave
被验证enclave再利用EGETKEY指令以Seal Secret等信息为依据生成Provisioning Seal key,用这个密钥加密Attestation Key后存入计算机内存或磁盘。
Quoting Enclave通过*EGETKEY*获得Provisioning Seal key,从内存中读取并解密Attestation Key
被验证enclave向同一机器上的一个成为Quoting Enclave的特殊enclave执行本地验证
Quoting Enclave将收到的本地验证的验证报告中的MAC标签换成由Attestation Key产生的签名(一种intel的特殊签名机制)
Quoting Enclave将远程验证报告发送给目标enclave
References
- Costan, Victor, Ilia Lebedev, and Srinivas Devadas. “Secure processors part I: background, taxonomy for secure enclaves and Intel SGX architecture.” Foundations and Trends in Electronic Design Automation 11.1-2 (2017): 1-248.