0

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

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

我的第一个想法是使用远程认证并比较使用的密钥,因为每台物理机器都会在工厂安装一个唯一的背书密钥。但是,新交所文档明确指出,远程证明使用组密钥来保护隐私,因此客户无法判断这两个远程证明是否由不同的硬件签名。

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

是否可以从 enclave 中读取 EK 公钥(或其哈希),将其放入报价的数据部分,然后发送远程证明?然后远程证明将证明目标机器按照给定的方式运行代码,并且由于代码读取并返回 EK,我们也将拥有 EK。

这个相关问题表明,仅使用 TPM 是行不通的(实际上是行不通的),但让我想知道我们是否可以使用 SGX 来完成这项工作。

所以我的问题是:

1)以上真的有用吗?

2)如果是,你能帮我找到令人信服的文件来证实这是可能的吗?

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

4

2 回答 2

2

首先,我们不要在这里混淆这些术语。SGX 远程证明与基于 TPM 的证明(使用Quote命令)不同;所以我不确定你认为 TPM 的 EK 是如何进入其中的。但我对新交所了解不多,所以坚持使用 TPM:

如果您可以获得使用两个认证密钥签名的两个报价,您持有 TPM 制造商签名的证书,仅此一项就证明您正在与两台不同的机器交谈。也就是说,您可以在软件中伪造 TPM,但不能伪造证书。如果您没有 AK 证书,您可以从 EK 证书中获取公钥,并让 TPM 证明它可以访问相应的私钥,例如MakeCredential后跟ActivateCredential. TPM 制造商确实提供了 EK 证书,至少是我看过的那些。

于 2018-10-15T13:23:10.553 回答
0

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

SGX 的密钥派生确定性地为绑定到 enclave id 或签名者 id 的 enclave 提供加密密钥。这意味着使用相同签名者密钥签名的两个飞地可以获得相同的密钥,前提是它们在同一平台(主机)上执行。

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

于 2019-01-18T10:21:59.610 回答