SGX可以证明两个飞地在不同的计算机上吗?

时间:2018-10-13 14:48:53

标签: tpm sgx

想象一个云提供商将两个虚拟机租给客户。尽管云提供商可能试图欺骗客户,但假设客户希望检查两个VM是否在不同的物理计算机上运行。

两台机器均提供SGX并启用了TPM。

我的第一个想法是使用远程证明并比较使用的密钥,因为每台物理计算机在出厂时都会安装一个唯一的认可密钥。但是,SGX文档明确指出,远程证明使用组密钥来保护隐私,因此客户将无法确定两个远程证明是否由不同的硬件签名。

假设我已经在每台计算机上建立了一个安全的飞地。

是否有可能从飞地中读取EK公钥(或其散列),将其放入报价的数据部分,然后发送带有该内容的远程证明?然后,远程证明将证明目标计算机已按照给定的代码运行,并且由于代码读取并返回了EK,因此我们也将拥有EK。

related question建议仅使用TPM无效(实际上是无效的),但让我想知道我们是否能够使用SGX来完成工作。

所以我的问题是:

1)上面的方法真的有效吗?

2)如果是,您能帮我找到令人信服的文档,以确认这是可能的吗?

3)如果没有,我还能做些什么吗?

2 个答案:

答案 0 :(得分:1)

首先,我们不要在这里混淆术语。 SGX远程证明与基于TPM的证明不同(使用Quote命令);因此,我不确定您如何看待TPM的EK。但是我对SGX不太了解,所以坚持使用TPM:

如果您获得两个带有两个证明密钥签名的引号,并持有由TPM制造商签名的证书,那么这仅说明您正在使用两台不同的计算机。也就是说,您可以伪造软件中的TPM,但不能伪造证书。如果您没有AK证书,则可以从EK证书中获取公钥,并让TPM证明它有权访问相应的私钥,例如MakeCredential后跟ActivateCredential。 TPM制造商确实提供EK证书,至少是我看过的证书。

答案 1 :(得分:0)

只要您对使用的飞地有一定的控制权,您还可以使用SGX的密钥派生机制来检查您是否在同一主机上执行。

SGX的密钥确定性地为绑定到安全区ID或签名者ID的安全区提供加密密钥。 这意味着,如果两个飞地在同一平台(主机)上执行,则使用相同的签署者密钥进行签名的飞地可以获得相同的密钥。

注意:这当然只有在密钥派生不受虚拟化影响的情况下才有效,据我所知,确实是这种情况,尽管我没有对其进行测试。