visual studio 2012 - Using OpenSSL with Intel SGX Enclave



我目前正在开发一个英特尔SGX应用程序。我需要在飞地中使用OpenSSL库。然而,当我建立飞地时,出现了大量的错误。它们看起来像这样:

Error   17  error C2061: syntax error : identifier 'FILE'   C:OpenSSL-Win32includeopensslasn1.h 994 1   Enclave

我不确定我是否正确配置了enclave。

VC++ Directories --> Include Directories "C://OpenSSL-Win32/include"
                     Library Directories "C://OpenSSL-Win32/lib"
C/C++ --> Additional Include Directories "(some SGX default); C://OpenSSL-Win32/include"
Linker --> General --> Additional Library Directories "C://OpenSSL-Win32/lib"
           Input --> Additional Dependencies: "libeay32.lib; ssleay32.lib"

出于同样的目的,我将mbedtls移植到SGX环境中。移植版本可以在GitHub上获得。请随意结帐

您是否使用英特尔可信的OpenSSL库?有一个示例代码"X509项目",展示了如何在enclave中使用受信任的OpenSSL (topenssl)。如果你想使用另一个版本的OpenSSL,你应该使用英特尔信任的标准C/c++库来构建它,并创建一个"enclave库",然后将其链接到enclave。您不能将enclave与一些随机库链接,您只能将其与受信任的静态库链接。

您可能还想检查一下TaLoS,它似乎正在做您想做的事情:

TaLoS是一个TLS库,允许现有的应用程序(使用OpenSSL/LibreSSL接口)在英特尔SGX飞地内安全地终止其TLS连接。代码可以在GitHub上找到。

还有一个技术报告,其中包含有关体系结构和性能结果的详细信息。

我从您的设置中了解到您没有使用可信版本的OpenSSL。在enclave中有几个不同的库支持TLS。Intel为enclave GitHub提供了OpenSSL的实现。我用他们的文档创建了一个简短的安装指南。

然而,英特尔版本有一些限制,例如他们不支持在飞地内结束TLS连接;相反,它们支持加密功能。还有其他一些支持网络特性的库,但它们主要没有更新。

最新更新