编译远程证明SDK

环境准备

  1. 安装编译依赖。

    yum install tar cmake make git gcc gcc-c++ openssl-devel glib2-devel rsync patch 

  2. “/path/workdir”为工作目录,下载编译依赖库,各库源码都位于该工作目录下。远程证明报告使用QCBOR编码,Demo编译时依赖。

    git clone https://github.com/laurencelundblade/QCBOR.git -b v1.2
    git clone https://github.com/laurencelundblade/t_cose.git -b v1.1.2
    cd QCBOR
    make
    make install
    cd ../t_cose
    cmake -S . -B build -DCRYPTO_PROVIDER=OpenSSL
    cmake --build build
    cmake --install build

    git clone失败,可先执行以下命令取消git clone过程中SSL校验后重试。

    git config --global http.sslVerify false

  3. 安装远程证明库,请参见环境要求章节配置openEuler-24.03-LTS-SP1的yum源。

    yum install virtCCA_sdk virtCCA_sdk-devel

  4. 返回到工作目录,下载远程证明源代码。

    cd ../
    git clone -b master https://gitee.com/openeuler/virtCCA_sdk.git

编译远程证明Demo

该Demo提供了简单的远程证明流程参考代码,仅用于验证TEE远程证明功能,用户可基于Demo参考实现远程证明。

  1. 编译远程证明报告获取和验证的参考代码。

    参考代码编译需要依赖远程证明SDK,编译前请参见环境准备安装编译依赖。

    cd virtCCA_sdk/attestation/samples
    cmake -S . -B build
    cmake --build build

  2. 检查“build”目录下是否已生成client和server两个可执行文件。

    • server端(二进制)包含了调用远程证明sdk获取远程证明报告的代码,仅供参考。
    • client端(二进制)包含了报告解析和验证的代码,仅供参考。

    server和client使用TCP进行数据传递,出于安全考虑,建议优先使用rats-tls。

编译rats-tls样例

rats-tls是一种支持异构硬件可执行环境的双向传输层安全性协议,提供更为安全数据传输。TEE套件完成了rats-tls的适配支持,并提供简单的Demo样例,仅用于验证rats-tls的双向验证功能,客户可基于此Demo开发自己的远程证明应用。

  1. 返回到工作目录下,下载源码安装rats-tls编译依赖,仅编译时依赖。

    cd ../../../
    git clone https://github.com/PJK/libcbor.git
    cd libcbor
    cmake -S . -B build
    cd build
    make
    make install

  2. 在工作目录,编译支持TEE套件远程证明的rats-tls动态库和参考代码。

    参考代码编译需要依赖远程证明SDK和远程证明报告解析依赖库,编译前请参见环境准备安装远程证明SDK和远程证明报告解析依赖库。

  3. 在virtCCA_sdk同级目录下载rats-tls源码。

    cd ../../
    git clone https://github.com/inclavare-containers/rats-tls.git

  4. 基于特定commit点合入rats-tls支持TEE套件的patch。

    cd rats-tls
    git reset --hard 40f7b78403d75d13b1a372c769b2600f62b02692
    git apply ../virtCCA_sdk/attestation/rats-tls/*.patch

  5. 编译rats-tls样例代码和依赖库。

    bash build.sh -s -r -c -v gcc

    检查“bin”目录下是否已生成软件包。

编译initramfs

在某些场景下,客户期望在cVM启动时对cVM进行度量和验证,若验证不通过,则不启动cVM虚拟机。SDK基于buildroot和rats-tls样例提供了演示样例。

  1. 根据实际情况修改rats-tls.tar.gz的路径。

    cd ../
    vim virtCCA_sdk/attestation/initramfs/build.sh

  2. 编译启动时证明需要的initramfs。

    cd virtCCA_sdk/attestation/initramfs
    export FORCE_UNSAFE_CONFIGURE=1
    bash build.sh
    • 如果当前目录不存在buildroot源码,build.sh将会自动下载buildroot代码,也可以自行下载buildroot源码,解压后放到“initramfs”目录下。
    • 构建initramfs过程中需要联网下载一些源码,请提前配置好网络。
    • rats-tls运行依赖OpenSSL库,当前buildroot构建的initramfs包含了3.2.0版本的OpenSSL,如果rats-tls依赖OpenSSL1.x的版本,可将buildroot的tag切回到2023.02.11,其默认配置的OpenSSL版本为1.1.1w。

  3. 编译脚本执行成功后,检查“buildroot/output/images”目录下是否已生成initramfs文件rootfs.cpio.gz。

    ll buildroot/output/images/