s390 (IBM Z) 受保护虚拟化转储

概述

转储虚拟机是调试其内部问题的基本工具。当受保护的虚拟机出现问题时尤其如此,因为在它运行时无法从外部访问其内存和寄存器。

然而,在转储受保护的虚拟机时,我们需要保持其机密性,直到转储文件落入虚拟机所有者手中,只有他/她才能分析它。

虚拟机转储的机密性由 Ultravisor 确保,Ultravisor 提供了一个 KVM 接口,通过该接口可以请求加密的 CPU 和内存数据。加密基于客户通信密钥(Customer Communication Key),该密钥用于以客户能够解密的方式加密虚拟机数据。

转储过程

转储分为 3 个步骤

启动

此步骤初始化转储过程,生成加密种子并提取用于加密虚拟机转储数据的转储密钥。

数据收集

目前可以从虚拟机中收集两种类型的数据:内存和 vcpu 状态。

vcpu 状态包含 vcpu 的所有重要寄存器:通用寄存器、浮点寄存器、向量寄存器、控制寄存器和 tod/计时器。如果在超管理程序(hypervisor)的帮助下模拟指令时转储 vcpu,则 vcpu 转储可能包含不完整的数据。这在转储数据中的一个标志位表示。基于同样的原因,不仅要写入加密的 vcpu 状态,还要写入超管理程序中未加密的状态,这一点非常重要。

内存状态进一步分为加密内存及其元数据,元数据包括加密调整和状态标志。一旦导出,加密内存即可简单读取。导出的时间无关紧要,因为不需要重新加密。已换出并因此已导出的内存可以从交换空间中读取并写入转储目标,无需任何特殊操作。

导出页面的调整/状态标志需要从 Ultravisor 请求。

最终确定

最终确定步骤将提供解密 vcpu 和内存数据所需的数据,并结束转储过程。当此步骤成功完成时,可以开始新的转储启动。