Confium Threat Model
This document captures the threat model for Confium as a framework. Per-deployment threat models are the consumer’s responsibility (Confium is configurable; a threshold CA has different threats than a DeFi bridge custody system).
Status: Draft. Reviewed by external security researchers.
Assets
What an attacker might want to compromise.
| Asset | Where it lives | Compromise impact |
|---|---|---|
| Threshold signing key | Split across N shares, never assembled | Forge signatures; impersonate the quorum |
| Individual share | One per party, under HSM/file/memory | One share alone is useless; reduces effective threshold by 1 |
| Joint public key | Public; published in cert / transparency log | No confidentiality impact; integrity impact = catastrophic |
| DKG transcript | Coordinator ephemeral state | Privacy of which party contributed what; integrity = DKG soundness |
| Signing transcript | Coordinator ephemeral state | Privacy of which party contributed what; integrity = signature unforgeability |
| Transparency log | Public log server storage | Append-only invariant; compromise = silent rewrite of history |
| Witness signatures | Each witness’s storage | Compromise = false “I saw this head” claim |
| OIDC JWT | CI/CD runtime; short-lived | Forge a keyless signing identity |
| Short-lived cert | CI/CD + transparency log | Forge a keyless attestation |
| CA root (threshold) | Underlying threshold keys | Issue arbitrary certs under the CA |
Adversaries
Who might attack.
| Adversary | Capability | Motivation |
|---|---|---|
| Network attacker | Observe / modify traffic between parties, coordinator, log | Disrupt; MITM |
| Malicious party (T-1 of them) | Deviate from protocol, drop messages, replay | Forge signature without the threshold |
| Malicious coordinator | Drop / replay / reorder messages; observe transcripts | DoS; metadata leak; bias outcomes |
| Malicious log server | Serve different heads to different witnesses | Silent rewrite of history |
| Malicious verifier | Run verifier with non-standard policy | Accept forgeries as valid |
| Supply chain attacker | Compromise a dep (crate, base image, action) | Persist access across all deployments |
| Insider (operator) | Has shell access to operator machines | Steal shares from disk if not HSM-protected |
| Quantum adversary | Future; large-scale quantum computer | Break ECDSA / Ed25519; need PQ migration |
Trust boundaries
┌────────────────────────────────────────────────────────────────────┐
│ Threshold quorum (T-of-N) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Party 1 │◄──►│ Party 2 │◄──►│ Party N │ (peer-to-peer) │
│ │ HSM │ │ HSM │ │ HSM │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Coordinator │ (network boundary) │
│ └────────┬─────────┘ │
└───────────────────────┼─────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ Transparency log │
│ ┌──────────┐ ┌──────────┐ │
│ │ Log │◄──►│ Witness │ │
│ │ Server │ │ 1..N │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Public verifiers │
│ Browser, CLI, server-side (HTTP verify), CI gate │
└─────────────────────────────────────────────────────────────────────┘
Threats → mitigations
Threshold signing
| Threat | Mitigation |
|---|---|
| T-1 parties collude to forge signature | Information-theoretic threshold; needs T shares to sign |
| Malicious coordinator reorders messages | Round-by-round transcript hashing; parties verify before signing |
| Replay of old signing transcript | Session ID embedded in every signature; verifier checks |
| Share theft from disk | HSM backing (PKCS#11 / OpenPGP card); zeroize on unload |
| DKG subliminal channel | Feldman VSS with verifiable commitments; parties verify |
| Nonce reuse | RFC 8941 deterministic nonce derivation; never reuse (d, e) |
| Malicious party submits bad share | Identifiable abort (CMP20); offending party reported |
Transparency log
| Threat | Mitigation |
|---|---|
| Log mis-issuance (backdated entries) | Witness gossip; cross-witness head verification |
| Log silent rewrite | OTS anchoring to Bitcoin (or other public chain) |
| Log presents different heads to different verifiers | Witnesses publish signed heads; monitors compare |
| Long-term algorithm weakness | ERS renewal cadence re-strengthens archival evidence |
| Monitor goes dark | Multiple monitors required for “auditable” claim |
Keyless
| Threat | Mitigation |
|---|---|
| OIDC JWT replay | aud claim pinned to Confium; exp short (10 min) |
| OIDC JWT forgery | Verify against provider’s published JWKS; fetch fresh |
| Short-lived cert overstay | TTL 10 min; cert embedded in transparency log so CA can’t reissue retroactively |
| Identity spoofing | OIDC sub claim must match verifier’s policy |
PKI
| Threat | Mitigation |
|---|---|
| CA key compromise | Threshold CA: T parties required to issue |
| Mis-issuance by colluding threshold quorum | Attribute-based policies; transparency log anchor |
| Composite signature alg break | Strict (ALL components must verify) policy by default |
| PQ migration window | Composite signatures bridge classical + PQ; either/both unbroken |
Verify
| Threat | Mitigation |
|---|---|
| Verifier fooled by forged signature | Standard signature verification; no shortcuts |
| Verifier cache poisoning | Cache keyed by `hash(message |
| Verifier DoS via expensive inputs | Rate limit + LRU cache; verify-server is stateless so scale horizontally |
Cross-cutting
| Threat | Mitigation |
|---|---|
| Supply chain compromise (Rust crate) | cargo-deny + cargo-audit in CI; SBOM per release; SLSA provenance |
| Supply chain compromise (Docker base) | Distroless base; Trivy scan; SLSA provenance |
| Insider (operator) | HSM share protection; all sessions logged |
| Compromised GitHub Action | OIDC trusted publishing (no NPM_TOKEN); pin action SHAs |
Residual risks
Things Confium does NOT defend against:
- T or more parties colluding — by design, T parties can sign. Choose T accordingly.
- Coordinator + T-1 parties colluding — coordinator sees transcript metadata; combined with T-1 shares can forge.
- Future quantum adversary — until PQ composites are universal, signatures are quantum-vulnerable.
- Provider-side OIDC compromise — if GitHub Actions’ OIDC issuer is compromised, Confium accepts the resulting keyless certs.
- Witness cartel — if all witnesses collude with the log, fork detection fails. Use multiple independent witness operators.
- Cryptanalytic breaks in underlying curves — if P-256 falls, all P-256 threshold signatures fall.
Security audit status
- Internal review: ongoing
- External audit: TBD (seeking funding via NLnet NGI Zero PET)
- Bug bounty: in progress post-1.0
- Pen test of reference deployment: in progress with partner
Reporting issues
See SECURITY.md for the disclosure process. Do NOT open public issues for security vulnerabilities.
References
- CMP20 paper — Gennaro & Goldfeder 2020
- GG18 paper — Gennaro & Goldfeder 2018
- FROST paper — Komlo & Goldberg 2020
- RFC 6962 — Certificate Transparency
- RFC 4998 — Evidence Record Syntax (ERS)
- NIST MPTS evaluation harness —
crates/confium-test-harness