Skip to content

Commit f2559ca

Browse files
authored
Merge pull request #1467 from madeline-underwood/CCA-Veraison
CCA Veraison_AP approved
2 parents bb52d18 + bb72e1d commit f2559ca

File tree

9 files changed

+99
-54
lines changed

9 files changed

+99
-54
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
2-
title: Introduction to CCA Attestation with Veraison
2+
title: Get Started with CCA Attestation and Veraison
33

44
minutes_to_complete: 30
55

66

7-
who_is_this_for: This learning path is aimed at developers who wish to understand attestation in the context of confidential computing, using Arm’s Confidential Computing Architecture (CCA). It will provide you with some practical, hands-on experience with the data formats and workflows associated with attestation, which will help to provide you with a joined-up understanding of the many separate documents and specifications that exist on this topic.
7+
who_is_this_for: This Learning Path is for developers who would like to learn about attestation in confidential computing, using Arm’s Confidential Computing Architecture (CCA).
88

99
learning_objectives:
10-
- Describe the importance of attestation for confidential computing
11-
- Understand what a CCA attestation token is, and describe its format
12-
- Inspect the contents of a CCA attestation token using command-line tools
13-
- Use an attestation verification service to evaluate a CCA attestation token
14-
- Understand the purpose of the open source Veraison project
10+
- Describe the importance of attestation for confidential computing.
11+
- Understand what a CCA attestation token is, and describe its format.
12+
- Inspect the contents of a CCA attestation token using command-line tools.
13+
- Use an attestation verification service to evaluate a CCA attestation token.
14+
- Understand the purpose of the Open source Veraison project.
1515

1616

1717
prerequisites:

content/learning-paths/servers-and-cloud-computing/cca-veraison/_next-steps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
next_step_guidance: Now that you have gained some hands-on experience with the data formats and workflows associated with attestation for confidential computing, you may wish to explore some additional resources and specifications, which go into greater detail on some of the individual aspects.
2+
next_step_guidance: Now that you have gained some hands-on experience with the data formats and workflows associated with attestation for confidential computing, you can explore some additional resources and specifications, which go into greater detail on some of the individual aspects.
33

44
recommended_path: "/learning-paths/servers-and-cloud-computing/cca-essentials"
55

content/learning-paths/servers-and-cloud-computing/cca-veraison/_review.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ review:
1515
question: >
1616
A secure boundary is sufficient for confidential computing.
1717
answers:
18-
- "True"
19-
- "False"
18+
- "True."
19+
- "False."
2020
correct_answer: 2
2121
explanation: >
2222
A secure boundary is necessary for confidential computing, but it is not sufficient. There must also be a way to establish trust with the target compute environment that the boundary is protecting (the TEE). Trust needs to be built by a process that is both explicit and transparent. This process is known as attestation.
2323
- questions:
2424
question: >
2525
The CCA attestation token is divided at the top level into two sub-tokens.
2626
answers:
27-
- "True"
28-
- "False"
27+
- "True."
28+
- "False."
2929
correct_answer: 1
3030
explanation: >
3131
The CCA attestation token is divided at the top-level into the platform token and the realm token.

content/learning-paths/servers-and-cloud-computing/cca-veraison/attestation-token.md

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
22
title: Download and inspect the attestation token
3-
weight: 4
3+
weight: 5
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
In this section, you will obtain an example CCA attestation token.
9+
In this section, you will obtain an example CCA attestation token. To set up the tools that you need for attestation, you need to install the Go language on your system.
1010

1111
## Install Go
1212

13-
In order to run the tools used for attestation, start by installing the Go language on your system. First, you will remove any existing Go installation. After that, you obtain the install files and
13+
First, start by removing any existing Go installation. Next, obtain the install files and run the following command:
1414

1515
```bash
1616
rm -rf /usr/local/go
@@ -19,51 +19,54 @@ wget https://go.dev/dl/go1.23.3.linux-$(dpkg --print-architecture).tar.gz
1919
tar -C /usr/local -xzf go1.23.3.linux-$(dpkg --print-architecture).tar.gz
2020
```
2121

22-
Export the installation path and add it to your $PATH environment variable.
22+
Export the installation path and add it to your `$PATH environment` variable.
2323

2424
```bash
2525
export PATH=$PATH:/usr/local/go/bin
2626
```
27-
Verify the installation by checking that the command outputs the installed version.
27+
Verify the installation by running the following command to check the version of the installation:
2828

2929
```bash
3030
go version
3131
```
3232

3333
## Install Git
3434

35-
Verify that `git` is installed using the command below. It should output the version available on your computer.
35+
Verify that `git` is installed by using the command below. It should produce an output that lists the version available on your computer:
3636

3737
```bash
3838
git --version
3939
```
4040

4141
## Install jq
42-
The jq utility, is a popular command-line tool that can be used to parse and manipulate JSON data. You can install it using your local package manager, for instance:
42+
43+
The jq utility is a popular command-line tool that you can use to parse and manipulate JSON data.
44+
45+
To install it, you can use your local package manager, for instance:
4346

4447
```bash
4548
sudo apt install jq
4649
```
4750

4851
## Download the Example CCA Attestation Token
4952

50-
Using your preferred web browser, navigate to the [token in the TrustedFirmware-M tools repository](https://github.com/TrustedFirmware-M/tf-m-tools/blob/main/iat-verifier/tests/data/cca_example_token.cbor)
53+
Using your preferred web browser, navigate to the [token in the TrustedFirmware-M tools repository](https://github.com/TrustedFirmware-M/tf-m-tools/blob/main/iat-verifier/tests/data/cca_example_token.cbor).
5154

52-
Use GitHub’s download button, located on the right of the upper toolbar, to download the token as a *raw* (binary) file.
55+
Use GitHub’s download button, located on the right of the upper toolbar, to download the token as a `raw` binary file.
5356

5457
![download_raw.png](./download_raw.png)
5558

56-
Place this file in the `$HOME` folder, while keeping the file name the same. The rest of this learning path will use the notation `$HOME/cca_example_token.cbor` as the file path.
59+
Place this file in the `$HOME` folder, while retaining the file name. The rest of this Learning Path uses the notation `$HOME/cca_example_token.cbor` as the file path.
5760

5861
{{% notice Note %}}
59-
You will notice that the filename extension on the example token is `.cbor`, which also denotes the format of the data. CBOR is the Concise Binary Object Representation. You are likely to already be familiar with JSON (the JavaScript Object Notation). JSON provides a standard way to convey nested structures of key-value pairs. CBOR is conceptually the same as JSON. The difference is that CBOR is a binary format, rather than a text-based format like JSON. CBOR is designed for compactness and ease of machine-readability, but at the expense of human-readability. You can learn more about CBOR [here](https://cbor.io/).
62+
You will notice that the filename extension on the example token is `.cbor`, which also denotes the format of the data. CBOR is an acronym for Concise Binary Object Representation. You might already be familiar with JSON (the JavaScript Object Notation). JSON provides a standard way of conveying the nested structures of key-value pairs. CBOR is conceptually the same as JSON. The difference is that CBOR is a binary format, rather than a text-based format like JSON. CBOR is designed for compactness and machine-readability, but at the expense of human-readability. You can learn more about CBOR [here](https://cbor.io/).
6063
{{% /notice %}}
6164

6265
## Build the EVCLI Tool
6366

64-
Now that you have downloaded the example CCA attestation token, the next step is to look inside the token and learn about the data that it contains. Because the token is a binary file, you will need to use a tool to parse the file and display its contents. The tool that you will use is a command-line tool called `evcli` (which is short for the EVidence Command Line Interface – remember that attestation tokens are used to convey evidence about realms and the platforms on which they are hosted).
67+
Now that you have downloaded the example CCA attestation token, the next step is to look inside the token and learn about the data that it contains. As the token is a binary file, you will need to use a tool to parse the file and display its contents. The tool that you will use is a command-line tool called `evcli`. Evcli is an acronym for EVidence Command Line Interface, linking with the idea that attestation tokens are used to convey evidence about realms and the platforms on which they are hosted.
6568

66-
The `evcli` tool is part of the Veraison open-source project, which was covered in the previous section.
69+
The `evcli` tool is part of the Veraison Open-Source project, which was covered in the previous section.
6770

6871
Clone the source code using git as follows:
6972

@@ -137,12 +140,12 @@ The contents of the token are displayed as JSON. Check that the output matches t
137140
}
138141
```
139142

140-
It is not important to understand every detail of the attestation token right now, but here are some of the most important highlights:
143+
It is not important to understand every detail of the attestation token, but here are some of the highlights:
141144

142-
- The CCA attestation token is a variant of a more general-purpose attestation data format known as the Entity Attestation Token (EAT). The EAT specification has been established to create more alignment across the industry with respect to attestation data, so that common tools and libraries can be used to process it.
145+
- The CCA attestation token is a variant of a more general-purpose attestation data format known as the Entity Attestation Token (EAT). The EAT specification has been established to create better alignment across the industry with respect to attestation data, so that common tools and libraries can be used to process it.
143146
- Specific variants of the EAT format are known as profiles, so this token is adopting the Arm CCA profile of the EAT specification.
144147
- The CCA attestation token is divided at the top level into two sub-tokens. These are known individually as the platform token and the realm token.
145-
- The platform token contains the evidence about the Arm CCA platform on which the realm is running, which includes details about the state of the hardware and firmware that compose the platform. You can think of the platform as being like a single server or self-contained computing device. A single platform could host many realms, which could be executing as virtual machines or containers. Therefore, many realms might produce the same platform token.
148+
- The platform token contains the evidence about the Arm CCA platform on which the realm is running, which includes details about the state of the hardware and firmware that compose the platform. You can think of the platform as a single server or self-contained computing device. A single platform can host many realms, which can be executing as virtual machines or containers. Therefore, many realms might produce the same platform token.
146149
- The realm token contains the evidence about the realm itself, which is running on the platform. It is the more dynamic part of the token. It includes information about the realm’s initial memory contents and boot state.
147150
- The top-level data items in each sub-token are known as claims. A claim is an individual evidence fragment that describes a specific property of the system.
148151
- The claims of the platform token are labelled with the prefix `cca-platform-*`

content/learning-paths/servers-and-cloud-computing/cca-veraison/attestation-verification.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Use the verification service
3-
weight: 5
3+
weight: 6
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,24 @@
11
---
2-
title: CCA Attestation and Veraison
3-
weight: 2
2+
title: CCA and Attestation
3+
weight: 3
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
8-
9-
All confidential computing architectures provide attestation as a means of building trust. This learning path will help you to understand the common concepts in attestation, while also guiding you through code examples that focuses on how attestation is performed with CCA. This section contains an overview of the topic, building a common understanding before diving into the practical part.
10-
118
## Overview
12-
Confidential computing is about protecting data in use. This protection comes from the creation of a security boundary around the computation being performed. This security boundary creates what is normally called a Trusted Execution Environment (TEE). The data and code that executes within the TEE is protected from the outside world. Different technologies exist for creating this secure boundary. In the case of Arm CCA, the secure boundary is provided by the Realm Management Extensions (RME), which are part of the Arm Architecture v9 for A-profile CPUs.
9+
Confidential computing is about protecting data in use. This protection comes from the creation of a security boundary around the computation being performed. This security boundary creates what is called a Trusted Execution Environment (TEE). The data and code that executes within the TEE is protected from the outside world. Different technologies exist for creating this secure boundary. In the case of Arm CCA, the Realm Management Extension (RME), which is part of the Armv9 Architecture for A-profile CPUs, provides the secure boundary.
1310

14-
A secure boundary is necessary for confidential computing, but it is not sufficient. There must also be a way to establish trust with the target compute environment that the boundary is protecting (the TEE). Trusting the environment implicitly does not meet the strict definition of confidential computing. Instead, trust needs to be built by a process that is both explicit and transparent. This process is known as attestation. The role of attestation is described in the figure below.
11+
A secure boundary is necessary for confidential computing, but it is not sufficient alone. There must also be a way to establish trust with the TEE, the target compute environment, that the boundary is protecting. Trusting the environment implicitly does not meet the strict definition of confidential computing. Instead, trust needs to be built by a process that is both explicit and transparent. This process is known as attestation. The role of attestation is described in the Figure 1.
1512

16-
![Attestation role](./attestation-role.png)
13+
![Attestation role alt-text#center](./attestation-role.png "Figure 1: The Role of Attestation")
1714

1815

1916
At the heart of the CCA attestation process is a small, self-contained packet of data known as a CCA attestation token. CCA attestation tokens are produced by realms. They contain evidence about the booted state of the realm. They also contain evidence about the state of the CCA host platform on which the realm is running, including details about the hardware and firmware. You will learn more about this evidence later in the learning path.
2017

21-
CCA attestation tokens have two very important properties. The first is that they are cryptographically signed using a private key that is strongly protected by the platform where the realm is running. The second is that they can be evaluated remotely using an attestation verification service. The verification service acts as a trust authority. It can verify the token’s cryptographic signature, which ensures that the evidence is authentic. It can also compare the evidence against the expectations of a trustworthy platform. These two properties combine to allow a user of the realm to decide whether the realm will provide an adequate trusted environment for confidential computing.
22-
23-
## Veraison
24-
25-
The tools and services that you will use in this learning path come from an open-source project called [Veraison](https://github.com/veraison). Veraison (pronounced “ver-ayy-sjon”) is a project that was founded within Arm but has since been donated to the [Confidential Computing Consortium](https://confidentialcomputing.io/) as an ongoing community project with a growing number of contributors from other organizations. Veraison focuses on the verification aspect of attestation. It provides reusable tools and components that can be used to construct verification services or libraries.
18+
CCA attestation tokens have two very important properties:
2619

27-
Confidential computing is a new and fast-growing industry. There are many stakeholders including hardware manufacturers, firmware vendors, service providers, application developers, end users and regulators. Attestation is an end-to-end process that has the potential to impact all of them. Good alignment and interoperability are essential. The Veraison project is being developed in parallel with several standardization efforts across various industry bodies. Veraison demonstrates the effectiveness of these standards in practice, facilitates their ongoing development within open communities, and makes it possible to build functioning software from them.
20+
* Firstly, they are cryptographically-signed using a private key that is strongly protected by the platform where the realm is running.
21+
* Secondly, they can be evaluated remotely using an attestation verification service.
2822

29-
In this learning path, you will use some of the command-line tools that Veraison provides. You will also make use of an attestation verifier service that is built entirely from Veraison components.
23+
The verification service acts as a trust authority. It can verify the token’s cryptographic signature, which ensures that the evidence is authentic. It can also compare the evidence against the expectations of a trustworthy platform. In combination, these two properties allow a user of the realm to decide whether the realm will provide an adequate trusted environment for confidential computing.
3024

31-
Now that you have some background, move on to the next section where you will download a file that contains an example of a CCA attestation token. You will then use command-line tools to inspect the contents of the token, and you will see how to use an attestation verifier service to verify and evaluate the token.

0 commit comments

Comments
 (0)