|
| 1 | +--- |
| 2 | +# User change |
| 3 | +title: "Overview of the Software Architecture" |
| 4 | + |
| 5 | +weight: 2 # 1 is first, 2 is second, etc. |
| 6 | + |
| 7 | +# Do not modify these elements |
| 8 | +layout: "learningpathall" |
| 9 | +--- |
| 10 | + |
| 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. |
| 14 | + |
| 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. |
| 22 | + |
| 23 | +## Understanding the key software components |
| 24 | + |
| 25 | +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). |
| 33 | +The AS, KBS, and RVPS components are part of the [Trustee project](https://github.com/confidential-containers/trustee), |
| 34 | +whereas the AA and CDH are part of the [Guest Components](https://github.com/confidential-containers/guest-components) project in CoCo. |
| 35 | + |
| 36 | +### RATS key components |
| 37 | + |
| 38 | +This is a list of components used in this Learning Path: |
| 39 | + |
| 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. |
| 50 | + |
| 51 | +### Trustee components |
| 52 | + |
| 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. |
| 56 | + |
| 57 | +#### Key Broker Service (KBS) |
| 58 | + |
| 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. |
| 63 | + |
| 64 | +#### Attestation Service (AS) |
| 65 | + |
| 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. |
| 70 | + |
| 71 | +The following diagram shows the AS components: |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | +The AS runs the following verification process: |
| 76 | + |
| 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. |
| 81 | + |
| 82 | +##### Verifier driver |
| 83 | + |
| 84 | +A verifier driver parses the attestation evidence provided by the hardware TEE. It performs the following tasks: |
| 85 | + |
| 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 |
| 88 | + |
| 89 | +In this Learning Path AS is configured to use an external CCA verifer. |
| 90 | + |
| 91 | +[Linaro](https://www.linaro.org) provides such an attestation verifier for use with pre-silicon 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/) |
| 95 | + |
| 96 | +##### Policy Engine |
| 97 | + |
| 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. |
| 102 | + |
| 103 | +In this Learning Path AS attestation policy includes specific Arm CCA rules. |
| 104 | + |
| 105 | +#### Reference Value Provider Service (RVPS) |
| 106 | + |
| 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. |
| 111 | + |
| 112 | + |
| 113 | +### Guest components |
| 114 | + |
| 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`. |
| 117 | + |
| 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) |
| 120 | + |
| 121 | +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. |
| 123 | + |
| 124 | +The client tool can also be used to provision the KBS/AS with resources and policies. |
| 125 | + |
| 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 attestaion 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/) |
| 130 | + |
| 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. |
| 139 | + |
| 140 | +When the AS receives an attestation token from the realm via KBS: |
| 141 | +- it calls an external CCA verifer (the Linaro attestation verifier service) to obtain an attestation result. |
| 142 | +- the external CCA verifer checks the token's cryptographic signature, |
| 143 | + verifies that it denotes a confidential computing platform and provides an attestation result. |
| 144 | +- AS also checks the token evidences against a its own attestation policies and updates attestation result status and trustworthiness vectors. |
| 145 | + |
| 146 | +When asked for a resource the KBS uses the attestation result to decide whether to release the secrets into the realm for processing. |
| 147 | + |
| 148 | +Figure 1 demonstrates the software architecture that you will construct to run the attestation example. |
| 149 | + |
| 150 | + |
| 151 | + |
| 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. |
0 commit comments