本文主要是介绍Linux ubuntu20.04 安装使用 Intel sgx,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、简介
- 二、安装Intel SGX Software Stack
- 2.1 安装Intel SGX driver
- 2.2 Build the Intel SGX SDK and Inte SGX PSW Package
- 2.3 Build the Intel SGX SDK and Intel SGX SDK Installer
- 2.4 Install the Intel(R) SGX SDK
- 2.5 Build the Intel SGX PSW and Intel SGX PSW Installer
- 2.6 Install the Intel SGX PSW
- 三、Test the Intel SGX SDK Package with the Code Samples
- 参考资料
前言
开发平台:
# lscpu
Model name: Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz
操作系统版本:
# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
# uname -r
5.15.0-89-generic
我这台处理器默认没有打开Intel sgx硬件功能,因此需要在BIOS中启动Intel sgx硬件功能。
启动后输出如下:
# cpuid | grep -i sgxSGX: Software Guard Extensions supported = true......SGX1 supported = trueSGX2 supported = false
查看内核启动日志:
# dmesg | grep -i sgx
[ 0.398363] sgx: EPC section 0x80200000-0x85f7ffff
或者使用github项目上查看是否支持SGX:https://github.com/ayeks/SGX-hardware/
输出如下:
root@qax-TianYi510S-07ICB:/home/qax/test/SGX-hardware# ./test-sgx
Start test-sgx
......
Supports SGX
SGX1 leaf instructions (SGX1): 1
参考文章:https://github.com/intel/linux-sgx
一、简介
Intel Software Guard Extensions (Intel SGX) 是一项由英特尔提供的技术,旨在保护应用程序开发人员选择的代码和数据免受泄露或修改。
Linux Intel SGX 软件栈由 IntelSGX 驱动程序、Intel SGX SDK 和 Intel SGX 平台软件 (PSW) 组成。
Intel SGX 驱动程序托管在 linux-sgx-driver 项目中。
Intel SGX SDK 和 Intel SGX PSW 托管在 linux-sgx 项目中。
自从 Linux 内核版本 5.11 发布以来,主线 Linux 内核已经内置了 Intel SGX 支持。内核内置的 Intel SGX 驱动程序需要平台支持并配置为灵活启动控制(flexible launch control - FLC)。尽可能使用带有 Intel SGX 支持的主线内核。
对于特殊用例,还有两个其他的内核空间选项可供选择:
(1)如果您的发行版内核版本早于 5.11 或不支持内核内置的 Intel SGX,您可以使用 Intel SGX DCAP 驱动程序作为临时解决方案,然后过渡到 5.11 或更高版本的内核。它提供了接近主线内核的接口,也需要平台支持并配置为 FLC。
(2)如果您需要在不支持 FLC 的平台上使用 Intel SGX,Intel SGX for Linux OS 驱动程序项目提供了一个非内核驱动程序(out-of-tree driver)。该驱动程序用于支持在仅支持传统启动控制的平台上运行 Intel SGX enclave。它也可以安装在配置了 FLC 的平台上,但这些平台只能加载符合传统启动控制策略的生产 enclave。
注意:尽管Intel SGX SDK和平台软件与所有这些驱动程序兼容,但传统的非FLC驱动程序和Intel SGX DCAP驱动程序仅针对关键的安全修复进行更新。由于 out-of-tree 实现的限制,主线内核中实现的新特性或功能无法移植到传统的非FLC驱动程序或Intel SGX DCAP驱动程序。
二、安装Intel SGX Software Stack
英特尔SGX SDK Linux操作系统软件堆栈由 the driver, the SDK, and the PW(platform software) 组成。
2.1 安装Intel SGX driver
Linux SGX driver为SGX环境运行必要驱动。
由于我这里的内核版本是5.15,已经Support for Intel SGX,所以不需要安装驱动。
如果内核版本低于5.11,请参考 the out-of-tree driver 进行驱动安装: linux-sgx-driver 。
2.2 Build the Intel SGX SDK and Inte SGX PSW Package
参考 linux-sgx
(1)使用以下命令安装构建 Intel SGX SDK 所需的工具:
$ sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python-is-python3 libssl-dev git cmake perl
(2)使用以下命令安装所需的其他工具和最新的Intel SGX SDK安装程序,以构建IntelSGX PSW:
$ sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip pkgconf libboost-dev libboost-system-dev libboost-thread-dev lsb-release libsystemd0
(3)下载源代码并准备子模块和预构建的二进制文件:
git clone https://github.com/intel/linux-sgx.git
cd linux-sgx && make preparation
上面的make准备将触发脚本download_prebuild.sh来下载预构建的二进制文件。
将与当前操作系统分发对应的 the mitigation tools 从external/toolset/{current_distr}复制到/usr/local/bin,并确保它们具有执行权限:
sudo cp external/toolset/{current_distr}/* /usr/local/bin
# ls external/toolset/
anolis8.6 centos8 centos8.3 debian10 rhel8.4 rhel8.6 sles15.4 ubuntu18.04 ubuntu20.04
对于我的系统即:
linux-sgx# sudo cp external/toolset/ubuntu20.04/* /usr/local/bin
linux-sgx# which ar as ld objcopy objdump ranlib
/usr/local/bin/ar
/usr/local/bin/as
/usr/local/bin/ld
/usr/local/bin/objcopy
/usr/local/bin/objdump
/usr/local/bin/ranlib
注意:即使您之前将以前的 mitigation tools 复制到/usr/local/bin,也必须执行上述操作。它确保在以后的构建中使用更新的 mitigation tools 。
2.3 Build the Intel SGX SDK and Intel SGX SDK Installer
要使用默认配置构建 Intel® SGX SDK ,请输入以下命令:
make sdk
or
make sdk DEBUG=1 //(with debug information)
要构建 Intel® SGX SDK安装程序,请输入以下命令:
make sdk_install_pkg
or
make sdk_install_pkg DEBUG=1 //(with debug information kept in the tools and libraries)
可以在linux/installer/bin/下找到生成的 Intel SGX SDK 安装程序sgx_linux_x64_sdk_${version}.bin,其中${version}表示版本号。
2.4 Install the Intel® SGX SDK
这步要先做,不让在构建Intel SGX PSW时会报错。
请参看:https://github.com/intel/linux-sgx/issues/466
Generated sdk installer: ./linux/installer/bin/sgx_linux_x64_sdk_2.22.100.3.bin
/linux-sgx/linux/installer/bin# ./sgx_linux_x64_sdk_2.22.100.3.binDo you want to install in current directory? [yes/no] : noPlease input the directory which you want to install in : /opt/intel/......Installation is successful! The SDK package can be found in /opt/intel/sgxsdkPlease set the environment variables with below command:source /opt/intel/sgxsdk/environment
注意:在编译代码之前,需要设置所需的环境变量。要执行此操作,请运行:
source /opt/intel/sgxsdk/environment
步骤总结:
make sdk
make sdk_install_pkg
/sgx_linux_x64_sdk_2.22.100.3.bin //(选择安装在/opt/intel/目录下)
source /opt/intel/sgxsdk/environment
2.5 Build the Intel SGX PSW and Intel SGX PSW Installer
要使用默认配置构建Intel SGX PSW,请输入以下命令:
linux-sgx# make psw
or
make psw DEBUG=1 (with debug information)
可以在build/linux目录中找到生成的工具和库。注意:也可以转到psw文件夹,并使用make命令仅构建IntelSGX psw组件。
要自行构建这些飞地(无需签名),首先需要从Intel(R)SGX SDK安装最新的 Intel SGX SDK ,然后使用默认配置构建PSW。之后,您可以使用相应文件夹中的make命令来构建每个Architecture Enclave:
$ cd psw/ae/le$ make
要构建 Intel SGX PSW 安装程序,请输入以下命令:
make deb_psw_pkg
可以在下面找到生成的相应 Intel SGX PSW 安装程序:
linux/installer/deb/libsgx-urts, linux/installer/deb/libsgx-enclave-common, linux/installer/deb/libsgx-uae-service, linux/installer/deb/libsgx-epid, linux/installer/deb/libsgx-launch, linux/installer/deb/libsgx-quote-ex and linux/installer/deb/sgx-aesm-service
2.6 Install the Intel SGX PSW
SGX PSW提供3项服务:启动、基于EPID的认证和算法无关认证。从2.8版本开始,SGX PSW被拆分为更小的软件包,用户可以选择安装哪些功能和服务。有两种方法可以安装所需的软件包:使用单个软件包或使用构建系统生成的本地repo。建议使用本地repo,因为系统将自动解决依赖关系。目前,我们支持基于.deb和.rpm的repos。
/linux-sgx# apt-get install libsgx-launch libsgx-urts
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libsgx-launch
E: Unable to locate package libsgx-urts
出现以上问题。
在安装前,首先执行以下三条命令:
# 将以下库添加到源中
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
# 获取 Debian 存储库公钥并将其添加到 apt 用于验证软件包的受信任密钥列表中
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add
# 更新apt
sudo apt-get update
Using the local repo(recommended):
(1)launch service
apt-get install libsgx-launch libsgx-urts
(2)EPID-based attestation service
apt-get install libsgx-epid libsgx-urts
(3)algorithm agnostic attestation service
apt-get install libsgx-quote-ex libsgx-urts
(4)DCAP ECDSA-based service
apt-get install libsgx-dcap-ql
三、Test the Intel SGX SDK Package with the Code Samples
在模拟模式下编译并运行每个代码示例,以确保包运行良好:
$ cd ${sgx-sdk-install-path}/SampleCode/LocalAttestation
$ make SGX_MODE=SIM
The project has been built in simulation debug mode.$ cd bin
$ ./app
/linux-sgx/SampleCode/LocalAttestation/bin# ./app
succeed to load enclaves.
succeed to establish secure channel.
Succeed to exchange secure message...
Succeed to close Session...
参考资料
https://blog.csdn.net/cacique111/article/details/133246169
https://blog.csdn.net/shuizhongmose/article/details/131290471
https://blog.csdn.net/weixin_43292691/article/details/119917066
https://blog.csdn.net/qq_42557044/article/details/127259835
https://blog.csdn.net/hhh078/article/details/132273182
这篇关于Linux ubuntu20.04 安装使用 Intel sgx的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!