英特尔 SGX 远程证明示例代码
Posted
技术标签:
【中文标题】英特尔 SGX 远程证明示例代码【英文标题】:Intel SGX remote attestation sample code 【发布时间】:2016-10-22 12:05:31 【问题描述】:我正在尝试在英特尔 SGX SDK 中运行远程证明示例代码。我总是收到错误“错误,调用 sgx_ra_get_msg1 失败 [wmain]。”我想是因为sgx_ra_init(&g_sp_pub_key, b_pse, p_context)
函数返回一个零值p_context
,不能使用。
是否有人可以正确运行远程证明示例代码? PS:我可以运行本地认证示例代码,我觉得Intel SGX开发环境还可以。
【问题讨论】:
您是在仿真模式下运行还是在 SGX 硬件上运行? @Freddy 我在支持 SGX 硬件的戴尔笔记本电脑上运行。示例代码处于调试(非生产)模式。 我已经在仿真模式下成功运行了代码。抱歉,我没有在调试模式下运行它的硬件。 【参考方案1】:我假设您在 Ubuntu 上运行以下链接提供的示例代码: https://github.com/01org/linux-sgx/tree/master/SampleCode/RemoteAttestation
我有同样的问题。它不起作用的原因可能有多种。我按照下面提到的步骤解决了它:
-
检查 Bios 更新。如果可用,请更新您的 BIOS。
确保您在 BIOS 中启用了 Intel(r) Software Guard Extensions (SGX)。
检查 Internet 连接是否由于任何防火墙/代理而受到限制。如果它受到限制,您需要在您的环境和/或代码中考虑到这一点,或者您可以只使用没有限制的连接。
检查是否加载了 Intel(r) SGX 驱动程序。您可以通过检查“isgx”是否存在于通过在 Linux BASH shell 上运行以下命令生成的已加载内核模块列表中来做到这一点:
sudo lsmod | sort
确保您的 Makefile 设置了正确的 SGX_SDK 路径。
假设您已按照上述步骤操作,则可以重新启动 AESM 守护程序服务。在外壳上:
sudo service aesmd restart
然后尝试执行程序。您无需再次构建项目。
仅供参考,您可以为 SGX 硬件和调试模式构建项目,然后在 shell 上通过以下命令执行:
make clean
make SGX_MODE=HW SGX_DEBUG=1
./app
我希望这会有所帮助。
【讨论】:
以上是关于英特尔 SGX 远程证明示例代码的主要内容,如果未能解决你的问题,请参考以下文章
英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础