From: Daniel Borkmann <daniel@iogearbox.net>
To: memxor@gmail.com
Cc: brauner@kernel.org, kpsingh@kernel.org, ast@kernel.org,
john.fastabend@gmail.com, a.s.protopopov@gmail.com,
bpf@vger.kernel.org, dhowells@redhat.com, jarkko@kernel.org,
keyrings@vger.kernel.org
Subject: [PATCH bpf-next v4 00/11] BPF keyring and signed loader ML-DSA support
Date: Fri, 28 Aug 2026 19:52:16 +0200 [thread overview]
Message-ID: <20260828175227.1537793-1-daniel@iogearbox.net> (raw)
Add a dedicated BPF keyring which is integrated for BPF signing. It
is modelled after the dm-verity keyring which was added in commit
033724b ("dm-verity: add dm-verity keyring") and which can eventually
be used also via systemd through the same enrollment method as in
dm-verity's case. It is selected with a new well-known keyring_id
VERIFY_USE_BPF_KEYRING and gives an operator a place to enroll a
BPF-only signing key at boot, specifically scoped to signed BPF
program loading. Next, to demonstrate that BPF signing is algorithm
agnostic, we add a few small tooling changes to support ML-DSA and
integrate everything into BPF selftest for BPF CI to ensure nothing
breaks with future changes. For more details, see individual commits.
v3 -> v4:
- Refactor the keyring dispatch a bit better wrt if/else chaining (BPF CI)
- Improve selftest for bpf keyring in signed loader wrt skips (BPF CI)
- selftests/bpf/config sorting (BPF CI)
- Misc documentation improvement (BPF CI)
v2 -> v3:
- Added KEY_SPEC_BPF_KEYRING rather than VERIFY_USE_BPF_KEYRING
then it can also be looked up via lookup_user_key (Christian Brauner)
- Added CMS_NO_SIGNING_TIME to bpftool patch (Sashiko)
v1 -> v2:
- Mainly addressing LLM feedback in docs, commit message and
selftests (BPF CI, sashiko)
- Fix reasoning on BPF_PROG_MAX_SIGNATURE_SIZE
- Add reasoning about bpftool MAX_SIG_SIZE change and pinning
the CMS digest to SHA-512
- Fix misc signing.rst phrasing
- Fix a potential NULL deref in bpf_keyring_lookup selftest code
- Add CONFIG_CRYPTO_SHA512=y to BPF selftest config
- Clean up key material on ML-DSA signed loader test failure
- Refactor duplicated bpf_attr setup for bpf keyring tests
- Fix wording in kernel-parameters.txt
Daniel Borkmann (11):
bpf, keys: Add a bpf keyring for program signature validation
bpf: Refuse caller-supplied keyrings when the bpf one is active
bpf: Raise the bound on a program's signature size
bpftool: Support ML-DSA program signing
selftests/bpf: Add a test for the sealed bpf keyring
selftests/bpf: Rebuild signed lskels when signing key changes
selftests/bpf: Rename the verify_sig_setup.sh setup into setup-rsa
selftests/bpf: Add an end-to-end ML-DSA signed loader test
selftests/bpf: Allow appending to guest kernel cmdline in vmtest.sh
selftests/bpf: Add tests for bpf keyring in signed loader
Documentation/bpf: Document the bpf keyring and improve examples
.../admin-guide/kernel-parameters.txt | 16 +
Documentation/bpf/signing.rst | 283 +++++++--
include/linux/bpf.h | 13 +
include/linux/key.h | 2 +
include/uapi/linux/keyctl.h | 1 +
kernel/bpf/Makefile | 3 +
kernel/bpf/keys.c | 73 +++
kernel/bpf/verifier.c | 32 +-
security/keys/process_keys.c | 25 +
tools/bpf/bpftool/main.h | 2 +-
tools/bpf/bpftool/sign.c | 24 +-
tools/testing/selftests/bpf/Makefile | 2 +-
tools/testing/selftests/bpf/config | 2 +
.../selftests/bpf/prog_tests/signed_loader.c | 600 +++++++++++++++---
.../bpf/prog_tests/verify_pkcs7_sig.c | 4 +-
.../testing/selftests/bpf/verify_sig_setup.sh | 63 +-
tools/testing/selftests/bpf/vmtest.sh | 16 +-
17 files changed, 1003 insertions(+), 158 deletions(-)
create mode 100644 kernel/bpf/keys.c
--
2.43.0
next reply other threads:[~2026-08-28 17:52 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 17:52 Daniel Borkmann [this message]
2026-08-28 17:52 ` [PATCH bpf-next v4 01/11] bpf, keys: Add a bpf keyring for program signature validation Daniel Borkmann
2026-08-28 19:06 ` bot+bpf-ci
2026-08-31 10:05 ` Christian Brauner
2026-08-28 17:52 ` [PATCH bpf-next v4 02/11] bpf: Refuse caller-supplied keyrings when the bpf one is active Daniel Borkmann
2026-08-31 10:05 ` Christian Brauner
2026-08-28 17:52 ` [PATCH bpf-next v4 03/11] bpf: Raise the bound on a program's signature size Daniel Borkmann
2026-08-28 17:52 ` [PATCH bpf-next v4 04/11] bpftool: Support ML-DSA program signing Daniel Borkmann
2026-08-28 17:52 ` [PATCH bpf-next v4 05/11] selftests/bpf: Add a test for the sealed bpf keyring Daniel Borkmann
2026-08-28 18:53 ` bot+bpf-ci
2026-08-28 17:52 ` [PATCH bpf-next v4 06/11] selftests/bpf: Rebuild signed lskels when signing key changes Daniel Borkmann
2026-08-28 17:52 ` [PATCH bpf-next v4 07/11] selftests/bpf: Rename the verify_sig_setup.sh setup into setup-rsa Daniel Borkmann
2026-08-28 17:52 ` [PATCH bpf-next v4 08/11] selftests/bpf: Add an end-to-end ML-DSA signed loader test Daniel Borkmann
2026-08-28 18:53 ` bot+bpf-ci
2026-08-28 17:52 ` [PATCH bpf-next v4 09/11] selftests/bpf: Allow appending to guest kernel cmdline in vmtest.sh Daniel Borkmann
2026-08-28 17:52 ` [PATCH bpf-next v4 10/11] selftests/bpf: Add tests for bpf keyring in signed loader Daniel Borkmann
2026-08-28 18:53 ` bot+bpf-ci
2026-08-28 17:52 ` [PATCH bpf-next v4 11/11] Documentation/bpf: Document the bpf keyring and improve examples Daniel Borkmann
2026-08-28 18:53 ` bot+bpf-ci
2026-08-30 1:20 ` [PATCH bpf-next v4 00/11] BPF keyring and signed loader ML-DSA support patchwork-bot+netdevbpf
2026-08-31 10:05 ` Christian Brauner
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=20260828175227.1537793-1-daniel@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=a.s.protopopov@gmail.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=dhowells@redhat.com \
--cc=jarkko@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=keyrings@vger.kernel.org \
--cc=kpsingh@kernel.org \
--cc=memxor@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.