开头:
intel 官方出来的 教程
英特尔® Software Guard Extensions 教程系列
本教程将包含多个部分,目前计划发表 12 篇文章(准确数字尚未确定),每篇文章阐述一个特定主题。 虽然准确的时间表尚未制定,但系列的每个部分每 2-3 周* 应会发表一次,内容涉及以下阶段:
- 概念和设计
- 应用开发和英特尔 SGX 集成
- 验证和测试
- 封装和部署
- 处理
SGX应用开发入门
新建一个Intel sgx 项目
新建Enclave版本的hello world 项目
第一步:首先创建一个enclave项目
- 打开微软Visual Studio的菜单,选择File→New→Project。然后弹出”New Project”对话框。
- 选择Templates→Visual C++→Intel® SGX Enclave Project。输入名字,位置和项目名称(如图 5所示)。
配置enclave
SGX enclave项目设置向导对话框中的各个选项含义如下
-
Project Type
Enclave – 创建一个Enclave项目 -
Enclave library – 创建一个Enclave项目用的静态库
一般简单的项目,我们只要在一个Enclave里项目开发即好。如果是一个需要多人开发的复杂的Enclave项目,出于项目管理的需要,有些核心代码不希望让一些开发者看到的话,可以把核心代码编译成一个静态库。然后再把这个静态库放到其他的Enclave项目里直接编译链接即可。 -
Additional Libraries
链接C++标准模板库进当前Enclave项目 -
Signing Key
导入一个给Enclave项目签名的**文件,如果不指定文件的话会自动生成一个**文件。此**用于给编译出的SGX Enclave签名。
在本Hello World程序里各项设置均保持默认设置。
点击Finish,一个Enclave的空项目就创建好了(图 8)。创建向导会自动添加一些Enclave所必须的文件。
参考网页:https://software.intel.com/zh-cn/SGX-Development-Guide-Part-2
一个sgx项目文件组成
假设enclave项目名称为sample_enclave
源文件
- sample_enclave.cpp主要源文件,用户函数和变量填充。 用户可以添加其他源文件。
- Enclave定义语言(EDL)文件。 声明由安全区导出(信任)和导入(不信任)哪些函数。 EDL语法在单独的章节中解释。
3.sample_enclave_t.c – trusted auto-generated wrapper functions. Do not modify this file as every build recreates it.(自动生成的文件)
头文件
- 头文件:sample_enclave_t.h 为函数自动生成的头部。 不要修改此文件,因为每次构建都会重新创建它。
资源文件
- sample_enclave.config.xml指定安全区配置。 细节在单独的部分中解释.
- sample_enclave.private.pem用于签署 Clave的RSA私钥。