赞
踩
服务器linux操作系统:Ubuntu20.04
服务器linux内核版本:5.15
特别注意:Linux SGX的兼容性不强,对于不同版本的操作系统环境,安装步骤都存在一定差异,因此本文仅适用于Ubuntu20.04环境,对于其他的Ubuntu版本乃至CentOS等其他Linux操作系统都不保证能够完全匹配。
Intel Software Guard Extensions(Intel SGX)是Intel对于可信执行环境(TEE)的一种实现,是一套基于硬件底层的安全技术。Intel SGX的诞生较早,且在近年来持续更新,体量庞杂,依赖多,有较多历史遗留问题。Intel最新使用Trust Domain Extensions(TDX)技术替代了SGX,然而由于其诞生之初,配套的框架、支持以及文档较少,因此较难使用。
Intel SGX有关的安装文档并不完整,且官方文档中也存在许多描述不清晰的地方,在安装过程中遇到了许多阻力。
因此,本文记录了安装Intel SGX过程中的所有步骤和部分遇到的问题,希望能够有所帮助。
首先需要注意的是,如需要安装并正常使用Intel SGX,服务器或主机处理器必须要支持SGX特性。是否支持SGX与处理器型号相关,可以访问英特尔官网查询处理器芯片型号的具体参数。
例如,本文使用的处理器为英特尔至强E-2314处理器,其官网产品链接为https://www.intel.cn/content/www/cn/zh/products/sku/212259/intel-xeon-e2314-processor-8m-cache-2-80-ghz/specifications.html,在“安全性与可靠性”分栏中,有“英特尔® Software Guard Extensions —— Yes”这一项,表明其支持SGX特性。如果不存在该行则证明处理器不支持SGX特性,无法使用。
SGX作为一项有些过时的技术,新出产的处理器大多不支持SGX特性,因此如果需要使用SGX,需要谨慎选择处理器型号。
开启系统SGX支持
在确认处理器型号满足要求后,也需要保证主机在开机时开启了这一特性。
安装必要工具
sudo apt-get install gcc
sudo apt-get install git
sudo apt-get install curl
sudo apt-get install make
sudo apt-get upgrade make
linux SGX driver为SGX环境运行必要驱动。
linux内核5.11版本以上已自动安装linux SGX driver,可跳过该步骤,无需手动安装。
若手动安装,则linux-sgx-driver为OOT版本,后续gramine安装需指定参数为OOT。
手动安装linux-sgx-driver能否运行SGX环境尚未验证,最好应保证linux内核版本在5.11以上。
参考链接:https://github.com/intel/linux-sgx-driver
安装内核头文件
sudo apt-get install linux-headers-$(uname -r)
从仓库下载源文件并编译
默认安装路径为/opt/intel/
cd /opt/intel/
git clone https://github.com/intel/linux-sgx-driver.git
cd linux-sgx-driver
make
安装
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
Intel SGX SDK为SGX开发工具包,Intel SGX PSW为SGX软件开发平台,二者为SGX开发以及后续Gramine框架开发的必要依赖环境。
参考链接:https://github.com/intel/linux-sgx
安装Intel SGX SDK和Intel SGX PSW的前置环境
安装编译SDK和PSW的包
sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python libssl-dev git cmake perl
sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip
获取linux SGX仓库
git clone https://github.com/intel/linux-sgx.git
注意:获取仓库必须使用git clone,不能下载zip压缩包后再使用git init。
若服务器无法访问github等外网环境,则需要将下载的步骤在本地执行,并将下载的文件上传到服务器对应位置中,然后将原脚本中的下载指令注释。
具体步骤为:
本地克隆linux-sgx仓库,并将其关联仓库一并下载。在本地克隆的仓库路径下执行linux-sgx/Makefile的第53行
git submodule update --init --recursive
,并将脚本中的该行指令注释(具体行数可能与版本相关有所变化)。在本地执行
linux-sgx/external/dcap_source/QuoteVerification/prepare_sgxssl.sh
的第49行wget https://github.com/intel/intel-sgx-ssl/archive/lin_2.19_1.1.1t.zip
,并将脚本中的该指令注释(具体行数可能与版本相关有所变化)。将下载下来的文件文件放置于linux-sgx/external/dcap_source/QuoteVerification/sgxssl
文件夹中。sgxssl
文件夹需要手动创建。
执行准备
sudo make preparation
构建SDK和PSW安装包
sudo make sdk
sudo make sdk_install_pkg
sudo make psw
该步骤若报错缺少头文件,即
make preparation
中的部分库安装不到位,需要重新检查问题并执行该语句。
安装SDK
sudo apt-get install build-essential python
cd linux/installer/bin
# 询问是否安装在当前文件夹的时候,选择“no”,然后输入/opt/intel/, 即将SGX SDK安装在/opt/intel/文件夹下
./sgx_linux_x64_sdk_2.19.100.3.bin
安装PSW
sudo apt-get install libsgx-launch libsgx-urts
sudo apt-get install libsgx-epid libsgx-urts
sudo apt-get install libsgx-quote-ex libsgx-urts
sudo apt-get install libsgx-dcap-ql
开启Intel SGX环境
安装完毕后,需要手动开启SGX环境。
source /opt/intel/sgxsdk/environment
测试Intel SGX环境样例程序
cd /opt/intel/sgxsdk/SampleCode/LocalAttestation
make
cd bin
./app
如果程序能够成功运行,即表明Intel SGX安装成功。
有关Gramine的安装,以及如何配合Intel SGX进行使用,将在下一篇进行记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。