-
Notifications
You must be signed in to change notification settings - Fork 21
docs: discuss intra-handshake.fail #2524
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?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -62,3 +62,38 @@ sequenceDiagram | |||||
| Server->>Client: CertificateRequest { DN: [nonce-2] } | ||||||
| Client->>Server: ClientCertificate { Ext: [report(nonce-2, pubkey-client)] } | ||||||
| ``` | ||||||
|
|
||||||
| ## Intra-handshake.fail | ||||||
|
|
||||||
| You might have heard about the [Intra-handshake.fail] paper by Sardar et.al. | ||||||
| This section explains the results of that paper and the implications for Contrast. | ||||||
|
|
||||||
| ### Results | ||||||
|
|
||||||
| The paper analyses several ways of binding attestation evidence to a TLS channel. | ||||||
| Among these is the binding explained above, where the nonce and the ephemeral public key are hashed into the report data field. | ||||||
| Next, the authors define a set of TLS session correlation goals, and show that none of the analysed binding schemes meet these goals. | ||||||
| This result isn't really surprising for the schemes that are using ephemeral keys: the TEE commits itself to a specific key, not to a specific negotiated session. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What does this sentence mean "the TEE commits itself to a specific key, not to a specific negotiated session"? |
||||||
| For these schemes, the session could be relayed by anybody possessing the committed private key. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe a little bit of extra text explaining how. |
||||||
|
|
||||||
| This wouldn't be an issue if all TEEs were perfectly secure and interchangeable, because the report would guarantee that the key was generated within the TEE and can't leave it. | ||||||
| In practice, however, this assumption doesn't hold universally. | ||||||
| TEEs can be attacked physically, for example with [TEE.fail], and keys could be extracted. | ||||||
| Thus we can't rely on the report only to assure key security, and in extension aTLS security. | ||||||
|
|
||||||
| ### Applicability to Contrast | ||||||
|
|
||||||
| The necessary condition for the paper's relay attack is a leak of the private key by any TEE that otherwise passes verification. | ||||||
| If we rule out implementation errors, the threat model of the CPU vendors suggests that a hardware attack is necessary for that to happen. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
We can't rule that out. |
||||||
| This means that we can remove the attack vector by somehow ensuring physical security of the host systems. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: The word "somehow" here reads weirdly. Maybe something more along the lines of "If the physical security [...], then we can remove [...]". |
||||||
|
|
||||||
| Server CPUs have stable identifiers that can be verified, so we could use them to query the actual location, ownership and physical security. | ||||||
| In an ideal world, [Platform Ownership Endorsement] would assure that the expected cloud provider operates a particular TEE and vouches for its security. | ||||||
| Since the concept is quite new and the mechanism isn't widely deployed yet, we can't rely on it as of today. | ||||||
| Instead, Contrast users can add a list of expected hardware identifiers to their manifests. | ||||||
| Reports issued by another, attacker-controlled TEE won't pass validation due to ID mismatch. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. iiuc the issue is at the protocol level so even if you have a list of "trusted identifiers" that would allow you to discard reports signed by TEEs that are not on the list, the attack could still be possible from a compromised TEE that is on the list. So you end up putting trust on the claims of physical security of the hosts. Does the paper propose a protocol scheme that defends against this regardless?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. With the current shape of TEE threat models, you can't design a protocol that stays secure if the server is physically compromised. |
||||||
| This reduces the circle of possible attackers to the hardware owners, which is the baseline we can expect: a physical attack can compromise the session keys directly, making any attempt to secure the connection moot, regardless of binding strategy. | ||||||
|
|
||||||
| [Intra-handshake.fail]: https://www.researchgate.net/publication/408219182_Intra-handshakefail_CVE-2026-33697_High-severity_CVE_in_Attested_TLS | ||||||
| [TEE.fail]: https://tee.fail | ||||||
| [Platform Ownership Endorsement]: https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/platform-ownership-endorsements.html | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -148,6 +148,7 @@ RTMRs? | |
| runtime | ||
| runtimes? | ||
| safeguardable | ||
| Sardar | ||
| SBOM | ||
| Scaleway | ||
| serializable | ||
|
|
||
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.
"You might have heard" reads too much like "dang it, we wish you didn't know about this" 😁