keyrings.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mimi Zohar <zohar@linux.ibm.com>
To: Eric Snowberg <eric.snowberg@oracle.com>
Cc: Jarkko Sakkinen <jarkko@kernel.org>,
	David Howells <dhowells@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	"herbert@gondor.apana.org.au" <herbert@gondor.apana.org.au>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"dmitry.kasatkin@gmail.com" <dmitry.kasatkin@gmail.com>,
	"paul@paul-moore.com" <paul@paul-moore.com>,
	"jmorris@namei.org" <jmorris@namei.org>,
	"serge@hallyn.com" <serge@hallyn.com>,
	"pvorel@suse.cz" <pvorel@suse.cz>,
	"tadeusz.struk@intel.com" <tadeusz.struk@intel.com>,
	Kanth Ghatraju <kanth.ghatraju@oracle.com>,
	Konrad Wilk <konrad.wilk@oracle.com>,
	Elaine Palmer <erpalmer@linux.vnet.ibm.com>,
	Coiby Xu <coxu@redhat.com>,
	"keyrings@vger.kernel.org" <keyrings@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
	"linux-integrity@vger.kernel.org"
	<linux-integrity@vger.kernel.org>,
	"linux-security-module@vger.kernel.org" 
	<linux-security-module@vger.kernel.org>,
	"Lee, Chun-Yi" <jlee@suse.com>
Subject: Re: [PATCH v4 0/6] Add CA enforcement keyring restrictions
Date: Wed, 08 Feb 2023 21:54:29 -0500	[thread overview]
Message-ID: <d30b895e677613bca520d626741cc9424f8d46e8.camel@linux.ibm.com> (raw)
In-Reply-To: <D598759A-48FD-46E2-979C-3022A5920C0F@oracle.com>

On Wed, 2023-02-08 at 23:26 +0000, Eric Snowberg wrote:
> 
> > On Feb 8, 2023, at 5:38 AM, Mimi Zohar <zohar@linux.ibm.com> wrote:
> > 
> > [CC'ing: Lee, Chun-Yi]
> > 
> > On Mon, 2023-02-06 at 21:59 -0500, Eric Snowberg wrote:
> >> Prior to the introduction of the machine keyring, most distros simply 
> >> allowed all keys contained within the platform keyring to be used
> >> for both kernel and module verification.  This was done by an out of
> >> tree patch.  Some distros took it even further and loaded all these keys
> >> into the secondary trusted keyring.  This also allowed the system owner 
> >> to add their own key for IMA usage.
> >> 
> >> Each distro contains similar documentation on how to sign kernel modules
> >> and enroll the key into the MOK.  The process is fairly straightforward.
> >> With the introduction of the machine keyring, the process remains
> >> basically the same, without the need for any out of tree patches.
> >> 
> >> The machine keyring allowed distros to eliminate the out of tree patches
> >> for kernel module signing.  However, it falls short in allowing the end 
> >> user to add their own keys for IMA. Currently, the machine keyring can not 
> >> be used as another trust anchor for adding keys to the ima keyring, since 
> >> CA enforcement does not currently exist.  This would expand the current 
> >> integrity gap. The IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY 
> >> Kconfig states that keys may be added to the ima keyrings if the key is 
> >> validly signed by a CA cert in the system built-in or secondary trusted 
> >> keyring.  Currently, there is not code that enforces the contents of a
> >> CA cert.
> >> 
> >> This series introduces a way to do CA enforement with the machine
> >> keyring. It introduces three different ways to configure the machine
> >> keyring. A new menu option is added to control the type of keys that may
> >> be added to it.  The options include none, min, and max restrictions. The
> >> default is CONFIG_INTEGRITY_CA_MACHINE_KEYRING_NONE. This allows all MOK
> >> keys into the machine keyring.  When CONFIG_INTEGRITY_CA_MACHINE_KEYRING_MIN
> >> is selected, the X.509 CA bit must be true.  Also, the key usage must
> >> contain keyCertSign, any other usage field may also be set. When 
> >> CONFIG_INTEGRITY_CA_MACHINE_KEYRING_MAX is selected, the X.509 CA bit
> >> must be true.  Also, the key usage must contain keyCertSign and the
> >> digitialSignature usage may not be set. If a key doesn't pass the CA
> >> restriction check, instead of going into the machine keyring, it is
> >> added to the platform keyring. With the ability to configure the machine
> >> keyring with CA restrictions, code that prevented the machine keyring
> >> from being enabled with IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY
> >> has been removed.
> >> 
> >> Changelog:
> >> v4:
> >> - Removed all code that validated the certificate chain back to the root
> >>  CA. Now the only restriction is what is initially placed in the
> >>  machine keyring.
> >> - Check and store if the X.509 usage contains digitalSignature
> >> - New Kconfig menu item with none, min and max CA restriction on the 
> >>  machine keyring
> > 
> > Thank you, Eric.
> > 
> > For complete separation of certificate usage, at least in the "max" CA
> > restriction case, the next step would be to limit certificates being
> > loaded onto the IMA keyring to those with key usage of
> > "digitalSignature".
> > 
> > Perhaps also require a "codeSigning" extendedKeyUsage, though that
> > might break existing usages.  The "codeSigning" checking could
> > piggyback on Joey's proposed "Check codeSigning extended key usage
> > extension" patch set.
> > 
> > What do you think?  Do you have any concerns with limiting the type of
> > certificate being loaded onto the IMA keyring to those with
> > "digitalSignature"?
> 
> In the MAX setting I would not have a concern.  Instead of restrict_link_to_ima 
> being a macro, a new restriction similar to restrict_link_by_ca could be created.  
> The new restriction would simply verify digitialSignature is set and the key can be 
> vouched for by either the built-in or secondary keyrings. Joey’s work to parse 
> the extended key usage extension could also be included in this restriction.

Sounds good.

> I’m assuming this would be follow on work?

Yes, that probably makes the most sense.

-- 
thanks,

Mimi


      reply	other threads:[~2023-02-09  2:59 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-07  2:59 [PATCH v4 0/6] Add CA enforcement keyring restrictions Eric Snowberg
2023-02-07  2:59 ` [PATCH v4 1/6] KEYS: Create static version of public_key_verify_signature Eric Snowberg
2023-02-10  3:39   ` Jarkko Sakkinen
2023-02-10 22:38     ` Eric Snowberg
2023-02-07  2:59 ` [PATCH v4 2/6] KEYS: Add missing function documentation Eric Snowberg
2023-02-08 21:48   ` Mimi Zohar
2023-02-10  3:40   ` Jarkko Sakkinen
2023-02-07  2:59 ` [PATCH v4 3/6] KEYS: X.509: Parse Basic Constraints for CA Eric Snowberg
2023-02-08 21:01   ` Mimi Zohar
2023-02-10  3:46   ` Jarkko Sakkinen
2023-02-07  2:59 ` [PATCH v4 4/6] KEYS: X.509: Parse Key Usage Eric Snowberg
2023-02-08 21:02   ` Mimi Zohar
2023-02-10  3:48   ` Jarkko Sakkinen
2023-02-10 22:39     ` Eric Snowberg
2023-02-07  2:59 ` [PATCH v4 5/6] KEYS: CA link restriction Eric Snowberg
2023-02-09  2:55   ` Mimi Zohar
2023-02-07  2:59 ` [PATCH v4 6/6] integrity: machine keyring CA configuration Eric Snowberg
2023-02-10 13:05   ` Mimi Zohar
2023-02-10 22:42     ` Eric Snowberg
2023-02-13  7:54     ` Jarkko Sakkinen
2023-02-14 21:24       ` Eric Snowberg
2023-02-08 12:38 ` [PATCH v4 0/6] Add CA enforcement keyring restrictions Mimi Zohar
2023-02-08 23:26   ` Eric Snowberg
2023-02-09  2:54     ` Mimi Zohar [this message]

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=d30b895e677613bca520d626741cc9424f8d46e8.camel@linux.ibm.com \
    --to=zohar@linux.ibm.com \
    --cc=coxu@redhat.com \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=dmitry.kasatkin@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=eric.snowberg@oracle.com \
    --cc=erpalmer@linux.vnet.ibm.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jarkko@kernel.org \
    --cc=jlee@suse.com \
    --cc=jmorris@namei.org \
    --cc=kanth.ghatraju@oracle.com \
    --cc=keyrings@vger.kernel.org \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=pvorel@suse.cz \
    --cc=serge@hallyn.com \
    --cc=tadeusz.struk@intel.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).