intel sgx开发环境配置
sgx的开发环境配置
参考的文献&博客
主要参考了第一个博客,但是最最详细的是第四个github上的教程,只不过是全英文的有很多linux和sgx方面的专业名词对小白不是很友好。本人主要引用了第一个博客的内容,第一个博客的博主写的很详细,但是本人自己配置的时候还是出现了很多很多意想不到的问题,本博客针对可能出现的问题进行补充和说明。
本人所用的配置
电脑环境
由于现在用的电脑是锐龙处理器,而且没有trustzone,所以使用很久没用的、尘封已久的老、但是跟了我一年的老电脑。操作系统用的是ubuntu(鬼知道重装系统用了多久的时间),装完之后开机要很久,也不知道是不是坏了。
电脑:联想Thinkpad E14
操作系统:ubuntu18.04
处理器:i5-10210U
内存:8G
硬盘:1TB
在电脑BIOS中启用Intel SGX。重装系统不会更改BIOS中的设置,所以即使重装系统,Intel SGX也会一直保持启用状态。
安装如下工具:
1sudo apt-get install gcc git cpuid
检查硬件情况
这是Intel官方给出来的方法:如何确定英特尔® Software Guard Extensions (英特尔® SGX) 处理器是否支持 DCAP 和 FLC
在终端执行
1 |
|
如果看到
1 |
|
说明本博客安装方法适合你硬件情况。
安装Intel(R) SGX环境
安装共有3大步,分别是:
- 安装Intel(R) SGX Driver
- 安装Intel(R) SGX SDK
- 安装Intel(R) SGX PSW
安装Intel(R) SGX Driver
安装一些工具
1 |
|
检查系统内核头文件是否与现有内核匹配:
1 |
|
如果看到Status: install ok installed
说明没有问题
否则要安装匹配的内核头文件:sudo apt-get install linux-headers-$(uname -r)
克隆仓库:
1 |
|
编译Intel(R) SGX Driver
1 |
|
编译完后,依次执行如下命令进行安装
1 |
|
至此Intel(R) SGX Driver安装完成。
安装Intel(R) SGX SDK
安装一些工具
1 |
|
注意这里安装工具可能报错如下
这是因为某些软件包需要保持现状,安装可能会破坏原有的软件包依赖关系,所以要安装这个软件包,必须调节软件包之间的相关关系,给个解决的方法链接,简单来说就是用aptitude来代替apt安装,aptitude能解决软件中的依赖关系。
克隆仓库:
1 |
|
预编译
此步会克隆几个GitHub,请走代理(不走代理针的好慢好慢):
1 |
|
将预编译出的文件拷贝至系统路径下:
1 |
|
执行如下命令检查是否拷贝成功,如果成功会输出路径:
1 |
|
编译Intel(R) SGX SDK
1 |
|
此步会输出大约五万行内容(真的时间巨长,等吧),请耐心等待。
最后没有报错,说明编译成功。
编译Intel(R) SGX SDK安装器
1 |
|
此步会输出大约五万行内容(这个时间也很长啊,都看了好多视频了),请耐心等待。
编译完成后会输出Generated sdk installer: ./linux/installer/bin/sgx_linux_x64_sdk_xxx.bin
。
安装Intel(R) SGX SDK
首先我们先创建一个目录,作为SDK的安装目录
1 |
|
此步xxx要改为编译Intel(R) SGX SDK安装器最后的输出,在目录linux-sgx/linux/installer/bin
下可以看到此文件
1 |
|
根据安装最后的提示输出刷新环境变量
1 |
|
SDK安装完成。
此时进入linux-sgx-install-path/SampleCode
下尝试样例代码是不会成功的,需要安装PSW之后才可运行样例。
安装Intel(R) SGX PSW
编译Intel(R) SGX PSW
1 |
|
注意把linux-sgx-install-path下的sgxsdk文件夹移动到根目录下的/opt/intel目录里,再执行上面的这一条指令。此步会输出大约一千行内容,请耐心等待。
编译Intel(R) SGX SDK安装器
1 |
|
此步会输出大约八千行内容,请耐心等待。
添加本地软件源
按照github上的英文教程,需要先生成sgx_debian_local_repo文件夹,最后在~/linux-sgx/linux/installer/deb目录下可以看见这个文件夹,输入如下指令:
1 |
|
需要将本地路径追加到软件源文件中,使用sudo vi /etc/apt/sources.list
编辑文件,将下面内容添加到文件末尾,注意:你需要把PATH_TO_LOCAL_REPO替换成~/linux-sgx/linux/installer/deb/sgx_debian_local_repo
的绝对路径,注意这里的路径需要自己根据自己的位置设置,建议改成绝对路径,我的添加方式如下,大家自己添加的时候注意改成自己的路径哦!
1 |
|
添加完之后,刷新软件源
1 |
|
安装Intel(R) SGX PSW
1 |
|
如果现在去测试样例,会报错failed to load enclave
,Intel给出解决方案,要启动aesmd服务。
启动aesmd服务
启动
1 |
|
查看aesmd服务启动状态
1 |
|
设置aesmd服务开机启动
1 |
|
安装测试
测试本地认证
我们使用SDK给出的样例代码LocalAttestation
对安装情况进行测试
1 |
|
编译样例代码
1 |
|
执行样例
1 |
|
如果看到如下输出,说明安装成功
1 |
|
我自己跑出来是显示没有成功(狗头),应该是aesmd服务出了点问题,大家可以测试下面的enclave样例
测试enclave样例
我们运行enclave代码
1 |
|
编译代码
1 |
|
执行代码
1 |
|
看到如下输出证明安装成功