linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roberto Sassu <roberto.sassu@huawei.com>
To: Eric Biggers <ebiggers@kernel.org>, Antony Vennard <antony@vennard.ch>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>,
	"Jason A. Donenfeld" <Jason@zx2c4.com>,
	"dhowells@redhat.com" <dhowells@redhat.com>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"herbert@gondor.apana.org.au" <herbert@gondor.apana.org.au>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"keyrings@vger.kernel.org" <keyrings@vger.kernel.org>,
	"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
	"linux-integrity@vger.kernel.org"
	<linux-integrity@vger.kernel.org>,
	"linux-fscrypt@vger.kernel.org" <linux-fscrypt@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"zohar@linux.ibm.com" <zohar@linux.ibm.com>
Subject: RE: [PATCH 00/14] KEYS: Add support for PGP keys and signatures
Date: Wed, 19 Jan 2022 13:25:12 +0000	[thread overview]
Message-ID: <d71ea8ae51e1438c894b44b011f3efda@huawei.com> (raw)
In-Reply-To: <YedHR93wPLS/JEsE@sol.localdomain>

> From: Eric Biggers [mailto:ebiggers@kernel.org]
> Sent: Wednesday, January 19, 2022 12:04 AM
> On Tue, Jan 18, 2022 at 09:50:21PM +0100, Antony Vennard wrote:
> >
> > Hi All,
> >
> > On 17/01/2022 16:02, James Bottomley wrote:
> > > On Mon, 2022-01-17 at 15:34 +0100, Jason A. Donenfeld wrote:
> > > > Hi,
> > > >
> > > > While it looks like you put a lot of work into this patchset, I think
> > > > the general idea of adding PGP *to the kernel* is a pretty daunting
> > > > proposition. The general consensus in the crypto engineering world is
> > > > that PGP ought to be on its way out. We definitely don't want to
> > > > perpetuate this project-on-life-support into the permanence of kernel
> > > > code. Some quick Google searches will reveal a litany of blog posts
> > > > to the tune of, "why oh why are people still using this?" Here's one
> > > > from 2019:
> > > > https://latacora.micro.blog/2019/07/16/the-pgp-problem.html . I
> > > > think these are arguments to take seriously. And even if you disagree
> > > > with some parts, you may want to consider whether the remaining parts
> > > > warrant a bit of pause before adding this to the kernel and
> > > > perpetuating PGP's design further.
> >
> > So while I understand why this is being proposed and clearly effort has gone
> > into it, I also think it is not the right approach. It seems this proposal
> > is to include a full PGP packet parser and verification logic in the kernel
> > as an equivalent to allow PGP signatures to be submitted via
> > FS_IOC_ENABLE_VERITY:
> >
> > "FS_IOC_ENABLE_VERITY accepts a pointer to a PKCS#7 formatted detached
> > signature in DER format of the file’s fs-verity digest."
> >
> 
> It's worth noting that if fs-verity built-in signatures are used, a trusted
> userspace program is still required to determine and enforce the policy of which
> files are required to be signed.  The kernel only handles the actual signature
> verification.  This was basically a proof-of-concept which reused the kernel's
> module signature verification code (which happens to use PKCS#7).

Just to show how the fsverity code will look like after adding support
for PGP signatures:

+       switch (vi->type) {
+       case PKEY_ID_PKCS7:
+               err = verify_pkcs7_signature(d, sizeof(*d) + hash_alg->digest_size,
+                                            signature, sig_size, fsverity_keyring,
+                                            VERIFYING_UNSPECIFIED_SIGNATURE,
+                                            NULL, NULL);
+               break;
+       case PKEY_ID_PGP:
+               err = verify_pgp_signature(d, sizeof(*d) + hash_alg->digest_size,
+                                          signature, sig_size, fsverity_keyring,
+                                          VERIFYING_UNSPECIFIED_SIGNATURE,
+                                          NULL, NULL);
+               break;
+       default:
+               err = -EOPNOTSUPP;
+       }

As you can see, the change will be straightforward.

On user space side, I plan to add the capability to fsverity-utils
to produce a PGP signature with the GPG key passed by rpmsign.

> I'd encourage new users to either go all-in on a userspace solution, using a
> trusted userspace program to verify signatures of fs-verity file digests;
> *or* go all-in on an in-kernel solution, using the IMA support for fs-verity
> which Mimi Zohar is working on.  A userspace solution could use a simple

Probably, there is also the third option of an LSM (such as IPE) that gets
from fsverity the information if the signature was validated, and decide
depending on a policy. I would also expose the information about the
restriction imposed on the keyring from which the key used to verify
the signature was found.

Maybe IMA could use this approach too, which would avoid the need
of introducing another signature format. If that is desired, you might
want to coordinate with the authors of a Fedora feature:

https://fedoraproject.org/wiki/Changes/FsVerityRPM

which, as far as I know, plan to use the signature format already
upstreamed.

Thanks

Roberto

HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063
Managing Director: Li Peng, Zhong Ronghua

> signature format, using a modern algorithm such as Ed25519.  IMA uses a simple
> signature format too, though it uses a complex format (X.509) for public keys.
> 
> - Eric

  reply	other threads:[~2022-01-19 13:25 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11 18:03 [PATCH 00/14] KEYS: Add support for PGP keys and signatures Roberto Sassu
2022-01-11 18:03 ` [PATCH 01/14] mpi: Introduce mpi_key_length() Roberto Sassu
2022-01-11 18:03 ` [PATCH 02/14] rsa: add parser of raw format Roberto Sassu
2022-01-11 18:03 ` [PATCH 03/14] PGPLIB: PGP definitions (RFC 4880) Roberto Sassu
2022-01-11 18:03 ` [PATCH 04/14] PGPLIB: Basic packet parser Roberto Sassu
2022-01-11 18:03 ` [PATCH 05/14] PGPLIB: Signature parser Roberto Sassu
2022-01-11 18:03 ` [PATCH 06/14] KEYS: PGP data parser Roberto Sassu
2022-01-11 18:03 ` [PATCH 07/14] KEYS: Provide PGP key description autogeneration Roberto Sassu
2022-01-11 18:03 ` [PATCH 08/14] KEYS: PGP-based public key signature verification Roberto Sassu
2022-01-11 18:03 ` [PATCH 09/14] KEYS: Retry asym key search with partial ID in restrict_link_by_signature() Roberto Sassu
2022-01-11 18:03 ` [PATCH 10/14] KEYS: Calculate key digest and get signature of the key Roberto Sassu
2022-01-11 18:03 ` [PATCH 11/14] verification: introduce verify_pgp_signature() Roberto Sassu
2022-01-11 18:03 ` [PATCH 12/14] PGP: Provide a key type for testing PGP signatures Roberto Sassu
2022-01-11 18:03 ` [PATCH 13/14] KEYS: Provide a function to load keys from a PGP keyring blob Roberto Sassu
2022-01-11 18:03 ` [PATCH 14/14] KEYS: Introduce load_pgp_public_keyring() Roberto Sassu
2022-01-11 20:33 ` [PATCH 00/14] KEYS: Add support for PGP keys and signatures Maciej S. Szmigiero
2022-01-12  9:16   ` Roberto Sassu
2022-01-12 20:15     ` Maciej S. Szmigiero
2022-01-13  9:11       ` Roberto Sassu
2022-01-17 14:34 ` Jason A. Donenfeld
2022-01-17 15:02   ` James Bottomley
2022-01-18 20:50     ` Antony Vennard
2022-01-18 23:03       ` Eric Biggers
2022-01-19 13:25         ` Roberto Sassu [this message]
2022-01-21 16:50           ` Roberto Sassu
2022-01-23 21:00         ` Antony Vennard
2022-01-19 13:02       ` Roberto Sassu
2022-01-17 15:21   ` Roberto Sassu
2022-01-18 18:49     ` Jason A. Donenfeld
2022-01-17 16:59   ` Konstantin Ryabitsev
2022-01-17 17:04     ` Konstantin Ryabitsev
2022-01-17 20:59     ` Maciej S. Szmigiero
2022-01-17 21:54       ` Konstantin Ryabitsev

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=d71ea8ae51e1438c894b44b011f3efda@huawei.com \
    --to=roberto.sassu@huawei.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=Jason@zx2c4.com \
    --cc=antony@vennard.ch \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=dwmw2@infradead.org \
    --cc=ebiggers@kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-fscrypt@vger.kernel.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=zohar@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).