s390 (IBM Z) 受保护虚拟机引导/IPL¶
总结¶
受保护虚拟机 (PVM) 的内存无法被 I/O 或 Hypervisor 访问。在 Hypervisor 需要访问 PVM 内存的情况下,该内存必须变为可访问。对 Hypervisor 可访问的内存将被加密。详情请参阅 s390 (IBM Z) Ultravisor 和受保护虚拟机。
在 IPL (引导) 时,会启动一个小型明文引导加载程序,它向 KVM 提供有关加密组件和必要的元数据,以便解密受保护虚拟机。
基于此数据,KVM 会让 Ultravisor (UV) 识别受保护虚拟机,并指示其保护 PVM 的内存,解密组件并验证数据和地址列表哈希值,以确保完整性。此后,KVM 可以通过 SIE 指令运行 PVM,UV 将拦截该指令并代表 KVM 执行。
由于客户机镜像就像一个不透明的内核镜像,它自己完成向 PV 模式的切换,用户可以通过所有可用方法(网络、dasd、scsi、直接内核等)加载加密的客户机可执行文件和数据,而无需更改引导过程。
Diag308¶
该诊断指令是处理虚拟机 IPL 和相关操作的基本机制。虚拟机可以设置和检索 IPL 信息块,这些信息块指定 IPL 方法/设备并请求虚拟机内存和子系统复位,以及 IPL 操作。
对于 PVM,此概念已通过新的子代码进行了扩展
子代码 8:设置类型 5 的 IPL 信息块(PVM 信息块) 子代码 9:将保存的块存储在客户机内存中 子代码 10:进入受保护虚拟化模式
新的 PV 加载设备特定参数字段指定了进入 PV 模式所需的所有数据。
PV 头起始地址
PV 头长度
- 组件列表,由以下组成
AES-XTS 调整前缀
起始地址
大小
PV 头包含密钥和哈希值,UV 将使用这些密钥和哈希值来解密和验证 PV,以及控制标志和一个起始 PSW。
这些组件例如加密内核、内核参数和 initrd。这些组件由 UV 解密。
在加密数据初始导入后,所有已定义的页面将包含客户机内容。所有未指定的页面在首次访问时将以零页面开始。
在受保护虚拟化模式下运行时,某些子代码将导致异常或返回错误代码。
子代码 4 和 7,它们指定不清除客户机内存的操作,将导致规范异常。这是因为当安全虚拟机被移除时,UV 将清除所有内存,因此不允许非清除性 IPL 子代码。
子代码 8、9、10 将导致规范异常。重新 IPL 进入保护模式只能通过绕道进入非保护模式来实现。
密钥¶
每个 CEC 都将有一个唯一的公钥,以支持工具构建加密镜像。有关工具,请参阅 s390-tools。