Back to all stories
Technical Blogs
Technical Insights
Threshold Cryptography II: Unidentifiability in Decentralized FROST Implementation
6/10/2025
Threshold Cryptography II: Unidentifiability in Decentralized FROST Implementation

The second post in our Threshold Cryptography series explores the FROST threshold signing protocol, as proposed in FROST: Flexible Round-Optimized Schnorr Threshold Signatures [1], and highlights a potential issue that arises when implementing the protocol in a decentralized setting. This issue allows a malicious participant to send inconsistent nonce commitments, leading to honest participants to be falsely accused of misbehavior.

FROST is a novel threshold signature scheme based on the Schnorr signature, so we will begin by reviewing the fundamentals of Schnorr signature.

Schnorr Signature

A Schnorr signature over a message

KaTeX can only parse string typed expression
using a secret key
KaTeX can only parse string typed expression
and its corresponding public key
KaTeX can only parse string typed expression
involves the following steps, where the group
KaTeX can only parse string typed expression
consists of elliptic curve points generated by the generator
KaTeX can only parse string typed expression
of a large prime order
KaTeX can only parse string typed expression
and
KaTeX can only parse string typed expression
denotes the scalar multiplication on curve points.

Signature Generation

  • Sample a random unused nonce
    KaTeX can only parse string typed expression
    from
    KaTeX can only parse string typed expression
    (i.e., nonzero elements in the prime field
    KaTeX can only parse string typed expression
    ), and compute the nonce commitment
    KaTeX can only parse string typed expression
    .
  • Calculate the challenge scalar
    KaTeX can only parse string typed expression
    , where
    KaTeX can only parse string typed expression
    is a cryptographic hash function.
  • Compute the response
    KaTeX can only parse string typed expression
    mod
    KaTeX can only parse string typed expression
    .
  • The signature is
    KaTeX can only parse string typed expression
    where
    KaTeX can only parse string typed expression
    is a curve point
    KaTeX can only parse string typed expression
    and
    KaTeX can only parse string typed expression
    is a scalar
    KaTeX can only parse string typed expression
    .

The signature generation process is incorporated in the formula modified from the one in Notes on Threshold EdDSA/Schnorr Signatures [3], Page 9.

1 Graph

Signature Verification

Given signature

KaTeX can only parse string typed expression
:

  • Compute the challenge scalar
    KaTeX can only parse string typed expression
    .
  • Then compute commitment
    KaTeX can only parse string typed expression
    , where
    KaTeX can only parse string typed expression
    denotes scalar multiplication and
    KaTeX can only parse string typed expression
    denotes the curve point subtraction.
  • The signature is valid if
    KaTeX can only parse string typed expression
    .

FROST Threshold Signature Scheme

The FROST protocol specifies a threshold Schnorr signature scheme executed in three phrases over two communication rounds. It assumes a secret key

KaTeX can only parse string typed expression
is shared among
KaTeX can only parse string typed expression
participants via key distribution with a trusted dealer or distributed key generation (as described in Threshold Cryptography I: Distributed Key Generation [4]) such that any subset of
KaTeX can only parse string typed expression
or more participants are able to reconstruct the secret key.

In both FROST [1] and RFC 9591 [2], the protocol incorporates a semi-trusted signature aggregator (SA) to enhance efficiency. The SA is a participant or an external entity, depending on implementation.

2 Graph

The protocol is instantiated with a generator

KaTeX can only parse string typed expression
on an elliptic curve
KaTeX can only parse string typed expression
of large prime order
KaTeX can only parse string typed expression
, and operates over the finite field
KaTeX can only parse string typed expression
and its multiplicative subgroup
KaTeX can only parse string typed expression
(i.e., nonzero elements in
KaTeX can only parse string typed expression
). Two hash functions,
KaTeX can only parse string typed expression
and
KaTeX can only parse string typed expression
, map arbitrary strings to
KaTeX can only parse string typed expression
.

1. Nonce Pair Generation

Each participant

KaTeX can only parse string typed expression
generates an unused nonce pair
KaTeX can only parse string typed expression
with each in
KaTeX can only parse string typed expression
along with its commitments
KaTeX can only parse string typed expression
such that
KaTeX can only parse string typed expression
and
KaTeX can only parse string typed expression
.

2. Signing

  1. SA selects a subset
    KaTeX can only parse string typed expression
    of
    KaTeX can only parse string typed expression
    distinct participants to join the signing process, then computes the public key
    KaTeX can only parse string typed expression
    of the group of these participants, where
    KaTeX can only parse string typed expression
    is the public key share of
    KaTeX can only parse string typed expression
    that is publicly known.
  2. SA creates an ordered list
    KaTeX can only parse string typed expression
    of the participant index and nonce commitments where
    KaTeX can only parse string typed expression
    .
  3. SA broadcasts
    KaTeX can only parse string typed expression
    to all the participants, where
    KaTeX can only parse string typed expression
    is the message.
  4. Upon receiving
    KaTeX can only parse string typed expression
    , each participant
    KaTeX can only parse string typed expression
    validates message
    KaTeX can only parse string typed expression
    and checks that all nonce commitments are in
    KaTeX can only parse string typed expression
    but are not the identity.
  5. Then
    KaTeX can only parse string typed expression
    calculates the binding values
    KaTeX can only parse string typed expression
    ,
    KaTeX can only parse string typed expression
    , group commitment
    KaTeX can only parse string typed expression
    and challenge
    KaTeX can only parse string typed expression
    .
  6. KaTeX can only parse string typed expression
    then computes its signature share
    KaTeX can only parse string typed expression
    with its Shamir secret share
    KaTeX can only parse string typed expression
    and multiplied by the Lagrange coefficient
    KaTeX can only parse string typed expression
    to convert the Shamir secret share into additive secret share, and nonce pair
    KaTeX can only parse string typed expression
    .
  7. Finally,
    KaTeX can only parse string typed expression
    sends
    KaTeX can only parse string typed expression
    to the SA and deletes the used nonce pair and commitments.

3. Signature Share Aggregation

  1. For each
    KaTeX can only parse string typed expression
    , SA computes
    KaTeX can only parse string typed expression
    ,
    KaTeX can only parse string typed expression
    , then aggregates the group commitment
    KaTeX can only parse string typed expression
    . The challenge is computed via
    KaTeX can only parse string typed expression
    .
  2. Each signature share
    KaTeX can only parse string typed expression
    is verified through
    KaTeX can only parse string typed expression
    , where
    KaTeX can only parse string typed expression
    is the
    KaTeX can only parse string typed expression
    ’s public key share
    KaTeX can only parse string typed expression
    and
    KaTeX can only parse string typed expression
    is the Lagrange coefficient. This corresponds to individual Schnorr signature share verification. If any check fails, the corresponding
    KaTeX can only parse string typed expression
    is identified as misbehavior and the process is aborted.
  3. Upon successful verification, the final signature is aggregated as
    KaTeX can only parse string typed expression
    where
    KaTeX can only parse string typed expression
    .

Unidentifiability Issue

In some implementations, the protocol is executed in a decentralized manner by eliminating the signature aggregator for ease of implementation. Each participant independently broadcasts their nonce commitments and signature shares to all other participants.

The Issue

Without a signature aggregator, participants may receive inconsistent nonce commitments from a malicious participant. As in Section 7.5 of RFC 9591 [2], this could possibly lead to an invalid signature:

“The requirements for the underlying network channel remain the same in the setting where all participants play the role of the Coordinator, in that all exchanged messages are public and the channel must be reliable. However, in the setting where a player attempts to split the view of all other players by sending disjoint values to a subset of players, the signing operation will output an invalid signature. To avoid this DoS, implementations may wish to define a mechanism where messages are authenticated so that cheating players can be identified and excluded.”

In addition to the DoS attack, this version of FROST implementation loses its identifiability feature. Even worse, it also enables a malicious participant to falsely implicate honest participants as misbehaving.

  • By sending the different commitments to subsets of the group, the malicious participant is able to partition the participants into divergent views of the set of nonce commitments
    KaTeX can only parse string typed expression
    ,
    KaTeX can only parse string typed expression
    .
  • Each participant generates its signature share based on its local view of
    KaTeX can only parse string typed expression
    , including the nonce commitment received from the malicious participant.
  • Consequently, signature shares from participants with differing views become invalid during verification, causing honest participants to be incorrectly flagged as misbehavior.
  • Depending on the specific operations later, the worst scenario would allow malicious actors to kick out honest participants.

An Example

Let’s consider a case with 4 participants, where Participant 1 is malicious and the others are honest.

  1. Participant 1 sends inconsistent nonce commitments:
    KaTeX can only parse string typed expression
    to Participants 2 and 3, and
    KaTeX can only parse string typed expression
    to Participant 4.
  2. Each participant then computes its signature share based on its local view of the nonce commitments.
  3. During the signature verification,
    • Verification of the signature share of participant 4 fails in participants 2 and 3, and it could also fail in participant 1 as it’s malicious.
    • Verification of the signature share of participant 2 or 3 fails in participant 4 depending on the order of arrival of the message.
    • Verification of the signature share of participant 1 is successful in all participants as it could send different signature shares based on the receiver’s local view of the nonce commitment.
  4. As a result, the honest Participant 4 will be falsely accused of misbehavior.

3 Graph

This enables the malicious participant to remain undetected while falsely implicating an honest participant as misbehavior.

To mitigate this issue, the protocol may incorporate an additional round in which each participant verifies that all received nonce commitments are consistent across the network. If any inconsistency is detected, the protocol aborts immediately.

This mitigation relies on the assumption that at least two participants are honest, ensuring that any deviation from consistency will be detected. While it may be possible to isolate the group of honest participants, it is not feasible to isolate a single honest party without the others noticing the discrepancy.

Conclusion

This post reviewed the Schnorr signature and its threshold signature scheme, FROST protocol with signature aggregator role, highlighting challenges in decentralized implementations without an aggregator. The next three posts will cover the ECDSA threshold signature scheme in GG18 [5] and its implementation in Binance's Go-based library, tss-lib [6].

References

  1. Chelsea Komlo, Ian Goldberg, 2020: FROST: Flexible Round-Optimized Schnorr Threshold Signatures.
  2. Deirdre Connolly, Chelsea Komlo, Ian Goldberg, Christopher A. Wood, 2024: RFC 9591.
  3. Luís T. A. N. Brandão, Michael Davidson, 2022: Notes on Threshold EdDSA/Schnorr Signatures.
  4. CertiK, 2025: Threshold Cryptography I: Distributed Key Generation
  5. Rosario Gennaro, Steven Goldfeder, 2018: Fast Multiparty Threshold ECDSA with Fast Trustless Setup (GG18)
  6. Binance: https://github.com/bnb-chain/tss-lib.
Largest Blockchain Security Auditor
Ready to take the next step? Connect with our sales team to request your free quote and secure your project today!
Client Testimonials