Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我研究并发现 enclave 是用私钥签名的,并且在 enclave 启动时,它将使用 enclave 库附带的公钥进行验证。
我的问题是如何信任带有公钥的飞地二进制文件。
在这两者之间,有人可以更改代码并用他的私钥再次签名,并将他的公钥附加到 SIGSTRUCT。
你说的对。Enclave 代码可以很容易地被操纵,并且攻击者可以创建一个新的签名。执行平台不会识别这种篡改,因为签名对于(被篡改的)代码是正确的。该平台可能有一些允许的公钥列表,但在新交所的威胁模型中,该平台无论如何都是对抗性的。
使用远程证明解决了该问题。受信任的硬件和软件为创建的飞地生成报价,其中包含其测量值 (MRENCLAVE) 及其签名者的哈希 (MRSIGNER)。使用这些值,远程验证者可以确保 enclave 被正确创建并且没有被篡改。
因此,在(成功的)远程证明之前,不应信任飞地(带有秘密)。