使用远程证明Demo示例
本章节主要介绍远程证明参考示例的使用。
远程证明Demo示例
提供远程证明示例Demo,该Demo提供了简单的远程证明流程参考代码,仅用于验证TEE远程证明功能,用户可基于Demo参考实现远程证明。请参考以下步骤完成远程证明示例编译、安装和运行。
- 编译远程证明报告获取和验证的参考代码。
git clone https://gitee.com/openeuler/virtCCA_sdk.git -b 0.1.17 cd virtCCA_sdk/attestation/samples cmake -S . -B build cmake --build build cd -
编译成功后,可在“virtCCA_sdk/attestation/samples/build”目录下查看生成client、server可执行文件。
- server端(二进制)包含了调用远程证明库获取远程证明报告的代码,仅供参考。
- client端(二进制)包含了远程证明报告解析和验证的代码,仅供参考。
server和client使用TCP进行数据传递,出于安全考虑,建议优先使用rats-tls。
- 请参见配置机密虚拟机完成机密虚拟机的启动,并将server部署到虚拟机任意目录下。
- 在虚拟机内启动server。
./server -i <ip> -p <port>
其中:
- 可选:ip:服务端配置的IP地址。默认为本地回环。
- 可选:port:服务端配置的端口。默认为7220。

- 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相关信息。(UEFI ONLY)
- image_reference_measurement.json:文件包含了qcow2镜像中各个组件的Hash值,用于验证qcow2镜像中各个组件的完整性,此处的json文件为制作机密虚拟机qcow2镜像生成的image_reference_measurement.json。

software_components.json : 用于验证platform_token中涉及的各个底层组件。随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" } ] } ] }client侧远程证明报告验签成功。

rats-tls适配示例
rats-tls是一种支持异构硬件可执行环境的双向传输层安全性协议,提供更为安全的数据传输。TEE套件完成了rats-tls的适配支持,并提供简单的demo样例,仅用于验证rats-tls的双向验证功能,客户可基于此demo开发自己的远程证明应用。
- rats-tls编译依赖安装。
git clone https://github.com/PJK/libcbor.git cd libcbor cmake -S . -B build cmake --build build cmake --install build cd -
- 准备rats-tls源码,基于指定commit点合入rats-tls支持TEE套件的patch。
git clone https://github.com/inclavare-containers/rats-tls.git cd rats-tls git reset --hard 40f7b78403d75d13b1a372c769b2600f62b02692 git apply ../virtCCA_sdk/attestation/rats-tls/*.patch

要求rats-tls源码目录与virtCCA_sdk源码目录平级。
- 编译rats-tls样例代码和依赖库。
bash build.sh -s -r -c -v gcc
检查“bin”目录下是否已生成软件包。

- 远程证明服务端部署。将编译好的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/
- 启动rats-tls的服务端Demo。
./virtcca-server -i <ip>

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

- 请参见4在证明客户端完成rats-tls库的部署,并启动rats-tls的客户端demo。
./virtcca-client -i <ip> -r <measurement> -f </path/image_reference_measurement.json>
其中:
- 可选:ip:服务端的IP地址,默认为本地回环。
- measurement:cVM的基线度量,请参见获取虚拟机基线度量值。
- image_reference_measurement.json:验证qcow2镜像中各个组件的HASH值json文件,制作机密虚拟机qcow2镜像生成的image_reference_measurement.json。

父主题: 使能远程证明