diff options
author | Sven Vermeulen <sven.vermeulen@siphos.be> | 2012-08-14 22:00:57 +0200 |
---|---|---|
committer | Sven Vermeulen <sven.vermeulen@siphos.be> | 2012-08-14 22:00:57 +0200 |
commit | 7acdf1cb9ab4c404742a41e49feb25cfcb339474 (patch) | |
tree | ff675ceeeda7140f10f2bf0c3a9636721c520713 | |
parent | Add in previous on integrity concepts (diff) | |
download | hardened-docs-7acdf1cb9ab4c404742a41e49feb25cfcb339474.tar.gz hardened-docs-7acdf1cb9ab4c404742a41e49feb25cfcb339474.tar.bz2 hardened-docs-7acdf1cb9ab4c404742a41e49feb25cfcb339474.zip |
Add info on TPM
-rw-r--r-- | xml/integrity/concepts.xml | 165 |
1 files changed, 163 insertions, 2 deletions
diff --git a/xml/integrity/concepts.xml b/xml/integrity/concepts.xml index c8859f9..c9f6313 100644 --- a/xml/integrity/concepts.xml +++ b/xml/integrity/concepts.xml @@ -20,8 +20,8 @@ more secure environment to work in. <!-- See http://creativecommons.org/licenses/by-sa/3.0 --> <license version="3.0" /> -<version>1</version> -<date>2012-07-30</date> +<version>2</version> +<date>2012-08-14</date> <chapter> <title>It is about trust</title> @@ -517,6 +517,167 @@ it took before. <title>Trusted Platform Module</title> <body> +<p> +Years ago, a non-profit organization called the <uri +link="http://www.trustedcomputinggroup.org">Trusted Computing Group</uri> was +formed to work on and promote open standards for hardware-enabled trusted +computing and security technologies, including hardware blocks and software +interfaces across multiple platforms. +</p> + +<p> +One of its deliverables is the <e>Trusted Platform Module</e>, abbreviated to +TPM, to help achieve these goals. But what are these goals exactly (especially +in light of our integrity project)? +</p> + +<ul> + <li> + Support hardware-assisted record (measuring) of what software is (or was) + running on the system since it booted in a way that modifications to this + record (or the presentation of a different, fake record) can be easily + detected + </li> + <li> + Support the secure reporting to a third party of this state (measurement) so + that the third party can attest that the system is indeed in a sane state + </li> +</ul> + +<p> +The idea of providing a hardware-assisted method is to prevent software-based +attacks or malpractices that would circumvent security measures. By running some +basic (but important) functions in a protected, tamper-resistant hardware module +(the TPM) even rooted devices cannot work around some of the measures taken to +"trust" a system. +</p> + +<p> +The TPM chip itself does not influence the execution of a system. It is, in +fact, a simple request/reply service and needs to be called by software +functions. However, it provides a few services that make it a good candidate to +set up a trusted platform (next to its hardware-based protection measures to +prevent tampering of the TPM hardware itself): +</p> + +<ul> + <li> + Asymmetric crypto engine, supporting the generation of asymmetric keys (RSA + with a keylength of 2048 bits) and standard operations with those keys + </li> + <li> + A random noise generator + </li> + <li> + A SHA-1 hashing engine + </li> + <li> + Protected (and encrypted) memory for user data and key storage + </li> + <li> + Specific registers (called PCRs) to which a system can "add" data to + </li> +</ul> + +</body> +</section> +<section> +<title>Platform Configuration Registers, Reporting and Storage</title> +<body> + +<p> +PCR registers are made available to support securely recording the state of +(specific parts of) the system. Unlike processor registers that software can +reset as needed, PCR registers can only be "extended": the previous value in the +register is taken together with the new provided value, hashed and +stored again. This has the advantage that a value stores both the knowledge of +the data presented to it as well as its order (providing values AAA and BBB +gives a different end result than providing values BBB and AAA), and that the +PCR can be extended an unlimited number of times. +</p> + +<p> +A system that wants to securely "record" each command executed can take the hash +of each command (before it executes it), send that to the PCR, record the event +and then execute the command. The system (kernel or program) is responsible for +recording the values sent to the PCR, but at the end, the value inside +the PCR has to be the same as the one calculated from the record. If it differs, +then the list is incorrect and the "secure" state of the system cannot be proven. +</p> + +<p> +To support secure reporting of this value to a "third party" (be it a local +software agent or a remote service) the TPM supports secure reporting of the PCR +values: an RSA signature is made on the PCR value as well as on a random +number (often called the "nonce") given by the third party (proving there is no +man-in-the-middle or replay attack). Because the private key of this signature +is securely stored on the TPM this signature cannot be forged. +</p> + +<p> +The TPM chip has (at least) 24 PCR registers available. These registers will +contain the extended values for +</p> + +<ul> + <li> + BIOS, ROM and memory block data (PCR 0-4) + </li> + <li> + OS loaders (PCR 5-7) + </li> + <li> + Operating System-provided data (PCR 8-15) + </li> + <li> + Debugging data (PCR 16) + </li> + <li> + Localities and Trusted Operating System data (PCR 17-22) + </li> + <li> + Application-specific data (PCR 23) + </li> +</ul> + +<p> +The idea of using PCRs is to first <e>measure</e> the data a component is about +to execute (or transfer control to), then <e>extend</e> the appropriate PCR, +then <e>log</e> this event in a measurement log and finally <e>transfer +control</e> to the measured component. This provides a trust "chain". +</p> + +</body> +</section> +<section> +<title>Trusting the TPM</title> +<body> + +<p> +In order to trust the TPM, the TCG basis its model on asymmetric keys. Each TPM chip +has a 2048-bit private RSA key securely stored in the chip. This key, called the +<e>Endorsement Key</e>, is typically generated by the TPM manufacturer during +the creation of the TPM chip, and is backed by an Endorsement Key certificate +issued by the TPM manufacturer. This EK certificate guarantees that the EK is in +fact an Endorsement Key for a given TPM (similar to how an SSL certificate is +"signed" by a Root CA). The private key cannot leave the TPM chip. +</p> + +<p> +A second key, called the <e>Storage Root Key</e>, is generated by the TPM chip +when someone takes "ownership" of the TPM. Although the key cannot leave the TPM +chip, it can be removed (when someone else takes ownership). This key is used to +encrypt data and other keys (user <e>Storage Keys</e> and <e>Signature +Keys</e>). +</p> + +<p> +The other keys (storage and signature keys) can leave the TPM chip, but always +in an encrypted state that only the TPM can decrypt. That way, the system can +generate specific user storage keys securely and extract them, storing them on +non-protected storage and reload them when needed in a secure manner). +</p> + </body> </section> </chapter> |