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

获取机密虚拟机基线度量值

本章主要介绍如何通过基线值工具获取机密虚拟机初始度量值和镜像度量值基线。

可参考如下步骤获取机密虚拟机初始度量值(RIM)基线。

  1. openEuler社区CCA代码仓源码获取。
    git clone https://gitcode.com/openeuler/CCA.git
  2. 编译初始度量值基线工具。
    cd CCA/sdk/attestation/rim_ref/
    cmake -S . -B build
    cmake --build build

    编译成功后,会在build目录下生成gen_rim_ref工具。

  3. 使用gen_rim_ref生成机密虚拟机初始度量值基线。
    cd build
    ./gen_rim_ref -f <firmware_path> -d <dtb_path> -v <vcpu_num> -r <ram_size> [--ccal]
    表1 参数说明

    参数

    描述

    dtb_path

    cVM的设备树二进制文件。

    vcpu_num

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

    firmware_path

    cVM配置的UEFI固件路径。

    ram_size

    cVM配置的内存大小,要求4KB对齐。

    ccal

    cVM配置是否开启hisi-cca,传递表示开启,不传递则未开启。

    工具计算完成后会在终端打印初始度量值基线:

    • 可参考1生成机密虚拟机设备树文件。

可参考如下步骤获取机密虚拟机镜像度量值基线。

  1. 更新机密虚拟机grub,使能tpm度量功能。

    在启动机密虚拟机后,在机密虚拟机内执行如下命令:

    grub2-mkimage -d /usr/lib/grub/arm64-efi -O arm64-efi --output=/boot/efi/EFI/openEuler/grubaa64.efi --prefix="(,msdos1)/efi/EFI/openEuler" fat part_gpt part_msdos linux tpm
    cp -f /boot/efi/EFI/openEuler/grubaa64.efi /boot/EFI/BOOT/BOOTAA64.EFI
  2. 使用create-oe-image.sh脚本生成目标虚拟机镜像度量值基线。

    在目标虚拟机关闭状态下,对目标虚拟机镜像文件进行基线度量:

    cd CCA/sdk/attestation/cvm-image-rewriter/
    bash create-oe-image.sh -i <image_path>
    表2 参数说明

    参数

    描述

    image_path

    cVM配置的系统镜像路径。

    脚本计算完成后会生成image_reference_measurement.json文件保存镜像度量值基线。

可参考如下步骤获取机密虚拟机dtb(设备树)文件。

  1. 修改机密虚拟机配置文件。

    “domain”标签增加qemu命令行透传支持:

    <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

    增加如下qemu透传参数,其中dumpdtb指定设备树文件生成路径:

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

  2. 启动机密虚拟机,完成设备树文件生成。
    virsh start <cvm>

  3. 恢复机密虚拟机配置,删除dumpdtb相关qemu透传参数。

    删除虚拟机中此部分配置:

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