---
title: 远程证明
description: "TEE套件完成了rats-tls的适配，本章节主要介绍如何实现基于rats-tls的远程证明。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC2/confidt/kunpengtee_16_0029.html
sourcePath: /source/zh/kunpengboostkithistory/251RC2/confidt/kunpengtee_16_0029.html
indexId: 73da36e70a4854bd879c2c501e1bd011f224e83ea6661807a3757a4119f57ec472
---
# 远程证明

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

#### 获取基线度量值

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

1. 生成DTB设备树二进制文件。

  a. 编辑cVM的xml配置，增加如下透传QEMU参数。

```
<qemu:arg value='-machine'/>
<qemu:arg value='dumpdtb=/path/to/dump.dtb'/>
```


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

  b. 启动cVM虚拟机，将在指定路径下生成dtb文件。

```
virsh define <cvm.xml>
virsh start <cvm>
```


  c. 编辑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的基线度量，请参见    获取基线度量值
。
