[PATCH RFC 1/4] ipe: add the .ipe policy keyring
Randy Dunlap
rdunlap at infradead.org
Mon Oct 19 21:52:46 UTC 2026
On 10/19/26 2:40 PM, Manuel Huber via B4 Relay wrote:
> From: Manuel Huber <manuelh at nvidia.com>
>
> Add a dedicated .ipe keyring for IPE policy signature verification,
> modeled after the .dm-verity and .bpf keyring implementations.
>
> With this, userspace can provision its own keys into the keyring,
> then restrict it and activate it for IPE policy signature verification.
>
> This enables scenarios in which a trusted userspace component generates
> an IPE policy, and creates an ephemeral policy-signing key pair,
> provisions its public certificate, and restricts the IPE keyring during
> the early lifetime of a system. The trusted component can then sign the
> IPE policy, destroy the private key, and load and activate the policy.
> During that phase, the system is considered in a trusted state whereas
> the system transitions into a possibly untrusted state afterwards,
> running arbitrary user-provided applications. In such a scenario, the
> trusted userspace component could reside on a dm-verity protected
> rootfs disk, and applications would reside on additional dm-verity
> protected disks. The latter disks would be dynamically attached and
> their dm-verity root hashes and/or signatures not known a priori to
> launching the system.
>
> A concrete usage scenario could be Kata Containers, which enables
> running Kubernetes pods in ephemeral, headless utility VMs, possibly
> without systemd. The rootfs disk is static and known beforehand, but
> containerd's image layers might be acquired and transported into the
> VM using the erofs snapshotter and dynamic block device attachment
> using dm-verity.
>
> Signed-off-by: Manuel Huber <manuelh at nvidia.com>
> ---
> Documentation/admin-guide/kernel-parameters.txt | 9 +++
> security/ipe/Makefile | 1 +
> security/ipe/ipe.c | 2 +
> security/ipe/keyring.c | 79 +++++++++++++++++++++++++
> security/ipe/keyring.h | 16 +++++
> security/ipe/policy.c | 10 ++++
> 6 files changed, 117 insertions(+)
>
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index e75344f4e0cd..fd508dd779ed 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -2733,6 +2733,15 @@ Kernel parameters
> Determine whether IPE starts in permissive (0) or
> enforce (1) mode. The default is enforce.
>
> + ipe.keyring_unsealed=
> + [IPE]
> + Format: <bool>
> + When set to 1, leave the IPE policy keyring
> + unsealed after initialization so userspace can provision
> + keys. Once the keyring is nonempty and restricted, it is
> + searched during policy-signature verification. The default
> + is 0, which creates the keyring restricted and empty.
> +
> ipe.success_audit=
> [IPE]
> Format: <bool>
Please also add an entry in kernel-parameters.txt (near the beginning,
in alphabetical order) for what "IPE" means.
--
~Randy
More information about the Linux-security-module-archive
mailing list