linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Justin Forbes <jforbes@redhat.com>
Cc: David Howells <dhowells@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Vivek Goyal <vgoyal@redhat.com>,
	yannik@sembritzki.me, Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Peter Anvin <hpa@zytor.com>,
	the arch/x86 maintainers <x86@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Dave Young <dyoung@redhat.com>, Baoquan He <bhe@redhat.com>,
	Peter Jones <pjones@redhat.com>,
	Matthew Garrett <mjg59@google.com>
Subject: Re: [PATCH] Fix kexec forbidding kernels signed with custom platform keys to boot
Date: Fri, 17 Aug 2018 09:02:16 -0700	[thread overview]
Message-ID: <1534521736.3994.13.camel@HansenPartnership.com> (raw)
In-Reply-To: <CAFbkSA2qijHeycF7k4Bg0ePxdxj5nLX4CnXnbuqDzm6A0=2bUQ@mail.gmail.com>

On Fri, 2018-08-17 at 10:42 -0500, Justin Forbes wrote:
> On Fri, Aug 17, 2018 at 9:58 AM, James Bottomley
> <James.Bottomley@hansenpartnership.com> wrote:
> > On Fri, 2018-08-17 at 09:24 +0100, David Howells wrote:
[...]
> > > We also don't necessarily want to encourage ordinary users to
> > > fiddle with the system key databases unless they really know what
> > > they are doing.  There've been cases where doing this has bricked
> > > a machine because the BIOS is buggy. Now I will grant, since
> > > you'll probably raise it if I don't;-), that this might be a good
> > > reason *for* having our own third party signing key as we could
> > > then build the key into our kernels.
> > > 
> > > But if they use a yubikey, they have to get the public key from
> > > there into the system key list or possibly the yubikey has to be
> > > accessed by the bootloader. The same for the TPM.
> > 
> > For security reasons, a Yubikey should only be connected when you
> > need it to sign something.  The TPM you can assume is always
> > available.
> > 
> 
> This is absolutely correct, the important word here being *should*.
> The reality is, with weekly kernel updates and various uses of the
> Yubikey, the average user is just going to leave it connected. We can
> lay out best practices all we want, but it seems pretty obvious that
> most users go with convenient or default.  I really wish we could
> change that, but it is unlikely.  As a result, we have to make the
> convenient or default path also fairly secure.

Imagining the worst scenario with the most stupid user doesn't prove
anything.  We have sensible users who want to achieve security.  Our
job is to design processes that help them with that goal.  Just because
someone could do something stupid is no excuse for not helping the
sensible users.  I admit this "design usable processes to help sensible
users with security" is hard (it's the reason why we've never been able
to deploy the TPM successfully for the majority of users) but they're
not impossible.

Why don't I tell you how it currently works here so you can see how
easily it would slot into a cloud deployment process?  We're designing
CI/CD images for physical systems (i.e. images that are immutable, like
those of containers).  The signing occurs in a special secure area
using a code signing service (so we don't even use a local key dongle)
after the image has been tested in the DevOps cycle.  Today, because
the image is immutable, the initrd it built to support all the cloud
physical systems and thus it can actually be linked in to the bzImage
and the entire thing signed, which solves the initrd security problem
neatly for us.  Linking a key into the bzImage as well is a trivial
addition for us, as you can see.  For us, by the way, you can also see
that providing a key in the initrd would work fine as well.

Since our images are immutable, we don't allow automatic updates.  Even
for mutable images they're a huge security and downtime risk in a cloud
environment because you just don't know what impact they'll have
without testing them.  So even before we moved to immutable images, the
process has always been to disable updates, test out the distro
proposed update first and then deploy if all tests pass.

I'm fairly certain all cloud providers have similar processes.

If we can run this process at industrial scale, there's no reason a
simpler version can't be designed for a user to follow.

James


  reply	other threads:[~2018-08-17 16:02 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-15 10:00 [PATCH] Fix kexec forbidding kernels signed with custom platform keys to boot Yannik Sembritzki
2018-08-15 16:54 ` Linus Torvalds
2018-08-15 17:27   ` Yannik Sembritzki
2018-08-15 17:37     ` Yannik Sembritzki
2018-08-15 17:42     ` Vivek Goyal
2018-08-15 18:44       ` Yannik Sembritzki
2018-08-15 18:58       ` Vivek Goyal
2018-08-15 19:06         ` Yannik Sembritzki
2018-08-15 19:49           ` Vivek Goyal
2018-08-15 20:47             ` Linus Torvalds
2018-08-15 20:53               ` James Bottomley
2018-08-15 21:08               ` Yannik Sembritzki
2018-08-15 21:13                 ` James Bottomley
2018-08-15 21:31                   ` Yannik Sembritzki
2018-08-15 21:40                     ` James Bottomley
2018-08-15 21:50                       ` Yannik Sembritzki
2018-08-15 21:57                     ` Vivek Goyal
2018-08-15 22:14                       ` Yannik Sembritzki
2018-08-15 21:52                   ` Vivek Goyal
2018-08-15 21:57                     ` James Bottomley
2018-08-15 21:14                 ` Linus Torvalds
2018-08-16 13:51             ` David Howells
2018-08-16 15:16               ` James Bottomley
2018-08-16 15:42                 ` James Bottomley
2018-08-16 15:49               ` David Howells
2018-08-16 15:56                 ` James Bottomley
2018-08-16 16:56                   ` David Laight
2018-08-16 17:15                     ` James Bottomley
2018-08-16 20:31                 ` David Howells
2018-08-17  0:07                   ` James Bottomley
2018-08-17  8:24                   ` David Howells
2018-08-17 14:58                     ` James Bottomley
2018-08-17 15:42                       ` Justin Forbes
2018-08-17 16:02                         ` James Bottomley [this message]
2018-08-16  0:52       ` Dave Young
2018-08-16  0:55         ` Dave Young
2018-08-16 12:13       ` David Howells
2018-08-16 14:22         ` James Bottomley
2018-08-16 14:43         ` David Howells
2018-08-16 14:59           ` James Bottomley
2018-08-17 17:00             ` Alan Cox
2018-08-15 17:45     ` Linus Torvalds
2018-08-15 18:19       ` Yannik Sembritzki
2018-08-15 18:22         ` Linus Torvalds
2018-08-15 19:42           ` [PATCH 0/2] Fix kexec forbidding kernels signed with keys in the secondary keyring " Yannik Sembritzki
2018-08-16 18:02             ` Linus Torvalds
2018-08-15 19:42           ` [PATCH 1/2] " Yannik Sembritzki
2018-08-15 19:42           ` [PATCH 2/2] Replace magic for trusting the secondary keyring with #define Yannik Sembritzki
2018-08-15 21:14             ` kbuild test robot
2018-08-15 21:19               ` [PATCH 2/2] [FIXED] " Yannik Sembritzki
2018-08-15 22:01                 ` Linus Torvalds
2018-08-15 22:07                   ` [PATCH 2/2] [FIXED v2] " Yannik Sembritzki
2018-08-16  1:11                     ` Dave Young
2018-08-16  7:43                       ` Yannik Sembritzki
2018-08-16  8:02                         ` Dave Young
2018-08-16  8:20                           ` Greg Kroah-Hartman
2018-08-16 12:46                       ` Vivek Goyal

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=1534521736.3994.13.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=bhe@redhat.com \
    --cc=dhowells@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jforbes@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mjg59@google.com \
    --cc=pjones@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=vgoyal@redhat.com \
    --cc=x86@kernel.org \
    --cc=yannik@sembritzki.me \
    /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).