英特尔SGX如何在启动之前验证飞地库?

时间:2018-04-03 16:19:03

标签: sgx enclave

我研究并发现飞地是用私钥签名的,当时在飞地发射时,它将使用随飞地库提供的公钥进行验证。

我的问题是如何在公共密钥出现时信任飞地二进制文件。

在这两者之间,有人可以更改代码并使用他的私钥再次签名,并将他的公钥附加到SIGSTRUCT。

1 个答案:

答案 0 :(得分:0)

你是对的。安全区代码可以轻松地进行操作,攻击者可以创建新的签名。执行平台将无法识别此篡改,因为签名对于(篡改)代码是正确的。该平台可以包含一些允许的公钥列表,但是在新交所的威胁模型中,该平台还是对抗性的。

使用远程证明解决了该问题。 受信任的硬件和软件会为创建的安全区生成一个报价,其中包含其测量值(MRENCLAVE)以及其签名者的哈希(MRSIGNER)。有了这些值,远程验证者就可以确保安全区已正确创建,并且未被篡改。

因此,在(成功的)远程证明之前,不应信任(具有秘密)飞地。