Library

The Byzantine Generals Problem in Threshold Signing

Learn how a threshold signing system handles peers that fail, withhold messages, or send invalid cryptographic contributions.

Main claim: A threshold signing system preserves safety by rejecting invalid protocol contributions, while availability still depends on enough usable participants.

A distributed signer has to handle more than crashed machines. A compromised peer can stay online while sending malformed, inconsistent, or strategically delayed messages. Cryptographic checks can expose some of this behavior and stop an invalid signature. This article explains what the Byzantine Generals Problem means for threshold signing, which failures a quorum can tolerate, and which failures still stop an operation.

What is the Byzantine Generals Problem?

The Byzantine Generals Problem asks how distributed participants can coordinate when some participants may lie.

In the original model, a commander sends an order such as ATTACK or RETREAT to several lieutenants. Loyal lieutenants must reach a compatible decision. A traitorous commander may send ATTACK to one lieutenant and RETREAT to another, while a traitorous lieutenant may report different messages to different recipients.

The story captures an important failure mode: a faulty participant can produce plausible but conflicting information. Silence is only one possible behavior.

A distributed protocol therefore needs rules for accepting messages, detecting contradictions, and choosing a safe outcome. When the protocol cannot prove a valid outcome, aborting preserves safety at the cost of availability.

How is a Byzantine fault different from a crash?

A crash fault removes a participant from the protocol. The peer stops responding, loses its network path, or exceeds a deadline.

A Byzantine fault lets a participant behave arbitrarily. The peer may send an invalid share, send different values to different peers, replay session data, or stop after other participants have committed state.

The distinction changes incident handling:

Observed behavior Possible cause What the protocol can establish
No response before deadline crash, network loss, deliberate silence the contribution is unavailable
Malformed value bug, corruption, malicious input the value fails validation
Invalid signature share wrong state or malicious contribution the share fails its cryptographic check
Valid message followed by silence outage or deliberate abort the session cannot complete
Conflicting valid-looking messages split view or coordinator abuse detection depends on authenticated transcripts and protocol rules

A timeout identifies missing progress. It gives no proof of motive.

Which properties must the system preserve?

Safety means the system produces a valid result only after the required protocol checks succeed. An invalid contribution should lead to rejection or session abort.

Availability means an authorized operation can finish within its deadline. A malicious peer may damage availability by withholding a required message even when it cannot forge the final signature.

Attribution means the system can link a proven invalid contribution to a participant. Attribution requires authenticated peer identities and protocol evidence.

These properties have different limits. A protocol can preserve the private key and reject bad shares while one peer repeatedly blocks signing.

Is threshold signing a Byzantine consensus protocol?

Threshold signing applies Byzantine-fault ideas to a narrower task: several participants cooperate on one cryptographic operation.

Classical Byzantine agreement asks honest nodes to choose a common value despite conflicting messages. Threshold signing starts with a message to sign, runs a protocol over key shares, and produces a signature only when enough contributions satisfy the protocol.

The well-known 3f + 1 participant bound belongs to Byzantine agreement under the oral-message model from the original paper. It cannot be copied into a threshold signing configuration. A 2-of-3 signing threshold and a four-node Byzantine consensus cluster solve different problems and rely on different assumptions.

Threshold protocols also vary in robustness. Some protocols identify a bad contribution and let the application retry with another participant. Others abort the current session and leave recovery to the surrounding system.

What can one faulty peer do in a 2-of-3 signer?

One faulty peer stays below the signing threshold in a 2-of-3 system. The peer alone cannot produce the group signature.

One silent peer still leaves two available peers. The operation can finish when the protocol and coordinator can form a fresh signing set from those two peers.

One peer that joins a session and then sends an invalid contribution may force that attempt to abort. A later attempt can use another participant when the application identifies or excludes the faulty peer.

One malicious coordinator can also suppress progress, select an unusable participant set, or send inconsistent session data. Clients need another healthy coordinator path if availability must survive that failure.

The quorum therefore limits unilateral key use. Request completion still depends on enough usable peers and a working coordinator path.

What changes in a 3-of-5 signer?

A 3-of-5 signer has room for two unavailable participants while three usable peers remain.

The same configuration keeps one or two stolen shares below the threshold. Reaching three compromised shares crosses the cryptographic boundary.

Fault tolerance still depends on protocol flow. If a session selects three participants and one withholds its final message, that session may abort even though two other healthy peers exist outside the selected set.

Retry logic, coordinator redundancy, deadlines, and exclusion rules turn spare peers into practical availability. The number n - t describes capacity; the surrounding implementation decides how the system uses it.

How can a protocol detect an invalid contribution?

Cryptographic verification can test whether a participant's contribution matches its public commitments and the current transcript.

FROST provides a concrete example. Its coordinator can verify each signature share against the participant's public verification share, the group commitment, the message, and the participant set. A failed check can identify the sender of an invalid share on an authenticated channel.

FROST still allows denial of service. RFC 9591 describes identifiable abort for invalid shares and leaves removal or retry behavior to the application.

Other threshold protocols use their own evidence. A threshold ECDSA flow may validate zero-knowledge proofs and round commitments. Threshold ECIES can validate a decryption share with a discrete-log equality proof.

Protocol-specific evidence matters because a generic error code cannot prove that a peer acted maliciously.

Which failures remain ambiguous?

Silence remains ambiguous because a crashed peer and a malicious peer can both miss the same deadline.

Network partitions also create partial views. One peer may receive a round message while another waits until timeout.

Probabilistic protocols add another source of ambiguity. Threshold ML-DSA may abort during healthy rejection sampling, so an aborted attempt alone gives no evidence of a Byzantine participant.

Operators should classify evidence by strength:

Signal Supported conclusion
Deadline exceeded the required message arrived too late
Parsing or domain check failed the submitted value was invalid
Signature-share verification failed that contribution conflicts with the verified transcript
Aggregate verification failed the result is invalid; attribution needs share-level checks
ML-DSA rejection-sampling abort the attempt needs fresh session state

The incident system should keep these conclusions separate.

How does TKeeper report peer faults?

TKeeper uses dead for peers that fail to contribute where the protocol tracks availability. It uses imposters when protocol evidence identifies an invalid contribution.

The evidence varies by operation. FROST, GG20, and threshold ECIES can expose some participant-specific failures. Threshold ML-DSA validates its transcript, while healthy rejection sampling can still abort an attempt.

An empty imposters list means the operation reported no proven imposter under that protocol path. It provides no health certificate for every participant.

TKeeper also depends on a coordinator for distributed sessions. A faulty coordinator can stop the current operation, so deployments that require coordinator-failure tolerance need a client path to another eligible coordinator.

What should happen after a peer fails?

The system should stop using a contribution that failed validation. Continuing with an unverified share can turn an availability incident into an integrity failure.

The next action should follow the evidence:

  1. Record the operation id, generation, participant set, round, deadline, and authenticated peer identity.
  2. Preserve signed audit data and protocol evidence needed for investigation.
  3. Retry with a fresh session when enough healthy peers remain and the protocol permits another participant set.
  4. Remove a peer from service after strong evidence or an operational decision.
  5. Repair cross-peer generation state before starting another lifecycle operation.
  6. Rotate key material when the incident may have crossed the share threshold or exposed unsafe protocol state.

Automatic exclusion needs limits. A network partition that marks several honest peers unavailable can otherwise remove the remaining signing capacity.

Which failures should a test plan cover?

A Byzantine-resilience test should separate safety assertions from availability assertions.

Test these cases:

  1. One peer stays silent before the first round.
  2. One peer stops after sending an initial commitment.
  3. One peer sends a malformed encoded value.
  4. One peer sends a well-formed contribution that fails cryptographic verification.
  5. The coordinator sends inconsistent participant lists.
  6. The coordinator becomes unavailable mid-session.
  7. Two peers disagree about the active key generation.
  8. A network partition leaves exactly t peers together.
  9. A network partition leaves fewer than t peers together.
  10. Threshold ML-DSA exhausts healthy rejection-sampling retries.

For every case, assert four outcomes: whether a signature appeared, whether it verifies, which peer evidence was recorded, and whether a fresh session can recover.

Which monitoring signals show shrinking resilience?

Quorum margin shows how close the signer is to losing availability. A 3-of-5 cluster with four healthy peers has one remaining failure before it falls below threshold.

Session metrics show faults that health checks miss. A peer can answer a liveness endpoint while returning invalid protocol data.

Track:

  • healthy and unsealed peers
  • usable peers minus the signing threshold
  • session failures by protocol and round
  • peer timeouts
  • verified invalid contributions
  • coordinator-specific failure rates
  • signing latency and retry count
  • active generation agreement
  • ML-DSA rejection-sampling retries

Alerts should distinguish missing messages, invalid messages, and healthy probabilistic aborts. Each signal leads to a different response.

Which design mistakes weaken Byzantine resilience?

Treating all failures as malicious creates false attribution. Use cryptographic evidence for imposter claims and availability language for timeouts.

Treating every online peer as usable hides protocol failures. Measure completed rounds and valid contributions.

Using one coordinator endpoint creates a single availability path. Provide a tested alternative when the service objective requires it.

Running peers in one host or administrative account makes several logical participants fail together. Place shares in failure domains that match the threat model.

Retrying with the same session state can violate protocol assumptions. Start with fresh session material when the protocol requires it.

Keeping inconsistent key generations active risks split behavior. Stop signing and repair consistency from quorum-backed state.

Where does Byzantine resilience stop?

Threshold signing preserves secrecy only while compromised shares stay below t.

Enough malicious peers can reach the signing threshold, withhold the quorum, or coordinate protocol abuse within the assumptions of the chosen scheme.

Independent authority policy still determines which message deserves a signature. Honest peers can jointly sign a harmful action when every peer accepts an overly broad policy.

The downstream verifier still controls the effect. A valid signature has value only when the backend checks the expected identity, action fields, freshness, and replay rules.

What should you do next?

Choose one threshold identity and write separate failure budgets for compromised peers, unavailable peers, and coordinators. Then test each budget with real protocol sessions and verify the final signature at the downstream boundary.

Read How MPC Distributes AI Agent Signing Risk Across Multiple Nodes for threshold selection and What Is Key Refresh? for limiting share accumulation across generations.