Linux ubuntu20.04 安装使用 Intel sgx

2023-11-30 02:04

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435175

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传