sgx install

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.CPU:intel 6代CPU及以上的版本支持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 PSW(SGX 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 SDK和 SGX 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 prebuild的Architecture 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
————————————————
版权声明:本文为CSDN博主「Super-Bob」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/y734564892/article/details/78177444

上一篇:可信安全TEE分析4 Intel SGX 设计和编程


下一篇:冲量网络 | 可信计算与联邦学习