Skip to content

Design: collaborative threshold CA for mesh via DKG + ZKP #44

@disentangle-network

Description

@disentangle-network

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.

  1. Single genesis instance generates bootstrap CA (degraded trust, acceptable for initial setup)
  2. Mesh comes up using bootstrap CA, clusters connect
  3. Genesis instances discover each other via mesh
  4. Genesis instances run DKG ceremony (verified by DID + TMC)
  5. New threshold CA replaces bootstrap CA
  6. All node certs re-signed under threshold CA
  7. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions