Ubuntu 16.04下Intel SGX应用程序程序开发——OCALL调用打印Hello World!

本文介绍了如何在Ubuntu 16.04环境下,使用Intel Software Guard Extensions (SGX) SDK进行Enclave应用程序开发。文章详细阐述了在Enclave中通过OCALL(Out-of-Enclave Call)调用不可信代码的printf函数,以打印'Hello World!'。文章涵盖了项目文件结构、Enclave.edl接口定义、Enclave.cpp和Enclave.h的修改,以及App.cpp和Makefile的调整过程。
摘要由CSDN通过智能技术生成

本文作者:邱朋飞

这篇文章主要讲述在Enclave函数中调用应用程序中的不可信函数,打印Hello World!。由于SGX认为printf是不安全的函数,所以不能在Enclave函数中直接使用printf函数打印想打印的内容,不过Intel SGX提供了一个Enclave中的printf封装函数,可以用来打印想打印的内容,可以参考:http://blog.csdn.net/qiu_pengfei/article/details/78798644

安装完SGX SDK后,我们可以在输入的安装目录下的/sgxsdk/SampleCode文件夹下找到Intel提供的SGX应用程序示例,共有6个例子,根据名字可以大概判断是做什么的,每个示例中的README.txt文件给出了示例的详细信息。6个示例如下所示:


1. 复制SampleEnclave示例并建立自己的OcallHelloWorld项目
SampleEnclave示例实现了安全printf函数,可以被用来安全打印我们需要的字符串。但是如果我们不基于其提供的printf函数,是不能调用printf函数打印内容的。我们把SampleEnclave示例复制到自己的文件夹中,基于该示例,我们开发一个使用Enclave函数通过OCALL调用不可信函数,打印字符串”Hello World!“。我们把复制得到的SampleEnclave文件夹名称改成OcallHelloWorld文件夹。下左1图展示了项目的目录结构:

   

2. 删除一些不需要的文件

其中.settings是隐藏文件夹,里面的language.settings.xml定义了一些与语言相关的信息,我们不用管它。.cproject和.project是隐藏文件,我们也不用管它们。README.txt没有用,我们可以删除README.txt。App文件夹下的Edger8rSyntax和TrustedLibrary文件夹及其中的文件在这个项目中是没有用的,我们把它们删除,同理Enclave文件夹下的Edger8rSyntax和TrustedLibrary文件夹在这个项目中也是没有用的,我们把它们删除。最后项目的目录结构如上左2图所示。

3. 项目各个部分内容简介

3.1 App文件夹

该文件夹存放应用程序中的不可信代码部分,共有2个文件,App.cpp文件和App.h文件

3.1.1 App.cpp文件:该文件是应用程序中的不可信部分代码,其中包括了创建Enclave及销毁Enclave的代码,也定义了一些相关的返回码供使用者查看Enclave程序的执行状态。其中的main函数是整个项目的入口函数。是我们要修改的文件。

3.1.2 App.h文件:该文件是应用程序中的不可信部分代码的头文件,定义了一些宏常量和函数声明。是我们要修改的文件。

3.2 Enclave文件夹

该文件夹存放应用程序中的可信代码部分和可信与不可信代码接口文件,共有6个文件,Enclave.config.xml文件、Enclave.cpp文件、Enclave.h文件、Enclave.edl文件、Enclave.lds文件和Enclave_private.pem文件

3.2.1 Enclave.config.xml文件:该文件是Enclave的配置文件,定义了Enclave的元数据信息,我们可以不用更改。

3.2.2 Enclave.cpp文件:该文件是应用程序中的可信部分代码,包括了可信函数的实现,是我们要修改的文件。

3.2.3 Enclave.h文件:该文件是应用程序中的可信部分代码的头文件,定义了一些宏常量和函数声明。是我们要修改的文件。

3.2.4 Enclave.edl文件:该文件是Enclave的接口定义文件,定义了不可信代码调用可信代码的ECALL函数接口和可信代码调用不可信代码的OECALL函数接口,trusted{}中定义了ECALL函数接口,untrusted{}中定义了OECALL

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值