OpenSGX 安装编译教程

介绍:

   英特尔提供的SGX是一个扩展的x86指令集架构,它能让应用程序在叫做enclave的受保护的容器内运行。为不信任特权软件(如:操作系统和虚拟机管理程序)上的应用程序提供隔离的执行和内存保护。通过减少可信计算基(TCB),SGX提供窄攻击面。掌握了所有的软件组件和硬件,除CPU包外的敌人不能危害到SGX应用的代码和数据。SGX不仅保证了程序代码和数据的完整性,还保证了SGX程序的保密性。

     OpenSGX是基于QEMU的二进制翻译实现的软件SGX仿真器,它在指令集水平仿真SGX硬件组件。此外,OpenSGX完全是一个用于SGX开发的平台,它包含仿真硬件和操作系统组件,enclave程序加载器,一个OpenSGX用户库,还支持调试和性能监控。使用OpenSGX能实现调试和评估一个应用程序。

    

     使用QEMU实现SGX指令以及仿真硬件组件。特别的,利用它的二进制翻译功能,在QEMU的用户空间仿真模式的顶层实现OpenSGX。Figure 1展示整体设计组件。OpenSGX包含6个一起工作的组件,提供功能齐全的SGX开发环境。6个组件如下:

  1. Intel SGX硬件仿真(Emulated Intel SGX hardware):硬件组件包括SGX指令,SGX数据结构,EPC和它的访问保护,以及SGX处理键内QEMU    软件。
  2. 操作系统仿真(OS emulation):系统调用仿真enclave程序用于执行SGX操作(如:enclave配置和动态内存分配)。
  3. enclave程序加载(Enclave program loader):一个用于自动处理通过enclave代码和数据段加载到EPC及适当的提供enclave栈和堆区域的加载器。
  4. OpenSGX用户库(libsgx):一个用在enclave内部和外部的方便的库。它为所有SGX用户级指令提供封装,为高级应用程序提供接口。
  5. 调试器支持( Debugger support):扩展gbd来映射仿真指令(这里,,OpenSGX也通过gdb公开SGX数据结构的密钥)
  6. 性能监视(Performance monitoring):性能计数器/分析器,允许用户手机enclave程序的性能数据

     需要注意的是OpenSGX不支持英特尔SGX二进制兼容性。现在还没有具体或标准的二进制级别的互操作。虽然OpenSGX支持大部分的具体的指令,我们并不实现所有的指令。例如,OpenSGX并没有实现Intel SGX指定的调试指令,但是软件层能提供丰富的调试环境(例如,熟悉的GBD存根)。OpenSGx是一种软件仿真器,不提供安全保证。它的安全保证和Intel SGX不是一个层次的。

    首先,下载源码

   

$git clone https://github.com/sslab-gatech/opensgx.git

    安装OpenSGX需要的依赖库: libglib2.0-dev zlib1g-dev libaio-dev autoconf libtool libssl-dev libelf-dev。最好进入root权限安装,否则可能会导致失败:

$su     进入root权限
#apt-get install libglib2.0-dev zlib1g-dev libaio-dev autoconf libtool libssl-dev libelf-dev    安装所需要的库</span>
      接下来就是编译QEMU:
    
#cd opensgx/qemu
# ./configure-arch
# make –j $(nproc)</span>

编译sgxlib和user-level code

# cd ..
# make –C libsgx
# make –C user
如果上述编译都成功,那么代码就可以算是编译成功了

源代码组成:

  1. opensgx:用于运行应用程序OpenSGX工具链。
  2. qemu:用于SGX指令的硬件仿真 
    qemu/target-i386/sgx-helper.c :ENCLU/ENCLS指令的辅助功能
     qemu/target-i386/sgx.h:EPC, EPCM以及SGX的数据结构
  3. libsgx:OpenSGX库
    libsgx/musl-libc/:为OpenSGX程序定制的libc库
     libsgx/polarssl/:OpenSGX程序轻加密库
    libsgx/sgx-basic.c:OpenSGX为封装ENCLU指令封装的函数
    libsgx/sgx-entry.c :进入封装的enclave程序
  4. user:系统仿真,系统调用接口,用户水平API,OpenSGX测试用例 
    user/sgx-tool.c:用于创建密钥和数据结构的工具
    user/sgx-runtime.c:启动enclave的运行库
    user/sgx-user.c :用户水平API及系统调用接口
    ser/sgx-kern.c:用于创建enclave的操作系统级封装
    user/sgx-loader.c:用于执行enclave程序的enclave加载器
    user/sgx-trampoline.c:用于SGX库支持的Trampoline封装 
    user/sgx.lds:OpenSGX的链接脚本
    user/test/:简单测试用例
  5. gdb:用于调试EPCM,EPC和SECS的Python脚本

OpenSGX硬件配置

     最初,硬件组件如EPC,EPCM和处理器密钥实际上是处理器的组成部分。此外,软件组件,如SIGSTRUCT和EINITTOKEN应驻留在EPC为受保护的

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值