Skip to content

Commit 8dd646c

Browse files
authored
Merge pull request #2296 from madeline-underwood/CCA_Trustee
Cca trustee_PV to sign off
2 parents 30869fb + d8f5816 commit 8dd646c

File tree

3 files changed

+139
-202
lines changed

3 files changed

+139
-202
lines changed

content/learning-paths/servers-and-cloud-computing/cca-trustee/_index.md

Lines changed: 36 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,57 @@
11
---
2-
title: Run an end-to-end Attestation Flow with Arm CCA and Trustee
3-
4-
draft: true
5-
cascade:
6-
draft: true
7-
2+
title: Run an end-to-end attestation flow with Arm CCA and Trustee
3+
84
minutes_to_complete: 60
95

10-
who_is_this_for: This Learning Path is for software developers who want to learn how Trustee services can be used to run an end-to-end attestation flow with Arm's Confidential Computing Architecture (CCA).
6+
who_is_this_for: This Learning Path is for software developers who want to run an end-to-end attestation flow using Arm Confidential Compute Architecture (CCA) and Trustee services.
117

128
learning_objectives:
13-
- Describe how you can use attestation with Arm's Confidential Computing Architecture (CCA) and Trustee services.
14-
- Deploy a simple workload in a CCA realm on an Armv9-A AEM Base Fixed Virtual Platform (FVP) that has support for RME extensions.
15-
- Connect the workload with Trustee services to create an end-to-end example that uses attestation to unlock the confidential processing of data.
9+
- Describe how you can use attestation with Arm's Confidential Computing Architecture (CCA) and Trustee services
10+
- Deploy a simple workload in a CCA realm on an Armv9-A AEM Base Fixed Virtual Platform (FVP) that has support for RME extensions
11+
- Connect the workload with Trustee services to create an end-to-end example that uses attestation to unlock the confidential processing of data
1612

1713
prerequisites:
18-
- An AArch64 or x86_64 computer running Linux or MacOS. You can use cloud instances, see this list of [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/).
19-
- Completion of the [Get Started with CCA Attestation and Veraison](/learning-paths/servers-and-cloud-computing/cca-veraison) Learning Path.
20-
- Completion of the [Run an end-to-end Attestation Flow with Arm CCA](/learning-paths/servers-and-cloud-computing/cca-essentials/) Learning Path.
14+
- An AArch64 or x86_64 computer running Linux or macOS; you can use cloud instances - see the [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/)
15+
- Completion of the [Get started with CCA attestation and Veraison](/learning-paths/servers-and-cloud-computing/cca-veraison) Learning Path
16+
- Completion of the [Run an end-to-end attestation flow with Arm CCA](/learning-paths/servers-and-cloud-computing/cca-essentials/) Learning Path
2117

2218
author:
23-
- Anton Antonov
19+
- Anton Antonov
2420

2521
### Tags
2622
skilllevels: Advanced
2723
subjects: Performance and Architecture
2824
armips:
29-
- Neoverse
30-
- Cortex-A
25+
- Neoverse
26+
- Cortex-A
3127
operatingsystems:
32-
- Linux
33-
- MacOS
28+
- Linux
29+
- macOS
3430
tools_software_languages:
35-
- FVP
36-
- RME
37-
- CCA
38-
- Docker
39-
- Veraison
40-
- Trustee
31+
- FVP
32+
- RME
33+
- CCA
34+
- Docker
35+
- Veraison
36+
- Trustee
4137

4238
further_reading:
43-
- resource:
44-
title: Arm Confidential Compute Architecture
45-
link: https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture
46-
type: website
47-
- resource:
48-
title: Arm Confidential Compute Architecture open source enablement
49-
link: https://www.youtube.com/watch?v=JXrNkYysuXw
50-
type: video
51-
- resource:
52-
title: Learn the architecture - Realm Management Extension
53-
link: https://developer.arm.com/documentation/den0126
54-
type: documentation
55-
- resource:
56-
title: Realm Management Monitor specification
57-
link: https://developer.arm.com/documentation/den0137/latest/
58-
type: documentation
59-
39+
- resource:
40+
title: Arm Confidential Compute Architecture
41+
link: https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture
42+
type: website
43+
- resource:
44+
title: Arm Confidential Compute Architecture open-source enablement
45+
link: https://www.youtube.com/watch?v=JXrNkYysuXw
46+
type: video
47+
- resource:
48+
title: Learn the architecture - Realm Management Extension
49+
link: https://developer.arm.com/documentation/den0126
50+
type: documentation
51+
- resource:
52+
title: Realm Management Monitor specification
53+
link: https://developer.arm.com/documentation/den0137/latest/
54+
type: documentation
6055

6156
### FIXED, DO NOT MODIFY
6257
# ================================================================================
Lines changed: 51 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,152 +1,104 @@
11
---
22
# User change
3-
title: "Overview of the Software Architecture"
3+
title: "Architecture overview for Arm CCA Attestation with Trustee"
44

55
weight: 2 # 1 is first, 2 is second, etc.
66

77
# Do not modify these elements
88
layout: "learningpathall"
99
---
1010

11-
## The role of Attestation
12-
In this Learning Path, you will learn how attestation can control the release
13-
of confidential data into a confidential Linux realm for processing.
11+
## The role of attestation
1412

15-
The role of attestation is to assess whether the target compute environment
16-
offers a provable level of confidential isolation. In this Learning Path,
17-
the target compute environment is a Linux realm. The assessment of a provable
18-
level of confidential isolation needs to occur before the realm can be trusted
19-
to receive confidential data or algorithms. This use of attestation to judge
20-
the trustworthiness of a compute environment, before allowing it to do any
21-
processing, is a common practice in confidential computing.
13+
In this Learning Path, you will learn how attestation controls the release of confidential data into a confidential Linux realm for processing. The role of attestation is to assess whether the target compute environment offers a provable level of confidential isolation. In this Learning Path,
14+
the target compute environment is a Linux realm. The assessment of a provable level of confidential isolation must occur before the realm can be trusted to receive confidential data or algorithms. This use of attestation to judge the trustworthiness of a compute environment, before allowing it to do any processing, is a common practice in confidential computing.
2215

23-
## Understanding the key software components
16+
## Key software components
2417

2518
This Learning Path is similar to
26-
[Run an end-to-end Attestation Flow with Arm CCA](/learning-paths/servers-and-cloud-computing/cca-essentials/).
27-
28-
The main difference is that instead of KBS from the [Veraison](https://github.com/veraison) project you will use
29-
the components implemented in the [confidential containers (CoCo)](https://github.com/confidential-containers)
30-
to support the [IETF RATS model](https://datatracker.ietf.org/doc/rfc9334/)
31-
(Remote ATtestation procedureS Architecture). The components include the Attestation Service (AS),
32-
Key Broker Service (KBS), Reference Value Provider Service (RVPS), Attestation Agent (AA), and Confidential Data Hub (CDH).
19+
[Run an end-to-end Attestation Flow with Arm CCA](/learning-paths/servers-and-cloud-computing/cca-essentials/). The main difference is that, instead of the KBS from the [Veraison](https://github.com/veraison) project, you will use components implemented in the [Confidential Containers (CoCo) Project](https://github.com/confidential-containers) to support the [IETF RATS model](https://datatracker.ietf.org/doc/rfc9334/) (Remote ATtestation procedureS). These components include the Attestation Service (AS), Key Broker Service (KBS), Reference Value Provider Service (RVPS), Attestation Agent (AA), and Confidential Data Hub (CDH).
3320
The AS, KBS, and RVPS components are part of the [Trustee project](https://github.com/confidential-containers/trustee),
3421
whereas the AA and CDH are part of the [Guest Components](https://github.com/confidential-containers/guest-components) project in CoCo.
3522

36-
### RATS key components
23+
## RATS roles
3724

38-
This is a list of components used in this Learning Path:
25+
This Learning Path focuses on the following key concepts:
3926

40-
- `Attester` - provides Evidence, which is evaluated and appraised to decide its
41-
trustworthiness (for instance, a test to see whether it’s authorized to perform some action).
42-
Evidence may include configuration data, measurements, telemetry, or inferences.
43-
- `Verifier` - evaluates the validity of the evidence received from the attester
44-
and produces attestation results, which are sent to the Relying party.
45-
Attestation results typically include information regarding the Attester,
46-
while the Verifier vouches for the validity of the results.
47-
- `Relying party` - depends on the validity of information originating from
48-
the attester for reliably applying an action. This information can come
49-
from the verifier or directly through the attester.
27+
- **Attester** – provides evidence that is evaluated to decide **Trustworthiness** (for example, whether it is authorized to perform an action).
28+
- **Evidence** can include configuration data, measurements, telemetry, or inferences.
29+
- **Verifier** – evaluates the evidence from the Attester and produces attestation results that are sent to the Relying party. The Verifier vouches for the validity of those results.
30+
- **Relying party** – depends on the validity of information from the Attester (either directly or through the Verifier) to make an access or policy decision.
5031

51-
### Trustee components
32+
## Trustee components
5233

53-
The Trustee project includes components deployed on a trusted side and used to verify
54-
whether the remote workload is running in a trusted execution environment (TEE).
55-
It also verifies that the remote environment uses the expected software and hardware versions.
34+
Trustee components run on the trusted side and verify whether a remote workload is executing in a trusted execution environment (TEE) and using the expected software and hardware versions.
5635

57-
#### Key Broker Service (KBS)
36+
## Key Broker Service (KBS)
5837

59-
The Key Broker Service (KBS) facilitates remote attestation and managing
60-
and delivering secrets. Equating this to the RATS model, the KBS is the
61-
`relying party` entity. The KBS, however, doesn’t validate the attestation evidence.
62-
Instead, it uses the attestation service (AS) to verify the TEE evidence.
38+
The KBS facilitates remote attestation and manages and delivers secrets. In RATS terms, the KBS is the **Relying party**. The KBS does not validate attestation evidence itself; it relies on the Attestation Service (AS) to verify the TEE evidence.
6339

64-
#### Attestation Service (AS)
40+
## Attestation Service (AS)
6541

66-
The Attestation Service (AS) is responsible for validating the TEE evidence.
67-
When mapped to the RATS model, the AS is the equivalent of the `verifier`.
68-
The AS receives attestation evidence and returns an attestation token
69-
containing the results of a two-step verification process.
42+
The Attestation Service (AS) validates TEE evidence. In RATS terms, the AS is the **Verifier**. The AS receives attestation evidence and returns an attestation token containing the results of a two-step verification process.
7043

7144
The following diagram shows the AS components:
7245

73-
![attestation-services](attestation-services.png "Attestation Service components")
74-
75-
The AS runs the following verification process:
46+
![Attestation Service components alt-text#center](attestation-services.png "Attestation Service components")
7647

77-
1. Verify the formatting and the origin of the evidence - for example, checking the signature of the evidence.
78-
This is accomplished by one of the platform-specific Verifier Drivers.
79-
2. Evaluate the claims provided in the evidence - for example, validating that the measurements are what the
80-
client expects. This is done by a Policy Engine with help from the RVPS.
48+
The AS performs this verification flow:
8149

82-
##### Verifier driver
50+
- **Verify format and origin of evidence** – for example, verify the evidence signature. This is handled by a platform-specific Verifier driver.
51+
- **Evaluate claims** – for example, validate that measurements match expected values. This is handled by the Policy engine, with RVPS support.
8352

84-
A verifier driver parses the attestation evidence provided by the hardware TEE. It performs the following tasks:
53+
## Verifier driver
8554

86-
1. Verifies the hardware TEE signature of the TEE quote and report provided in the evidence
87-
2. Receives the evidence and organizes the status into a JSON format to be returned
55+
A Verifier driver parses the attestation evidence provided by the hardware TEE and:
8856

89-
In this Learning Path, the AS is configured to use an external CCA verifier.
57+
- Verifies the hardware TEE signature of the quote and report included in the evidence.
58+
- Normalizes the verified evidence into a JSON structure to be returned.
9059

91-
[Linaro](https://www.linaro.org) provides such an attestation verifier for use with pre-silicon Arm CCA platforms.
92-
This verifier is built from the Open-Source [Veraison project](https://github.com/veraison).
93-
You can learn more about Veraison and Linaro attestation verifier service in
94-
[Get Started with CCA Attestation and Veraison](https://learn.arm.com/learning-paths/servers-and-cloud-computing/cca-veraison/)
60+
In this Learning Path, the AS is configured to use an external CCA Verifier.
9561

96-
##### Policy Engine
62+
[Linaro](https://www.linaro.org) provides an attestation Verifier for pre-silicon Arm CCA platforms. It is built from the open-source [Veraison](https://github.com/veraison) project. Learn more in
63+
[Get Started with CCA Attestation and Veraison](https://learn.arm.com/learning-paths/servers-and-cloud-computing/cca-veraison/).
9764

98-
The AS allows users to upload their own policies when performing evidence verification.
99-
When an attestation request is received by the AS, it uses a policy ID in the request
100-
to decide which policies should be evaluated.
101-
The results of all policies evaluated are included in the attestation response.
65+
## Policy engine
10266

103-
In this Learning Path the AS attestation policy includes specific Arm CCA rules.
67+
The AS lets you upload custom policies used during evidence verification. When the AS receives an attestation request, it uses the policy ID in the request to decide which policies to evaluate. The attestation response includes the results of all evaluated policies.
10468

105-
#### Reference Value Provider Service (RVPS)
69+
In this Learning Path, the AS policy includes Arm CCA–specific rules.
10670

107-
The reference value provider service (RVPS) is a component in the AS responsible for verifying,
108-
storing, and providing reference values. RVPS receives and verifies inputs from the software
109-
supply chain, stores the measurement values, and generates reference value claims for the AS.
110-
This operation is performed based on the evidence verified by the AS.
71+
## Reference Value Provider Service (RVPS)
11172

73+
RVPS verifies, stores, and provides reference values. It receives inputs from the software supply chain, stores measurement values, and generates reference value claims for the AS, based on evidence verified by the AS.
11274

113-
### Guest components
75+
## Guest components
11476

115-
The guest components are the services/tools that run inside the realm (TEE).
116-
When mapped to the RATS model, these components are the equivalent of the `Attester`.
77+
Guest components run inside the realm (TEE). In RATS terms, these components act as the **Attester**.
11778

118-
For simplicity instead of Attestation Agent (AA) and Confidential Data Hub (CDH)
119-
you will use [KBS Client Tool](https://github.com/confidential-containers/trustee/tree/main/tools/kbs-client)
79+
For simplicity, instead of Attestation Agent (AA) and Confidential Data Hub (CDH), you will use the [KBS Client Tool](https://github.com/confidential-containers/trustee/tree/main/tools/kbs-client).
12080

12181
This is a simple client for the KBS that facilitates basic attestation flows.
122-
You will run this tool inside of a realm to make requests for an attestation result token (EAR) and a secret.
82+
You will run this tool in a realm to make requests for an attestation result token (EAR) and a secret.
12383

12484
The client tool can also be used to provision the KBS/AS with resources and policies.
12585

126-
KBS Client connects to the KBS in order to perform attestation. To prove the trustworthiness of the environment
127-
KBS Client sends the evidence (claims) from the TEE in the form of a CCA attestation token.
128-
You can learn more about CCA attestation tokens in
129-
[Get Started with CCA Attestation and Veraison](https://learn.arm.com/learning-paths/servers-and-cloud-computing/cca-veraison/)
86+
To prove the environment’s trustworthiness, the KBS Client sends CCA attestation evidence (a CCA attestation token) to the KBS. Learn more about CCA attestation tokens in
87+
[Get Started with CCA Attestation and Veraison](https://learn.arm.com/learning-paths/servers-and-cloud-computing/cca-veraison/).
88+
89+
For convenience, Trustee services and the client software are packaged in Docker containers, which you can run on any suitable AArch64 or x86_64 development host. Because the client runs in a realm, it uses the Fixed Virtual Platform (FVP) and the reference software stack for Arm CCA. If you are new to running applications in realms with FVP, see
90+
[Run an application in a Realm using the Arm Confidential Computing Architecture (CCA)](/learning-paths/servers-and-cloud-computing/cca-container).
13091

131-
For convenience, Trustee services and the client software are packaged in
132-
docker containers, which you can execute on any suitable AArch64 or x86_64
133-
development machine. Since the client software runs in a realm, it makes use
134-
of the Fixed Virtual Platform (FVP) and the reference software stack for Arm CCA.
135-
If you have not yet familiarized yourself with running applications in realms using
136-
FVP and the reference software stack, see the
137-
[Run an application in a Realm using the Arm Confidential Computing Architecture (CCA)](/learning-paths/servers-and-cloud-computing/cca-container)
138-
Learning Path.
92+
When the AS receives an attestation token from the realm using the KBS, it:
13993

140-
When the AS receives an attestation token from the realm via KBS:
141-
- it calls an external CCA verifier (the Linaro attestation verifier service) to obtain an attestation result.
142-
- the external CCA verifier checks the token's cryptographic signature,
143-
verifies that it denotes a confidential computing platform and provides an attestation result.
144-
- it also checks the token evidences against its own attestation policies and updates attestation result status and trustworthiness vectors.
94+
- Calls an external CCA Verifier (the Linaro attestation Verifier service) to obtain an attestation result.
95+
- Checks the token’s cryptographic signature and confirms that it represents a confidential computing platform.
96+
- Evaluates evidence in the token against its policies and updates the attestation result and trustworthiness vectors.
14597

146-
When asked for a resource the KBS uses the attestation result to decide whether to release the secrets into the realm for processing.
98+
When a resource is requested, the KBS uses the attestation result to decide whether to release secrets to the realm for processing.
14799

148-
Figure 1 demonstrates the software architecture that you will construct to run the attestation example.
100+
This diagram shows the software architecture you will construct to run the attestation example:
149101

150-
![cca-trustee](trustee.png "Figure 1: Software architecture for running attestation.")
102+
![Software architecture for running attestation alt-text#center](trustee.png "Software architecture for running attestation")
151103

152-
You can now proceed to the next section to run the end-to-end attestation example with the software components and architecture as described here.
104+
Proceed to the next section to run the end-to-end attestation example using the components and architecture described here.

0 commit comments

Comments
 (0)