From: Christian Brauner <brauner@kernel.org>
To: Fan Wu <wufan@kernel.org>
Cc: Christian Brauner <brauner@kernel.org>,
Manuel Huber <manuelh@nvidia.com>,
David Howells <dhowells@redhat.com>,
Jarkko Sakkinen <jarkko@kernel.org>,
Andrew Halaney <andrew@amutable.com>,
Paul Moore <paul@paul-moore.com>,
James Morris <jmorris@namei.org>,
"Serge E. Hallyn" <serge@hallyn.com>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Shuah Khan <shuah@kernel.org>,
Randy Dunlap <rdunlap@infradead.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
linux-security-module@vger.kernel.org, keyrings@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org,
bpf@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 1/4] ipe: add the .ipe policy keyring
Date: Fri, 23 Oct 2026 13:59:14 +0200 [thread overview]
Message-ID: <20261023-kettenglied-vorsorge-beharrlich-d4aeb08f69ca@brauner> (raw)
In-Reply-To: <CAKtyLkF3mVu8AXWybMGr3+=0F4OMndcV=M-2m-PGz5afE4H1cw@mail.gmail.com>
On Thu, Oct 22, 2026 at 01:25:36PM -0700, Fan Wu wrote:
> Also, one thing I missed earlier: before the policy verification call,
> please also check:
>
> ipe_keyring->restrict_link->check == restrict_link_reject
>
> so we make sure the restriction function is the right one.
I would advise against this. I'll explain why. Which restriction goes
onto the keyring is intentionally userspace's policy. The two supported
ones are:
keyctl restrict_keyring $id
seals the keyring for good. Nothing can ever be added again. And
keyctl restrict_keyring $id asymmetric key_or_keyring:0:chain
only allows certificates that are signed by a key that is already in
the keyring.
This allows userspace to enroll a vendor CA during boot and let
per-image certificates that chain to it be added later after the trusted
phase.
systemd-keyring-setup uses that second form for .dm-verity, .fs-verity
and .bpf and then drops KEY_USR_SETATTR, so neither the restriction nor
the permission mask can be changed anymore while root keeps write
permission to enroll chained certificates.
Both are proper seals. A restriction can only be set once as afterwards
keyring_restrict() returns -EEXIST. So there is no way to remove it.
So whoever restricts the keyring is the provisioner and whatever they
pick is the policy. A random root process after the seal can't extend
the set of trust anchors either way. With the chain restriction it needs
a signature from a key that is already trusted.
That's why .dm-verity and .bpf only test that restrict_link is set.
"Restricted" is the state the kernel knows about. The policy belongs to
userspace.
So it would be really nice if we could've the same behavior for all
these keyrings. I think that this is a really nice model and allows
userspace to have a kernel enforced policy.
Christian
next prev parent reply other threads:[~2026-10-23 11:59 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-19 21:40 [PATCH RFC 0/4] IPE: add a dedicated " Manuel Huber via B4 Relay
2026-10-19 21:40 ` [PATCH RFC 1/4] ipe: add the .ipe " Manuel Huber via B4 Relay
2026-10-19 21:52 ` Randy Dunlap
2026-10-19 23:15 ` Fan Wu
2026-10-21 13:54 ` Christian Brauner
2026-10-21 16:51 ` Paul Moore
2026-10-22 10:18 ` Christian Brauner
2026-10-22 17:18 ` Paul Moore
2026-10-26 12:57 ` luca.boccassi
2026-10-27 11:07 ` Luca Boccassi
2026-10-28 12:42 ` James Bottomley
2026-10-28 14:26 ` Luca Boccassi
2026-10-28 16:14 ` James Bottomley
2026-10-28 19:03 ` Luca Boccassi
2026-10-22 18:01 ` Manuel Huber
2026-10-22 20:25 ` Fan Wu
2026-10-23 11:59 ` Christian Brauner [this message]
2026-10-27 20:12 ` Manuel Huber
2026-10-27 20:51 ` Fan Wu
2026-10-19 21:40 ` [PATCH RFC 2/4] keys: add KEY_SPEC_IPE_KEYRING Manuel Huber via B4 Relay
2026-10-19 23:24 ` Fan Wu
2026-10-21 13:51 ` Christian Brauner
2026-10-19 21:40 ` [PATCH RFC 3/4] Documentation: ipe: document the IPE keyring Manuel Huber via B4 Relay
2026-10-19 21:40 ` [PATCH RFC 4/4] selftests/ipe: test the IPE policy keyring Manuel Huber via B4 Relay
2026-10-19 23:28 ` Fan Wu
2026-10-22 17:22 ` Manuel Huber
2026-10-19 21:54 ` [PATCH RFC 0/4] IPE: add a dedicated " Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261023-kettenglied-vorsorge-beharrlich-d4aeb08f69ca@brauner \
--to=brauner@kernel.org \
--cc=andrew@amutable.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=dhowells@redhat.com \
--cc=jarkko@kernel.org \
--cc=jmorris@namei.org \
--cc=keyrings@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=manuelh@nvidia.com \
--cc=paul@paul-moore.com \
--cc=rdunlap@infradead.org \
--cc=serge@hallyn.com \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=wufan@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®