You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: dev-docs/security-overview.md
+24-10
Original file line number
Diff line number
Diff line change
@@ -79,12 +79,16 @@ Abstractly, a remote-attestation statement `R` from a CVM looks as follows:
79
79
R = Sig-CPU(<launch digest>, <auxiliary data>, <payload>)
80
80
```
81
81
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.
83
83
In the case of a Constellation node, the `payload` is always the public key of the respective Bootstrapper running inside the CVM.
84
84
Thus, `R` can be seen as a certificate for that public key issued by the CPU.
85
85
Based on this, nodes establish attested TLS (aTLS) connections.
86
86
aTLS is used during [cluster creation](#cluster-creation) and when [growing a cluster](#cluster-growth).
87
87
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
+
88
92
### Measurements
89
93
90
94
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
97
101
However, currently, all supported CVM platforms (AWS, Azure, and GCP) inject custom firmware into CVMs.
98
102
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.
99
103
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).
101
105
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
+
110
124
Currently, on AWS and GCP the TPM implementation resides outside the CVM.
111
125
On Azure, the TPM implementation is part of the injected firmware and resides inside the CVM.
112
126
More information can be found in the [Constellation documentation](https://docs.edgeless.systems/constellation/overview/clouds).
0 commit comments