Under the current key policy, only the sealed room's own code. The key that opens your package lives in AWS KMS in Stockholm, and its policy refuses every other caller, our own administrator role included. Who can change that policy, and how that is being closed, is at the end of this section.
The policy names the room by its code measurement (PCR0). AWS checks that measurement on every request, against a document signed by the room's hardware. The part that refuses everyone else:
"Sid": "NobodyDecryptsOutsideTheRoom",
"Effect": "Deny", "Principal": "*", "Action": "kms:Decrypt",
"Condition": { "StringNotEqualsIgnoreCase": {
"kms:RecipientAttestation:PCR0": "3ea0a6f506beac36…246c2f89108cf276430233f7f16ac00de1162f5ac343" } }
✓ Checked 6 Oct 2026 An unlock attempt by our full-access administrator role was refused by AWS (AccessDeniedException), while the published case still passed through the room.
Anyone can rebuild the room from the public code and get the same fingerprint, PCR0 3ea0a6f5… (steps).
A case you seal yourself goes to a second key in AWS KMS, the case key. The sealer you run seals to its public half, published at /room-key.json (the case key; receipts are checked with a different key, the room's signing key on /evidence). Its private half was made inside KMS and stays inside it. Its policy has the same two parts, for the same room build, and has had them since the key was made. ✓ Checked 5 Oct 2026 Our administrator's unlock attempt with it was refused. Each receipt names the case key and the fingerprint of the sealed key the room opened, so you can tell if a site handed the sealer a different public key.
Our administrators can still change the policy. AWS records such a change, but in our own account. A signed public log now gets one entry a day, since 12 Oct 2026: public-log, signed with the key in PUBLIC_KEY.txt. Anyone can check offline that past entries are intact and in order. Two steps close this: every policy change written into that log, and the key held in your own AWS account. Next