Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions docs/docs/architecture/attestation/atls.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
You might have heard about the [Intra-handshake.fail] paper by Sardar et.al.
[Intra-handshake.fail] is a 2026 paper by Sardar et.al. documenting relay attacks in intra-handshake attestation.

"You might have heard" reads too much like "dang it, we wish you didn't know about this" 😁

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The 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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The 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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
If we rule out implementation errors, the threat model of the CPU vendors suggests that a hardware attack is necessary for that to happen.
Barring implementation errors, the threat model of the CPU vendors suggests that a hardware attack is necessary for that to happen.

We can't rule that out.

This means that we can remove the attack vector by somehow ensuring physical security of the host systems.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The 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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The 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?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The 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
1 change: 1 addition & 0 deletions tools/vale/styles/config/vocabularies/edgeless/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ RTMRs?
runtime
runtimes?
safeguardable
Sardar
SBOM
Scaleway
serializable
Expand Down
Loading