码迷,mamicode.com
首页 > 其他好文 > 详细

可信安全TEE分析4 Intel SGX 设计和编程

时间:2019-04-29 18:46:26      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:修改   oss   定义   tps   硬盘   open()   例子   make   显卡   

1、SGX SDK
SGX SDK给开发者提供了一个精简版的C标准函数库?因为enclave里面是一个和Windows操作系统隔离的运行环境,这个环境并不能直接访问电脑的显卡和硬盘文件系统,所以SDK提供的C标准函数库并不包含我们常用的printf()或者fread(),fopen()之类的I/O函数?
2、实现OpenSGX应用
实现一个OpenSGX程序类似于正常的C程序。由于对SGX程序的操作系统支持,OpenSGX支持系统调用接口和用户级的API,用户只需用他们建立并执行OpenSGX二进制文件。唯一的区别在于,使用enclave_main()而不是主main(),使用sgx_exit(null)代替return。在OpenSGX程序中,在编译OpenSGX程序时,有可能使用现有的libc库函数或通过将存档文件加密的库函数如polarssl。由于OpenSGX提供它自己的定制链接脚本和加载器,所以通过修改,它们用到其他库中的enclave二进制文件。
编写代码之前,我们需要定义可信和不可信的函数,我们首先建立一个文件夹,在文件夹中为了编译方便(仿照上一节的makefile写我们自己的makefie)也仿照sdk给的例子中的文件夹布局建立新的文件夹文件夹的布局如下:

1.App:
外部程序,在enclave外部运行的代码
外部应用程序源码
2.Enclave:
Enclave.config.xml:enclave 配置文件,配置enclave的堆栈大小,链接数
Enclave_private.pem:用来给动态链接库签名的私钥
Enclave.lds:encalve link script

Enclave.edl:
用来声明enclave内部的trusted函数和app中的untrusted函数
如果app中要调用enclave中的函数,那么该函数必须在edl的trusted 中声明;
如果enclave中要调用app中的函数,那么该函数必须在edl的untrusted中声明;

其他:enclave 内部程序源码

3.Include:
外部应用程序和enclave程序共享的头文件,大多是公用的数据类型的定义
4.Makefile
构建项目

关注:
技术图片

可信安全TEE分析4 Intel SGX 设计和编程

标签:修改   oss   定义   tps   硬盘   open()   例子   make   显卡   

原文地址:https://blog.51cto.com/13878196/2386777

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!