GET /v1/aci/attestation for the full field reference. This
page explains what each part proves.
What the report contains
| Field | What it proves |
|---|---|
workload_id | A SHA-256 identity for the running workload. Acts as the stable name of “which gateway is this”. |
workload_keyset_digest | A SHA-256 digest over the published key set. Binds the keys below to this identity. |
attestation.tee_type | The TEE technology, for example tdx. |
attestation.evidence.quote | The hardware-signed TDX quote. This is the root of trust for everything else in the report. |
attestation.report_data | The value bound into the quote. It commits to your nonce and the published keyset, which is how you prove the quote is fresh and matches these keys. |
attestation.workload_keyset | The public keys this workload uses: workload_identity, receipt_signing_keys, e2ee_public_keys, tls_public_keys, and the keyset_epoch. |
attestation.keyset_endorsement | A signature, under the workload identity key, over the keyset. Ties the keys to the identity. |
attestation.source_provenance | The source the workload was built from: repo_url, repo_commit, and optional image_digest / image_provenance. |
attestation.freshness | fetched_at and stale_after timestamps for the report. |
service_capabilities | Runtime facts, including supported_e2ee_versions. |
all_attestations | An array of full attestation objects, one per server, for multi-instance deployments. |
attestation.workload_keyset.receipt_signing_keys, and the E2EE keys
in attestation.workload_keyset.e2ee_public_keys. (The legacy
/v1/attestation/report alias also adds top-level
signing_address / signing_algo / signing_public_key for older clients.)
Why the nonce matters
You pass?nonce=<random>. The gateway mixes your nonce into report_data inside the
hardware-signed quote. Because the quote is signed by the TEE, a report that commits to a nonce you
just generated cannot be a replay of an old capture. Generate a new nonce every time you verify, and
confirm the report’s report_data is derived from that nonce and the published keyset.
How verification uses the report
A verifier checks, in order:attestation.evidence.quoteverifies against Intel’s DCAP collateral, and the quote’s report data binds yournonceand theworkload_keyset.keyset_endorsementverifies underworkload_keyset.workload_identity, so the receipt-signing and E2EE keys genuinely belong to this workload.workload_idandworkload_keyset_digestmatch what later receipts cite.- The report is fresh (
freshness.stale_afteris in the future). - In production,
source_provenancematches the reviewed release.
The gateway loads its identity and signing keys from dstack KMS inside the TEE. There is no
ephemeral-key or stub-quote mode: a report always carries a real hardware quote.
Multi-server deployments
An endpoint can be served by more than one TEE instance behind the same hostname. The top-levelattestation is the instance that answered your request; all_attestations lists every
instance’s report. When you verify, check the instance that signed your receipt by matching
workload_id and workload_keyset_digest.
Next
Receipts
How a single response is bound to this attested identity.
Verify a response
Run the full check end to end.