From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Stefan Berger <stefanb@linux.vnet.ibm.com>
Cc: tpm2@lists.01.org, "Kenneth Goldman" <kgoldman@us.ibm.com>,
"Chris Friesen" <chris.friesen@windriver.com>,
"Qi, Yadong" <yadong.qi@intel.com>,
qemu-devel <qemu-devel@nongnu.org>,
"Xu, Quan" <quan.xu@intel.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: Re: [Qemu-devel] Choosing PCR banks for swtpm's TPM 2
Date: Mon, 25 Jun 2018 17:11:47 +0100 [thread overview]
Message-ID: <20180625161147.GH2390@work-vm> (raw)
In-Reply-To: <0bddd044-c9bf-37b9-814b-8eeaf13c9f64@linux.vnet.ibm.com>
* Stefan Berger (stefanb@linux.vnet.ibm.com) wrote:
> On 06/25/2018 11:29 AM, Dr. David Alan Gilbert wrote:
> > * Stefan Berger (stefanb@linux.vnet.ibm.com) wrote:
> > > On 06/25/2018 11:18 AM, Dr. David Alan Gilbert wrote:
> > > > * Stefan Berger (stefanb@linux.vnet.ibm.com) wrote:
> > > > > Hi!
> > > > >
> > > > > I am sending this email to solicit input on the choice of the PCR banks to
> > > > > enable for swtpm's TPM 2. I have currently enabled 4 PCR banks for
> > > > > SHA{1,256,384,512}. The downside of this is that running the TPM 2 with so
> > > > > many PCR banks has a performance impact when the Linux integrity measurement
> > > > > architecture is used and has to extend measurements into all PCR banks,
> > > > > which Linux does already.
> > > > >
> > > > > TPM 2 has the PCR_Allocate() command for a user to select the PCR banks to
> > > > > use. This command allows to make some PCR banks invisible. The change has to
> > > > > be done through the firmware and has the downside that the TPM2 does not
> > > > > support TPM2_Shutdown(SU_STATE) after this command was used. This prevents
> > > > > suspend/resume from working properly. So, it seems that one shouldn't have
> > > > > to use this command, which in turn means the number of PCR banks should be
> > > > > small.
> > > > >
> > > > > Another complication with the swtpm is the upgrade path. Suspended VMs will
> > > > > expect that the PCR banks that were available before the suspend will be
> > > > > available after the resume and a possible swtpm upgrade. This in turn means
> > > > > that the PCR banks should be chosen now and we'll have to stick with them.
> > > > >
> > > > > That said, my suggestion would be to enable only PCR banks for SHA256 for
> > > > > 'now' and SHA512 for the future. Having two PCR banks should enable decent
> > > > > performance. If someone wants to have better performance he will have to go
> > > > > through the firmware to select the PCR banks at the expense of loosing
> > > > > suspend/resume support.
> > > > >
> > > > > The change of PCR banks for the current 4 PCR banks will break the state of
> > > > > all swtpms.
> > > > >
> > > > > If you have suggestions, please let me know.
> > > > Is this something that has to be set at compile time or could it be
> > > > something chosen at run time (as options to the swtpm command line?)
> > > It is a compile-time option...
> > Hmm, that's a shame - I was hoping you'd be able to switch them at
> > runtime (or at least hide them?) then you can solve the upgrade problem
> > by running the new swtpm with a flag telling it to hide the new banks.
> > I hope the ondisk formats for suspend/resume/migration are descriptive
> > enough to be able to spot an error if you try and load one configured
> > differently.4
>
> The disk format does detect it and refuses to take the state if either there
> are too many PCR banks or not enough.
What happens if there are the right number just the wrong type?
> For the initial version of swtpm we would need to define a default set of
> PCR banks since the TPM 2 code uses compile time options to build in that
> set of PCR banks.
You talk of PCR_Allocate() above as a spec-defined command to hide PCRs
but with the downside of breaking TPM2_Shutdown - could you implement
something from the commandline without that downside (I don't know how
PCR banks work).
> A future version of swtpm could expose command line options for selecting
> the PCR banks an instance of swtpm is to run with. libtpms would be compiled
> with support for all of them and only the chosen subset would be active
> starting with the initial creation of a particular instance of swtpm.
Right, that would solve the upgrade half of the problem.
Dave
> Stefan
>
> >
> > Dave
> >
> > > Stefan
> > >
> > > > Dave
> > > > > Regards,
> > > > >
> > > > > Stefan
> > > > >
> > > > >
> > > > >
> > > > --
> > > > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> > > >
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2018-06-25 16:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-25 15:05 [Qemu-devel] Choosing PCR banks for swtpm's TPM 2 Stefan Berger
2018-06-25 15:18 ` Dr. David Alan Gilbert
2018-06-25 15:22 ` Stefan Berger
2018-06-25 15:29 ` Dr. David Alan Gilbert
2018-06-25 15:54 ` Stefan Berger
2018-06-25 16:11 ` Dr. David Alan Gilbert [this message]
2018-06-25 16:23 ` Stefan Berger
2018-06-25 15:25 ` Daniel P. Berrangé
2018-06-25 15:56 ` Stefan Berger
2018-06-25 15:59 ` Daniel P. Berrangé
2018-06-25 16:08 ` Stefan Berger
2018-06-25 16:10 ` Daniel P. Berrangé
2018-06-25 16:15 ` Stefan Berger
2018-06-25 19:44 ` Stefan Berger
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=20180625161147.GH2390@work-vm \
--to=dgilbert@redhat.com \
--cc=chris.friesen@windriver.com \
--cc=kgoldman@us.ibm.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quan.xu@intel.com \
--cc=stefanb@linux.vnet.ibm.com \
--cc=tpm2@lists.01.org \
--cc=yadong.qi@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).