Platus implements hybrid encryption protocol BJJ-KEM1024, combining classical ECDH over Baby Jubjub with ML-KEM-1024 (FIPS 203) to provide post-quantum security for note encryption.
Hybrid Key Construction
Public Keys
The hybrid public key combines two components:
hPK=(ic,mPK)
- ECC public key: ic=[vk]G
- ML-KEM public key: mPK (1568 bytes, FIPS 203)
Both are derived from the same spending public key via deterministic key derivation.
Private Keys
hSK=(vk,mSK)
- ML-KEM secret key: mSK (3168 bytes)
Encryption Protocol
-
Generate ephemeral ECDH keypair:
r←Fr
R=[r]G
-
Compute ECDH shared secret:
Secdh=[r]ic
-
ML-KEM encapsulation:
(Smlkem,ctmlkem)=ML-KEM-1024.Encapsulate(mPK)
- Returns 32-byte shared secret Smlkem and 1568-byte ciphertext ctmlkem.
-
Derive nonce:
nonce_ikm=Secdh∥Smlkem
nonce=HKDF-Expand(HKDF-Extract(nonce_ikm),12)
-
Authenticated encryption:
plaintext=r∥m
ctaead=ChaCha20-Poly1305.Encrypt(key,nonce,plaintext)
-
Output:
ciphertext=ctmlkem∥ctaead
encapsulated_secret=R
- Sizes:
- ctmlkem: 1568 bytes
- ctaead: len(m)+32+16 (message + ephemeral scalar + auth tag)
- R: 64 bytes
Decryption Protocol
Inputs
- Ciphertext (ctmlkem, ctaead)
- Encapsulated secret point ( R )
- Receiver hybrid private key (vk, mSK)
Process
-
Parse ciphertext
ctmlkem=ciphertext[0:1568]
ctaead=ciphertext[1568:]
-
Validate encapsulated secret
R′=BabyJubJub.fromBytesUnsafe(R)
-
Compute ECDH shared secret
Secdh=[vk]R′
-
ML-KEM decapsulation
Smlkem={ML-KEM-1024.Decapsulate(ctmlkem,mSK),032,if validif decapsulation fails
- Derive decryption key (same as encryption)
ikm=R∥Secdh∥Smlkem
prk=HKDF-Extract(ikm)
key=HKDF-Expand(prk,32)
- Derive nonce and decrypt
nonce_ikm=Secdh∥Smlkem
nonce=HKDF-Expand(HKDF-Extract(nonce_ikm),12)
plaintext=ChaCha20-Poly1305.Decrypt(key,nonce,ctaead)
- Verify ephemeral secret
r∥m=plaintext
Rcheck=[r]G
result={m,null,if Rcheck=R′otherwise (invalid)
Threat Model
- Classical adversary: Cannot break discrete log on Baby Jubjub.
- Quantum adversary: Can break elliptic curve discrete log (Shor's algorithm) but cannot break lattice-based cryptography (ML-KEM).
- Hybrid security: Notes remain secure if either ECDH or ML-KEM is unbroken. Both must fail for confidentiality to be compromised.