一文读懂SGX(Ⅱ): 安全存放数据的“黑匣”
围绕热点问题进行深入浅出地解读
与你共话技术发展 点亮数字未来
过去的十年,为了保护敏感代码和数据,各类CPU供应商都推出了他们的TEE方案,例如,以创建一个安全的执行环境。其中,。本系列将聚焦介绍SGX的基本技术原理,并结合当前可信计算领域存在的安全问题,解析该技术在安全方面的优势及其应用需求。
区块链百科No.61:SGX(Ⅱ)
在上一篇中,我们介绍了英特尔的Software Guard Extensions (SGX)是一系列可信计算设计的最新迭代,旨在通过利用可信硬件来解决安全的远程计算问题。
从用户和应用程序开发人员的角度来看,,软件代码、数据和堆栈被存储在Enclave(飞地/安全容器)中,并受到硬件强制访问控制策略的保护,使其免受恶意实体的攻击。
而创建一个启用SGX的应用程序,
离不开三个关键环节:飞地,认证和密封。
建立飞地
Enclave(飞地)就像一个被保护的安全容器,
用于存放应用程序敏感数据和代码。
英特尔SGX要求应用设计分成两个组件:即Enclave,它是应用程序代码及其缓存数据/内存运行的地方;,是保存应用程序及其它模块的剩余部分。
在应用程序设计期间,确定应用程序的哪一部分需要在Enclaves中运行是非常重要的。
选择放入受信任组件的代码与应用程序的其余部分是隔离的。初始化Enclave并将代码加载到内存后,就不能从不受信任的组件读取或更改该代码。,应用程序可以设有多个受信任组件,并且可信组件应尽可能小,以减少攻击面。
认证协议
。例如,如果Enclave太小而不能容纳所有信息,则需要进行数据交换。因此,双方必须向对方证明自己是可信任的。
当启用SGX的ISV客户端请求机密信息时,例如密码管理服务,。这两个条件都需要有安全执行环境的证明。英特尔SGX将此证明过程称为认证。
针对上述两种场景,分别有两种类型的认证:发生在同一平台上的两个Enclave相互进行身份验证时;则是平台间的远程认证, 用于远程的认证者认证enclave的身份信息。例如为ISV提供这种客户端到服务器的验证。
换句话说,基于SGX硬件的认证保证了
❸
密封数据
但是,如果这些机密数据需要被保存以供将来在Enclave中使用,则必须在其关闭之前将数据存储在Enclave边界之外。
为了将机密数据保存到不可信的介质中并保证数据的隐私性,这其实类似加密和解密操作,并有两种密钥策略可被选择:
:此方法使用EGETKEY指令将当前Enclave MRENCLAVE绑定到密封密钥。因此,只有具有相同MRENCLAVE的Enclave才能生成解封数据的密钥。如果Enclave相关的任何属性已更改,则MRENCLAVE也将更改,密封的数据则无法解密。简单来说,就是只有同一台电脑的同一个Enclave才可以解封数据。
:此方法使用EGETKEY指令将Enclave标识(初始化时存储在MRSIGNER)绑定到由根密钥派生的密封密钥中;Enclave的产品ID也绑定到派生的密封密钥。因此,只有具有相同MRSIGNER测量和相同产品ID的Enclave才能检索密封密钥并解密数据。但MRSIGNER允许旧版本应用程序密封的数据被新版本应用程序或者其他版本的应用程序解封读取。因此,。
由此,英特尔SGX通过可信硬件实现安全计算,
Scan QR code with WeChat