鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

远程证明

TEE套件完成了rats-tls的适配,本章节主要介绍如何实现基于rats-tls的远程证明。

获取基线度量值

环境准备安装virtCCA_sdk时,会主动安装gen_rim_ref二进制工具。

  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透传参数。
  2. 基于gen_rim_ref获取cVM基线度量值。
    gen_rim_ref -f <firmware_path> -d <dtb_path> -v <vcpu_num>

    其中:

    • dtb_path:为cVM的设备树二进制文件。
    • vcpu_num:为cVM虚拟机配置虚拟CPU个数。
    • firmware_path:为cVM配置的UEFI固件路径。

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

Demo演示

  1. 请参见编译远程证明Demo完成演示Demo的编译。
  2. 请参见启动虚拟机完成机密虚拟机的启动,并将server部署到虚拟机任意目录下。
  3. 在虚拟机内启动server。
    ./server -i <ip> -p <port> 

    其中:

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

  4. Client发起远程证明请求。
    ./client -i <ip> -p <port> -m <measurement> [-e] -f </path/image_reference_measurement.json> -P </path/software_components.json>
    • 可选:ip:要连接的服务端IP地址。默认为本地回环。
    • 可选:port:要连接的服务端端口。默认为7220。
    • measurement:cVM初始度量基线值。
    • 可选:-e:打印机密虚拟机ACPI table和Event Log相关信息。
    • image_reference_measurement.json:验证qcow2镜像中各个组件的HASH值json文件,制作qcow2镜像生成的image_reference_measurement.json。

    • software_components.json:验证platform_token中各个底层组件的json文件,随BIOS发行版本出包带入。

      示例:

      {
          "header": {
              "timestamp": "2025-01-14",
              "copyright": "Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.",
              "version": "2.0",
              "description": "Platform reference values for CCA token verification"
          },
          "hostBios": [
              {
                  "biosVersion": "21.21.0",
                  "biosVendor": "Huawei Corp.",
                  "pcrs": [
                      {
                          "pcrIndex": "0",
                          "description": "BIOS",
                          "sha256": "fa4caa9e3c17efbf3aa9d40a5316dd31cae54cdbee74bb1df666e0ce8d5c82e2"
                      },
                      {
                          "pcrIndex": "0", 
                          "description": "BIOS",
                          "sm3": "6c9bbf28432f525519aadfc1d635e96980e66b1d7aa5b67cbdb0acb6ab014fd2"
                      }
                  ],
                  "measure_value": [
                      {
                          "firware_name": "ipu",
                          "measurement": "1d018904e20291089280073eb1abcbedbff9334f916ba725daa8474d524ee1c0",
                          "firware_version": "21.21.0",
                          "hash_algorithm": "sha256"
                      },
                      {
                          "firware_name": "imu",
                          "measurement": "a7311708162e6336cf765527345953e54fb18d7ee0960ca34465404e21ebf288",
                          "firware_version": "21.21.0",
                          "hash_algorithm": "sha256"
                      },
                      {
                          "firware_name": "imf_ap",
                          "measurement": "4de464130279547206a15ee2f7ecc1357daecf5e24091fc0a08dab28e0c4bf2f",
                          "firware_version": "21.21.0",
                          "hash_algorithm": "sha256"
                      },
                      {
                          "firware_name": "tf_bl2",
                          "measurement": "b32c4018835b6c637f7841526adf2b6f2c5589f38872f11a9acd3a07bb30e96c",
                          "firware_version": "21.21.0",
                          "hash_algorithm": "sha256"
                      },
                      {
                          "firware_name": "uefi",
                          "measurement": "afe614b7be8ad6e0aceb9c0a2d3d2ebfa13bfb0bafd72f8522c3674945b62b17",
                          "firware_version": "21.21.0",
                          "hash_algorithm": "sha256"
                      },
                      {
                          "firware_name": "tee",
                          "measurement": "c96ce76d3a6953ba7fa476bbe6ffef3a5d0881753bf63bc63d19a8ebaa2c8fc2",
                          "firware_version": "1.27",
                          "hash_algorithm": "sha256"
                      }
                  ]
              }
          ]
      } 

rats-tls演示

TEE套件完成了rats-tls的适配,请参见如下步骤实现基于rats-tls的远程证明。

  1. 请参见编译rats-tls样例完成rats-tls库和样例demo编译。
  2. 远程证明服务端部署。将编译好的rats-tls.tar.gz拷贝到cVM内,解压后拷贝到系统目录。
    tar xvf rats-tls.tar.gz
    cp -rf lib/rats-tls /usr/lib/
    cp -rfL lib/rats-tls/librats_tls.so.0 /lib64/
  3. 启动rats-tls的服务端Demo。
    ./virtcca-server

    可选参数同rats-tls原始提供的样例,可执行以下命令查看。

    ./virtcca-server -h

  4. 请参见2在证明客户端完成rats-tls库的部署,并启动rats-tls的客户端Demo。
    ./virtcca-client -i <ip> -r <measurement> 

    其中:

    • 可选:ip:服务端的IP地址,默认为本地回环。
    • measurement:cVM的基线度量,请参见获取基线度量值