All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: Josh Boyer <jwboyer@fedoraproject.org>
Cc: David Howells <dhowells@redhat.com>,
	keyrings@vger.kernel.org,
	linux-security-module <linux-security-module@vger.kernel.org>,
	linux-crypto@vger.kernel.org,
	"Linux-Kernel@Vger. Kernel. Org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 00/10] KEYS: Change how keys are determined to be trusted
Date: Wed, 21 Oct 2015 14:11:08 -0400	[thread overview]
Message-ID: <1445451068.2459.302.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <CA+5PVA5Oz9dwrPY_+65J58iqaQ3RehCp2J5PPPkxsF1ObiCOvw@mail.gmail.com>

On Wed, 2015-10-21 at 13:21 -0400, Josh Boyer wrote:
> On Wed, Oct 21, 2015 at 1:02 PM, Mimi Zohar <zohar@linux.vnet.ibm.com> wrote:
> > On Wed, 2015-10-21 at 16:13 +0100, David Howells wrote:
> >> Here's a set of patches that changes how keys are determined to be trusted
> >> - currently, that's a case of whether a key has KEY_FLAG_TRUSTED set upon
> >> it.  A keyring can then have a flag set (KEY_FLAG_TRUSTED ONLY) that
> >> indicates that only keys with this flag set may be added to that keyring.
> >>
> >> Further, any time an X.509 certificate is instantiated without this flag
> >> set, the certificate is judged against the contents of the system trusted
> >> keyring to determine whether KEY_FLAG_TRUSTED should be set upon it.
> >>
> >> With these patches, KEY_FLAG_TRUSTED is removed.  The kernel may add
> >> implicitly trusted keys to a trusted-only keyring by asserting
> >> KEY_ALLOC_TRUSTED when the key is created,
> >
> > Ok, but only the x509 certificates built into the kernel image should be
> > automatically trusted and can be added to a trusted keyring, because the
> > kernel itself was signed (and verified).  These certificates extend the
> > (UEFI) certificate chain of trust that is rooted in hardware to the OS.
> 
> That doesn't sound accurate to me.  The cert built into the kernel
> image doesn't extend the UEFI certificates.  In most cases, it is a
> ephemeral cert that is automatically generated at kernel build time
> and then discarded.  It is not chained to or derived from any of the
> UEFI certs stored in the db (or mok) variables.  The built-in cert is
> used for module loading verification.  I agree that it should be
> trusted, but not really for the reason you list.  Perhaps you meant
> the key that the PE image of the kernel is signed with?  If so, the
> kernel doesn't load that.  Only shim (and grub2 via shim) read that
> key.

This is similar to the concept of the MoK DB.  Keys added to the MoK
aren't signed by a UEFI key, yet they extend the UEFI secure boot
certificate chain of trust.  Similarly, the certificates built into the
kernel image don't need to be signed by a UEFI/MoK key for it to extend
the certificate chain of trust.

> However, that does bring up the UEFI db/mok certs and how to deal with
> those.  The out-of-tree patches we have add them to the system keyring
> as trusted keys.  We can modify the patches to use KEY_ALLOC_TRUSTED
> to preserve that functionality I suppose.

Certificates are use case specific.  Just because a key was trusted at
the UEFI layer doesn't mean it should be trusted by the kernel (eg.
Microsoft key).  To illustrate this point, David Howells/David Woodhouse
recently posted/upstreamed patches to differentiate how keys loaded onto
the system keyring may be used. (Reference needed.)

Mimi

  reply	other threads:[~2015-10-21 18:11 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-21 15:13 [PATCH 00/10] KEYS: Change how keys are determined to be trusted David Howells
2015-10-21 15:13 ` [PATCH 01/10] KEYS: Generalise system_verify_data() to provide access to internal content David Howells
2015-10-21 15:13 ` [PATCH 02/10] PKCS#7: Make trust determination dependent on contents of trust keyring David Howells
2015-10-21 15:13 ` [PATCH 03/10] KEYS: Add facility to check key trustworthiness upon link creation David Howells
2015-10-21 15:13 ` [PATCH 04/10] KEYS: Allow authentication data to be stored in an asymmetric key David Howells
2015-10-21 15:14 ` [PATCH 05/10] KEYS: Add identifier pointers to public_key_signature struct David Howells
2015-10-21 15:14 ` [PATCH 06/10] X.509: Retain the key verification data David Howells
2015-10-21 15:14 ` [PATCH 07/10] X.509: Extract signature digest and make self-signed cert checks earlier David Howells
2015-10-21 15:14 ` [PATCH 08/10] PKCS#7: Make the signature a pointer rather than embedding it David Howells
2015-10-21 15:14 ` [PATCH 09/10] X.509: Move the trust validation code out to its own file David Howells
2015-10-21 15:14 ` [PATCH 10/10] KEYS: Move the point of trust determination to __key_link() David Howells
2015-10-21 17:02 ` [PATCH 00/10] KEYS: Change how keys are determined to be trusted Mimi Zohar
2015-10-21 17:21   ` Josh Boyer
2015-10-21 18:11     ` Mimi Zohar [this message]
2015-10-21 18:21       ` Josh Boyer
2015-10-21 18:33         ` Mimi Zohar
2015-10-21 18:48   ` Petko Manolov

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=1445451068.2459.302.camel@linux.vnet.ibm.com \
    --to=zohar@linux.vnet.ibm.com \
    --cc=dhowells@redhat.com \
    --cc=jwboyer@fedoraproject.org \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.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 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.