Skip to content

Add CCA Trustee Learning Path #2190

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

anta5010
Copy link
Contributor

Before submitting a pull request for a new Learning Path, please review Create a Learning Path

  • I have reviewed Create a Learning Path

Please do not include any confidential information in your contribution. This includes confidential microarchitecture details and unannounced product information.

  • I have checked my contribution for confidential information

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the Creative Commons Attribution 4.0 International License.

Copy link
Contributor

@paulhowardarm paulhowardarm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks excellent overall - I have a few minor narrative and technical suggestions.

from the verifier or directly through the attester.

In practice, the data flow between the verifier, attester, and relying party can be done through
the `passport check model` and `background check model`. In this Learning Path you will use the `passport check model`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We normally use the term "passport model" rather than "passport check model". But also there's a subtlety here that we need to clarify. Trustee does not, in fact, use the passport model. It uses the background check model. In RATS terms: the Attester (AA) is passing evidence to the Relying Party (KBS), which then calls the Verifier (AS) to appraise the evidence. This is the background check model, not the passport model. In the passport model, the AA would call the Verifier.

The Trustee KBS does have some behaviour that looks slightly passport-like. This is because its attestation protocol is such that a single attestation exchange grants access to resources for a time period. This access is granted via a signed JWT, which does look a little more like a passport. But it's not a passport in RATS terms, because it's not an attestation result. It's a distinct credential that is really just an implementation detail of Trustee. If we take a strict RATS-architectural interpretation, it is background check. So we need to clarify this in the language that we use.


In this model, the attester requests the passport from the verifier by providing evidence
and receives a passport in the form of attestation results. It can now interact
with the relying party by presenting its passport (attestation result).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per my earlier comment, this is not the flow that Trustee uses. It's actually background check. I would suggest we remove this paragraph and replace it with a summary of background check.

with the relying party by presenting its passport (attestation result).

Please notice that in Trustee project the attester never communicates with the `verifier` directly.
All communications are executed through the `relying party`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, this sentence tells us that it's actually the background check model, not the passport model. If it were the passport model, the attester would call the verifier.

1. Verifies the hardware TEE signature of the TEE quote and report provided in the evidence
2. Receives the evidence and organizes the status into a JSON format to be returned

In this Learning Path AS is configured to use an external CCA verifer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably mention Veraison here. The rationale is that Trustee's AS does not have a built-in "driver" that understands CCA, so the process gets "contracted out" to a Veriason-based verifier instead.



### Guest components

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While it might seem obvious, I think it's worth an opening sentence here to say that the guest components are the pieces that run inside the realm - simply because everything we've been talking about up until this point is stuff that runs outside. It will help readers to make the mental switch.

detail: "Token Verifier error",
}
Error: request unauthorized
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like that we just end the section at the error message. We need a bit of narrative here, to carry the reader forward to the next section, eg:

So, the process failed. But why is this? Proceed to the next step to understand why the KBS did not grant access to the requested secret, and how to resolve the problem.


#### Evaluate the Attestation Result

In this step, you will examine the attestation result and see how it can be used to evaluate the trustworthiness of a CCA realm.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, I think we need to add more content to keep the narrative flowing. I'd add an opening sentence to this section, eg:

In the previous step, the KBS failed to provide the requested secret. To understand why this happened, you need to learn more about how the attestation result is used to evaluate the trustworthiness of a CCA realm. In this step, you will examine the attestation result more closely.

Sourced Data [none]: no claim being made
```

This part of the output shows how the attestation service has compared the attestation token against its expectations of a trustworthy system.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recommend we add a sentence to explain the jargon:

These comparisons are known as "trustworthiness vectors".

(That's a slight approximation, but probably good enough for the LP at this point. The term "trustworthiness vector" actually comes from an IETF RATS document called "Attestation Results for Secure Interactions" - normally abbreviated to AR4SI. The document is here, and we possibly could reference it for further reading, but just the sentence above might be good enough).

./arc verify ear.jwt |grep ear.status
"ear.status": "warning",
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, it feels like we just trail off here. We need a closing sentence to propel the reader to the next section, something like:

The warning status is the reason why the KBS chose not to grant access to the secret that you requested in the earlier step. It has not concluded that the realm is trustworthy. But this is simply because we have not supplied an expected reference measurement for the realm. You will do this in the next step.


### Endorse Realm Initial Measurement (RIM)

For a successfull attesation of your CCA platfrom you need to provide
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling: successful
Spelling: attestation
Spelling: platform (but technically it would be better to say "realm" here anyway)

Install git and docker packages. For example, on Ubuntu 24.04 LTS machine run:
``` bash
sudo apt-get update
sudo apt-get install git docker.io docker-compose-v2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anta5010 - Please update to use the recommended way to install docker https://learn.arm.com/install-guides/docker/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

3 participants