Enclave Security
Nuntius prices and Pontifex bridge claims are signed by keys that exist only inside AWS Nitro Enclaves. This page explains what that guarantees, how the keys are created and shared, and what happens when a part fails. To check the published values yourself, see Verify the Enclaves.
At a Glance
| Nuntius, Robinhood Chain | Nuntius, Igra | Pontifex bridge | |
|---|---|---|---|
| Signer | 0xE4D88bE9756EB3fc5bD28B81642605FBF238d2c9 | 0x544705F5d72E1C6f24bFD7C2E176F2Cd2aA8Dc2A (US), 0xD35e55c7C2d10472e6d9E7132c88BEeD347D91A7 (EU) | 0x7d3B23a631501a35cafe4F00133653A1b90f2CC3 |
| Key origin | Generated inside an oracle enclave | Generated inside each regional enclave | Derived from the Robinhood Chain Nuntius key |
| Key storage | Enclave memory only | Encrypted with AWS KMS, per region | Enclave memory only |
| Image pinned in | KaskadPriceOracleV2.expectedPcr0() | KaskadPriceOracle.expectedPCR0() | KskdEntry.expectedPcr0() |
What an Enclave Guarantees
- Isolation. A Nitro Enclave is a virtual machine carved out of an EC2 instance. It has no network interface, no persistent storage and no interactive access, and the parent instance cannot read or change its memory.
- Encrypted connections. Everything in or out passes through relay processes on the parent instance. TLS to price sources, RPC nodes and peer enclaves starts and ends inside the enclave, so on those connections the relays carry only encrypted bytes. Prices, claim signatures and attestations leave the enclave signed rather than encrypted, and the host serves them over HTTPS.
- Attestation. The Nitro hypervisor signs an attestation document that carries the enclave's measurements and a public key chosen by the enclave. PCR0 is the hash of the whole enclave image: code, configuration, built-in addresses and endpoints, and the trusted root certificates. The document chains to the AWS Nitro root certificate.
- Registration. The contracts register a signer only from an attestation whose PCR0 matches the pinned value. They compare the first 32 bytes of PCR0.
Keys
Robinhood Chain: One Root Key
- An oracle enclave generates the root key from the Nitro Security Module's random number generator. The image refuses to start unless that hardware generator is active.
- The key exists only in enclave memory. There is no disk copy, no KMS copy and no operator copy.
- A new root key is created only while the Robinhood Chain oracle has no registered signer. Otherwise a starting enclave waits for a running enclave to hand over the existing key.
- Enclaves running the same image receive the key over RA-TLS: mutually authenticated TLS 1.3 in which each side sends a fresh random nonce and checks the other's attestation before any key material moves. The attestation must carry that nonce, the TLS key of the same session and an accepted PCR0.
- The root key signs Nuntius prices on Robinhood Chain.
Bridge Key: Derived From the Root
- The bridge enclave never generates a key. An oracle enclave derives it as
HKDF-SHA256(root, salt "kaskad-keyex-v1", info "kaskad/pontifex/" + label)and sends it over RA-TLS. The bridge accepts it only from the oracle image whose PCR0 is built into the bridge image. - The derivation is deterministic, so restarted and added bridge enclaves get the same key, and the bridge signer does not change.
Igra: Regional Keys
- Each Igra enclave generates its own key and stores it encrypted with AWS KMS, so the key survives restarts. The US and EU enclaves have different keys.
- The attested PCR0 of both enclaves equals the oracle's
expectedPCR0().
The Host
Each enclave runs on an EC2 instance, its host. The host relays the enclave's traffic, so it can delay, drop or stop it. It cannot:
- read or change enclave memory, where the Robinhood Chain keys exist;
- change the addresses, chain IDs or endpoints built into an image;
- make an enclave sign a price or a claim that the enclave did not compute or read itself.
Wrong hints from a host, such as a false peer address, fail the attestation checks.
Anyone can submit signed prices and claims. A claim mints only to the recipient named in the burn, and never more than the recipient's burned total minus what was already minted.
Limits
Bridge
- Window limit. At most 25,000,000 KSKD can be minted per one-day window, for all users together. A window starts with the first claim after the previous one ended, so up to twice the limit can be minted around a window boundary.
- Supply cap. KSKD on Robinhood Chain can never exceed 1,000,000,000.
- Short-lived signatures. Every signature expires within an hour, and
claimchecks the signer when it executes. - Pause. Minting can be paused immediately.
- Public backing check. When no transfer is pending,
KskdExit.totalBurned()on Igra equalstotalSupply()of KSKD on Robinhood Chain. See Pontifex Bridge.
Oracle
- A price must be newer than the stored one, come from enough sources, and stay within the change limit. See On-chain Safeguards.
- On Robinhood Chain, the lending market reads Nuntius only for PONS. The other reserves use separate feeds.
Failures
| Event | Effect |
|---|---|
| An enclave or host stops | Other oracle enclaves keep serving prices; bridge signing waits for its replacement. A replacement, oracle or bridge, receives its key from a running oracle enclave, so signers do not change and nothing needs registering again |
| The US region fails, Robinhood Chain | Price reads fail over to Europe, with the same signer. Bridge signing pauses until the US region recovers |
| Every enclave holding the root key stops | The key is lost by design, because no copy exists outside enclave memory. Robinhood Chain prices and bridge signatures stop until a new key is created and registered. Burns stay recorded on Igra and are delivered afterwards |
| An Igra region fails | The app uses the other region. A replacement enclave unseals the same key |
| The Igra RPC is unavailable | The bridge cannot read burns and signs nothing. Burns stay recorded on Igra |
| Price sources are unreachable | Assets below their source minimum stop updating. The last signed prices remain available, with their original timestamps |
None of these failures lets an enclave sign something it did not compute or check itself.
Scope of Attestation
Attestation proves which code runs. It does not make the data that code reads true: Nuntius reports what its price sources report, and the bridge signs what Igra shows. The quorum, the outlier filters, the 800-block depth and the on-chain limits on this page are the checks on that data. Attestation also cannot keep an enclave running: a host can stop or delay it, which halts updates or claims but cannot forge them.

