Hi John,
This man page helps a lot!
My PCR hashes are generated by the motherboard vendor. I have a question:
Can an attacker easily change or swap these hash values inside the TPM if
he has the root privilege? I am not talking about MITM attack that
intercepts the PCR values on the fly but rather attacks that change PCR
values somehow after boot and before quote and verification operations.
I investigated this question and thought this would be difficult. The first
measurement should be P1 = Hash(CRTM) where CRTM is the static Core Root
of Trust Measurement. It's immutable. All subsequent hashes include this
first hash value, i.e. P2 = Hash(P1|| Firmware2). So this is not possible
UNLESS the attacker can command the CRTM to recreate the first hash P1 and
then insert his own firmware measurements on top of that.
Does this make sense?
David
On Wed, Nov 12, 2014 at 10:45 AM, John D. Ramsdell <[email protected]>
wrote:
> Hi David,
>
> The manual page you get with "man tpm_quote_tools" gives an overview of
> how the programs fit together. Other than that, there is no high-level
> documentation. Sorry about that. Your request for better high-level
> documentation has been noted.
>
> The use case I imagined for TPM Quote Tools involves using trusted grub
> to measure the OS image, and place measurements in PCRs at boot time.
> When the machine is provisioned, the correct PCR values are stored on a
> remote machine charged with the responsibility of determining if the
> machine booted the correct image.
>
> After a boot, TPM Quote Tools can then be used to reliably verify that
> the PCRs contain the correct measurements. The quote produced by
> tpm_getquote is the evidence sent to the remote entity. The remote
> entity can use tpm_verifyquote and the provisioned set of PCR values to
> ensure the correct OS image has been booted. This use case should be
> explained somewhere, but there is currently no mention of trusted grup
> in the documentation.
>
> Ultimately, I would like to see TPM Quote Tools integrated into the
> TrouSerS distribution and retire TPM Quote Tools as a separate project.
> The change of the license used by TrouSerS removes the major reason for
> separation. If there is any interest by the community to merge the two
> projects, I will do my part to make it so.
>
> John
>
> TPM QUOTE TOOLS(8) TPM QUOTE
> TOOLS(8)
>
> NAME
> TPM Quote Tools
>
> PROGRAMS
> tpm_mkuuid, tpm_mkaik, tpm_loadkey, tpm_unloadkey,
> tpm_getpcrhash,
> tpm_updatepcrhash, tpm_getquote, tpm_verifyquote
>
> DESCRIPTION
> TPM Quote Tools is a collection of programs that provide support
> for
> TPM based attestation using the TPM quote operation.
>
> A TPM contains a set of Platform Configuration Registers (PCRs).
> In a
> well configured machine, some of these registers are set to known
> val‐
> ues during the boot up process or at other times. For example, a
> PCR
> might contain the hash of a boot loader in memory before it is run.
>
> The TPM quote operation is used to authoritatively verify the
> contents
> of a TPM's Platform Configuration Registers (PCRs). During
> provision‐
> ing, a composite hash of a selected set of PCRs is computed. The
> TPM
> quote operation produces a composite hash that can be compared with
> the
> one computed while provisioning.
>
> To use the TPM quote operation, keys must be generated. During
> provi‐
> sioning, an Attestation Identity Key (AIK) is generated for each
> TPM,
> and the public part of the key is made available to entities that
> vali‐
> date quotes.
>
> The TPM quote operation returns signed data and a signature. The
> data
> that is signed contains the PCRs selected for the operation, the
> com‐
> posite hash for the selected PCRs, and a nonce provided as input,
> and
> used to prevent replay attacks. At provisioning time, the data
> that is
> signed is stored, not just the composite hash. The signature is
> dis‐
> carded.
>
> An entity that wishes to evaluate a machine generates a nonce,
> and
> sends it along with the set of PCR used to generate the composite
> PCR
> hash at provisioning time. For this use of the TPM quote
> operation,
> the signed data is ignored, and the signature returned is used to
> vali‐
> date the state of the TPM's PCRs. Given the signature, the
> evaluating
> entity replaces the nonce in the signed data generated at
> provisioning
> time, and checks to see if the signature is valid for the data. If
> so,
> this check ensures the selected PCRs contain values that match the
> ones
> measured during provisioning.
>
> A typical scenario for an enterprise using these tools follows.
> The
> tools expect AIKs to be referenced via one enterprise-wide
> Universally
> Unique Identifier (UUID). The program tpm_mkuuid creates one.
>
> For each machine being checked, an AIK is created using tpm_mkaik.
> The
> key blob produced is bound to the UUID on its machine using
> tpm_load‐
> key. The public key associated with the AIK is sent to the
> entities
> that verify quotes. Finally, the expected PCR composite
> hash is
> obtained using tpm_getpcrhash. When the expected PCR values
> change, a
> new hash can be generated with tpm_updatepcrhash.
>
> The program to obtain a quote, and thus measure the current
> state of
> the PCRs is tpm_getquote. The program that verifies the
> quote
> describes the same PCR composite hash as was measured
> initially is
> tpm_verifyquote.
>
> SEE ALSO
> tpm_mkuuid(8), tpm_mkaik(8), tpm_loadkey(8), tpm_unloadkey(8),
> tpm_get‐
> pcrhash(8), tpm_updatepcrhash(8), tpm_getquote(8),
> tpm_verifyquote(8)
>
> Oct 2010 TPM QUOTE
> TOOLS(8)
>
>
> David Li <[email protected]> writes:
>
> > John,
> >
> > Thanks for the pointer. I installed tpmquote tool. It looks very
> > interesting. However the website doesn't have much info. Is there a
> > doc how to use the tool in addition to man pages? Any examples?
> >
> > David
> >
> >
> > On Mon, Nov 3, 2014 at 10:09 AM, John D. Ramsdell <[email protected]>
> > wrote:
> >
> > If you have the hashes, you can verify them using TPM Quote Tools
> > <http://tpmquotetools.sourceforge.net/>. It is packaged for
> > Fedora, so
> > if you are using it, you can install the package with "sudo yum
> > install
> > tpm-quote-tools".
> >
> > John
> >
> >
> >
> > David Li <[email protected]> writes:
> >
> > > Hi Luigi,
> > >
> > > Thanks for the link. It's very interesting.
> > >
> > > My case might be different from Chromium. I don't have control
> > over
> > > the firmware (uEFI + option ROMs + bootloader) on the board. The
> > > vendor did all the hashes using CRTM as root of trust and stored
> > them
> > > in the TPM PCRs. So that's my starting point assuming you trust
> > all
> > > the hashes inside. I don't have a requirement to do any
> > verification
> > > post-firmware yet.
> > >
> > > So my problem is how to securely verify those hash values
> > against the
> > > "known good ones". The know good ones are those that are
> > provided by
> > > the board vendor before product shipping and I have to trust. I
> > am
> > > trying to detect any tampering of those in the field by using
> > TPM.
> > >
> > > Since I don't control the firmware, I have no way to store the
> > know
> > > good hashes (e.g for boot loader) inside a verified firmware. I
> > can
> > > certainly store them off board in a secure location. But I also
> > heard
> > > you can store them inside the TPM too.
> > >
> > > David
> >
>
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
TrouSerS-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users