Flexible Round-Optimized Schnorr Threshold Signatures - An interactive visualization of how multiple signers collaborate to create a single, unforgeable signature.
FROST (Flexible Round-Optimized Schnorr Threshold) is a threshold signature scheme where t-of-n participants must cooperate to create a valid signature. The resulting signature is indistinguishable from a regular Schnorr signature.
No single party holds the complete private key. At least t participants must collaborate, preventing any individual from signing alone.
Efficient signing in just two communication rounds: commitment exchange followed by signature share generation.
The final signature is a standard Schnorr signature, verifiable with any compatible Schnorr verification implementation.
Provides EUF-CMA security: even with t-1 corrupted participants, adversaries cannot forge signatures.
Adjust the threshold: At least 3 signers must participate to create a valid signature.
FROST involves two types of participants: Signers who hold secret key shares and contribute to signature generation, and a Coordinator who orchestrates the protocol and aggregates the final signature.
Orchestrates the protocol, collects commitments and shares, aggregates the final signature.
Each signer receives their secret key share through Shamir's Secret Sharing during the Distributed Key Generation (DKG) ceremony. The complete private key is never reconstructed - only signature shares are combined.
In the first round, each signer generates cryptographic nonces and sends commitments to the Coordinator. These commitments ensure the protocol's security by binding signers to their random values before seeing the message.
Each signer generates two random nonces using secure randomness combined with their secret key:
Compute public commitments and send to Coordinator:
where d, e are secret scalars and D, E are the corresponding elliptic curve points (commitments)
Nonces must never be reused. The hiding and binding nonces are deleted immediately after generating the signature share. Reusing nonces can lead to complete key recovery by an attacker.
The Coordinator broadcasts the message and all commitments to participating signers. Each signer then computes their signature share using their secret key share and nonces.
Coordinator sends the message m and the complete commitment list
[(i, D_i, E_i)] to all signers.
Each signer computes binding factors from the commitment list to prevent manipulation attacks.
Calculate the combined group commitment R from all individual
commitments.
Generate signature share z_i using Lagrange interpolation
and the challenge.
The λ_i value is the Lagrange interpolation coefficient, allowing
signature shares to be combined correctly. It's computed as:
λ_i = ∏(j / (j - i)) for all j ≠ i in the participant set.
The Coordinator collects all signature shares and combines them into the final Schnorr signature. Before releasing the signature, verification should be performed.
Signature Shares
Aggregation
Final Signature
The final signature (R, z) is verified using standard Schnorr verification:
z * G == R + c * PK
where c = H(R, PK, m) is the challenge.
Watch the FROST protocol in action. Click "Start Signing" to see how signers exchange commitments and generate signature shares.
The demo is ready. Three signers will collaborate with the Coordinator to produce a threshold signature. Watch as commitments and signature shares flow through the network.
RFC 9591 defines five ciphersuites for different elliptic curves and hash functions. Choose based on your compatibility requirements and security preferences.
| Ciphersuite | Curve | Hash | Use Case | Notes |
|---|---|---|---|---|
FROST(ristretto255, SHA-512) |
ristretto255 | SHA-512 | General purpose | Recommended |
FROST(Ed25519, SHA-512) |
Ed25519 | SHA-512 | EdDSA compatibility | EdDSA |
FROST(Ed448, SHAKE256) |
Ed448 | SHAKE256 | EdDSA compatibility | EdDSA |
FROST(P-256, SHA-256) |
P-256 (secp256r1) | SHA-256 | NIST compliance | ECDSA compatible curve |
FROST(secp256k1, SHA-256) |
secp256k1 | SHA-256 | Bitcoin/Ethereum | Blockchain compatible |
Each ciphersuite uses domain-separated hash functions (H1-H5) to prevent cross-protocol attacks and ensure cryptographic isolation.
Group elements and scalars are serialized in a ciphersuite-specific manner, ensuring interoperability within the same ciphersuite.