intel机器安装Data Center Attestation Primitives(Intel® SGX DCAP)教程

1 篇文章 0 订阅
1 篇文章 0 订阅
本文详细描述了作者如何在一台配备了IntelXeonSilver4314CPU的Ubuntu22.04系统上安装和迁移至IntelSGXDataCenterAttestationPrimitives(DCAP),包括内核驱动、SDK和PSW的安装过程,以及解决遇到的问题,如TLS证书配置等。
摘要由CSDN通过智能技术生成

intel机器安装Data Center Attestation Primitives(Intel® SGX DCAP)教程

​ 由于intel发邮件说这个EPID认证2025年四月份就不给用了,建议咱这些用EPID的原始人把服务的认证模式迁移到DCAP,今天来尝试对DCAP的探索,关于DCAP的逻辑和知识我在这里不做多叙述。我是装完了之后才想起要写点儿什么的,这儿就描述一下我的安装过程和碰到问题,这里只是对我安装的过程的一个记录,具体的安装过程还请遵循linux-sgx的README。

我的机器的配置:

CPU64 Intel® Xeon® Silver 4314 CPU @ 2.40GHz
操作系统Ubuntu 22.04.4 LTS
内核版本6.5.0-18-generic
BIOS国产的宝德

以下是我参阅的教程:

  • https://download.01.org/intel-sgx/sgx-dcap/(这是所有版本的归档,你可以选择最新版本,里面会有教你怎么安装)
  • https://download.01.org/intel-sgx/sgx-dcap/1.20/linux/docs/Intel_SGX_SW_Installation_Guide_for_Linux.pdf
  • https://github.com/intel/linux-sgx/blob/master/README.md

安装intel driver

​ 操作系统内核版本超过5.11之后,就不用去特意装sgx驱动了,把BIOS的sgx选项调成——由软件启动之后,使用sgx-enable项目将你的sgx驱动激活之后,重启你的instance,你的/dev/路径下就有:sgx_enclave、sgx_provision、sgx_vepc这三个东西了,代表你的计算机支持运行sgx程序,而且驱动激活了,这里不做过多教程。

安装intel sdk & psw

安装这部分内容跟随着教程https://github.com/intel/linux-sgx/blob/master/README.md

README文件比较长,但是核心就是:

  • 0、介绍以及告诉你安装这个东西的需求。

  • 1、从源码自己编译出sdk和psw的安装包。

  • 2、使用安装包下载sdk和psw。

  • 3、安装DCAP的PCS

我们直接先看Install the Intel® SGX SDK和Install the Intel® SGX PSW章节。

安装intel sdk

可以直接在下载intel sdk的installer在你某个路径下

首先先下载必要的依赖

sudo apt-get install build-essential python-is-python3

下载installer

wget https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu22.04-server/sgx_linux_x64_sdk_2.23.100.2.bin
#开始安装并选择路径,我推荐放在/opt/intel/底下
./sgx_linux_x64_sdk_2.23.100.2.bin
source /opt/intel/sgxsdk/environment

在这里插入图片描述

下载linux-sgx项目,完成后使用模拟模式运行一下试例

cd /home/Chiang
git clone https://github.com/intel/linux-sgx.git
cd /opt/intel/sgxsdk/SampleCode/LocalAttestations
make SGX_MODE=SIM
cd bin
./app

若输出success有关信息,证明sdk下载成功。

你如果使用的是Ubuntu 22.04或者任何带有 systemd v248或更高版本的操作系统,/dev/sgx_enclave(这个是inkernel的sgx驱动)只能由“sgx”组中的用户访问,所以你要把你的用户加入sgx组。

# 查看systemd的版本:
systemctl --version
# 把你的user放入sgx组
sudo usermod -a -G sgx <user name>

安装intel psw

安装相关依赖项

sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev

然后安装真正的intel 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

这里遇到几个问题,第一个是:

  • 找不到目标包

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package libsgx-dcap-ql
    ....
    

    我们执行以下三条:

    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
    wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add
    sudo apt-get update
    
  • 没有libprotobuf17这个包

    The following packages have unmet dependencies:
     libsgx-epid : Depends: libprotobuf17 but it is not installable
                   Recommends: libsgx-aesm-epid-plugin (>= 2.23.100.2-focal1) but it is not going to be installed
     libsgx-quote-ex : Depends: libprotobuf17 but it is not installable
                       Recommends: libsgx-aesm-quote-ex-plugin (>= 2.23.100.2-focal1) but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.
    

    我们安装对应的依赖

    wget http://archive.ubuntu.com/ubuntu/pool/main/p/protobuf/libprotobuf17_3.6.1.3-2ubuntu5_amd64.deb
    sudo dpkg -i libprotobuf17_3.6.1.3-2ubuntu5_amd64.deb
    

解决了这两个问题之后,再重新执行上面对psw的安装即可,安装成功后硬件模式运行samplecode的能力就解锁了,我们可以去试一试

cd /opt/intel/sgxsdk/SampleCode/LocalAttestation
make
cd bin
./app

输出的日志出现success证明安装成功。

ECDSA attestation和的安装PCS/PCCS

我是跟着:https://download.01.org/intel-sgx/sgx-dcap/1.20/linux/docs/Intel_SGX_SW_Installation_Guide_for_Linux.pdf的appenddix2教程来的,当然也可以看一下github的:https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/pccs

  • 安装nodejs

    这里官方文档是有问题的我踩了雷,让我直接去官网下载nodejs,大于18.17版本的都OK我照做了,结果下了个21.xx版本的,然后执行了下一步…

  • 快捷安装sgx-dcap-pccs

    sudo apt-get install sgx-dcap-pccs
    

    ***NOTE:***这里要注意如果你是下载的最新的nodejs,那么你大概率会出现我这样的错误

    没搞过我蒙逼了一下,然后尝试切换nodejs的版本:

    (1)先下载nvm:
    在这里插入图片描述

    (2)然后切换nodejs的版本:
    在这里插入图片描述

    (3)重新选择再进行./install.sh,看来是nodejs版本的问题…接着可以开始配置了,具体怎么配置可以看文档

    pccs配置

    (4)执行完这一步使用命令检查服务状态

    sudo systemctl status pccs
    

    发现pccs服务并没有正常启动,于是检查启动日志

    tail -f /opt/intel/sgx-dcap-pccs/logs/pccs_server.log
    

    发现在不停输出同一个错误日志:The private key or certificate for HTTPS server is missing.这个日志输出的代码在[这里]( logger.error(‘The private key or certificate for HTTPS server is missing.’)😉,判断一下是因为这个服务启动的时候选择了使用’insecure HTTPS’也就是自签名的证书作为TSL,目前程序是没有找到这个自签名证书和私钥。

    于是检查了一下这个证书有没有生成:

    ll /opt/intel/sgx-dcap-pccs/ssl_key
    total 20
    drwxr-xr-x  2 pccs pccs 4096 Mar 14 09:25 ./
    drwxr-xr-x 20 pccs pccs 4096 Mar 15 03:59 ../
    -rw-r--r--  1 pccs pccs 1005 Mar 14 09:25 csr.pem
    -rw-r--r--  1 pccs pccs 1082 Mar 14 09:25 file.crt
    -rw-------  1 pccs pccs 1704 Mar 14 09:20 private.pem
    

    发现是有的,检查/opt/intel/sgx-dcap-pccs/ssl_key发现还有个startup.sh脚本,使用一下在重启pccs后,服务正常启动

    ./startup.sh
    systemctl restart pccs
    ##查看启动日志
    [info]: HTTPS Server is running on: https://localhost:8081
    

    则证明安装成功

    试试有无成功:

    curl -kv https://localhost:8081
    #然后查看一下日志有无更新
    systemctl status pccs
    

24/06/12更新,PCCS的安装依赖特定的nodejs版本

这两天在一台新的机器上想安装一个PCCS,结果发现使用sudo apt-get install sgx-dcap-pccs命令安装已经会提示nodejs版本不正确的错误了,而且你使用该命令安装的时候还会贴心的给你安装node的环境。但是要命的是,他会根据你/etc/apt/sources.list的版本给你安装node的最新版本,而适配PCCS的node的版本只有他提示里面的那几种,而那几种可行的版本并不能直接通过官方README教程简单的下载到,以下是下载方法:

##先下载node命令,我选择了一个20.10.0版本,下载地址:https://nodejs.org/dist/
cd /root
wget https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-x64.tar.gz
tar -xvf node-v20.10.0-linux-x64.tar.gz
ln -s /root/node-v20.10.0-linux-x64/bin/node /usr/bin/node
node -v

下载完成node之后还不够,这个intel pccs说需要有个nodejs命令,需要下载对应版本,查了才知道这个node和nodejs其实是同一个东西,原因是在有些linux发行版本里面/usr/bin/node这个已经有app使用了,然而可能pccs开发的时候intel用的是nodejs命令,会发生冲突:https://stackoverflow.com/questions/15695914/using-node-to-initialize-scripts-does-not-work-while-nodejs-does

##你可以直接把node软链接到nodejs里面
ln -s /usr/bin/node /usr/bin/nodejs
nodejs -v


##亦或者是官方提供的nodejs的deb包
wget https://deb.nodesource.com/node_20.x/pool/main/n/nodejs/nodejs_20.10.0-1nodesource1_amd64.deb
dpkg -i nodejs_20.10.0-1nodesource1_amd64.deb
nodejs -v

然后就完成了,可以继续安装pccs了[摊手]

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值