Skip to content

feat(ca): decentralized threshold CA with RFC 9591 FROST, single-round enrollment, and ROAST (#39) - #180

Merged
vxfemboy merged 12 commits into
mainfrom
feat/threshold-ca
Oct 27, 2026
Merged

vxfemboy merged 12 commits into
mainfrom
feat/threshold-ca

Conversation

@vxfemboy

Copy link
Copy Markdown
Member

Closes #39.

Overview

Implements an online, decentralized hBcof-$ threshold Certificate Authority (CA) using RFC 9591 Flexible Round-Optimized Schnorr Threshold (FROST) signatures over Ed25519 (frost-ed25519 v3.0.0), coexisting seamlessly alongside the existing offline single-key CA model.

Because FROST aggregates linearly into a standard 64-byte Ed25519 signature, all credentials emitted by the threshold CA are wire-format and byte-for-byte identical to single-signer certificates. Existing verifiers in crates/yip-membership, bin/yipd, and bin/yip-rendezvous require zero wire changes.

Key Architectural Enhancements

  1. RFC 9591 FROST(Ed25519, SHA-512) Ciphersuite & Interactive DKG:
    • dealer_generate and interactive 3-round Distributed Key Generation (DKG) without a trusted dealer (bin/yip-ca/src/threshold/dkg.rs).
  2. Proactive Share Refresh & Lost Share Repair (CVE-2025-58359 Hardened):
    • Zero-knowledge polynomial refresh maintaining identical group verifying key across epochs while invalidating historical compromised shares.
    • Guarded against CVE-2025-58359 threshold-drift vulnerabilities.
  3. Single-Round (1-RTT) Online Enrollment:
    • Preprocessed commitment pools (frost::round1::preprocess) pre-cached at the coordinator collapse online signing from two network round-trips to a single round-trip.
  4. ROAST Asynchronous Coordination:
    • Robust Asynchronous Schnorr Threshold state machine guarantees liveness and eliminates stalls from up to - t$ unresponsive, slow, or Byzantine signers with identifiable aborts (verify_signature_share).
  5. Rollback-Immune Nonce Vault:
    • Ephemeral nonce management (EphemeralNonceVault) bound to monotonic 128-bit CSPRNG boot_epoch_id and atomic single-use consumption (take_once) to eliminate nonce-reuse private key extraction under VM snapshots.
  6. Daemon Network Architecture & Automated Background Rotation:
    • yip-ca serve --role coordinator and --role signer.
    • yip-ca enroll client utility.
    • yipd background monitoring with automated certificate renewal at $\ge 70%$ of TTL.
    • UNIX control socket commands: yipd cert status and yipd cert renew.
  7. End-to-End Verification:
    • 20 unit/integration tests in yip-ca.
    • renewal_test.rs in yipd.
    • run-netns-threshold-ca.sh end-to-end multi-namespace bridge integration test.

@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 18:11 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 18:11 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 18:20 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 18:20 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 19:13 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 19:13 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 19:20 — with GitHub Actions Inactive
@vxfemboy
vxfemboy temporarily deployed to benchmark-approval October 27, 2026 19:20 — with GitHub Actions Inactive
@vxfemboy
vxfemboy merged commit 13a5fe2 into main Oct 27, 2026
11 checks passed
@vxfemboy
vxfemboy deleted the feat/threshold-ca branch October 27, 2026 19:23

This branch was previously deployed

1 inactive deployment
benchmark-approval — 4fd23c46 Deployed Oct 27, 2026 by vxfemboy via iperf-netem-bench #76
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

backlog (research, no priority): decentralized threshold CA

1 participant