Intel SGX安装指南(Ubuntu20.04)

服务器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支持

    在确认处理器型号满足要求后,也需要保证主机在开机时开启了这一特性。

    • 在开机过程中点击F2进入BIOS设置
    • 选择系统安全页签
    • 打开SGX支持
    • 退出BIOS设置,系统将自动重启,重启后系统将支持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安装(选做)

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与Intel SGX PSW安装

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等外网环境,则需要将下载的步骤在本地执行,并将下载的文件上传到服务器对应位置中,然后将原脚本中的下载指令注释。

      具体步骤为:

      1. 本地克隆linux-sgx仓库,并将其关联仓库一并下载。在本地克隆的仓库路径下执行linux-sgx/Makefile的第53行git submodule update --init --recursive,并将脚本中的该行指令注释(具体行数可能与版本相关有所变化)。

      2. 在本地执行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进行使用,将在下一篇进行记录。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值