文章目录
- 53 最佳实践-安全最佳实践-虚拟机可信启动
- 53.1 概述
- 53.2 配置vTPM设备,使能度量启动
- 53.2.1 安装swtpm和libtpms软件
- 53.2.2 虚拟机配置vTPM设备
- 53.2.3 确认度量启动使能成功
53 最佳实践-安全最佳实践-虚拟机可信启动
53.1 概述
可信启动包含度量启动和远程证明。其中虚拟化组件主要提供度量启动功能,远程证明由用户自己在虚拟机中安装相关软件(RA client)及搭建远程证明服务器(RA server)进行使能。
度量启动的两个基本要素是信任根和信任链,其基本思想是首先在计算机系统中建立一个信任根,信任根的可信性由物理安全、技术安全和管理安全共同确保,即CRTM(Core Root of Trust for Measurement)。然后建立一条信任链,从信任根开始到BIOS/BootLoader、操作系统、再到应用,一级度量认证一级,一级信任一级,最终把这种信任扩展到整个系统。上述过程看起来如同一根链条一样环环相扣,因此称之为“信任链”。
CRTM是度量启动的根,是系统启动的首个组件,没有其它代码来检查CRTM本身的完整性。所以,作为信任链的起点,必须保证它是绝对可信的信任源。因此,技术上需要将CRTM设计成一段只读或更新严格受限的代码,抵御BIOS攻击,防止远程注入恶意代码或在操作系统上层修改启动代码。通常物理主机中由CPU中的微码作为CRTM,在虚拟化环境中,一般选择vBIOS的sec部分为CRTM。
启动过程中,前一个部件度量(计算HASH值)后一个部件,然后把度量值扩展入可信存储区例如TPM的PCR中。CRTM度量BootLoader把度量值扩展到PCR中,BootLoader度量OS把度量值扩展到PCR中。
53.2 配置vTPM设备,使能度量启动
53.2.1 安装swtpm和libtpms软件
swtpm提供了一个可集成到虚拟化环境中的TPM仿真器(TPM1.2和TPM2.0)。到目前为止,他已经集成到了QEMU中,同时也作为RunC中的原型系统。swtpm是利用libtpms来提供TPM1.2和TPM2.0的模拟功能。 目前openEuler 22.03 LTS 版本中提供了libtpms和swtpm的源,可以直接使用yum命令安装。
# yum install libtpms swtpm swtpm-devel swtpm-tools
53.2.2 虚拟机配置vTPM设备
虚拟机配置文件中添加如下配置:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>...<devices>...<tpm model='tpm-tis'><backend type='emulator' version='2.0'/></tpm>...</devices>...</domain>
说明:
目前,openEuler 20.09 版本 AArch64 架构上的虚拟机可信启动不支持 ACPI 特性,所以虚拟机请勿配置 ACPI 特性,否则启动虚拟机后无法识别 vTPM 设备。AArch64 架构在openEuler 22.03 LTS 之前的版本,tpm model 配置为 。创建虚拟机。
# virsh define MeasuredBoot.xml
启动虚拟机
启动虚拟机前需要使用chmod命令给目录/var/lib/swtpm-localca/赋予如下权限,否则libvirt无法拉起swtpm。
# chmod -R 777 /var/lib/swtpm-localca/## virsh start MeasuredBootVM
53.2.3 确认度量启动使能成功
度量启动功能使能与否由vBIOS决定,目前 openEuler 22.03 LTS 版本中的vBIOS已经具备了度量启动的能力。若宿主机采用其他版本的edk2组件,请确认其是否支持度量启动功能。
使用root用户登录虚拟机,确认虚拟机中是否安装了tpm驱动、tpm2-tss协议栈及tpm2-tools工具。 openEuler 22.03 LTS 版本中默认安装了tpm驱动(tpm_tis.ko)、tpm2-tss协议栈和tpm2-tools工具。若使用其他操作系统,可以使用如下命令检查是否安装了驱动和相关工具。
# lsmod |grep tpmtpm_tis16384 0## yum list installed | grep -E 'tpm2-tss|tpm2-tools'## yum install tpm2-tss tpm2-tools
可以使用tpm2_pcrread(低版本tpm2_tools中使用tpm2_pcrlist)命令列出所有的pcr值。
# tpm2_pcrreadsha1 :0: fffdcae7cef57d93c5f64d1f9b7f1879275cff551: 5387ba1d17bba5fdadb77621376250c2396c54132: b2a83b0ebf2f8374299a5b2bdfc31ea955ad72363: b2a83b0ebf2f8374299a5b2bdfc31ea955ad72364: e5d40ace8bb38eb170c61682eb36a3020226d2c05: 367f6ea79688062a6df5f4737ac17b69cd37fd616: b2a83b0ebf2f8374299a5b2bdfc31ea955ad72367: 518bd167271fbb64589c61e43d8c0165861431d88: af65222affd33ff779780c51fa8077485aca46d99: 5905ec9fb508b0f30b2abf8787093f16ca608a5a10 : 000000000000000000000000000000000000000011 : 000000000000000000000000000000000000000012 : 000000000000000000000000000000000000000013 : 000000000000000000000000000000000000000014 : 000000000000000000000000000000000000000015 : 000000000000000000000000000000000000000016 : 000000000000000000000000000000000000000017 : ffffffffffffffffffffffffffffffffffffffff18 : ffffffffffffffffffffffffffffffffffffffff19 : ffffffffffffffffffffffffffffffffffffffff20 : ffffffffffffffffffffffffffffffffffffffff21 : ffffffffffffffffffffffffffffffffffffffff22 : ffffffffffffffffffffffffffffffffffffffff23 : 0000000000000000000000000000000000000000sha256 :0: d020873038268904688cfe5b8ccf8b8d84c1a2892fc866847355f86f8066ea2d1: 13cebccdb194dd916f2c0c41ec6832dfb15b41a9eb5229d33a25acb5ebc3f0162: 3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e79693: 3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e79694: 07f9074ccd4513ef1cafd7660f9afede422b679fd8ad99d25c0659eba07cc0455: ba34c80668f84407cd7f498e310cc4ac12ec6ec43ea8c93cebb2a688cf226aff6: 3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e79697: 65caf8dd1e0ea7a6347b635d2b379c93b9a1351edc2afc3ecda700e534eb30688: f440af381b644231e7322babfd393808e8ebb3a692af57c0b3a5d162a6e2c1189: 54c08c8ba4706273f53f90085592f7b2e4eaafb8d433295b66b78d9754145cfc10 : 000000000000000000000000000000000000000000000000000000000000000011 : 000000000000000000000000000000000000000000000000000000000000000012 : 000000000000000000000000000000000000000000000000000000000000000013 : 000000000000000000000000000000000000000000000000000000000000000014 : 000000000000000000000000000000000000000000000000000000000000000015 : 000000000000000000000000000000000000000000000000000000000000000016 : 000000000000000000000000000000000000000000000000000000000000000017 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23 : 0000000000000000000000000000000000000000000000000000000000000000
点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!