9 个版本

0.4.3 2023年8月8日
0.4.2 2023年7月28日
0.3.2 2022年11月18日
0.3.0 2022年6月16日
0.1.0 2021年3月30日

#126Unix API

Apache-2.0

77KB
1.5K SLoC

Workflow Status Average time to resolve an issue Percentage of issues still open Maintenance

sevctl

sevctl 是一个用于管理 AMD 安全加密虚拟化 (SEV) 平台的控制台应用程序。它目前支持 Naples 处理器系列的全部管理 API。

为了使用自签名的所有者证书授权机构 (OCA) 配置一个新的服务器,您通常会执行类似以下步骤

$ sevctl generate oca.cert oca.key
$ sevctl provision oca.cert oca.key
$ sevctl export --full /opt/sev/cert_chain.cert

完成这些步骤后,运行 sevctl verify 子命令应显示整个证书链,而 sevctl show flags 应指示平台为 owned。请注意,您只能配置一次。如果您需要重新配置,您将需要首先使用 sevctl reset

用法

帮助

每个 sevctl(子)命令都附带一个快速 --help 选项,用于其使用参考。例如

$ sevctl --help

$ sevctl show --help

导出

将 SEV 证书链导出到提供的文件路径。

$ sevctl export /path/to/where/you/want/the-certificate

生成

生成一个新的(自签名的)OCA 证书和密钥。

$ sevctl generate ~/my-cert ~/my-key

测量构建

从其组成部分构建测量值。输出是测量+nonce 的完整测量 blob,类似于 qemu 和 libvirt 报告的内容。

$ sevctl measurement build \
    --api-major 01 --api-minor 40 --build-id 40 \
    --policy 0x05 \
    --tik /path/to/VM_tik.bin \
    --launch-measure-blob /o0nzDKE5XgtVnUZWPhUea/WZYrTKLExR7KCwuMdbActvpWfXTFk21KMZIAAhQny \
    --firmware /usr/share/edk2/ovmf/OVMF.amdsev.fd \
    --kernel /path/to/kernel \
    --initrd /path/to/initrd \
    --cmdline "my kernel cmdline" \
    --vmsa-cpu0 /path/to/vmsa0.bin \
    --vmsa-cpu1 /path/to/vmsa1.bin \
    --num-cpus 4

探测处理器、sysfs 和 KVM 上的 AMD SEV、SEV-ES 和 SEV-SNP 相关功能,并发出结果。

$ sevctl ok {sev, es, snp}   // Probes support for the generation specified.
$ sevctl ok                  // Probes support for the host hardware's generation.

配置

安装操作员提供的 OCA 证书以拥有平台。

$ sevctl provision ~/owners-cert ~/owners-private-key

重置

重置 SEV 平台。这将清除平台管理的所有持久数据。

$ sevctl reset

旋转

旋转平台 Diffie-Hellman (PDH)。

$ sevctl rotate

秘密构建

生成秘密标题和有效负载二进制内容,并将它们写入指定的输出路径。秘密以 --secret UUID:FILENAME 对的形式传递

$ sevctl secret build \
    --tik /path/to/VM_tik.bin \
    --tek /path/to/VM_tek.bin \
    --launch-measure-blob /o0nzDKE5XgtVnUZWPhUea/WZYrTKLExR7KCwuMdbActvpWfXTFk21KMZIAAhQny \
    --secret 736869e5-84f0-4973-92ec-06879ce3da0b:/path/to/secret.txt \
    /path/to/secret_header.bin \
    /path/to/secret_payload.bin

会话

给定一个证书链文件和 32 位策略,生成 base64 编码的 GODH 和启动会话文件;以及编码(不是 base64)的 TIK 和 TEK 文件。

$ sevctl session --name {name} {/pdh/cert/path} {policy}

显示

描述 SEV 平台的状态。

$ sevctl show flags
$ sevctl show guests

验证

验证完整的SEV/CA证书链。如果这些证书存储在本地的文件系统中,可以通过命令行参数提供它们的文件路径。如果没有提供,将从它们的远程位置下载众所周知的公共组件。

$ sevctl verify

vmsa构建

构建VMSA二进制blob并将其保存到指定的文件名。

$ sevctl vmsa build NEW-VMSA0.bin --userspace qemu --family 25 --stepping 1 --model 1 --firmware /path/to/OVMF.amdsev.fd --cpu 0

vmsa更新

使用传递的选项就地更新现有的VMSA二进制文件。

$ sevctl vmsa build EXISTING-VMSA0.bin --userspace qemu --family 25 --stepping 1 --model 1 --firmware /path/to/OVMF.amdsev.fd --cpu 0

vmsa显示

将现有的VMSA二进制文件打印为JSON格式。

$ sevctl vmsa show EXISTING-VMSA0.bin

构建中

为了构建sevctl,可能需要在宿主系统上安装一些软件包。

Ubuntu

sudo apt install -y pkg-config libssl-dev asciidoctor

许可证:Apache-2.0

依赖项

~14-34MB
~532K SLoC