1

我正在尝试在英特尔 SGX SDK 中运行远程证明示例代码。我总是收到错误“错误,调用 sgx_ra_get_msg1 失败 [wmain]。” 我认为这是因为该sgx_ra_init(&g_sp_pub_key, b_pse, p_context)函数返回零值p_context,无法使用。

有没有人可以正确运行远程证明示例代码?PS:我可以运行本地认证示例代码,我认为Intel SGX开发环境是可以的。

4

1 回答 1

2

我假设您正在 Ubuntu 上运行以下链接提供的示例代码: https ://github.com/01org/linux-sgx/tree/master/SampleCode/RemoteAttestation

我遇到过同样的问题。它不起作用的原因可能有多种。我按照下面提到的步骤解决了它:

  1. 检查 BIOS 更新。如果可用,请更新您的 BIOS。
  2. 确保您在 BIOS 中启用了 Intel(r) Software Guard Extensions (SGX)。
  3. 检查 Internet 连接是否由于任何防火墙/代理而受到限制。如果它受到限制,您将需要在您的环境和/或代码中考虑这一点,或者您可以只使用没有限制的连接。
  4. 检查是否加载了 Intel(r) SGX 驱动程序。您可以通过检查“isgx”是否存在于通过在 Linux BASH shell 上运行以下命令生成的已加载内核模块列表中来做到这一点:

    sudo lsmod | sort
    
  5. 确保您的 Makefile 设置了正确的 SGX_SDK 路径。
  6. 假设您已按照上述步骤操作,则可以重新启动 AESM 守护程序服务。在外壳上:

    sudo service aesmd restart
    
  7. 然后尝试执行程序。您无需再次构建项目。

仅供参考,您可以为 SGX 硬件和调试模式构建项目,然后在 shell 上通过以下命令执行:

make clean
make SGX_MODE=HW SGX_DEBUG=1
./app

我希望这有帮助。

于 2016-11-04T17:26:33.377 回答