sgx使用记录

相关代码仓库

##sgx-sdk
https://github.com/apache/incubator-teaclave-sgx-sdk.git

##Teaclave:通用安全计算平台
https://github.com/apache/incubator-teaclave

检测sgx运行环境是否支持

##或使用cpuid命令
cpuid |grep -i sgx

##或使用脚本测试
下载:https://github.com/ayeks/SGX-hardware
编译test-sgx.c:gcc test-sgx.c -o test-sgx

部分名词释义

名称意思
EnclaveIntel SGX一种高等级的秘密保护技术,它在硬件的受保护内存区域存储代码和数据,这个受保护的内存区域叫做Enclave。Enclave的内存区域只能被Enclave内存区域内的代码访问。
ECALLEnclave Call.进入Enclave的函数调用
OCALLOutside Call.从Enclave调用不受信任的函数的函数调用
EDLEnclave Definition Language
SP服务提供者
Inter SGX SSLIntel SGX SSL加密库是基于OpenSSL的,它给SGX Enclave提供加密服务
TCS线程控制结构
uRTS不可信任的运行时系统

使用预准备

  • CPU必须支持Intel SGX指令,意味着你需要买支持sgx的CPU
  • BIOS必须支持Intel SGX,因为你的机器需要在BIOS里面开启使用SGX,因为BIOS的厂商和Intel不是同一个厂商(比如有华硕有联想什么的),不一定所有BIOS都支持SGX的开启
  • 必须在BISO中开启Intel SGX:有三种选项(启用、禁用、软件控制(这个意思是允许包含Intel SGX技术的应用程序在系统重启后启用Intel SGX,这个意义是不用用户进入BISO进行设置))
  • 必须安装Intel SGX PSW,也就是intel SGX平台软件,咱得有对sgx而言的操作系统对吧

支持sgx的CPU的芯片截至发文起,目前有如下,具体列表请参看https://github.com/ayeks/SGX-hardware.git:

在这里插入图片描述

总体环境安装顺序为:先安装SGX Driver,再安装SGX PSW,最后安装SGX SDK

windows下安装sgx开发环境

看了网上一大圈教程,感觉他们安装的时候都不说自己的环境是怎么样的,直接堆教程…

我的环境是11代i5不带sgx功能的CPU,操作系统是Windows10的,BISO我就不介绍了反正没得sgx芯片,我只图一个开发环境方便我开发。

总的来说需要安装三部分东西:

  • Intel ME:也就是英特尔引擎管理,上网一查好像是因为‘SGX部分功能需要单调计数器和其它一些组件,需要安装Intel Management Engine Driver’所以需要装这个(https://www.intel.com/content/www/us/en/download/19406/28679/intel-management-engine-driver-for-windows-8-1-and-windows-10.html?wapkw=Intel%25C2%25AE%2520Management%2520Engine%2520Driver),下载后解压进入目录’me_sw_1909.12.0.1236\ME_SW_1909.12.0.1236\Corp\ME_SW_MSI’,直接执行SetupME.exe文件,如果出现平台不支持的问题,请在桌面左下角的Windows键右键打开设备管理器,选择系统设备如果有‘Intel® Management Engine Interface’,这就是系统自己已经安装过这个东西了。

  • Visual studio 2017:目前是我唯一看到支持sgx开发格式的idea,最好是下载专业版,版本在2015和2017之间选择,地址:https://visualstudio.microsoft.com/zh-hans/search/?query=Visual+Studio+2017&lang=zh-hans

  • Intel SGX SDK for Windows和:这玩意是sgx的sdk,有这玩意才能干活,地址:https://registrationcenter.intel.com/en/products/postregistration/?sn=CCXS-ZSSJ7GG5&encEma=U3tdVrOFt/AHArVlnRggdgGOepYOlziBlze+bky1k1iIu/0qmxv7pCDQ15uBhD31Jft01zcdZ2Q=&Sequence=2444010&ret=n&pass=yes

最好按我上面从上到下的顺序装,因为可能导致visual studio新建项目的时候没有Intel sgx project的快捷键(其他博客说的我也不确定)

第三步下载sgx sdk和sgx psw的时候下载下图这两个序号的东西,但是会发现下不了,原因是什么license过期了(有一说一我觉得Intel的官方是真的垃圾不友好),想获取这个文件的可以私聊我:

在这里插入图片描述

我的电脑的cpu由于不是sgx的,所以安装PSW平台的时候会报如下错误,不过我的目的是有个sgx的idea所以到这儿我也就算了。不过有些人可能会安装失败而且只报第二个惊叹号后面的错误,网上的解决方案是:点击图中链接会进入到微软商店安装一个叫Intel® Software Guard Extensions Activation APP的软件,安装后以管理员身份执行,点击Active并重启即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3aP188ch-1647345030094)(E:\天河国云\学习\sgx应用开发\Windows安装PSW遇到的问题.jpg)]

下载完成并安装后,打开visual studio,在新建项目的列表里面就可以看到Intel的sgx enclave project选项了,如下图:

在这里插入图片描述

在创建项目的时候又出现了问题,SEWizardVS2017.SGXWizard“在程序 集“SEWizardVS2017这样的问题,好在网上有解决方案:你的visual安装目录\Common7\IDE\Extensions\ajyuvscx.hbt\ProjectTemplates\EnclaveTemplate下找到SGXWizard.vstemplate这个文件,然后打开他将文件中以下两行代码删除即可:

SEWizardVS2017, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=1c03693ccb8cf428
SEWizardVS2017.SGXWizard

on=1.0.0.0, Culture=Neutral, PublicKeyToken=1c03693ccb8cf428
SEWizardVS2017.SGXWizard


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐