本文介绍如何在基于海光国产化机密计算安全虚拟化技术(China Secure Virtualization, CSV)的云主机中构建加密计算环境,并演示CSV功能验证方法。
概述
海光安全加密虚拟化(CSV)是一项基于海光CPU硬件的云主机保护技术,通过CPU硬件隔离与加密机制,对云主机的运行时状态(包括CPU寄存器、内存数据及中断处理等)提供保护,有效防止云服务商及外部攻击者窃取或篡改其内部运行状态(如计算中的数据)。更多信息,请参见Hygon Arch。
创建CSV云主机
-
进入云主机订购页面。
- 按照如下配置创建对应实例。
| 配置项 | 说明 |
| 实例规格 | c6hn |
| 镜像 |
|
| 地域及可用区 | 华东-苏州 可用区四 |
3. 根据页面提示进行其他配置项填写,完成云主机创建。
4. 如下图所示,表明该实例已为机密计算云主机
检查CSV的启用状态及驱动安装
1. 检查CSV的启用状态
(1)通过MSR检查CSV的启用状态
-
- 执行以下命令,完成msr-tools工具安装。
sudo yum install msr-tools说明下载msr-tools工具包需要使用IPv4公网,请保证网络可用。 - 执行以下命令,安装kernel-devel
yum install kernel-devel-$(uname -r) - 执行以下命令,检查CSV的启用状态。
sudo rdmsr 0xC0010131 --bitfield 1:0 - 如下图所示,返回“1”,则表明CSV已被正常启用。
- 执行以下命令,完成msr-tools工具安装。
(2)通过内核日志检查CSV的启用状态
-
- 执行以下命令,检查CSV的启用状态。
dmesg | grep HYGON | grep CSV - 如下图所示,则表明CSV已被正常启用。
- 执行以下命令,检查CSV的启用状态。
2. 安装CSV相关驱动
-
- 执行以下命令,下载csv-guest软件包。
wget https://mirrors.cmecloud.cn/bclinux/compat/v21.10U4/Plus/hygonCSV/x86_64/Packages/csv-guest-1.0-1.bclinux.21.10U4.x86_64.rpm说明下载csv-guest软件包需要使用IPv4公网,请保证网络可用。 - 执行以下命令,完成csv-guest驱动安装。
yum localinstall csv-guest-1.0-1.bclinux.21.10U4.x86_64.rpm - 执行以下命令,加载csv-guest驱动程序。
insmod /opt/hygon/csv-guest/csv-guest.ko - 执行以下命令,检查驱动安装情况,如下图所示,则表明已安装CSV相关驱动。
ll /dev/csv-guest
- 执行以下命令,下载csv-guest软件包。
验证CSV远程证明
CSV Attestation Report 是由海光 Platform Security Processor(PSP)硬件直接生成的数据结构,用于唯一标识 CSV 实例的身份。其中包含实例的策略(POLICY)、用户自定义数据(UserData)、虚拟机摘要(DIGEST)等关键信息,并通过密码学手段保障其完整性。为方便您使用,移动云为您提供样例工具,支持快速生成和验证 CSV Attestation Report。
1. 执行以下命令,下载远程证明样例工具并安装。
wget https://mirrors.cmecloud.cn/bclinux/compat/v21.10U4/Plus/hygonCSV/x86_64/Packages/csv-attestation-1.0-1.bclinux.21.10U4.noarch.rpm
yum localinstall csv-attestation-1.0-1.bclinux.21.10U4.noarch.rpm
2. 执行以下命令,为本台云主机生成远程证明报告。
csv-attestation generate -r ./
如下图所示,则表明远程证明报告被持久化存储到了本地目录下的report文件中。
(可选)在您生成“远程证明”时,您也可以执行如下命令添加nonce,用以确认“远程证明”为本次生成。
head -c 32 /dev/urandom | base64
csv-attestation generate -r ./ -u <上条命令生成的字符串>
3. 执行以下命令,验证远程证明报告。
csv-attestation verify -r ./report
CSV云主机限制说明
-
CSV云主机因开启CSV特性后,内存数据会通过CPU硬件进行加密保护,因此其性能相较普通云主机存在一定损失。
- 镜像限制:
- 仅支持公共镜像中的BC-Linux 21.10 U4 64位 UEFI版和应用镜像中的OpenClaw SafeGuard镜像。
- 暂不支持Windows操作系统。
-
Linux guest kernel SWIOTLB buffer已知问题:
-
- 在写盘时若负载过大,虚拟机内部会打印报错信息:swiotlb buffer is full,不影响执行正确性。该错误出现是因为开启了CSV特性的云主机内部将使用特定的非加密内存(SWIOTLB)用于外设通信,该内存区域的大小默认情况下为云主机可用内存的6%(但不大于1 GiB)。
- 大规格插入多张弹性网卡可能导致云主机崩溃,原因为网卡多队列情况下SWIOTLB内存可能不足导致内存分配失败,您可以在控制台将对应云主机关机并卸载对应弹性网卡以从启动失败中恢复。