bitnami / bitnami/sealed-secrets

Post-quantum key encapsulation: Replace RSA-OAEP with ML-KEM-768 (FIPS 203) for sealing

Open
#2,006 6 comments 0 reactions 0 assignees View on GitHub
backlog enhancement question security
Dominant language
Go
Stars
9.3k
Forks
776
Avg merge
1d 13h
Merged PRs (30d)
30

Description

France's ANSSI will [stop certifying non-PQC products from 2027](https://gizmodo.com/the-quantum-threat-to-encryption-is-coming-france-just-set-a-2027-deadline-2000773650). The US [Executive Order 14409](https://www.whitehouse.gov/presidential-actions/2026/06/securing-the-nation-against-advanced-cryptographic-attacks/) mandates PQC for all federal systems - key establishment by 2030, digital signatures by 2031.

## Context

The project's own [crypto.md](https://github.com/bitnami-labs/sealed-secrets/blob/main/docs/developer/crypto.md) acknowledges RSA-OAEP is "NOT quantum-resistant" and lists replacement candidates. However, the candidates listed (LMS, XMSS, McEliece) are hash-based *signature* schemes or legacy KEMs - not the NIST-standardized KEM.

The correct replacement for RSA-OAEP key encapsulation is **ML-KEM-768 (FIPS 203)**, standardized by NIST in August 2024.

## Proposal

Replace RSA-4096-OAEP with hybrid RSA-4096 + ML-KEM-768 for key encapsulation:
- Sealed secrets encrypted with both classical RSA and ML-KEM
- AES-256-GCM symmetric encryption unchanged (already quantum-safe)
- Backward compatibility: old sealed secrets remain decryptable

Go 1.24+ has `crypto/mlkem` in stdlib. `filippo.io/mldsa` provides ML-KEM as a bridge.

## References

- [NIST FIPS 203 (ML-KEM)](https://csrc.nist.gov/pubs/fips/203/final)
- [crypto.md acknowledgment of vulnerability](https://github.com/bitnami-labs/sealed-secrets/blob/main/docs/developer/crypto.md)

Contributor guide

Open the contributing guide

Research direction

Start with docs/developer/crypto.md to understand the current RSA-OAEP design and then trace the existing sealing and decryption implementation. Confirm how hybrid RSA-4096 plus ML-KEM-768 can preserve decryption of old sealed secrets; done means AES-256-GCM remains unchanged, new secrets use both mechanisms, and compatibility is covered by the project's tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
cryptography, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.