| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 5s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 47s
standards workspaces build + test / jcp-rs (jcp-conformance, jcp/jcp-rs, -p jcp-energy --features nvml, jcp-rs, linux) (pull_request) Successful in 1m43s
standards workspaces build + test / joule-ui-rs (joule-ui/joule-ui-rs, joule-ui-rs, linux) (pull_request) Successful in 1m14s
standards workspaces build + test / proof-rs (proof-conformance, proof/proof-rs, proof-rs, linux, true) (pull_request) Successful in 1m33s
standards workspaces build + test / sandbox-rs (sandbox-conformance, sandbox/sandbox-rs, sandbox-rs, linux) (pull_request) Successful in 2m47s
standards workspaces build + test / joulecontract-rs (joulecontract/joulecontract-rs, joulecontract-rs, linux-arm64, true) (pull_request) Successful in 1m57s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m59s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m46s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 2m50s
The run binding of #392 had only met software-grounded reports. This runs the reference host inside an SEV-SNP guest and records the result as evidence anyone can re-check offline. sandbox-runtime examples: - confidential_run, run inside the guest. It takes reports through configfs-tsm and seals an S6 run against a challenge; the report_data is the run binding of SPEC §7.6. It then checks the attestation through the chip's VCEK: verified against the challenge, refused against another and against none. - verify_run: the third party's check, from the attestation, the challenge issued and the VCEK alone. sandbox/proof/hardware/2026-10-21-sev-snp: the attestation (with the 1184-byte v5 report), the challenge, the chip's VCEK and AMD's cert chain, and a README saying what it shows and what it does not. The unit is a placeholder, so this exercises the binding and verifier on silicon, not isolation. Checked on our side, away from the guest: - The VCEK was fetched from AMD's KDS by the chip id and TCB inside the report, and openssl verifies it to ARK-Milan. - verify_run on the build host verifies the run, and refuses another challenge and no challenge. - An attestation with its outcome changed is refused ("report-data binding mismatch"): the AMD signature covers the outcome through the binding. sandbox-tee: the version comment now says what the code does (v2 layout and later; a v5 report verified on hardware). Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| attestation.json | ||
| challenge.hex | ||
| README.md | ||
| vcek.der | ||
A confidential run on SEV-SNP hardware, 2026-10-21
The report-data binding of SPEC §7.6, exercised on genuine AMD silicon and verified by a party other than the host.
What ran
- Platform: a confidential VM with AMD SEV-SNP, on an AMD Milan processor
(
n2d-standard-2, imageubuntu-2404-noble-amd64-v20261016). It was created for the run and deleted after it. - Inside the guest: the reference host
(
confidential_run). It took a report throughconfigfs-tsm(the kernel named its providersev_guest) and sealed an S6 run. Itsreport_datais the run binding: the unit, the receipt, the outcome, and a 32-byte challenge chosen by the party that started the run (challenge.hex). - The report: version 5, 1184 bytes, signed with the chip's VCEK. It
travels in the attestation as
tee.report_hex.
What it shows
Verified away from the guest, from these files alone:
cd ../../../sandbox-rs
cargo run -p sandbox-runtime --example verify_run -- \
../proof/hardware/2026-10-21-sev-snp/attestation.json \
"$(cat ../proof/hardware/2026-10-21-sev-snp/challenge.hex)" \
../proof/hardware/2026-10-21-sev-snp/vcek.der
- The report verifies through the VCEK. Its
report_datais the binding of this attestation's unit, receipt and outcome, and of the challenge issued. - It is refused for any other challenge, and without one.
- An attestation whose outcome is changed is refused: the AMD signature covers the outcome through the binding.
The VCEK (vcek.der) was fetched from AMD's KDS by the chip id and
reported TCB inside the report. It chains to AMD's root
(cert_chain.pem: SEV-Milan, then ARK-Milan):
openssl x509 -inform der -in vcek.der -out vcek.pem
openssl verify -CAfile <ARK-Milan> -untrusted <SEV-Milan> vcek.pem
The ARK's SHA-256 fingerprint is
69:D0:63:B4:53:44:D2:6A:2E:94:E1:F4:21:0D:E4:9E:F5:55:30:82:87:D4:C1:74:44:5C:95:63:9A:54:0B:CD.
Compare it with the one AMD publishes, not with this file.
What it does not show
- The unit is a fixed placeholder. This exercises the binding and the verifier on real hardware, not an executor's isolation of a workload.
- The receipt and Supervisor keys are fixed development keys. The trust here rests on the hardware report, not on those signatures.