Problem
launch mesh init generates the ML-DSA-87 CA private key as a flat file on the operator's local disk. Single point of trust, architecturally inconsistent with the decentralized design. The CA key holder can mint arbitrary mesh identities.
Requirements
Core: genesis-managed CA lifecycle
- Genesis manages CA key generation, storage (envelope-encrypted), signing, rotation
- Raw CA private key never leaves genesis's trust boundary
launch mesh init delegates to genesis CLI instead of running nebula-cert directly
launch mesh add requests cert signing from genesis (signing happens internally)
Target: threshold CA via Distributed Key Generation (DKG)
- Multiple genesis instances across clusters collaboratively generate a threshold CA key
- No single genesis instance ever holds the complete CA private key
- k-of-n genesis instances must cooperate to sign a node certificate
- Each partial signing verified via zero-knowledge proof (correct key share usage without revealing the share)
Trust anchor
- Genesis instances verify each other via the protocol's DID + TMC consensus
- Only topologically verified nodes can participate in DKG
- Real human relationships between operators required to establish initial trust graph
- This is a feature: the network's security IS its social topology. You cannot join without real connections.
Bootstrap sequence (resolves circular dependency)
Mesh needs CA -> CA needs collaborative genesis -> genesis needs mesh to collaborate.
- Single genesis instance generates bootstrap CA (degraded trust, acceptable for initial setup)
- Mesh comes up using bootstrap CA, clusters connect
- Genesis instances discover each other via mesh
- Genesis instances run DKG ceremony (verified by DID + TMC)
- New threshold CA replaces bootstrap CA
- All node certs re-signed under threshold CA
- Bootstrap CA revoked
Cross-project touchpoints
- protocol: ZK proof primitives, DID identity, TMC consensus for genesis verification
- genesis-operator: DKG implementation, threshold signing, envelope encryption
- launch: mesh init/add delegation to genesis
- nebula-pq: cert format compatibility with threshold-signed certificates
Open questions
- DKG protocol selection: Pedersen, Feldman, FROST -- need PQ-compatible variant for ML-DSA-87
- Threshold: 2-of-3? 3-of-5? Configurable?
- Communication channel during DKG: via nebula mesh? separate bootstrap channel?
- Certificate revocation under threshold CA
- Key resharing when new clusters join (redistribute shares without regenerating CA)
- Integration with existing protocol ZK primitives
Status
Design phase. Needs research into existing PQ-compatible DKG implementations before specifying.
Problem
launch mesh initgenerates the ML-DSA-87 CA private key as a flat file on the operator's local disk. Single point of trust, architecturally inconsistent with the decentralized design. The CA key holder can mint arbitrary mesh identities.Requirements
Core: genesis-managed CA lifecycle
launch mesh initdelegates to genesis CLI instead of runningnebula-certdirectlylaunch mesh addrequests cert signing from genesis (signing happens internally)Target: threshold CA via Distributed Key Generation (DKG)
Trust anchor
Bootstrap sequence (resolves circular dependency)
Mesh needs CA -> CA needs collaborative genesis -> genesis needs mesh to collaborate.
Cross-project touchpoints
Open questions
Status
Design phase. Needs research into existing PQ-compatible DKG implementations before specifying.