---
title: 获取远程证明报告
description: "鲲鹏virtCCA能够提供硬件级的远程证明机制，在OpenClaw真正使用之前，向用户出示一份“身份凭证”。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaiagent/bestpractice/aiagent-0122.html
sourcePath: /source/zh/kunpengaiagent/bestpractice/aiagent-0122.html
indexId: c550381e0eb7ea056f5d2210de17fa0dbc6bb3e5e5d7a962036be1b9eccde96356
---
# 获取远程证明报告

鲲鹏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设备树二进制文件。

  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透传参数。


#### 远程证明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侧远程证明报告验签成功。
