diff --git a/sig/Hygon Arch/assets/CSV/csv3-ccel-grub.png b/sig/Hygon Arch/assets/CSV/csv3-ccel-grub.png new file mode 100644 index 0000000000000000000000000000000000000000..13e5d34e5a9b3a8306dddc9eb1a0f9a980ed55d1 Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/csv3-ccel-grub.png differ diff --git a/sig/Hygon Arch/assets/CSV/csv3-ccel-initrd.png b/sig/Hygon Arch/assets/CSV/csv3-ccel-initrd.png new file mode 100644 index 0000000000000000000000000000000000000000..a386787d79b1f65eb48698f50826fd4a140e8669 Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/csv3-ccel-initrd.png differ diff --git a/sig/Hygon Arch/assets/CSV/csv3-ccel-kernel-cmdline.png b/sig/Hygon Arch/assets/CSV/csv3-ccel-kernel-cmdline.png new file mode 100644 index 0000000000000000000000000000000000000000..db9b54a92e497d80d918c83a9f7611f615b27ee7 Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/csv3-ccel-kernel-cmdline.png differ diff --git a/sig/Hygon Arch/assets/CSV/csv3-ccel-shim.png b/sig/Hygon Arch/assets/CSV/csv3-ccel-shim.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bc4341aaac89a84effa49f7a9463f358dfbedc Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/csv3-ccel-shim.png differ diff --git a/sig/Hygon Arch/assets/CSV/hag-platform_status-display-fw-supported-csv-types-v2.png b/sig/Hygon Arch/assets/CSV/hag-platform_status-display-fw-supported-csv-types-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..8a99d8dd7e7134717fbc5f88f6c85866644200ce Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/hag-platform_status-display-fw-supported-csv-types-v2.png differ diff --git a/sig/Hygon Arch/assets/CSV/how-to-rtmr-work-in-the-csv3-guest.png b/sig/Hygon Arch/assets/CSV/how-to-rtmr-work-in-the-csv3-guest.png new file mode 100644 index 0000000000000000000000000000000000000000..ad164e8913cc561285ae24af399c48bf1a8ce8fa Binary files /dev/null and b/sig/Hygon Arch/assets/CSV/how-to-rtmr-work-in-the-csv3-guest.png differ diff --git "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" index c45fe9177a5887824c34ab0f78e95d8209f4c668..231195334ed65dd656950cd81fe3f88631b7a3fb 100644 --- "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" +++ "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/0-\345\256\211\345\205\250\345\212\237\350\203\275\351\205\215\347\275\256\350\246\201\346\261\202.md" @@ -13,7 +13,7 @@ | --- | --- | | 海光2号 | 32XX,52XX,72XX | | 海光C86-3G | 33XX,53XX,73XX | -| 海光C86-4G | 343X,748X,749X,548X | +| 海光C86-4G | 34XX,54XX,74XX | 表 2 安全功能的硬件配置版本要求 @@ -21,7 +21,7 @@ | --- | --- | --- | | 1 |

海光2号

| #**要求1**#:

1. 两种方法都可以确认bios是否支持相应的功能,方法如下:
(1) PI版本 >= `2.1.0.4`,通过机器型号和厂商沟通确认
(2) Bootloader版本 >= `1.2.55`,Bootloader版本号可以通过bios查看,方法在下面章节说明
2. 必须支持CSV、fTPM2.0、fTCM2.0、TPCM等安全功能

BIOS必须满足以上2点要求,如果不满足请直接联系整机厂商

| | 2 |

海光C86-3G

| #**要求2**#:

1. 两种方法都可以确认bios是否支持相应的功能,方法如下:
(1) PI版本 >= `2.1.0.4`,通过机器型号和厂商沟通确认
(2) Bootloader版本 >= `1.3.52`(Bootloader版本必须 >= `1.3.52` 才能支持 *CSV2虚拟机*,如果不需要 *CSV2虚拟机* 功能,Bootloader版本满足 #**要求1**# 中的要求也能进行其他测试),Bootloader版本号可以通过bios查看,方法在下面章节说明
2. 必须支持CSV(包括CSV1、CSV2)、fTPM2.0、fTCM2.0、TPCM等安全功能

BIOS必须满足以上2点要求,如果不满足请直接联系整机厂商

| -| 3 |

海光C86-4G

| #**要求3**#:

1. 两种方法都可以确认bios是否支持相应的功能,方法如下:
(1) PI版本 >= `4.2.0.0`,通过机器型号和厂商沟通确认
(2) Bootloader版本要求需要根据CPU Model确认(通过执行 `grep -i model /proc/cpuinfo \| grep -v "model name" \| uniq` 可以查看CPU Model值),各CPU Model值对应的Bootloader版本要求如下:
1) **4**: Bootloader版本 >= `3.5.3.1`
2) **6**(model=6的 74xx/54xx CPU): Bootloader版本 >= `3.7.3.37`
3) **6**(model=6的 34xx CPU):Bootloader版本 >= `3.7.1.115`
Bootloader 版本号可以通过bios 查看,方法在下面章节说明
2. 必须支持CSV(包括CSV1、CSV2、CSV3)、fTPM2.0、fTCM2.0、TPCM等安全功能

BIOS必须满足以上2点要求,如果不满足请直接联系整机厂商


**注意:**
如果用户希望测试`CSV3`的远程认证、kernel启动hash验证、秘密注入等功能(CSV3密钥封印,CSV3全磁盘加密,CSV3机密容器 等依赖于这些功能),要求安全固件的版本号(即build id)>= `2200`。如果版本号 < `2200`,用户需要联系OEM厂商获取指定PI版本的BIOS,以`PI4.6.x`为前缀的PI版本要求 >= `PI4.6.0.6`,以`PI4.2.x`为前缀的PI版本要求 >= `PI4.2.0.10`。 | +| 3 |

海光C86-4G

| #**要求3**#:

1. 两种方法都可以确认bios是否支持相应的功能,方法如下:
(1) PI版本 >= `4.2.0.0`,通过机器型号和厂商沟通确认
(2) Bootloader版本要求需要根据CPU Model确认(通过执行 `grep -i model /proc/cpuinfo \| grep -v "model name" \| uniq` 可以查看CPU Model值),各CPU Model值对应的Bootloader版本要求如下:
1) **4**: Bootloader版本 >= `3.5.3.1`
2) **6**(model=6的 74xx/54xx CPU): Bootloader版本 >= `3.7.3.37`
3) **6**(model=6的 34xx CPU):Bootloader版本 >= `3.7.1.115`
Bootloader 版本号可以通过bios 查看,方法在下面章节说明
2. 必须支持CSV(包括CSV1、CSV2、CSV3)、fTPM2.0、fTCM2.0、TPCM等安全功能

BIOS必须满足以上2点要求,如果不满足请直接联系整机厂商


**注意:**

#**要求3**# 只支持CSV3虚拟机启动、迁移等基础功能。CSV3虚拟机更多新特性要求更高的BIOS PI固件版本。

1. CSV3虚拟机 `远程认证` 、 `kernel启动hash验证(也称为kernel direct boot启动度量,支持QEMU -kernel -initrd -cmdline方式启动虚拟机时对kernel、initrd、cmdline度量)` 、 `秘密注入` 3个新特性,对于支持**CSV3密钥封印**、**CSV3全磁盘加密**、**CSV3机密容器** 必不可少。这3个新特性要求安全固件 `build id` >= `2200`。以下BIOS PI版本可支持符合要求的安全固件。
  * 以 `PI4.6` 为前缀的PI版本要求 >= `PI4.6.0.6`。
  * 以 `PI4.2` 为前缀的PI版本要求 >= `PI4.2.0.10`。
  如果固件不满足版本要求,请联系OEM厂商获取指定PI版本的BIOS。

2. CSV3虚拟机 `RTMR动态度量` 新特性,可以实现CSV3虚拟机内组件和行为可追溯性、可验证性。该特性要求安全固件 `build id` >= `2337`(或者,`API` >= `1.4`)。以下BIOS PI版本可支持符合要求的安全固件。
  * 以 `PI4.6` 为前缀的PI版本要求 >= `PI4.6.5.6`。
  * 以 `PI4.3` 为前缀的PI版本要求 >= `PI4.3.0.0`。( `PI4.3.x.x` 是 `PI4.2.x.x` 的版本升级延续)
  如果固件不满足版本要求,请联系OEM厂商获取制定PI版本的BIOS。| 表 3 机密计算硬件能力细分说明 diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" index 34ff64b42feca35d154850748f1548bc49b80bba..bb367c1d54f0920245d372a187276df3d27cb816 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" @@ -79,8 +79,12 @@ sudo /opt/hygon/bin/hag csv platform_status 展示效果如下图: +* 老版本hag不能显示CSV1/2/3虚拟机分别支持多少个,比如这里只打印支持500个虚拟机。 ![hag-check-supported-csv-types](../../assets/CSV/hag-platform_status-display-fw-supported-csv-types.png) +* 新版本hag能显示总共支持的机密虚拟机个数(创建的CSV1+CSV2+CSV3虚拟机总个数不能超过该值),并分别显示当前主机支持的CSV1/2/3虚拟机个数。 +![hag-check-supported-csv-types-v2](../../assets/CSV/hag-platform_status-display-fw-supported-csv-types-v2.png) + ### dmesg确认主机Linux支持运行的机密计算虚拟机类型 在物理主机上执行dmesg可以查看Linux内核是否支持**CSV1、CSV2、CSV3**。 diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/12-\346\265\213\350\257\225CSV3\350\231\232\346\213\237\346\234\272RTMR\345\212\250\346\200\201\345\272\246\351\207\217\345\212\237\350\203\275.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/12-\346\265\213\350\257\225CSV3\350\231\232\346\213\237\346\234\272RTMR\345\212\250\346\200\201\345\272\246\351\207\217\345\212\237\350\203\275.md" new file mode 100644 index 0000000000000000000000000000000000000000..0e04f91b18e35ec227af2649368c388d143a7298 --- /dev/null +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/12-\346\265\213\350\257\225CSV3\350\231\232\346\213\237\346\234\272RTMR\345\212\250\346\200\201\345\272\246\351\207\217\345\212\237\350\203\275.md" @@ -0,0 +1,281 @@ +# 功能描述 + +CSV3 RTMR动态度量提供了类似于TPM PCR扩展度量的能力。当前CSV3支持RTMR V1版本,在V1版本中,TPM PCR扩展度量的索引与CSV3虚拟机RTMR寄存器索引关系如下表所示。 + +| TPM PCR索引 | Event Log度量寄存器索引 | RTMR | +| --- | --- | --- | +| 0 | 0 | RTMR[0] | +| 1,7 | 1 | RTMR[1] | +| 2~6 | 2 | RTMR[2] | +| 8~15 | 3 | RTMR[3] | +| 16,23 | 4 | RTMR[4] | + +CSV3虚拟机在启动、运行负载等阶段的核心二进制和动作均能动态扩展到虚拟机的RTMR寄存器中,同时追加到类似于TPM的Event Log中,用户可以透过Event Log重放RTMR寄存器值,从而验证核心程序和动作的完整性。于此同时,CSV3虚拟机还支持包含RTMR寄存器值的远程认证功能,验证方可以通过认证报告中的RTMR寄存器值确认CSV3虚拟机内的行为是否正常。 + +## RTMR动态度量流程示例 + +下图是CSV3虚拟机启动、运行过程中的RTMR动态度量的大致示例。在 `Pre-OS` 阶段,虚拟机会扩展度量 `shim`、`grub`、`kernel`、`initrd`、`kernel cmdline` 的信息,同时会将相关事件记录到Event Log中;等到系统进入 `Post-OS` 阶段,虚拟机系统会为用户提供 `Pre-OS` 阶段的Event Log访问接口(见图中 `CCEL`),用户可以通过 `CCEL` 重放RTMR寄存器值,验证Event Log的完整性,进而确认Event Log中记录的事件信息是否符合预期。用户还可以自定义符合需求的`定制Event Log代理`,对重要的程序和动作扩展度量并记录日志。 + +![how-to-use-rtmr](../../../assets/CSV/how-to-rtmr-work-in-the-csv3-guest.png) + +*注:`Pre-OS` 阶段在这里主要是指Linux kernel正式接管系统之前的阶段,这个阶段主要是UEFI BIOS调用执行程序、提供系统服务、OS loader执行等。`Post-OS` 阶段在这里主要是指Linux kernel正式接管系统之后的阶段,在这个阶段,Linux kernel先完成一系列初始化加载动作等,然后用户即可登入系统执行负载。* + +## CSV3远程认证对RTMR的支持情况 + +CSV3虚拟机可以提供包含RTMR寄存器值的认证报告。通过将 a) `CCEL`、b) `定制Event Log代理`记录的Event Log、c) 认证报告,一并发送给验证方,验证方可以通过认证报告中RTMR寄存器值验证 a) `CCEL`、b) `定制Event Log代理`记录的Event Log,的完整性,在完整性验证通过后,可以通过对比目标Event Log项中的内容是否符合预期。 + +# 演示CSV3虚拟机RTMR动态度量功能 + +演示使用的主机、虚拟机环境如下表所示: + +| 软件组件 | 软件版本 | 说明 | +| --- | --- | --- | +| Host OS | Anolis OS8.4 | | +| Host Kernel | 5.10.134-19.1.an8 | 如果用户主机内核已经支持启动CSV3虚拟机,可以不遵从这里的内核版本。 | +| Qemu | 6.2.0-53.0.8.module+an8.10.0+11342+88f0b6b5.4 | 如果用户Qemu已经支持启动CSV3虚拟机,可以不遵从这里的Qemu版本。 | +| edk2-ovmf (OVMF) | 20220126gitbb1bba3d77-13.0.1.an8.8 | 在Anolis OS8中,`edk2-ovmf` 软件包包含启动海光机密虚拟机所须的OVMF,在版本 `13.0.1.an8.8` 中,开始支持CSV3虚拟机的RTMR功能。 | +| Guest OS | Anolis OS8.4 | | +| Guest Kernel |

url: https://gitee.com/anolis/cloud-kernel/tree/devel-5.10

commit: HEAD | 支持CSV3 RTMR动态度量功能的虚拟机内核目前未发布到Anolis OS8的yum源中,需要用户自行编译。 | +| Guest shim-x64 | 15.8-2.0.1.an8 | 在Anolis OS8中,`shim-x64` 软件版本 `15.8-2.0.1.an8` 开始支持机密虚拟机动态度量接口。 | +| Guest grub2 | 2.02-165.0.2.an8 | 在Anolis OS8中,`grub2` 软件包版本 `2.02-165.0.2.an8` 开始支持机密虚拟机动态度量接口。 | + +## 更新主机的软件环境 + +### 更新内核版本 + +如果用户已经在主机中更新支持CSV3的内核,那么请忽略该步骤。 + +```shell +sudo yum makecache +sudo yum update kernel* +``` + +### 更新Qemu版本 + +如果用户已经在主机中更新了支持CSV3的Qemu,那么请忽略该步骤。 + +```shell +sudo yum makecache +sudo yum update qemu* +``` + +### 更新OVMF版本 + +```shell +sudo yum makecache +sudo yum install -y edk2-ovmf-20220126gitbb1bba3d77-13.0.1.an8.8 +``` + +## 更新虚拟机软件环境 + +### 启动虚拟机 + +```shell +sudo /usr/bin/qemu-system-x86_64 \ +-enable-kvm -machine q35 -cpu host \ +-smp 16 -m 8G \ +-drive if=pflash,format=raw,unit=0,file=/usr/share/edk2/ovmf/OVMF_CODE.cc.fd,readonly=on \ +-boot d -device virtio-scsi-pci,id=scsi0,disable-legacy=on,iommu_platform=on \ +-drive file=AnolisOS-8.4.qcow2,if=none,id=drive.0 \ +-device scsi-hd,bus=scsi0.0,id=scsi-hd.0,drive=drive.0 \ +-vnc 0.0.0.0:0,to=100 +``` + +### 在虚拟机中更新shim,grub版本 + +#### 更新shim + +```shell +sudo yum makecache +sudo yum install -y shim-x64-15.8-2.0.1.an8 +``` + +#### 更新grub + +```shell +sudo yum makecache +sudo yum install -y grub2-efi-x64-2.02-165.0.2.an8 +``` + +#### 更新虚拟机内核 + +> 这里为了保持文档连贯性,使用户了解每个组件的位置,所以将虚拟机内核的编译放在虚拟机中执行。用户可以在其他Anolis OS8机器上编译。 + +* 编译内核 + +```shell +git clone https://gitee.com/anolis/cloud-kernel -b devel-5.10 +cd cloud-kernel +make anolis_defconfig +make binrpm-pkg -s -j$(nproc --ignore=1) LOCALVERSION=-csv-guest +``` + +* 安装内核 + +> 假设内核rpm包位于 `$HOME/rpmbuild/RPMS/x86_64/` + +```shell +kernel_rpm_dir="$HOME/rpmbuild/RPMS/x86_64" +sudo rpm -ivh --force --nodeps ${kernel_rpm_dir}/*.rpm +``` + +* 设置默认启动内核 + +> 设置基于编译内核时指定了的 LOCALVERSION 版本 `-csv-guest`。 + +```shell +sudo grubby --set-default=/boot/vmlinuz-5.10.134-csv-guest +``` + +#### 关闭虚拟机 + +```shell +sudo poweroff +``` + +## 测试CSV3虚拟机的RTMR功能 + +### 启动CSV3虚拟机 + +```shell +sudo /usr/bin/qemu-system-x86_64 \ +-enable-kvm -machine q35 -cpu host -smp 16 -m 8G \ +-drive if=pflash,format=raw,unit=0,file=/usr/share/edk2/ovmf/OVMF_CODE.cc.fd,readonly=on \ +-boot d -device virtio-scsi-pci,id=scsi0,disable-legacy=on,iommu_platform=on \ +-drive file=AnolisOS-8.4.qcow2,if=none,id=drive.0 \ +-device scsi-hd,bus=scsi0.0,id=scsi-hd.0,drive=drive.0 \ +-object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5,policy=0x45 \ +-machine memory-encryption=sev0 \ +-vnc 0.0.0.0:0,to=100 +``` + +### 查看CCEL + +CCEL位于 `/sys/firmware/acpi/tables/data/CCEL` ,CCEL中包含了shim、grub、kernel、initrd、cmdline的度量日志。 + +```shell +sudo hexdump -C /sys/firmware/acpi/tables/data/CCEL | less +``` + +可以看到下面的信息: + +![csv3-ccel-shim](../../../assets/CSV/csv3-ccel-shim.png) +![csv3-grub](../../../assets/CSV/csv3-ccel-grub.png) +![csv3-kernel-cmdline](../../../assets/CSV/csv3-ccel-kernel-cmdline.png) +![csv3-initrd](../../../assets/CSV/csv3-ccel-initrd.png) + +### 验证CCEL + +* 下载、编译测试工具 + +```shell +git clone https://gitee.com/anolis/hygon-devkit.git +cd hygon-devkit/csv/csv-guest-module-tools/ +./build.sh +``` + +* 加载csv-guest模块 + +```shell +sudo modprobe csv-guest +``` + +* 读取RTMR寄存器值 + +```shell +./csv-guest-module-tools rtmr --read +``` + +可以看到如下的输出: + +``` +[INFO] do_rtmr_read: RTMR_READ values: +[INFO] do_rtmr_read: RTMR[00]: ae2a2cf1f41a485fa37bf9ae92f678783c59fbc79de7b5d237743d58f5538034 +[INFO] do_rtmr_read: RTMR[01]: 72b9162969146dc09d9a3d740e27e2f100f809228db755cee2aaa706a8847bef +[INFO] do_rtmr_read: RTMR[02]: 9624cdc55013218730423ae6738790546c94c1b8b38be6e2ebc0a1d8da3b4086 +[INFO] do_rtmr_read: RTMR[03]: 8737cfb6e4074d67fd0c652c4f598379f92795f777a58ddfe4102f7cdd79e4d1 +[INFO] do_rtmr_read: RTMR[04]: 0000000000000000000000000000000000000000000000000000000000000000 +``` + +* 通过CCEL重放RTMR寄存器值 + +```shell +sudo ./csv-guest-module-tools rtmr --replay +``` + +可以看到成功重放了RTMR[1]、RTMR[2]、RTMR[3]寄存器值。 + +> RTMR[0]寄存器用于记录虚拟机运行之前的静态度量值,不在CCEL范畴。RTMR[4]寄存器用于 `Post-OS` 阶段,不在CCEL范畴。 + +``` +[INFO] _read_ccel: CCEL: start=0x7f3ef000, len=0x10000 +[INFO] _replay_event_log: Final RTMR (SM3) value: +[INFO] _replay_event_log: RTMR[00] 0000000000000000000000000000000000000000000000000000000000000000 +[INFO] _replay_event_log: RTMR[01] 72b9162969146dc09d9a3d740e27e2f100f809228db755cee2aaa706a8847bef +[INFO] _replay_event_log: RTMR[02] 9624cdc55013218730423ae6738790546c94c1b8b38be6e2ebc0a1d8da3b4086 +[INFO] _replay_event_log: RTMR[03] 8737cfb6e4074d67fd0c652c4f598379f92795f777a58ddfe4102f7cdd79e4d1 +[INFO] _replay_event_log: RTMR[04] 0000000000000000000000000000000000000000000000000000000000000000 +``` + +### 验证包含RTMR寄存器值的认证报告 + +* 获取包含RTMR寄存器值的认证报告 + +> 该步骤会将认证报告保存到当前目录的 `report.bin` 文件中。 + +```shell +./csv-guest-module-tools attestation --report --extension 0x1 +``` + +* 解析包含RTMR寄存器的认证报告 + +> 该步骤会读取当前目录的 `report.bin` 文件,然后解析出来。 + +```shell +./csv-guest-module-tools attestation --parse --extension 0x1 +``` + +可以看到认证报告中包含了RTMR版本和RTMR寄存器内容 + +``` +[INFO] do_attestation_parse_ext: Parsed Extended Attestation Report: +[INFO] do_attestation_parse_ext: TEE_INFO: +[INFO] do_attestation_parse_ext: user_pubkey_digest: 0000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: vm_id: 00000000000000000000000000000000 +[INFO] do_attestation_parse_ext: vm_version: 00000000000000000000000000000000 +[INFO] do_attestation_parse_ext: user_data: f03b608da631786f57d07d3797e354114aa81009129ae0c7fa36a6bfb35f0ef889761e2c283f9eec5f29d2774d323b1044cd167cb781125eed9cc5f4d1551483 +[INFO] do_attestation_parse_ext: mnonce: f4e101f826fd213fb7105cf16193378a +[INFO] do_attestation_parse_ext: measure: ae2a2cf1f41a485fa37bf9ae92f678783c59fbc79de7b5d237743d58f5538034 +[INFO] do_attestation_parse_ext: policy: 45000000 +[INFO] do_attestation_parse_ext: sig_usage: 02100000 +[INFO] do_attestation_parse_ext: sig_algo: 04000000 +[INFO] do_attestation_parse_ext: build: 28090000 +[INFO] do_attestation_parse_ext: rtmr_version: 01000000 +[INFO] do_attestation_parse_ext: reserved0: 0000000000000000000000000000 +[INFO] do_attestation_parse_ext: rtmr: ae2a2cf1f41a485fa37bf9ae92f678783c59fbc79de7b5d237743d58f553803472b9162969146dc09d9a3d740e27e2f100f809228db755cee2aaa706a8847bef9624cdc55013218730423ae6738790546c94c1b8b38be6e2ebc0a1d8da3b40868737cfb6e4074d67fd0c652c4f598379f92795f777a58ddfe4102f7cdd79e4d10000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: reserved1: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: sig1: add3882de1326440ed13bfb42272c8ad055700615f119dffbfac5ffe24dee91b000000000000000000000000000000000000000000000000000000000000000000000000000000004d5905aee802fe0408934272cf607282f3f8883ee7760a8620234de8e62d5d5600000000000000000000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: PEK Cert: 01000000010400000210000004000000030000003b10e440c2bad9e6d0180f478111d40ddea0db8b44b3c66bffeee4c81b90c50700000000000000000000000000000000000000000000000000000000000000000000000000000000b8394bf37e9bb1a529d91e8976d8c5a44af39864d42a5361e6245ab66ece2449000000000000000000000000000000000000000000000000000000000000000000000000000000000d004859474f4e2d5353442d50454b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410000004000000fd248e127af6e44a31453097589783d4fba57280a30c883844bb88a6acb04377000000000000000000000000000000000000000000000000000000000000000000000000000000005492b8059e59878addafbc668d1d8e5338d113758d3acc8c1725fe02f168ae0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000040000008d6d3b38e04f70ce195f2da442e26355e0b50dc035ef596c8ebe11d1074b691c00000000000000000000000000000000000000000000000000000000000000000000000000000000a1c53d59a31371e41f731dfb2bf963594679dc2690cca021787e5de6a75da18c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: Chip ID: 4b504136343931313234303530370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +[INFO] do_attestation_parse_ext: Sealing Key: 9e66ea42e919a2c629a872eb3214d7f027d01e6b5ad9aa17a27cf03f15b3139f +[INFO] do_attestation_parse_ext: sm3 hmac: c1c40c69a2217d8f36c48b49d452e546a6a03e83d0d3379348cc327727a9874d +[INFO] do_attestation_parse_ext: reserved: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +``` + +* 验证认证报告 + +> 该步骤会验证当前目录下的 `report.bin` 认证报告内容。 + +```shell +./csv-guest-module-tools attestation --parse --extension 0x1 --certchain +``` + +可以看到 + +``` +[INFO] verify_hygon_certchain: Verify HSK Cert PASS. +[INFO] verify_hygon_certchain: Verify CEK Cert PASS. +[INFO] verify_hygon_certchain: Verify PEK Cert PASS. +[INFO] do_attestation_verify_ext: Verify Hygon cert chain PASS +[INFO] do_attestation_verify_ext: Verify attestation report PASS +``` \ No newline at end of file diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/9-FAQ/0-\346\265\267\345\205\211\346\234\272\345\257\206\350\256\241\347\256\227\351\205\215\347\275\256\346\261\207\346\200\273.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/9-FAQ/0-\346\265\267\345\205\211\346\234\272\345\257\206\350\256\241\347\256\227\351\205\215\347\275\256\346\261\207\346\200\273.md" index bcdf2ab107fd9c7013ff2d69154d1a8fb11aeffa..f5175cc06df9db8bff022062c6f1f0437dfc92ef 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/9-FAQ/0-\346\265\267\345\205\211\346\234\272\345\257\206\350\256\241\347\256\227\351\205\215\347\275\256\346\261\207\346\200\273.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/9-FAQ/0-\346\265\267\345\205\211\346\234\272\345\257\206\350\256\241\347\256\227\351\205\215\347\275\256\346\261\207\346\200\273.md" @@ -8,7 +8,7 @@ | --- | --- | | 海光2号 | 32XX,52XX,72XX | | 海光C86-3G | 33XX,53XX,73XX | -| 海光C86-4G | 343X,748X,749X,548X | +| 海光C86-4G | 34XX,54XX,74XX | ## CPU支持海光机密计算能力说明 @@ -69,6 +69,8 @@ api_minor: 3 #### ASID划分优化 +> **注意**:ASID划分优化指的是CSV1虚拟机和CSV2/3虚拟机可用ASID范围划分的优化。不同于Reuse ASID(复用ASID,是指多个机密虚拟机复用同一个ASID)。 + ASID划分优化:优化前,用于CSV2/3的ASIDs与用于CSV1的ASIDs不能有交集,[1, MinCsvAsid)范围的ASIDs只能用于CSV2/3,[MinCsvAisd, MaxAsid]范围的ASIDs只能用于CSV1;优化后,[1, MaxAsid]范围的ASIDs均可用于CSV2/3,[MinCsvAsid, MaxAsid]范围的ASIDs可用于CSV1。 > MinCsvAsid可通过CPUID_Fn8000_001F_EDX取得;MaxAsid可通过CPUID_Fn8000_001F_ECX取得。 @@ -79,7 +81,7 @@ ASID划分优化:优化前,用于CSV2/3的ASIDs与用于CSV1的ASIDs不能 | --- | --- | --- | | 海光2号 | 同 **要求1** | build id >= `1810` | | 海光C86-3G | 同 **要求2** | build id >= `1810` | -| 海光C86-4G | 同 **要求4** | build id >= `1810` | +| 海光C86-4G | 同 **要求3** | build id >= `1810` | * 如果主机不支持该优化,且需要支持运行CSV2/CSV3虚拟机,请在主机BIOS中设置`ASID Space Limit`配置项,该配置项的值最终即为MinCsvAsid。 @@ -108,7 +110,7 @@ SME与CSV解耦支持:只要SMEE是打开的,即使支持主机OS不打开SM CSV3 ATTESTATION:提供远程认证的能力,可使认证方确认CSV3虚拟机。在机密容器等主流场景中,起到关键作用。 -CSV3 Kernel启动度量:用于确保Qemu kernel direct boot启动方式中,kernel、initrd、cmdline的完整性。在机密容器、密钥封印等主流场景中,起到关键作用。 +CSV3 Kernel启动度量(也称作 Kernel direct boot启动度量):用于确保Qemu kernel direct boot启动方式中,kernel、initrd、cmdline的完整性。在机密容器、密钥封印等主流场景中,起到关键作用。 CSV3 秘密注入:用于支持CSV3虚拟机启动之前,注入秘密消息给虚拟机使用。在机密计算全磁盘加密场景中,起到关键作用。 @@ -116,7 +118,17 @@ CSV3 秘密注入:用于支持CSV3虚拟机启动之前,注入秘密消息 | CPU | BIOS | CSV固件 | | --- | --- | --- | -| 海光C86-4G |

1. 以`PI4.6.x`为前缀的PI版本要求 >= `PI4.6.0.6`。

2. 以`PI4.2.x`为前缀的PI版本要求 >= `PI4.2.0.10`。| build id >= `2200`。 | +| 海光C86-4G |

1. 以 `PI4.6` 为前缀的PI版本要求 >= `PI4.6.0.6`。

2. 以 `PI4.2` 为前缀的PI版本要求 >= `PI4.2.0.10`。| build id >= `2200`。 | + +#### CSV3 RTMR动态度量 + +CSV3 RTMR动态度量:提供类似于TPM PCR扩展度量的能力。CSV3虚拟机在启动、运行负载等阶段的核心二进制和动作均能动态扩展到虚拟机的RTMR寄存器中,同时追加到类似于TPM的Event Log中,用户可以透过Event Log重放RTMR寄存器值,从而验证核心程序和动作的完整性。于此同时,CSV3虚拟机还支持包含RTMR寄存器值的远程认证功能,验证方可以通过认证报告中的RTMR寄存器值确认CSV3虚拟机内的行为是否正常。 + +表 7 CSV3 RTMR动态度量功能的BIOS+CSV固件版本要求 + +| CPU | BIOS | CSV固件 | +| --- | --- | --- | +| 海光C86-4G |

1. 以 `PI4.6` 为前缀的PI版本要求 >= `PI4.6.5.6`。

2. 以 `PI4.3` 为前缀的PI版本要求 >= `PI4.3.0.0`。
( `PI4.3.x.x` 是 `PI4.2.x.x` 的版本升级延续)| build id >= `2337`。 | # Linux内核 @@ -153,7 +165,7 @@ CSV3 秘密注入:用于支持CSV3虚拟机启动之前,注入秘密消息 ### 参数列表 -表 7 主机Linux内核启动的内核命令行参数 +表 8 主机Linux内核启动的内核命令行参数 | 参数 | 参数格式 | 参数说明 | | --- | --- | --- |