Skip to content

Security

This page summarizes the protocol-level defenses. For hostile-peer scenarios specifically, see rogue-node security. For responsible disclosure, see SECURITY.md in the repo.

  • ECDSA P-256 for all identity signatures.
  • Canonical-bytes serialization across every SDK, verified by the cross-SDK interop harness (tests/interop/).
  • Private keys never cross the network in-protocol.
  • HSM (PKCS#11) and WebAuthn/FIDO2 signer backends for hardware-backed key storage.
  • Per-signer monotonic nonces, see QDP-0001.
  • Epoch anchoring so transactions signed by a rotated key do not land after the rotation is visible.
  • Cross-domain nonce scoping, see QDP-0003.
  • M-of-N guardian recovery with time-locked veto, see QDP-0002.
  • AnchorInvalidation freezes a compromised epoch immediately (when the current epoch key is still held by the subject).
  • Guardian resignation for prospective withdrawal, see QDP-0006.
  • Proof-of-Trust tiering means a hostile validator’s blocks are classified per observer, they can pollute one viewer’s tentative pool but cannot force acceptance onto a disagreeing viewer.
  • K-of-K bootstrap so a fresh node seeding state requires quorum of trusted peers, not a single source.
  • Fork-block activation so protocol changes land at coordinated block heights; operators opt in consciously.
  • REQUIRE_NODE_AUTH=true with NODE_AUTH_SECRET enforces HMAC over inter-node gossip, probe, and snapshot endpoints.
  • RATE_LIMIT_PER_MINUTE bounds per-source ingress so a misbehaving peer cannot exhaust CPU.
  • Terminate TLS at the ingress; the node speaks plain HTTP.
  • State is persisted on disk under the node’s data directory; protect at rest with volume-level encryption (LUKS, eCryptfs, EBS encryption).
  • No secrets are stored by the protocol itself, only public keys, signatures, and payloads.

The reference node enforces per-IP rate limits at RATE_LIMIT_PER_MINUTE. For adversarial deployments, front with a CDN/WAF (Cloudflare, CloudFront, Fastly) and enable bot protection on the public surface.

Do not open public issues. Use the disclosure channel described in SECURITY.md.