mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

  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®