linux intel SGX 安装

论坛 期权论坛 脚本     
匿名技术用户   2020-12-23 05:01   11   0

SGX简介:https://software.intel.com/zh-cn/sgx

英特尔 Software Guard Extensions是一项面向应用程序开发人员的英特尔技术,这些开发人员力图保护选定的代码和数据免于被披露或被修改。 英特尔Software Guard Extensions 通过使用围圈(enclave),即内存中受保护的执行区域,使这种保护成为可能。 使用特殊指令和软件可将应用程序代码放入围圈中,这些特殊指令和软件经由英特尔 Software Guard Extensions SDK 提供给开发人员使用。英特尔 Software Guard Extensions SDK API、函数库、文档、样本源代码和工具的集合,允许软件开发人员用C/C++ 创建和调试启用英特尔Software Guard Extensions 的应用程序。

硬件要求

1.CPUintel 6CPU及以上的版本支持SGX功能(Kaby Lake系列全支持,不确定可以去Intel官网查询https://ark.intel.com/

2.BIOS:进入主板BIOS设置,查看安全选项,如果有SGX选项,选择enable

其实硬件不支持也无所谓,可以在模拟环境下编写测试SGX程序。如果你的硬件不支持,那么跳过驱动安装和PSW安装。编写makefile时,SGX_MODE=HW

系统要求

Ubuntu* Desktop-16.04-LTS 64bits

Red Hat Enterprise Linux Server release 7.3 64bits

CentOS 7.3.1611 64bits

安装SGX驱动

1.下载

https://github.com/01org/linux-sgx-driver 下载驱动代码

2.编译

解压,进入目录

$ make

3.安装SGX驱动

$ sudo mkdir -p "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"

$ sudo cp isgx.ko "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"

$ sudo sh -c "cat /etc/modules | grep -Fxq isgx || echo isgx >> /etc/modules"

$ sudo /sbin/depmod

$ sudo /sbin/modprobe isgx

Red Hat Enterprise Linux Server CentOS上:

$ sudo /sbin/modprobe isgx

4.卸载sgx驱动

$ sudo /sbin/modprobe -r isgx

$ sudo rm -rf "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"

$ sudo /sbin/depmod

$ sudo /bin/sed -i '/^isgx$/d' /etc/modules

下载SGX SDK/PSW源码

https://github.com/01org/linux-sgx

安装SGX构建工具

On Ubuntu 16.04:

$ sudo apt-get install build-essential ocaml automake autoconf libtool wget python

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum groupinstall 'Development Tools'

$ sudo yum install ocaml wget python

安装SGX PSWSGX Platform Software)需要的工具

On Ubuntu 16.04:

$ sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum install openssl-devel libcurl-devel protobuf-compiler protobuf-devel

下载源码

进入源码包

$ ./download_prebuilt.sh

构建 SGX SDKSGX PSW

1.使用默认配置

$ make

sdk可以单独make,但是psw make需要依赖sdk

2.禁用优化

$ make USE_OPT_LIBS=0

3.显示bulid debug信息

$ make DEBUG=1

4.删除build文件

$ make clean

5.Build的文件中enclave都是intel prebuildArchitecture Enclaves (LE /PvE /QE /PCE /PSE-OP /PSE-PR) and applet(PSDA) psw/ae/data/prebuilt/libsgx_*.signed.so and psw/ae/data/prebuilt /PSDA.dalp都是intel已经签名过的。使用不签名的enclave

$ make

$ cd psw/ae/le

$ make

构建SGX SDK安装器

$ make sdk_install_pkg

之后在linux/installer/bin/下会找到安装的bin文件

使用$ make sdk_install_pkg DEBUG=1可以显示构建信息

构建SGX PSW安装器

$ make psw_install_pkg

之后在linux/installer/bin/下会找到安装的bin文件

使用$ make psw_install_pkg DEBUG=1可以显示构建信息

安装SGX SDK

1.安装python

Use the following command to install the required tool to use Intel(R) SGX SDK:

On Ubuntu 16.04:

$ sudo apt-get install build-essential python

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum groupinstall 'Development Tools'

$ sudo yum install python

2.安装SDK

$ cd linux/installer/bin

$ ./sgx_linux_x64_sdk_${version}.bin

3.测试SampleCode

模拟模式

$ cd SampleCode/LocalAttestation

$ make SGX_MODE=SIM

$ ./app

硬件模式

$ cd SampleCode/LocalAttestation

$ make SGX_MODE=HW

$ ./app

安装SGX PSW

1.安装依赖库

On Ubuntu 16.04:

$ sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum install openssl-devel libcurl-devel protobuf-devel

使用Trusted Platform Service功能:

确保mei_me驱动和 /dev/mei0存在.

2.下载安装iclsClient :

On Ubuntu 16.04:

$ sudo apt-get install alien

$ sudo alien --scripts iclsClient-1.45.449.12-1.x86_64.rpm

$ sudo dpkg -i iclsclient_1.45.449.12-2_amd64.deb

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum install iclsClient-1.45.449.12-1.x86_64.rpm

3.安装JHI service :

On Ubuntu 16.04:

$ sudo apt-get install uuid-dev libxml2-dev cmake pkg-config

$ cmake .;make;sudo make install;sudo systemctl enable jhi

On Red Hat Enterprise Linux 7.3 and CentOS 7.3:

$ sudo yum install libuuid-devel libxml2-devel cmake pkgconfig

$ cmake .;make;sudo make install;sudo ldconfig;sudo systemctl enable jhi

4.安装SGX PSW

$ cd linux/installer/bin

$ sudo ./sgx_linux_x64_psw_${version}.bin

启动 aesmd服务:

To stop the service: $ sudo service aesmd stop

To start the service: $ sudo service aesmd start

To restart the service: $ sudo service aesmd restart


tips:其他版本的SGX工具也有很多,opensgx和百度的rust sgx( https://github.com/baidu/rust-sgx-sdk )都可以看一下,要想详细了解这个技术还是推荐官方的developer reference

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP