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

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
构建项目

关注:

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

时间: 2024-10-17 12:45:39

可信安全TEE分析4 Intel SGX 设计和编程的相关文章

可信安全TEE分析1 概念

TEE(Trusted Execute Environment)是Global Platform组织提出的概念,所以通常所说的TEE是指GP TEE. TEE是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务.它具有其自身的执行空间,比Rich OS的安全级别更高.TEE所能访问的软硬件资源是与Rich OS分离的.为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离的.在TEE中,每个TA是相互独立的,而且不能

可信安全TEE分析2 应用逻辑

业务流程:1 用户启动网银APP:2 输入交易信息:3 APP调用NDK接口ClientAPI.so,送入交易信息;4 ClientAPI通过open/ioctl/close系统调用将信息送入Driver:5 Driver通过TrustZone的SMC指令进入TEE:6 TEE启动TA,并送入交易信息:7 TA完成交易信息的显示,用户确认:8 交易结果由TEE通过SMC指令返回Driver:9 Driver将交易信息返回APP:10 完成 点击: 原文地址:https://blog.51cto.

MyBatis的深入原理分析之1-架构设计以及实例分析

MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计        注:上图很大程度上参考了iteye 上的chenjc_it所写的博文原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis

基于Qt的信号分析简单应用软件的设计

一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1个Combox:下拉框用于信号的选择: 1个Widget:用于确定绘图区域的坐标,并在Widget部件上绘制图像曲线. 3个Label:用于标注注释,及坐标轴 三.主要功能的实现 信号分析结果如下: 其中最主要的涉及信号数据的标准化处理,标准化处理计算公式: std=(当前信号值-此类信号的最小值)

实时海量日志分析系统的架构设计、实现以及思考

1 序 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈. 由于需要对日志进行实时分析,所以Storm是我们想到的首个框架.Storm是一个分布式实时计算系统,它可以很好的处理流式数据.利用storm我们几乎可以直接实现一个日志分析系统,但是将日志分析系统进行模块化设计可以收到更好的效果.模块化的设计至少有两方面的优点: 模块化设计可以使功能更加清晰.整个日志分析系统可以分

面向接口设计和编程——(面向对象、面向接口、面向过程、面向实现) --转载

引言--面向接口所处的设计模式中的位置. 其实,我认为Java/C#比C++高级的其中一个原因是,它对面向接口编程的支持.不要误解,并不是说C++不支持面向接口编程,而是说C++的语法中没有这种天然的机制. 面向对象之于面向过程,面向接口之于面向实现.但基本上,面向接口和面向实现都基于面向对象的模式,也就是说面向接口并不能称为比面向对象的更高的一种编程模式.而是在面向对象中大的背景下的一种更加合理的软件设计模式,它增强了类与类之间,模块与模块的之间的低耦合性,是软件系统更容易维护.扩展. 不管是

Intel SGX官方例程分析之SealedData

建议先阅读一下官方的开发手册:https://software.intel.com/en-us/sgx-sdk-dev-reference 以及知乎上面SGX板块的另外两篇例程的分析: SampleEnclave和PowerTransition : https://zhuanlan.zhihu.com/intelsgx 下面进入正题! 原文地址:https://www.cnblogs.com/FollowWinds/p/10109725.html

ENode框架Conference案例分析系列之 - 架构设计

Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的. Conference后台会议管理:http://www.enode.me/conference Conference前台预定座位:http://www.enode.me/registration ENode论坛开源案例:http://www.enode.me/post ENode开源项目地址:https://github.com/tangxuehua/e

07-阻塞赋值与非阻塞赋值原理分析——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的:掌握阻塞赋值与非阻塞赋值的区别 实验平台:无 实验原理: ????阻塞赋值,操作符为"=","阻塞"是指在进程语句(initial和always)中,当前的赋值语句阻断了其后的语句,也就是说后面的语句必须等到当前的赋值语句执行完毕才能执行.而且阻塞赋值可以看成是一步完成的,即:计算等号右边的值并同时赋给左边变量. ????非阻塞赋值,操作符为"<=","非阻塞"是指在进程语句(