SGX2

最近在接触sgx应用,这里也记录学习过程中整理的一些内容,也希望能和更多sgx相关的研究人员多多交流~

一 了解SGX

1.1 SGX定义

  • Intel 软件防护扩展SGX(Software Guard Extension)是一项针对台式机和服务器平台的旨在满足可信计算需求的技术。Intel SGX是Intel架构新的扩展,在原有架构上增加了一组新的指令集和内存访问机制。
  • Intel在2015年从第6代Intel酷睿处理器平台开始引入了Intel软件防护扩展新指令集,使用特殊指令和软件可将应用程序代码放入一个enclave中执行。Enclave可以提供一个隔离的可信执行环境,可以在BIOS、虚拟机监控器、主操作系统和驱动程序均被恶意代码攻陷的情况下,仍对enclave内的代码和内存数据提供保护,防止恶意软件影响enclave内的代码和数据,从而保障用户的关键代码和数据的机密性和完整性。
  • 目的不是为了消除软件漏洞,而是为重要的应用程序提供安全的容器(enclave)。

1.2 基本原理

  • SGX应用由两部分组成:
    untrusted 不可信区:代码和数据运行在普通非加密内存区域,程序main入口必须在非可信区。
    trusted 可信区:代码和数据运行在硬件加密内存区域,此区域由CPU创建的且只有CPU有权限访问。

    image
  • 当一个安全区域函数被调用时,只有安全区域内的代码才能看到其数据,外部访问总是被拒绝;返回时,安全区数据将保留在受保护的内存中。

  • 非可信区只能通过ECALL函数调用可信区内的函数,可信区只能通过OCALL函数调用非可信区的函数,ECALL函数和OCALL函数通过EDL文件声明。

1.3 两大机制

1.3.1 保护机制

针对enclave的保护机制主要包括两个部分:一是enclave内存访问语义的变化,二是应用程序地址映射关系的保护。这两项功能共同完成对enclave的机密性和完整性的保护。

1.3.2 认证机制

SGX 提出了两种类型的身份认证方式:一种是平台内部 enclave 间的认证,用来认证进行报告的 enclave 和自己是否运行在同一个平台上;另一种是平台间的远程认证,用于远程的认证者认证 enclave 的身份信息。

  • 本地证明:同一平台的两个Enclave之间的证明过程。
  • 远程证明:Enclave和不在平台上的第三方之间的证明过程。

【SGX 入门教程-01】Intel® Software Guard Extensions Introductory Overview:https://www.bilibili.com/video/av37239146/

二 SGX开发应用

2.1 安装

2.1.1 Window10安装配置Intel SGX

实验环境要求:BIOS中开启SGX配置,Intel高级菜单—>CPU配置软件Guard扩展指令集(SGX)选择enable。(如果BIOS不支持SGX,可以通过SDK内置的模拟器来运行调试enclave程序,无需安装Intel SGX平台软件PSW)

  1. Intel ME下载及安装:https://downloadcenter.intel.com/download/28680/Intel-Management-Engine-Driver-for-Windows-7-
    E:\devsoft\sgx\ME_SW_1909.12.0.1237\Corp\ME_SW_MSI\SetupME.exe

  2. 安装Visual Studio专业版 2017,这一步一定要在安装SGX SDK之前。否则,你启动VS2017时,无法看到SGX的插件。

  3. 安装SGX SDK:https://registrationcenter.intel.com/en/products/postregistration/?sn=CCXS-ZSSJ7GG5&EmailID=908947250%40qq.com&Sequence=2444010&ret=n 下载PSW(平台环境)和SDK(必须的),下载后的exe文件解压后,有说明文档和安装的exe。这里需要注册Intel学生用户。

image
  • 如果硬件不支持SGX,可以不用装PSW,只安装SDK可以使用模拟选项进行编译;如果支持SGX,就可以安装PSW进行真实enclave程序的运行。
  • 先安装SDK:SDK直接安装就行,Intel(R)_SGX_Windows_SDK_2.5.101.3.exe。
  • 再安装PSW:PSW有在线安装和离线安装两种方式。常用离线安装:https://blog.csdn.net/zhangyajunna/article/details/103762440
2.1.2 Ubuntu Intel SGX SDK环境搭建
  • 使用环境:操作系统Ubuntu 16.04 LTS
  • 硬件需求仅当安装sgx驱动和PSW时需要,安装sgx sdk并不需要硬件支持。
  • 硬件不支持的情况下,可以在模拟环境下编写测试SGX程序,其中makefile里SGX_MODE=SIM。
  • 参考:https://blog.csdn.net/u013433886/article/details/117715502
sudo apt-get update
sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev
sudo apt-get install build-essential python

# 下载Intel SGX驱动并安装
wget https://download.01.org/intel-sgx/sgx-linux/2.7.1/distro/ubuntu16.04-server/sgx_linux_x64_driver_2.6.0_4f5bb63.bin
chmod +x sgx_linux_x64_driver_2.6.0_4f5bb63.bin
sudo ./sgx_linux_x64_driver_2.6.0_4f5bb63.bin
sudo reboot

# 下载Intel SGX PSW并安装
wget https://download.01.org/intel-sgx/sgx-linux/2.7.1/distro/ubuntu16.04-server/libsgx-enclave-common_2.7.101.3-xenial1_amd64.deb
sudo dpkg -i ./libsgx-enclave-common_2.7.101.3-xenial1_amd64.deb

# 下载并安装Intel SGX SDK
wget https://download.01.org/intel-sgx/sgx-linux/2.7.1/distro/ubuntu16.04-server/sgx_linux_x64_sdk_2.7.101.3.bin
chmod +x ./sgx_linux_x64_sdk_2.7.101.3.bin
./sgx_linux_x64_sdk_2.7.101.3.bin
# 安装过程中可以手动输入SDK要安装到的目标位置

# 添加环境变量,执行上一步结束时输出的命令
source /path/to/sgxsdk/environment

# 运行一下实例程序
cd /path/to/sgxsdk/SampleCode/SampleEnclave

# 编辑一下Makefile
# Intel SGX SDK 的安装位置
SGX_SDK ?= /home/luoyhang003/SGX/sgxsdk
# 运行类型:HW 真实环境;SIM 模拟器环境
SGX_MODE ?= SIM
# 运行架构:仅支持 64 位
SGX_ARCH ?= x64
# 是否为:Debug 调试模式
SGX_DEBUG ?= 1

# 编译
sudo make
# 运行
./app

注意:sgx的安装可以不用安装clsClient-1.45.449.12-1.x86_64.rpm,官网下载链接http://registrationcenter-download.intel.com/akdlm/irc_nas/11414/iclsClient-1.45.449.12-1.x86_64.rpm也失效了,很多博客上的教程仍然要求安装clsClient,但实际安装过程中已经不需要了。

【SGX 入门教程-02】Detecting and Enabling Intel® SGX:https://www.bilibili.com/video/BV1jt411D79Q/?spm_id_from=333.788.recommend_more_video.-1

2.2 开发

image

【SGX 入门教程-03】Intel® SGX Application Design:https://www.bilibili.com/video/BV17t411D7xK/?spm_id_from=333.788.recommend_more_video.0

作者:小小怪吃吃吃
链接:https://www.jianshu.com/p/5e61fa65f31d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容