Try to break it
We take a genuine receipt (real enclave evidence, demo answer) and forge it twelve ways. Your browser runs the same verifier as npm run verify on each forgery. The same list runs in the test suite (test/attacks.test.ts).
- 1not run
Change the answer
Flip the verdict to 'agrees with the report' after the fact.
- 2not run
Add a question the model never asked
Append a reassuring line to the questions for the doctor.
- 3not run
Swap in another enclave's attestation
Replace the evidence with a different model's genuine evidence.
- 4not run
Swap the attestation and fix up its hash
Same swap, then recompute the attestation hash so it matches.
- 5not run
Replay old enclave evidence
Present yesterday's genuine evidence as the answer to a fresh request (new nonce).
- 6not run
Run a different model image
Point the measured configuration at an attacker's container image.
- 7not run
Claim a different model answered
Relabel the receipt as coming from another model id.
- 8not run
Forge the hardware quote
Change one byte inside the Intel TDX quote.
- 9not run
Tamper with the encrypted reply
Alter the sealed response bytes the relay passed back.
- 10not run
Sign the answer with my own key
Claim a live answer and attach a valid signature from a key that is not the enclave's.
- 11not run
Claim a live answer with no signature
Mark a demo receipt as 'live' and hope nobody asks for the enclave's signature.
- 12not run
Say it was encrypted to a different key
Replace the recorded enclave key with an attacker's key.