Keys and Security
Platus implements a dual-key architecture where the ability to view transactions and the ability to spend funds are cryptographically isolated.
The scheme is built on re-randomizable stealth addresses, a mechanism that allows any third party to generate unlinkable payment addresses for a recipient without knowing their private keys or previous transaction history.
Key Architecture
Spending Key (sk)
The spending key is the root secret from which all other keys are derived.
Properties:
- Grants full control over funds
- Required to authorize transactions
- Never leaves client or transmitted on-chain
Spending Public Key (sPK)
From the spending key, the spending public key is derived as:
Where:
- is the base point of the Baby Jubjub curve.
Viewing Key (vk)
The viewing key is deterministically derived from spending public key:
Where:
- are the (x,y) coordinates of the spending public key.
- starts at 1 and increments until .
Properties:
- Cannot authorize spending
- Cannot derive the spending key (one-way derivation)
- Combined with ML-KEM secret key for decryption
Identity key (ik)
The identity key is derived from the viewing key as:
Properties:
- Cannot authorize spending or leak transaction history
- Used by third parties to generate stealth addresses
ML-KEM Public Key (mPK)
Derived from post quantum seed, where seed:
Properties:
- Used to generate shared secret key for encryption
- Provides post-quantum security
Hybrid Public Key (hPK)
Combination of identity key and ML-KEM public key:
Properties:
- Can be shared publicly to receive payments
- Used to encrypt notes with hybrid post-quantum security
- Used to generate stealth addresses for the user
- Combines classical ECDH with post-quantum ML-KEM-1024
App Key (ak)
These are protocol-specific keys derived as:
where appIdentifier can be domain, ENS name, or IPFS hash identifying the app.