我想设计和构建一个安全的远程计算应用程序。我想利用英特尔 SGX 的功能,我想了 2 种方法,但由于缺乏开发经验,我无法决定应该实施哪种方法。
场景:典型客户端(假定安全 +非 SGX)机器和服务器(可能是恶意 +启用 SGX)系统
方法1:每个客户端(有一些数据)在客户端生成一个对称密钥(AES)并在本地加密数据并发送到服务器。客户端密钥通过远程证明提供给服务器,然后使用此密钥解密 SGX 飞地内的数据。
方法 2:服务器在 enclave 内生成公私密钥对,并将公钥发送给每个客户端。然后每个客户端使用公钥加密,然后将数据发送到服务器,然后使用先前生成的私钥解密。
请注意:SGX enclave 可以反汇编但无法调试。那么方法2是否安全?