Kaskad

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 ChainNuntius, IgraPontifex bridge
Signer0xE4D88bE9756EB3fc5bD28B81642605FBF238d2c90x544705F5d72E1C6f24bFD7C2E176F2Cd2aA8Dc2A (US), 0xD35e55c7C2d10472e6d9E7132c88BEeD347D91A7 (EU)0x7d3B23a631501a35cafe4F00133653A1b90f2CC3
Key originGenerated inside an oracle enclaveGenerated inside each regional enclaveDerived from the Robinhood Chain Nuntius key
Key storageEnclave memory onlyEncrypted with AWS KMS, per regionEnclave memory only
Image pinned inKaskadPriceOracleV2.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 claim checks the signer when it executes.
  • Pause. Minting can be paused immediately.
  • Public backing check. When no transfer is pending, KskdExit.totalBurned() on Igra equals totalSupply() 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

EventEffect
An enclave or host stopsOther 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 ChainPrice reads fail over to Europe, with the same signer. Bridge signing pauses until the US region recovers
Every enclave holding the root key stopsThe 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 failsThe app uses the other region. A replacement enclave unseals the same key
The Igra RPC is unavailableThe bridge cannot read burns and signs nothing. Burns stay recorded on Igra
Price sources are unreachableAssets 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.