In this section, we discuss how measurements are made. The application of these measurements to a complete measurement system is described in Section 5.
To uniquely identify any particular executable content, we compute a SHA1 hash over the complete contents of the file. The resulting 160bit hash value unambiguously identifies the file's contents. Different file types, versions, and extensions can be distinguished by their unique fingerprints.
The individual hashes are collected into a measurement list that represents the integrity history of the attesting system. Modifications to the measurement list are not permissible as that would enable an attacker to hide integrity-relevant actions. As our architecture is non-intrusive, it does not prevent systems from being corrupted, nor does it prevent the measurement list from being tampered with afterwards. However, to prevent such malicious behavior from going unnoticed (preventing corrupted systems from cheating), we use a hardware extension on the attesting system, known as Trusted Platform Module, to make modifications of the measurement list visible to challenging parties.
The TPM [11] provides some protected data registers, called Platform Configuration Registers, which can be changed only by two functions: The first function is rebooting the platform, which clears all PCRs (value 0). The second function is the function, which takes one 160bit number and the number of a PCR register as arguments and then aggregates and the current contents of PCR[] by computing a SHA1(PCR[] n). This new value is stored in PCR[]. There is no other way for the system to change the value of any PCR register, based on our assumptions that the TPM hardware behaves according to the TCG specification and no direct physical attacks occur.
We use the Platform Configuration Registers to maintain an integrity verification value over all measurements taken by our architecture. Any measurement that is taken is also aggregated into a TPM PCR (using ) before the measured component can affect and potentially corrupt the system. Thus, any measured software is recorded before taking control directly (executable) or indirectly (static data file of the configuration). For example, if measurements have been taken, the aggregate in the chosen PCR contains ). The protected storage of the TPM prevents modification by devices or system software. While it can be extended with other chosen values by a corrupted system, the way that the extension is computed (properties of SHA1) prevents a malicious system from adjusting the aggregate in the PCR to represent a prescribed system. Once a malicious component gains control, it is too late to hide this component's existence and fingerprint from attesting parties.
Thus, corrupted systems can manipulate the measurement list, but this is detected by re-computing the aggregate of the list and comparing it with the aggregate stored securely inside the TPM.