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