Skip to content

Commit df06022

Browse files
authored
Make PCRs part of payload in Security Overview (#3480)
* Make RTMRs part of "aux data" * Introduce Sig-TPM
1 parent eb9dc01 commit df06022

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

dev-docs/security-overview.md

+24-10
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,16 @@ Abstractly, a remote-attestation statement `R` from a CVM looks as follows:
7979
R = Sig-CPU(<launch digest>, <auxiliary data>, <payload>)
8080
```
8181

82-
The `payload` is controlled by the software running inside the CVM.
82+
The field `payload` is controlled by the software running inside the CVM.
8383
In the case of a Constellation node, the `payload` is always the public key of the respective Bootstrapper running inside the CVM.
8484
Thus, `R` can be seen as a certificate for that public key issued by the CPU.
8585
Based on this, nodes establish attested TLS (aTLS) connections.
8686
aTLS is used during [cluster creation](#cluster-creation) and when [growing a cluster](#cluster-growth).
8787

88+
The field `auxiliary data` is populated automatically by the CVM platform and, among others, includes information like CPU firmware versions.
89+
90+
Note that this description of `R` is highly abstract.
91+
8892
### Measurements
8993

9094
In the ideal case, the underlying CVM platform does not inject any of its own software into a CVM.
@@ -97,16 +101,26 @@ In this case, the launch digest is the only measurement that's required to verif
97101
However, currently, all supported CVM platforms (AWS, Azure, and GCP) inject custom firmware into CVMs.
98102
Thus, in practice, Constellation relies on conventional [measured boot](https://docs.edgeless.systems/constellation/architecture/images#measured-boot) to reflect the identity and integrity of nodes.
99103

100-
In measured boot, in general, the software components involved in the boot process of a system are "measured" into the 16 registers of a Trusted Platform Module (TPM).
104+
In measured boot, in general, the software components involved in the boot process of a system are "measured" into the 16 platform configuration registers (PCRs) of a Trusted Platform Module (TPM).
101105
The values of these registers are also called "runtime measurements".
102-
All supported CVM platforms provide TPMs to CVMs.
103-
Constellation nodes use these to measure their boot process.
104-
They include the 16 runtime measurements as `auxiliary data` in `R`.
105-
On each CVM platform, runtime measurements are taken differently.
106-
Details on this are given in the [Constellation documentation](https://docs.edgeless.systems/constellation/architecture/attestation#runtime-measurements).
107-
108-
With measured boot, Constellation only checks the 16 runtime measurements during the verification of a node's remote-attestation statement.
109-
The launch digest is not considered, because it only covers the firmware injected by the CVM platform and may change whenever the CVM platform is updated.
106+
All supported CVM platforms provide TPMs to CVMs.
107+
108+
With measured boot, Constellation relies on TPM-based remote attestation for nodes.
109+
TPM-based remote attestation is similar to confidential computing-based remote attestation. Instead of the value `R`, the value `R'` is used.
110+
111+
```
112+
R' = Sig-TPM(<auxiliary data>, <payload>)
113+
```
114+
115+
The field `auxiliary data` is populated automatically by the TPM and most notably contains the 16 PCRs.
116+
Constellation uses the field `payload` as usual and sets it to the public key of the respective CVM's Bootstrapper.
117+
When verifying `R'`, Constellation compares the 16 PCRs to those given in the attestation config.
118+
119+
#### Differences between CVM platforms
120+
121+
Each supported CVM platform populates the 16 PCRs in different ways. Details can be found in the [Constellation documentation](https://docs.edgeless.systems/constellation/architecture/attestation#runtime-measurements).
122+
Sig-TPM itself is also verified differently for each cloud.
123+
110124
Currently, on AWS and GCP the TPM implementation resides outside the CVM.
111125
On Azure, the TPM implementation is part of the injected firmware and resides inside the CVM.
112126
More information can be found in the [Constellation documentation](https://docs.edgeless.systems/constellation/overview/clouds).

0 commit comments

Comments
 (0)