我研究发现enclave是用私钥签名的,在enclave启动时,它将使用enclave库附带的公钥进行验证。
我的问题是,当enclave二进制文件带有公钥时,如何信任它。
在此期间,有人可以更改代码,并用他的私钥再次签名,然后将他的公钥附加到SIGSTRUCT。
发布于 2019-01-18 17:51:56
你是正确的。Enclave代码很容易被操控,攻击者可以创建新的签名。执行平台将不会识别这种篡改,因为签名对于(被篡改的)代码是正确的。该平台可能有一些允许的公钥列表,但在SGX的威胁模型中,该平台无论如何都是对抗性的。
使用远程认证解决了这个问题。可信硬件和软件为创建的enclave生成报价,其中包含其测量值(MRENCLAVE)及其签名者的散列(MRSIGNER)。有了这些值,远程验证者可以确保正确地创建了enclave并且没有被篡改。
因此,在(成功)远程证明之前,不应信任enclave (带有秘密)。
https://stackoverflow.com/questions/49634767
复制相似问题