Umbra Address Generation
Protocol for generating anonymous Umbra addresses using KMAC derivation
Protocol Description
Each anonymous Umbra address is a standard Solana Ed25519 keypair, derived deterministically from the master seed . The derivation uses the NIST-standardized KMAC construction, which acts as a Pseudo-Random Function (PRF).
For the -th Umbra address, a unique 32-byte seed, , is generated as follows:
This output seed is then used to generate a standard Ed25519 keypair, which serves as the user's anonymous Umbra keypair.
Key Derivation Process
- Master Seed Input: Uses the 32-byte master seed as the KMAC key
- Domain Separation: Uses the string for domain separation
- Index Uniqueness: Appends the address index to ensure each address is unique
- Keypair Generation: Uses the derived seed with standard Ed25519 key generation
Security Analysis
Security Proof: Unlinkability of Umbra Addresses
Goal: Each Umbra keypair must be unlinkable to the master seed and to any other Umbra keypair for .
Assumption: KMAC is a secure Pseudo-Random Function (PRF).
Argument: The master seed serves as the secret key for the KMAC PRF. By the definition of a secure PRF, the output is computationally indistinguishable from a truly random 32-byte string to any adversary without knowledge of . Since the Ed25519 keypair is generated from this pseudorandom seed, the resulting keypair itself, particularly the public key , appears as a random, unrelated Solana address.
Properties
- Unlinkable: Each Umbra address appears as a random Solana address
- Deterministic: Same master seed always generates the same sequence of addresses
- Indexed: Each address can be generated by incrementing the index parameter
- Standard Compatible: Uses standard Ed25519 keypairs for Solana compatibility
- High Entropy: Each derived seed has full cryptographic entropy