开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

获取远程证明报告

鲲鹏virtCCA能够提供硬件级的远程证明机制,在OpenClaw真正使用之前,向用户出示一份“身份凭证”。

部署远程证明SDK

参考以下步骤完成远程证明SDK部署。

  1. 安装远程证明库。
    yum install virtCCA_sdk virtCCA_sdk-devel
  2. 安装编译依赖。
    yum install tar cmake make git gcc gcc-c++ openssl-devel glib2-devel rsync patch
  3. 编译、安装QCBOR组件。
    git clone https://github.com/laurencelundblade/QCBOR.git -b v1.2
    cd QCBOR
    make
    make install
    cd ..

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

    git config --global http.sslVerify false
  4. 编译、安装t_cose组件。
    git clone https://github.com/laurencelundblade/t_cose.git -b v1.1.2
    cd t_cose
    cmake -S . -B build -DCRYPTO_PROVIDER=OpenSSL
    cmake --build build
    cmake --install build
    cd ..

获取虚拟机基线度量值

  1. 生成DTB设备树二进制文件。
    1. 编辑cVM的xml配置,增加如下透传QEMU参数。
      <qemu:arg value='-machine'/>
      <qemu:arg value='dumpdtb=/path/to/dump.dtb'/>

      其中dumpdtb为指定的DTB生成路径。

    2. 启动cVM虚拟机,将在指定路径下生成dtb文件。
      virsh define <cvm.xml>
      virsh start <cvm>

    3. 编辑cVM虚拟机xml配置,删除增加的QEMU透传参数。

远程证明Demo示例

提供远程证明示例Demo,该Demo提供了简单的远程证明流程参考代码,仅用于验证TEE远程证明功能,用户可基于Demo参考实现远程证明。请参考以下步骤完成远程证明示例编译、安装和运行。

  1. 编译远程证明报告获取和验证的参考代码。
    git clone https://gitcode.com/openeuler/virtCCA_sdk.git -b v0.1.17
    cd virtCCA_sdk/attestation/samples
    cmake -S . -B build
    cmake --build build
    cd -

    编译成功后,可在“virtCCA_sdk/attestation/samples/build”目录下查看生成client、server可执行文件。

    • server端(二进制)包含了调用远程证明库获取远程证明报告的代码,仅供参考。
    • client端(二进制)包含了远程证明报告解析和验证的代码,仅供参考。
  2. 完成机密虚拟机启动,并将server部署到虚拟机任意目录下。
  3. 基于gen_rim_ref获取cVM基线度量值。gen_rim_ref由virtCCA_sdk软件包提供。
    gen_rim_ref -f <firmware_path> -d <dtb_path> -v <vcpu_num> -s <sve_vector_length> -m <pmu_counter_num>
    表1 参数说明

    参数

    描述

    dtb_path

    cVM的设备树二进制文件。

    vcpu_num

    cVM虚拟机配置虚拟CPU个数。

    firmware_path

    cVM配置的UEFI固件路径。

    sve_vector_length

    cVM配置SVE向量长度,不传递默认为0。

    pmu_counter_num

    为cVM配置PMU数量,不传递默认为0。

    默认使用的hash算法为SHA256,若需要使用SHA512,可修改gen_rim_ref源码中的hash_algo为1。gen_rim_ref源码位于“virtCCA_sdk/attestation/rim_ref/”下。

  4. 在虚拟机内启动server。
    ./server -i <ip> -p <port> 

    其中:

    • 可选:ip:服务端配置的IP地址。默认为本地回环。
    • 可选:port:服务端配置的端口。默认为7220。

  5. client发起远程证明请求。
    ./client -i <ip> -p <port> -m <measurement>
    • 可选:ip:要连接的服务端IP地址。默认为本地回环。
    • 可选:port:要连接的服务端端口。默认为7220。
    • measurement:cVM初始度量基线值。

      client侧远程证明报告验签成功。

      • 如需对OpenClaw本身进行动态度量,可参考度量用户态进程代码段进行DIM能力部署,按照章节3下载对应的组件。并将3.2小节,实例中的“dim_test_demo”路径改成目前部署的OpenClaw路径。