-
Notifications
You must be signed in to change notification settings - Fork 220
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
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Anton Antonov <[email protected]>
Signed-off-by: Anton Antonov <[email protected]>
There was a problem hiding this 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`. |
There was a problem hiding this comment.
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). |
There was a problem hiding this comment.
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`. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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 | ||
|
There was a problem hiding this comment.
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 | ||
``` |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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", | ||
``` | ||
|
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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/
Before submitting a pull request for a new Learning Path, please review Create a Learning Path
Please do not include any confidential information in your contribution. This includes confidential microarchitecture details and unannounced product 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.