The Zcash ArboretumFROST Guide PDF

4 Signing and aggregation

This section states FROST signing as RFC 9591 specifies it, in execution order: the ciphersuite interface with its hash roles and the encoding of a commitment list; Round One, which draws hedged nonces and commits to them; Round Two, which binds each signature share to the message and to the whole commitment list; aggregation with share verification; the correctness of an honest run; and the single use of nonces, with the exact condition under which reuse of a nonce pair exposes a share. Threshold parameters, signing sets, Lagrange coefficients and key material are those of §2; the key material is the output of either key generation of §3.

4.1 Ciphersuites and encodings

Definition 4.1 (Ciphersuite).

A ciphersuite fixes the following data.

  1. (a)

    A group 𝔾 of prime order q, written additively, with identity 𝒪 and generator B, and its scalar field 𝔽q. Write 𝔾∗:=𝔾∖{𝒪}.

  2. (b)

    An element serialisation 𝗌𝖾𝗋𝔾, mapping either every element of 𝔾 or every element of 𝔾∗ injectively to a byte string of fixed length Ne, and an element deserialisation 𝖽𝖾𝗌𝖾𝗋𝔾, which maps a byte string to an element of 𝔾∗ or fails. It fails on every string that is not the canonical encoding 𝗌𝖾𝗋𝔾⁢(P) of some P∈𝔾, and on the encoding of 𝒪 where one exists; on every other string it inverts 𝗌𝖾𝗋𝔾. The serialisation is total if its domain is 𝔾.

  3. (c)

    A scalar serialisation 𝗌𝖾𝗋𝔽q, mapping 𝔽q injectively to byte strings of fixed length Ns, and a scalar deserialisation 𝖽𝖾𝗌𝖾𝗋𝔽q, which fails on every string whose integer value is not below q and inverts 𝗌𝖾𝗋𝔽q otherwise.

  4. (d)

    Hash functions by role:

    H1,H2,H3:{0,1}8⁣∗→𝔽q,H4,H5:{0,1}8⁣∗→{0,1}8⁢Nh,

    where {0,1}8⁣∗ denotes the byte strings and Nh is the digest length of the suite. The roles are: H1 the binding factor, H2 the challenge, H3 the nonce, H4 the message pre-hash and H5 the commitment-list pre-hash.

  5. (e)

    The signature encoding 𝗌𝖾𝗋𝔾⁢(R)∥𝗌𝖾𝗋𝔽q⁢(z) of a pair (R,z)∈𝔾×𝔽q, and the single-party verification: a pair (R,z) is accepted on a message m under a public key 𝑃𝐾 if and only if

    [z]⁢B=R+[c]⁢𝑃𝐾,c:=H2⁢(𝗌𝖾𝗋𝔾⁢(R)⁢‖𝗌𝖾𝗋𝔾⁢(𝑃𝐾)‖⁢m).

    This is the verification of the Crypto Guide’s Construction “Schnorr signature” (§“From identification to signature via the Fiat–Shamir transform”) in additive form, with hash H2.

A ciphersuite for re-randomised signing adds

  1. (f)

    the randomiser hash HR:{0,1}8⁣∗→𝔽q (ZIP 312, “Specification” and “Randomizer Generation”).

The ciphersuites of RFC 9591 do not define HR.

The data are those of RFC 9591, Sections 3.1 (“Prime-Order Group”) and 3.2 (“Cryptographic Hash Function”), and Section 6 (“Ciphersuites”), whose Appendix A (“Schnorr Signature Encoding”) fixes the encoding and whose Appendix B (“Schnorr Signature Generation and Verification for Prime-Order Groups”) the verification equation. The requirements that RFC 9591, Section 6.6 (“Ciphersuite Requirements”), places on every ciphersuite are four: the group is of prime order and every deserialisation outputs an element of its set or fails; every hash function is domain-separated with a per-suite context string, FROST(Ed25519, SHA-512) excepted for H2 for compatibility with RFC 8032; H1, H2 and H3 have output distributions close to uniform; and the signature encoding is specified. The suite FROST(Pallas, BLAKE2b-512) separates its hashes by BLAKE2b personalisations instead, its H2 being that of RedPallas (Construction 6.1).

The generic element serialisation of RFC 9591, Section 3.1, fails on 𝒪; a suite may instead serialise every element, as FROST(Pallas, BLAKE2b-512) does with the star encoding (Ironwood Guide, Definition “Star encoding”; ZIP 312, “FROST(Pallas, BLAKE2b-512)”). In both cases the element deserialisation rejects 𝒪. Whether 𝗌𝖾𝗋𝔾 is total is the one property of a suite on which Theorem 4.11 distinguishes cases.

Assumption 4.2 (The ciphersuite hashes).

The hashes H1, H2, H3 and HR are modelled as random oracles into 𝔽q (Crypto Guide, §“The random oracle model”, Definition “Random oracle”), independent of each other and of the proof-of-knowledge hash Hdkg (Assumption 3.5): each answer at a new input is an independent sample from a distribution on 𝔽q within statistical distance δ of uniform (Math Guide, §“Statistical distance”), where δ is a parameter of the suite. The hashes H4 and H5 are modelled as independent random oracles into {0,1}8⁢Nh; hence an algorithm making Q queries finds a collision of either with probability at most

Q⁢(Q−1)2⋅2−8⁢Nh

(Math Guide, §“The union bound and a birthday calculation”, Proposition “Birthday bound”). For a suite that builds every role from one hash function under distinct personalisations, the assumption is that this function, keyed by its personalisation, is a random oracle; distinct personalisations then give independent oracles (Crypto Guide, §“Domain separation and personalisation”, Proposition “Domain separation yields independent oracles”), and δ is the bias of the reduction of its output into 𝔽q (Crypto Guide, §“Hashing to a field element”).

The assumption is the one hash assumption of every ciphersuite in this volume. RFC 9591, Section 3.2, models the ciphersuite hash as a random oracle in the security analyses it cites. The suite FROST(Pallas, BLAKE2b-512) meets the assumption with δ≤p𝖵𝖾𝗌𝗍𝖺/2512<2−257 and no further assumption, by Proposition 6.2.

Definition 4.3 (Commitment list and its encoding).

Let a ciphersuite be fixed and let I be a signing set (Definition 2.1). A commitment list over I is a sequence

L=((i,Di,Ei))i∈I,Di,Ei∈𝔾,

with one triple for each member of I: Di is the hiding commitment and Ei the binding commitment of member i. The identifiers are distinct and the triples are sorted in ascending order of the least non-negative representative of the identifier. The signing set is read off L as the set of its identifiers. The encoding of L is the byte string

𝖾𝗇𝖼⁢(L):=∥i∈I,ascending(𝗌𝖾𝗋𝔽q⁢(i)⁢‖𝗌𝖾𝗋𝔾⁢(Di)‖⁢𝗌𝖾𝗋𝔾⁢(Ei))

of length |I|⁢(Ns+2⁢Ne).

A commitment equal to 𝒪 occurs only in a suite with total element serialisation, and check (3) of Construction 4.8 rejects it.

The ordering is a requirement of RFC 9591, which states that the list must be sorted in ascending order by identifier, and compares scalars by their least non-negative representative (Sections 3.1 and 4.3, “List Operations”); the encoding is that of Section 4.3. Every component has fixed length, each serialisation is injective, and the order of the triples is fixed; hence the length of 𝖾𝗇𝖼⁢(L) determines |I|, and the string parses uniquely into the triples. The map 𝖾𝗇𝖼 is therefore injective on commitment lists over one suite, which the binding factors of Definition 4.7 require.

4.2 Round One: nonces and commitments

Construction 4.4 (Round One).

Participant Pi, holding the share 𝑠𝑘i (Definition 2.5), proceeds as follows.

  1. 1.

    It draws two independent strings Td,Te, each uniform on the 32-byte strings, and sets the hiding nonce and the binding nonce

    di:=H3⁢(Td∥𝗌𝖾𝗋𝔽q⁢(𝑠𝑘i)),ei:=H3⁢(Te∥𝗌𝖾𝗋𝔽q⁢(𝑠𝑘i)).
  2. 2.

    It sets Di:=[di]⁢B and Ei:=[ei]⁢B.

  3. 3.

    It stores (di,ei,Di,Ei), keeps (di,ei) secret, and sends (𝗌𝖾𝗋𝔾⁢(Di),𝗌𝖾𝗋𝔾⁢(Ei)) to the Coordinator over an authenticated channel (Definition 2.10, type (a)). If a serialisation fails, which happens only in a suite whose element serialisation is not total and only if Di or Ei is 𝒪, the participant discards the pair and this execution of Round One fails.

The strings Td and Te must be sampled uniformly from a secure source of randomness, and a nonce pair must not be used in more than one signing run.

The construction is RFC 9591, Section 5.1 (“Round One - Commitment”), with the hedged nonce generation of Section 4.1 (“Nonce Generation”), which always samples 32 bytes of fresh randomness and hashes them together with the serialised share. Section 5.1 requires that the nonces not be used in more than one signing and be generated from a source of secure randomness; Section 7.3 (“Nonce Reuse Attacks”) requires the randomness to be sampled uniformly. Nonces lie in 𝔽q, not in 𝔽q∗: the zero nonce is not excluded, and its consequence is case (1) of Theorem 4.11. Round One does not depend on the message or on the signing set, so a participant may run it ahead of any signing run and hold several unused pairs. The paper that introduced FROST (ePrint 2020/852, Figure 2) samples the pair uniformly from 𝔽q∗×𝔽q∗; the specified rule is the hedged derivation above, and this volume states it instead.

Lemma 4.5 (Hedged nonces are close to uniform).

Under Assumption 4.2, let an algorithm, the observer, make at most qh queries to H3 and, at one point, choose a byte string w and receive d:=H3⁢(T∥w), for T uniform on the 32-byte strings and independent of all else. The pair formed by the observer’s view and d is within statistical distance

δ+qh⋅2−256

of the pair obtained when d is replaced by a uniform element of 𝔽q independent of all else. For the two nonces of one execution of Round One, received for one string w with independent strings Td and Te, the corresponding distance is at most

2⁢(δ+qh⋅2−256)+2−256.
Proof.

The argument is that of the Ironwood Guide’s Lemma “Distance of GenRandom from uniform” (§“Randomised validating keys”), with 32 fresh bytes in place of 80 and H3 in place of the RedPallas hash. Let E be the event that the observer queries H3 at T∥w. In a second experiment the answer H3⁢(T∥w) is replaced, in the computation of d only, by an independent sample of the answer distribution. In the lazy realisation of the random oracle the answers at other inputs are independent of the answer at T∥w, so the two experiments are identical until E occurs, and their outputs are within statistical distance Pr⁢[E] (Crypto Guide, §“Security as a game”, Remark “Game-hopping”). In the second experiment the observer’s view is independent of T, so each query has prefix T with probability at most 2−256, and Pr⁢[E]≤qh⋅2−256 by the union bound. There the sample is independent of everything else, and replacing it by a uniform scalar changes the pair by at most δ (Math Guide, §“Statistical distance”, Theorem “Properties of statistical distance”, part (4)). The triangle inequality, part (2) of the same theorem, gives the first bound.

For the pair, the event Td=Te, of probability 2−256, is excluded at that cost; outside it the inputs Td∥w and Te∥w are distinct. The event that the observer queries either input has probability at most 2⁢qh⋅2−256, and two independent samples are replaced by uniform scalars at cost 2⁢δ. □

The nonces are therefore close to uniform, not uniform, whatever the share; RFC 9591, Section 7.3, states that they are indistinguishable from values sampled uniformly at random, and the lemma quantifies that statement. For FROST(Pallas, BLAKE2b-512), with the δ of Proposition 6.2, the first bound at qh=264 is below 2−191.99, the term qh⋅2−256 dominating; in a suite with a larger δ, such as a 48-byte hash to field, δ dominates.

RFC 9591, Section 4.1, hashes the share with the fresh bytes to hedge against a generator whose output is predictable to an observer; Lemma 4.5 assumes T uniform, and the volume proves no statement for a predictable T. Nonces computed from the share and the message alone permit complete key recovery (RFC 9591, Sections 1 and 7.3), which is why fresh bytes are used.

Over N=264 executions of Round One by one participant, the 32-byte strings of one role, hiding or binding, repeat with probability at most (N2)⋅2−256<2−129 (Math Guide, Proposition “Birthday bound”), so, by the union bound, a repeat in either role has probability at most 2−128⁢(1−2−64)<2−128, the figure of RFC 9591, Section 4.1. A repeated nonce pair, the hypothesis of Lemma 4.13, requires in the same two executions equal hiding nonces and equal binding nonces.

Lemma 4.6 (Repetition of a nonce pair).

Under Assumption 4.2, two of N executions of Round One by one participant yield equal nonce pairs with probability at most

(N2)⁢(2−255+1/q+δ)2.
Proof.

For two executions j≠k, the hiding strings are equal with probability 2−256, and so are the binding strings, independently. Two answers of H3 at distinct inputs are equal with probability at most 1/q+δ, since every value has probability at most 1/q+δ under a distribution within δ of uniform (Math Guide, Theorem “Properties of statistical distance”, part (3)); and when both roles have distinct strings, the two equalities constrain answers at two distinct pairs of inputs, whose probability of holding together is at most (1/q+δ)2, except when the two pairs of inputs coincide, an event of probability at most 2⋅2−512. Summing the cases gives at most 2−512+2⋅2−256⁢(1/q+δ)+(1/q+δ)2+2−511⁢(1/q+δ), which is below the square displayed; the union bound over the (N2) pairs of executions gives the claim. □

4.3 Round Two: binding factors and signature shares

Definition 4.7 (Binding factors and group commitment).

Let 𝑃𝐾 be the group key, m a message, that is a byte string, and L a commitment list over a signing set I (Definition 4.3). For i∈I the binding factor of i is

ρi:=H1⁢(𝗌𝖾𝗋𝔾⁢(𝑃𝐾)⁢‖H4⁢(m)‖⁢H5⁢(𝖾𝗇𝖼⁢(L))∥𝗌𝖾𝗋𝔽q⁢(i));

the commitment share of i is Ri:=Di+[ρi]⁢Ei; the group commitment is R:=∑i∈IRi; and the challenge is

c:=H2⁢(𝗌𝖾𝗋𝔾⁢(R)⁢‖𝗌𝖾𝗋𝔾⁢(𝑃𝐾)‖⁢m),

with ρi defined whenever 𝗌𝖾𝗋𝔾⁢(𝑃𝐾) is, and c whenever 𝗌𝖾𝗋𝔾⁢(R) and 𝗌𝖾𝗋𝔾⁢(𝑃𝐾) are. All four are functions of the public data (𝑃𝐾,m,L), computed identically by every member of I and by the Coordinator.

The binding factor is that of RFC 9591, Section 4.4 (“Binding Factors Computation”), the group commitment that of Section 4.5 (“Group Commitment Computation”), and the challenge that of Section 4.6 (“Signature Challenge Computation”). The challenge input has the order nonce commitment, public key, message of the single-party challenge of Definition 4.1, part (e), so a verifier recomputes c from (R,𝑃𝐾,m) alone. The paper’s binding value ρi=H1⁢(i,m,B), with B its commitment list, and its challenge c=H2⁢(R,Y,m) (ePrint 2020/852, Figure 3, in multiplicative notation with R=∏iDi⁢Eiρi) differ as follows: the specified binding-factor input adds the group key and pre-hashes the message and the encoded list; the challenge input is the paper’s, in the same order. For FROST(Pallas, BLAKE2b-512), H2 is the RedPallas hash and 𝗌𝖾𝗋𝔾 the star encoding, so c is the challenge that RedPallas validation recomputes (Construction 6.1; ZIP 312, “Rationale”).

Construction 4.8 (Round Two).

Coordinator. It selects a signing set I with t≤|I|≤n; takes, for each i∈I, one commitment pair (Di,Ei) received from Pi in Round One and not placed in any earlier request; forms the commitment list L over I (Definition 4.3); and sends (m,L), serialised componentwise, to each Pi with i∈I over an authenticated channel (Definition 2.10, type (a)).

Member Pi, on receiving (m,L):

  1. 1.

    it checks that m is a message it is willing to sign; for spend authorisation this is the check of Definition 5.9;

  2. 2.

    it checks that its identifier i appears in L with a commitment pair (Di,Ei) that it stores and has not used;

  3. 3.

    it deserialises every commitment of L with 𝖽𝖾𝗌𝖾𝗋𝔾, which fails on a non-canonical encoding and on the encoding of 𝒪;

  4. 4.

    it checks that the identifiers of L are distinct, without which λI,i is undefined, and in ascending order, as RFC 9591 requires of a commitment list (Section 4.3).

It aborts if any check fails. Otherwise it computes ρi, R and c (Definition 4.7), aborting if ρi or c is undefined, and λI,i (Definition 2.3), with I the set of identifiers of L; sets the signature share

zi:=di+ei⁢ρi+λI,i⁢𝑠𝑘i⁢c∈𝔽q;

deletes (di,ei) and (Di,Ei); and only then sends 𝗌𝖾𝗋𝔽q⁢(zi) to the Coordinator over an authenticated channel (Definition 2.10, type (a)).

The construction is RFC 9591, Section 5.2 (“Round Two - Signature Share Generation”). The Coordinator’s choice of at least t and at most n participants is required by Section 5. Each participant must validate the commitment list by deserialising each element, must abort if deserialisation fails, and must ensure that its identifier and commitments from Round One appear in the list (Section 5.2); applications that restrict the messages a participant signs perform further validation, which Section 7.7 (“Input Message Validation”) recommends so that participants do not act as signing oracles for arbitrary messages. The computation of λI,i fails on an absent or repeated identifier (Section 4.2, “Polynomials”). The share equation is that of Section 5.2. After computing its share, each participant must delete the nonce and the corresponding commitment, and must not use the nonce as input more than once. The deletion is the step on which Proposition 4.14 rests.

4.4 Aggregation and share verification

Construction 4.9 (Aggregation).

The Coordinator holds (m,L) and the group information (𝑃𝐾,(𝑃𝐾j)j=1n) stored from key generation (Definition 2.5). The shares arrive over authenticated channels without confidentiality (Definition 2.10, type (a)). The Coordinator proceeds as follows.

  1. 1.

    It deserialises each share with 𝖽𝖾𝗌𝖾𝗋𝔽q and aborts if any deserialisation fails.

  2. 2.

    It computes ρi and Ri for i∈I, R and c (Definition 4.7), aborting if ρi or c is undefined.

  3. 3.

    It sets z:=∑i∈Izi and outputs the signature (R,z), encoded 𝗌𝖾𝗋𝔾⁢(R)∥𝗌𝖾𝗋𝔽q⁢(z).

It should verify (R,z) on m under 𝑃𝐾 by the single-party verification (Definition 4.1, part (e)) before publishing it, and should abort if the signature is invalid. It may check each share by the share equation

[zi]⁢B=Ri+[c⁢λI,i]⁢𝑃𝐾i,

in particular when the aggregate is invalid. The keys 𝑃𝐾 and 𝑃𝐾i in these checks are taken from the stored group information, never from the messages of the run.

The construction is RFC 9591, Section 5.3 (“Signature Share Aggregation”). The Coordinator must validate each share by deserialisation and must abort if validation fails; it should verify the signature under the group key before publishing or releasing it; if that verification fails, it may verify each share individually to identify and act on misbehaving participants; and the group key and the keys 𝑃𝐾i used there must come from the stored group information. Section 5 requires an authenticated channel for identifying misbehaving participants and does not require confidentiality. The paper checks every share unconditionally before aggregating (ePrint 2020/852, Figure 3); the specified duties are the recommendation and the permission above, and this volume states those.

Proposition 4.10 (Identifiable abort).

Let the key material be valid (Definition 2.5), let the Coordinator be honest, and let c be defined.

  1. (i)

    If the share of every member satisfies its share equation, then [z]⁢B=R+[c]⁢𝑃𝐾, so the aggregate (R,z) is accepted by the single-party verification on m under 𝑃𝐾.

  2. (ii)

    The share of every member that follows Construction 4.8 satisfies its share equation.

  3. (iii)

    Hence, if the aggregate is not accepted, the share equation of some member fails, and that member deviated from the protocol; the authenticated channel identifies it as the sender of the share.

Proof.

(ii) For a member following the construction,

[zi]⁢B=[di]⁢B+[ρi]⁢[ei]⁢B+[c⁢λI,i]⁢[𝑠𝑘i]⁢B=Ri+[c⁢λI,i]⁢𝑃𝐾i,

since Di=[di]⁢B, Ei=[ei]⁢B and, by validity, 𝑃𝐾i=[𝑠𝑘i]⁢B.

(i) Let f be the polynomial of degree at most t−1 that validity provides, with f⁢(j)=𝑠𝑘j and 𝑃𝐾=[f⁢(0)]⁢B. Summing the share equations over I gives

[z]⁢B=∑i∈IRi+[c⁢∑i∈IλI,i⁢𝑠𝑘i]⁢B=R+[c⁢f⁢(0)]⁢B=R+[c]⁢𝑃𝐾,

by Lemma 2.4 applied to f. The challenge c is the one the single-party verification recomputes from (R,𝑃𝐾,m) (Definition 4.7), so the verification accepts.

(iii) is the contrapositive of (i), with (ii). □

The mechanism for acting on an identified member is outside RFC 9591 (Section 5.4, “Identifiable Abort”). FROST provides no robustness (Sections 5.4 and 7): one member that withholds or corrupts its share prevents the signature, and a failed run is restarted from Round One with fresh nonces, since the consumed pairs are deleted.

4.5 Correctness of FROST signing

Theorem 4.11 (Correctness of FROST).

Let the key material be valid (Definition 2.5), as key generation by a dealer or by the distributed protocol outputs it (Propositions 3.3 and 3.8); let I be a signing set and m a message that every member of I accepts; and let every party follow Constructions 4.4, 4.8 and 4.9. Then, outside the three cases below, the run outputs (R,z) with

R=[r]⁢B,z=r+c⁢s,r:=∑i∈I(di+ei⁢ρi),

which the single-party verification accepts on m under 𝑃𝐾. In the three cases the run aborts.

  1. (1)

    Zero nonce. Some di or ei, i∈I, is 0, so Di or Ei is 𝒪. In a suite whose element serialisation is not total, Round One fails on it; in every suite the run aborts no later than check (3) of Round Two, since 𝖽𝖾𝗌𝖾𝗋𝔾 rejects 𝒪. Under Assumption 4.2 the probability of this case is at most 2⁢|I|⁢(δ+1/q) per run.

  2. (2)

    Identity group commitment. Only in a suite whose element serialisation is not total, as the generic serialisation of RFC 9591 is not: R=𝒪, so c is undefined. Under Assumption 4.2 the probability of this case, outside case (1), is at most δ+1/q per run.

  3. (3)

    Identity group key. Only in a suite whose element serialisation is not total: s=0, so 𝑃𝐾=𝒪 and ρi and c are undefined. For s uniform in 𝔽q, as under Assumption 3.1, its probability is 1/q per key generation.

A suite with a total element serialisation, such as FROST(Pallas, BLAKE2b-512), has only case (1).

Proof.

Write ri:=di+ei⁢ρi, so that zi=ri+c⁢λI,i⁢𝑠𝑘i. The nonce r=∑i∈Iri is additively shared by construction: each summand is formed locally, with no dealer and no interaction; and R=∑i∈IRi=∑i∈I[ri]⁢B=[r]⁢B. The Lagrange coefficients turn the Shamir shares 𝑠𝑘i=f⁢(i) of s=f⁢(0) into additive shares λI,i⁢𝑠𝑘i with sum s, by Lemma 2.4, since f has degree at most t−1 by validity. Hence

z=∑i∈Izi=r+c⁢s,[z]⁢B=[r]⁢B+[c]⁢[s]⁢B=R+[c]⁢𝑃𝐾,

where c=H2⁢(𝗌𝖾𝗋𝔾⁢(R)⁢‖𝗌𝖾𝗋𝔾⁢(𝑃𝐾)‖⁢m) is the challenge the verifier recomputes (Definition 4.7). Outside the three cases, every check of Round Two passes: m is accepted, each member’s pair is stored and unused, every commitment lies in 𝔾∗ and deserialises, the identifiers of L are distinct and sorted, and ρi and c are defined. Every share deserialises, being an honest serialisation, so aggregation outputs (R,z).

(1) Each of the 2⁢|I| nonces is an answer of H3, equal to 0 with probability at most 1/q+δ, because under a distribution within δ of uniform every value has probability at most 1/q+δ (Math Guide, Theorem “Properties of statistical distance”, part (3)). Since B generates a group of prime order, [d]⁢B=𝒪 if and only if d=0. The union bound gives 2⁢|I|⁢(1/q+δ).

(2) Outside case (1), fix i∈I; then Ei≠𝒪. Condition on all answers of H3, H4 and H5, and on the answers of H1 at every input other than that of ρi. Then R=𝒪 if and only if [ρi]⁢Ei equals the element −Di−∑j∈I∖{i}Rj, which is fixed; since Ei generates 𝔾, this holds for exactly one value of ρi. The binding factor ρi is the answer of H1 at an input with suffix 𝗌𝖾𝗋𝔽q⁢(i), distinct from the inputs of the other members, whose suffixes differ; so it takes that value with probability at most 1/q+δ.

(3) Since B generates a group of prime order, 𝑃𝐾=[s]⁢B=𝒪 if and only if s=0, and 𝗌𝖾𝗋𝔾⁢(𝑃𝐾), an input of every ρi and of c, is then undefined. A uniform s∈𝔽q is 0 with probability 1/q. □

For FROST(Pallas, BLAKE2b-512), with the δ of Proposition 6.2, the bound of case (1) is below 2−251.9 for |I|=2 and below 2−251.3 for |I|=3. In a suite with the parameters q=p𝖵𝖾𝗌𝗍𝖺 and that δ but a serialisation that is not total, the bound of case (2) would be below 2−253.9.

The output of a threshold run is a single-party Schnorr signature under the group key. It carries no threshold marker: a verifier applies to it, with (𝑃𝐾,m) alone and no knowledge of t, n or I, the verification it applies to a signature of one signer. RFC 9591 states this in Section 5, under which signatures can be verified as if produced by a single signer holding s, and in Section 6, under which the verification instructions of each suite are equivalent to those for a single participant; Appendix B gives that verification.

Example 4.12 (A two-of-three signing run).

Every number below is output by the volume’s toy script; none is computed by hand. The group is the curve y2=x3+11 over 𝔽1009, whose group of points has prime order q=967, with generator B=(1,298). A point (x,y) is serialised as the two-byte little-endian integer x+215⁢(ymod2), and 𝒪 as zero, the analogue of the star encoding; a scalar is serialised as a two-byte little-endian integer. The hashes are BLAKE2b-512 under the personalisations that FROST(Pallas, BLAKE2b-512) assigns to H1 to H5 (Construction 6.1), the scalar-valued ones read as little-endian integers and reduced modulo 967. The 32 fresh bytes of each nonce are fixed strings, so that the run is reproducible; the example therefore does not follow the sampling rule of Construction 4.4.

Key material. A dealer with t=2, n=3 uses f⁢(X)=321+778⁢X, so s=321 and

𝑠𝑘1=132,𝑠𝑘2=910,𝑠𝑘3=721.

The coefficient commitments are A0=(526,125) and A1=(433,783), and by Lemma 2.6 the group information is 𝑃𝐾=A0 and 𝑃𝐾j=A0+[j]⁢A1:

𝑃𝐾1=(963,797),𝑃𝐾2=(587,458),𝑃𝐾3=(30,509),

each equal to [𝑠𝑘j]⁢B.

Round One. Members 1 and 3 draw

d1 =155, e1 =457, D1 =(942,518), E1 =(309,697),
d3 =464, e3 =724, D3 =(958,797), E3 =(582,220).

Round Two. The signing set is I={1,3}, with

λI,1=3⋅(3−1)−1=3/2=485,λI,3=1⋅(1−3)−1=−1/2=483

modulo 967. Then λI,1+λI,3=1 and λI,1⁢𝑠𝑘1+λI,3⁢𝑠𝑘3=321=s, as Lemma 2.4 requires with f=1 and with the sharing polynomial. For the message m equal to the ASCII string toy message, the binding factors are ρ1=869 and ρ3=285, the group commitment is R=(972,62) and the challenge is c=628. The shares are z1=419 and z3=717, and each satisfies its share equation [zi]⁢B=Di+[ρi]⁢Ei+[c⁢λI,i]⁢𝑃𝐾i.

Aggregation. The aggregate is z=169, and [z]⁢B=R+[c]⁢𝑃𝐾 holds. The toy group gives no security; the example checks the algebra only.

4.6 Single use of nonces

Lemma 4.13 (Reuse of a nonce pair exposes the share).

Let member Pi answer k Round Two requests, j=1,…,k, with one nonce pair (d,e) and share 𝑠𝑘i. Its responses are

zj=d+e⁢ρj+μj⁢𝑠𝑘i,μj:=λIj,i⁢cj,

where ρj, cj and Ij are the binding factor of i, the challenge and the signing set of request j, all computable from public data. Each response is affine in the unknown (d,e,𝑠𝑘i)∈𝔽q3 with coefficient vector vj:=(1,ρj,μj). Say that 𝑠𝑘i is determined by (zj,vj)j≤k if every x∈𝔽q3 with vj⋅x=zj for all j has third coordinate 𝑠𝑘i. The following are equivalent:

  1. (a)

    𝑠𝑘i is determined by (zj,vj)j≤k;

  2. (b)
  3. (c)

    the points (ρj,μj) do not all lie on one line μ=α+β⁢ρ with α,β∈𝔽q.

In particular, three responses with linearly independent coefficient vectors determine 𝑠𝑘i; two responses with distinct binding factors never do, and every value of 𝑠𝑘i is then consistent with them; and two responses with equal binding factors and μ1≠μ2 determine

𝑠𝑘i=(z1−z2)/(μ1−μ2).
Proof.

(b) implies (a): if (0,0,1)=∑jaj⁢vj, then every consistent x has third coordinate ∑jaj⁢(vj⋅x)=∑jaj⁢zj, one value, which the true unknown attains.

(a) implies (c): suppose every point lies on μ=α+β⁢ρ, and put u:=(α,β,−1). Then vj⋅u=α+β⁢ρj−μj=0 for every j, so (d,e,𝑠𝑘i)+γ⁢u is consistent for every γ∈𝔽q, and its third coordinate 𝑠𝑘i−γ takes every value; 𝑠𝑘i is not determined.

(c) implies (b): if two points have equal ρ and distinct μ, then v1−v2 (for those two) is a nonzero multiple of (0,0,1). Otherwise distinct points have distinct ρ. Two points with distinct ρ lie on a line μ=α+β⁢ρ, so (c) forces at least three distinct points, not all on one such line; no vertical line contains them either, since their ρ are distinct. Hence some three of them are not collinear, their vectors (1,ρ,μ) are linearly independent, and they span 𝔽q3, which contains (0,0,1).

The particular cases follow: independent vectors span 𝔽q3; two points with distinct ρ lie on a line μ=α+β⁢ρ, and the proof of (a) implies (c) shows every value of 𝑠𝑘i consistent; and with ρ1=ρ2, z1−z2=(μ1−μ2)⁢𝑠𝑘i. □

The last case is the Crypto Guide’s Proposition “Nonce reuse is fatal” (§“Security in the random oracle model and the forking lemma”) applied to the effective nonce d+e⁢ρ. Whoever sees the shares and the public data can compute 𝑠𝑘i in the determined cases, since the shares travel without confidentiality (Definition 2.10, type (a)). RFC 9591 states the risk (Sections 1 and 7.3) and forbids the reuse (Section 5.2).

In the toy group of Example 4.12, member 1 answers three requests on the message toy message over I={1,3} with its pair (d,e)=(155,457), the requests differing only in the commitments of member 3. The triples (ρj,μj,zj) are (682,413,819), (403,331,773) and (947,46,955). The determinant of the three coefficient vectors is 347≠0, and solving the system gives 𝑠𝑘1=132. From the first two responses alone, the value 133 with (d,e)=(802,325) is also consistent, so 𝑠𝑘1 is not determined.

Proposition 4.14 (Replayed commitments).

A Coordinator that places in a Round Two request a commitment pair of member Pi that Pi has already used to answer a request obtains no response from Pi, unless Pi still stores a second copy of that pair from another execution of Round One, an event whose probability over N executions is at most (N2)⁢(2−255+1/q+δ)2 (Lemma 4.6). Outside that event a replay denies service only, and yields no second response under one nonce pair, the hypothesis of Lemma 4.13.

Proof.

A member responds only for a pair that it stores and has not used, by check (2) of Construction 4.8, and it deletes a pair when it answers with it. Outside that event no second copy of the pair is stored, so a used pair is no longer stored, check (2) fails and the member aborts. □

The Coordinator may in addition track, per group key, the commitments already used (RFC 9591, Section 7.3).