Expand description
FROST threshold signing over ed25519.
Implements the FROST signing protocol (draft-irtf-cfrg-frost §4 + the
ed25519 ciphersuite) so that the produced signature (R, z) is a
standard RFC-8032 ed25519 signature verifiable by any conformant
verifier (e.g. ed25519-dalek, libsodium, Go crypto/ed25519).
§Protocol
Three rounds, each producing the same final signature on every party:
-
Round 1 — each party generates a nonce pair
(d_i, e_i)and broadcasts its hiding / binding commitmentsD_i = d_i·B,E_i = e_i·B. No incoming messages. -
Round 2 — each party receives all commitments, computes the per-party binding factor
ρ_i, the group commitmentR = Σ_i (D_i + ρ_i·E_i), and the challengec = SHA-512(R ‖ A ‖ M) mod ℓ. Each party then emits its share responsez_i = d_i + ρ_i·e_i + λ_i·s_i·cwhereλ_iis the Lagrange coefficient over the participating set ands_iis this party’s long-term secret share. -
Round 3 — each party receives every other party’s
z_i, verifies each against its commitment (proof-of-byzantine detection), and aggregatesz = Σ_i z_i. The final signature is(R, z). The party verifiesz·B == R + c·Abefore emitting it.
Because every party observes the same commitment set and computes the
same R, c, and λ_i weights, the aggregated signature is
identical across all parties — exactly what the threshold property
demands.
§Deviations
-
Three rounds, not two. FROST is a “two-round” protocol in the sense that there are two communication rounds (commit, respond). The framework’s round model treats aggregation as a separate local round, so we expose three rounds here. Parties that only need the signature from a coordinator could fold round 3 into the coordinator’s logic; this implementation makes every party an aggregator so the test harness can assert cross-party agreement.
-
Nonce generation is not deterministic. The spec recommends deriving nonces deterministically from
(secret, nonce_seed, msg)via H3; this implementation usesOsRngfor simplicity. A future revision should add the deterministic path so signing sessions are reproducible and side-channel-resistant under repeated inputs.
Structs§
- Frost
Ed25519 - FROST-ed25519 threshold signing scheme.
Constants§
- SCHEME_
NAME - Canonical scheme name advertised through the registry.