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.
A ciphersuite fixes the following data.
A group of prime order , written additively, with identity and generator , and its scalar field . Write .
An element serialisation , mapping either every element of or every element of injectively to a byte string of fixed length , 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 of some , and on the encoding of where one exists; on every other string it inverts . The serialisation is total if its domain is .
A scalar serialisation , mapping injectively to byte strings of fixed length , and a scalar deserialisation , which fails on every string whose integer value is not below and inverts otherwise.
Hash functions by role:
where denotes the byte strings and is the digest length of the suite. The roles are: the binding factor, the challenge, the nonce, the message pre-hash and the commitment-list pre-hash.
The signature encoding of a pair , and the single-party verification: a pair is accepted on a message under a public key if and only if
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 .
A ciphersuite for re-randomised signing adds
the randomiser hash (ZIP 312, “Specification” and “Randomizer Generation”).
The ciphersuites of RFC 9591 do not define .
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 for compatibility with RFC 8032; , and 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 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.
The hashes , , and are modelled as random oracles into (Crypto Guide, §“The random oracle model”, Definition “Random oracle”), independent of each other and of the proof-of-knowledge hash (Assumption 3.5): each answer at a new input is an independent sample from a distribution on within statistical distance of uniform (Math Guide, §“Statistical distance”), where is a parameter of the suite. The hashes and are modelled as independent random oracles into ; hence an algorithm making queries finds a collision of either with probability at most
(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 (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 and no further assumption, by Proposition 6.2.
Let a ciphersuite be fixed and let be a signing set (Definition 2.1). A commitment list over is a sequence
with one triple for each member of : is the hiding commitment and the binding commitment of member . 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 as the set of its identifiers. The encoding of is the byte string
of length .
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 determines , 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.
Participant , holding the share (Definition 2.5), proceeds as follows.
It draws two independent strings , each uniform on the -byte strings, and sets the hiding nonce and the binding nonce
It sets and .
It stores , keeps secret, and sends 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 or is , the participant discards the pair and this execution of Round One fails.
The strings and 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 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 , not in : 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 ; the specified rule is the hedged derivation above, and this volume states it instead.
Under Assumption 4.2, let an algorithm, the observer, make at most queries to and, at one point, choose a byte string and receive , for uniform on the -byte strings and independent of all else. The pair formed by the observer’s view and is within statistical distance
of the pair obtained when is replaced by a uniform element of independent of all else. For the two nonces of one execution of Round One, received for one string with independent strings and , the corresponding distance is at most
The argument is that of the Ironwood Guide’s Lemma “Distance of GenRandom from uniform” (§“Randomised validating keys”), with fresh bytes in place of and in place of the RedPallas hash. Let be the event that the observer queries at . In a second experiment the answer is replaced, in the computation of 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 , so the two experiments are identical until occurs, and their outputs are within statistical distance (Crypto Guide, §“Security as a game”, Remark “Game-hopping”). In the second experiment the observer’s view is independent of , so each query has prefix with probability at most , and 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 , of probability , is excluded at that cost; outside it the inputs and are distinct. The event that the observer queries either input has probability at most , and two independent samples are replaced by uniform scalars at cost . □
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 is below , the term 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 uniform, and the volume proves no statement for a predictable . 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 executions of Round One by one participant, the -byte strings of one role, hiding or binding, repeat with probability at most (Math Guide, Proposition “Birthday bound”), so, by the union bound, a repeat in either role has probability at most , 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.
Under Assumption 4.2, two of executions of Round One by one participant yield equal nonce pairs with probability at most
For two executions , the hiding strings are equal with probability , and so are the binding strings, independently. Two answers of at distinct inputs are equal with probability at most , since every value has probability at most 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 , except when the two pairs of inputs coincide, an event of probability at most . Summing the cases gives at most , which is below the square displayed; the union bound over the pairs of executions gives the claim. □
Let be the group key, a message, that is a byte string, and a commitment list over a signing set (Definition 4.3). For the binding factor of is
the commitment share of is ; the group commitment is ; and the challenge is
with defined whenever is, and whenever and are. All four are functions of the public data , computed identically by every member of 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 from alone. The paper’s binding value , with its commitment list, and its challenge (ePrint 2020/852, Figure 3, in multiplicative notation with ) 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), is the RedPallas hash and the star encoding, so is the challenge that RedPallas validation recomputes (Construction 6.1; ZIP 312, “Rationale”).
Coordinator. It selects a signing set with ; takes, for each , one commitment pair received from in Round One and not placed in any earlier request; forms the commitment list over (Definition 4.3); and sends , serialised componentwise, to each with over an authenticated channel (Definition 2.10, type (a)).
Member , on receiving :
it checks that is a message it is willing to sign; for spend authorisation this is the check of Definition 5.9;
it checks that its identifier appears in with a commitment pair that it stores and has not used;
it deserialises every commitment of with , which fails on a non-canonical encoding and on the encoding of ;
it checks that the identifiers of are distinct, without which 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 , and (Definition 4.7), aborting if or is undefined, and (Definition 2.3), with the set of identifiers of ; sets the signature share
deletes and ; and only then sends 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 and at most 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 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.
The Coordinator holds and the group information 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.
It deserialises each share with and aborts if any deserialisation fails.
It computes and for , and (Definition 4.7), aborting if or is undefined.
It sets and outputs the signature , encoded .
It should verify on 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
in particular when the aggregate is invalid. The keys and 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 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.
Let the key material be valid (Definition 2.5), let the Coordinator be honest, and let be defined.
If the share of every member satisfies its share equation, then , so the aggregate is accepted by the single-party verification on under .
The share of every member that follows Construction 4.8 satisfies its share equation.
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.
(ii) For a member following the construction,
since , and, by validity, .
(i) Let be the polynomial of degree at most that validity provides, with and . Summing the share equations over gives
by Lemma 2.4 applied to . The challenge is the one the single-party verification recomputes from (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.
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 be a signing set and a message that every member of accepts; and let every party follow Constructions 4.4, 4.8 and 4.9. Then, outside the three cases below, the run outputs with
which the single-party verification accepts on under . In the three cases the run aborts.
Zero nonce. Some or , , is , so or 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 per run.
Identity group commitment. Only in a suite whose element serialisation is not total, as the generic serialisation of RFC 9591 is not: , so is undefined. Under Assumption 4.2 the probability of this case, outside case (1), is at most per run.
Identity group key. Only in a suite whose element serialisation is not total: , so and and are undefined. For uniform in , as under Assumption 3.1, its probability is per key generation.
A suite with a total element serialisation, such as FROST(Pallas, BLAKE2b-512), has only case (1).
Write , so that . The nonce is additively shared by construction: each summand is formed locally, with no dealer and no interaction; and . The Lagrange coefficients turn the Shamir shares of into additive shares with sum , by Lemma 2.4, since has degree at most by validity. Hence
where is the challenge the verifier recomputes (Definition 4.7). Outside the three cases, every check of Round Two passes: is accepted, each member’s pair is stored and unused, every commitment lies in and deserialises, the identifiers of are distinct and sorted, and and are defined. Every share deserialises, being an honest serialisation, so aggregation outputs .
(1) Each of the nonces is an answer of , equal to with probability at most , because under a distribution within of uniform every value has probability at most (Math Guide, Theorem “Properties of statistical distance”, part (3)). Since generates a group of prime order, if and only if . The union bound gives .
(2) Outside case (1), fix ; then . Condition on all answers of , and , and on the answers of at every input other than that of . Then if and only if equals the element , which is fixed; since generates , this holds for exactly one value of . The binding factor is the answer of at an input with suffix , distinct from the inputs of the other members, whose suffixes differ; so it takes that value with probability at most .
(3) Since generates a group of prime order, if and only if , and , an input of every and of , is then undefined. A uniform is with probability . □
For FROST(Pallas, BLAKE2b-512), with the of Proposition 6.2, the bound of case (1) is below for and below for . In a suite with the parameters and that but a serialisation that is not total, the bound of case (2) would be below .
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 alone and no knowledge of , or , 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 , 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.
Every number below is output by the volume’s toy script; none is computed by hand. The group is the curve over , whose group of points has prime order , with generator . A point is serialised as the two-byte little-endian integer , 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 to (Construction 6.1), the scalar-valued ones read as little-endian integers and reduced modulo . The 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 , uses , so and
The coefficient commitments are and , and by Lemma 2.6 the group information is and :
each equal to .
Round One. Members and draw
Round Two. The signing set is , with
modulo . Then and , as Lemma 2.4 requires with and with the sharing polynomial. For the message equal to the ASCII string toy message, the binding factors are and , the group commitment is and the challenge is . The shares are and , and each satisfies its share equation .
Aggregation. The aggregate is , and holds. The toy group gives no security; the example checks the algebra only.
Let member answer Round Two requests, , with one nonce pair and share . Its responses are
where , and are the binding factor of , the challenge and the signing set of request , all computable from public data. Each response is affine in the unknown with coefficient vector . Say that is determined by if every with for all has third coordinate . The following are equivalent:
is determined by ;
lies in the span of (Math Guide, §“Linear combinations, span, and linear independence”, Definition “Linear combination and span”);
the points do not all lie on one line with .
In particular, three responses with linearly independent coefficient vectors determine ; two responses with distinct binding factors never do, and every value of is then consistent with them; and two responses with equal binding factors and determine
(b) implies (a): if , then every consistent has third coordinate , one value, which the true unknown attains.
(a) implies (c): suppose every point lies on , and put . Then for every , so is consistent for every , and its third coordinate takes every value; is not determined.
(c) implies (b): if two points have equal and distinct , then (for those two) is a nonzero multiple of . 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 are linearly independent, and they span , which contains .
The particular cases follow: independent vectors span ; two points with distinct lie on a line , and the proof of (a) implies (c) shows every value of consistent; and with , . □
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 . Whoever sees the shares and the public data can compute 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 answers three requests on the message toy message over with its pair , the requests differing only in the commitments of member . The triples are , and . The determinant of the three coefficient vectors is , and solving the system gives . From the first two responses alone, the value with is also consistent, so is not determined.
A Coordinator that places in a Round Two request a commitment pair of member that has already used to answer a request obtains no response from , unless still stores a second copy of that pair from another execution of Round One, an event whose probability over executions is at most (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.
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).