Uses in Umbra
Balance encryption: Rescue is the cipher used to encrypt confidential token balances in ETAs. When a deposit is made into Shared mode, the balance is encrypted under Rescue keyed with the user’s X25519-derived secret, making it decryptable locally without Arcium involvement. ETA ciphertext: The on-chain ETA stores a Rescue-encrypted representation of the user’s balance. Arcium MPC operates directly over this ciphertext in BN254 arithmetic circuits, performing additions and subtractions on encrypted values without ever decrypting them. Compliance re-encryption: Because Rescue operates over p = 2^255 − 19 and its outputs are native field elements, they can be consumed by MPC computations and ZK circuits with no format conversion. This is what makes compliance grants possible - Arcium can re-encrypt a Rescue ciphertext for a different X25519 key inside a secure MPC computation, without the plaintext being exposed at any point. See Compliance - X25519 Grants.Field Interoperability
Rescue (p = 2^255 − 19) and Poseidon (BN254, p ≈ 2^254) operate over different prime fields. The SDK handles all field translation and protocol bridging internally. Callers never need to reason about field boundaries, encoding, or representation - the SDK manages this transparently across all operations.Implementation
Umbra ships an in-house implementation of the Rescue cipher that is:- Fully constant-time - every field operation executes in time independent of secret values, with no data-dependent branches or memory access patterns
- Independently optimised - written from the ground up for performance, not adapted from a reference implementation
- The only non-delegated primitive - all other SDK cryptography is built on
@noble/curvesand@noble/hashes; Rescue is owned entirely in-house, reflecting the central role it plays across the protocol
References
- RESCUE-PRIME: A Standard Specification - Aly et al., 2020
- Rescue: A Sound and Efficient Symmetric Permutation - Albrecht et al., 2019
- Rescue Cipher - Umbra Architecture
- Polynomial Commitment Protocol