The Zcash ArboretumThe Complete Arboretum PDF

5 Re-randomised FROST for spend authorisation

This section states the re-randomised variant of FROST that ZIP 312 specifies, in the order of the mechanism: why spend authorisation requires a shifted key; the re-randomisable threshold scheme; the derivations of the randomiser, with the bound showing that the specified derivation, fed the signature digest as its message, succeeds only with negligible probability; the signers’ duty to check the signed message; the re-randomised rounds with their correctness; and the requirements and trust model of ZIP 312 that this flow forces. The ciphersuite is generic, with the randomiser hash HR of Definition 4.1, part (f); the Pallas instance is Construction 6.1. ZIP 312 is Draft.

5.1 Spend authorisation under randomised validating keys

The single-signer objects are cited, not re-derived. The spend-authorisation instance of RedPallas (Ironwood Guide, §“The RedPallas signature scheme”, Construction “RedPallas” and Definition “Spend-authorisation and binding-signature instances”) works in the Pallas group, of prime order q=p𝖵𝖾𝗌𝗍𝖺, with base

B=G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁=𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁⁢(z.cash:Orchard,G).

A key pair is (x,X=[x]⁢B). A signature on a message M is σ=R¯∥𝖨𝟤𝖫𝖤𝖮𝖲𝖯256⁢(S), with challenge c=𝖧⊛⁢(R¯⁢‖X¯‖⁢M), where 𝖧⊛ reduces modulo p𝖵𝖾𝗌𝗍𝖺 the BLAKE2b-512 output under the personalisation Zcash_RedPallasH. Validation accepts if and only if the first 32 bytes decode to a point R, a non-canonical encoding decoding to ⊥ and being rejected; S<p𝖵𝖾𝗌𝗍𝖺; and [S]⁢B=R+[c]⁢X, the cofactor being one on Pallas. The nonce and challenge hashes take X¯: the scheme is key-prefixed (Remark “Key prefixing” there). The message of every spend-authorisation signature is the signature digest 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 (Ironwood Guide, §“Transaction digests and signatures”, Definition “Signature digest”). The deployed rules are those of the protocol specification, §“RedDSA, RedJubjub, and RedPallas” and §“Spend Authorization Signature (Sapling and Orchard)”.

Re-randomisation by a randomiser α∈𝔽q maps a key pair (x,X) to (x+α,X+[α]⁢B) (Crypto Guide, §“Key re-randomisation and unlinkability”, Definition “Key re-randomisation”); the identity randomiser is 0. The randomiser generator 𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆 draws T uniformly from the 80-byte strings and returns 𝖧⊛⁢(T) (Ironwood Guide, Definition “Randomiser generator and key re-randomisation”).

For each Action the spender draws α:=𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆⁢() and sets

𝗋𝗌𝗄:=𝖺𝗌𝗄+α,𝗋𝗄:=𝖺𝗄ℙ+[α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁=[𝗋𝗌𝗄]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁,

with 𝖺𝗌𝗄 sign-normalised; the Action publishes 𝗋𝗄 and the signature under 𝗋𝗌𝗄 on 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 (Ironwood Guide, §“Randomised validating keys”, Construction “Randomised validating key”). Two consensus rules apply: 𝗋𝗄≠𝒪, and the signature is valid under 𝗋𝗄 on 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 (protocol specification, §“Action Descriptions” and §“Spend Authorization Signature (Sapling and Orchard)”). The verifier’s key is therefore 𝗋𝗄, which equals 𝖺𝗄ℙ only for α=0, an event of probability at most 1/p𝖵𝖾𝗌𝗍𝖺+2−512 under 𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆 (Ironwood Guide, Assumption “The RedPallas hash as a random oracle”). Only these scheme-level statements are inherited. The Ironwood Guide constructs 𝖺𝗌𝗄 only for keys with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾 (Remark “Scope of the key derivations”), so its key-derived theorems are not cited for threshold keys (§7.5).

For every Action of the Orchard protocol, in either pool, the single signer proceeds in the order: draw α; compute 𝗋𝗄; compute 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 of the transaction, which commits to 𝗋𝗄; sign it under 𝗋𝗌𝗄. The Action proof takes α as auxiliary (secret) input and 𝗋𝗄 as primary input and, being authorising data, may be computed after signing (Ironwood Guide, §“Construction of a transaction”, Construction “Ironwood-pool bundle”, steps “Randomised keys”, “Proof”, “Digest” and “Spend authorisation”; ZIP 229, “Motivation”). Sapling spends are outside the volume.

Definition 5.1 (Strong unforgeability under re-randomised keys).

A re-randomisable signature scheme is a signature scheme (𝖦𝖾𝗇𝖯𝗋𝗂𝗏𝖺𝗍𝖾,𝖣𝖾𝗋𝗂𝗏𝖾𝖯𝗎𝖻𝗅𝗂𝖼,𝖲𝗂𝗀𝗇,𝖵𝖺𝗅𝗂𝖽𝖺𝗍𝖾) with private-key set 𝖯𝗋𝗂𝗏𝖺𝗍𝖾 and public-key set 𝖯𝗎𝖻𝗅𝗂𝖼, together with a randomiser set ℛ, a randomised generator 𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆 with values in ℛ, maps

𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾:ℛ×𝖯𝗋𝗂𝗏𝖺𝗍𝖾→𝖯𝗋𝗂𝗏𝖺𝗍𝖾,𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗎𝖻𝗅𝗂𝖼:ℛ×𝖯𝗎𝖻𝗅𝗂𝖼→𝖯𝗎𝖻𝗅𝗂𝖼,

and an identity randomiser αid∈ℛ, such that:

  1. 1.

    each 𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢(α,⋅) is injective and efficiently invertible;

  2. 2.

    𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢(αid,⋅) is the identity;

  3. 3.

    for every 𝑠𝑘, the value 𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢(α,𝑠𝑘) with α←𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆⁢() is distributed as 𝖦𝖾𝗇𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢();

  4. 4.

    𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗎𝖻𝗅𝗂𝖼⁢(α,𝖣𝖾𝗋𝗂𝗏𝖾𝖯𝗎𝖻𝗅𝗂𝖼⁢(𝑠𝑘))=𝖣𝖾𝗋𝗂𝗏𝖾𝖯𝗎𝖻𝗅𝗂𝖼⁢(𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢(α,𝑠𝑘)) for every α and 𝑠𝑘.

Let 𝑠𝑘←𝖦𝖾𝗇𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢() and 𝑣𝑘:=𝖣𝖾𝗋𝗂𝗏𝖾𝖯𝗎𝖻𝗅𝗂𝖼⁢(𝑠𝑘). The signing oracle keeps a set 𝒬, initially empty; on a query (m,α) it returns σ:=𝖲𝗂𝗀𝗇𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗋𝗂𝗏𝖺𝗍𝖾⁢(α,𝑠𝑘)⁢(m) and adds (m,σ) to 𝒬. The scheme is SURK-CMA secure if no efficient adversary, given 𝑣𝑘 and the oracle, outputs, except with negligible probability, a triple (m′,σ′,α′) with

𝖵𝖺𝗅𝗂𝖽𝖺𝗍𝖾𝖱𝖺𝗇𝖽𝗈𝗆𝗂𝗓𝖾𝖯𝗎𝖻𝗅𝗂𝖼⁢(α′,𝑣𝑘)⁢(m′,σ′)=1and(m′,σ′)∉𝒬.

Freshness is on the message–signature pair; the forgery may be under any re-randomisation of 𝑣𝑘, the identity included.

The definition is that of the protocol specification, §“Signature with Re-Randomizable Keys”, adapted there from Fleischhacker et al. (PKC 2016, Section 3) with the randomiser and key arguments swapped; the specification requires every spend-authorisation instance to meet it (§“Spend Authorization Signature (Sapling and Orchard)”). The single-signer spend-authorisation instance meets it: the Ironwood Guide’s Proposition “Unforgeability under re-randomisation” (“RedPallas unforgeability”), part (ii), under discrete logarithms on Pallas and the RedPallas hash as a random oracle, requires freshness only of the triple of key, message and signature, and states the implication. The threshold form of the notion is an open problem (Definition 1.1; Table 3).

Proposition 5.2 (A fixed-key aggregate under a randomised key).

Let key material with signing key s and group key 𝑃𝐾=[s]⁢B be valid (Definition 2.5), over a ciphersuite meeting Assumption 4.2 with distance δ.

  1. (i)

    For every signing set I, ∑i∈IλI,i⁢𝑠𝑘i=s. Hence every honest run of FROST (Constructions 4.4, 4.8 and 4.9) outputs a signature valid under the one key 𝑃𝐾, whatever I, apart from the failed runs of Theorem 4.11.

  2. (ii)

    Fix α∈𝔽q with α≠0 and 𝑃𝐾+[α]⁢B≠𝒪 before the experiment. In any experiment whose parties make at most Q2 queries to H2 in total, the probability that one output pair (m,(R,z)), designated in advance (such as the aggregate of a run), is accepted by the single-party verification (Definition 4.1, part (e)) both under 𝑃𝐾 and under 𝑃𝐾+[α]⁢B is at most

    (Q2+2)⁢(1/q+δ).
Proof.

(i) Lemma 2.4 with f the sharing polynomial gives the sum; Theorem 4.11 gives the rest.

(ii) Write 𝑃𝐾′:=𝑃𝐾+[α]⁢B. Acceptance of (R,z) on m under both keys means [z]⁢B=R+[c]⁢𝑃𝐾=R+[c′]⁢𝑃𝐾′, where

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

hence [c]⁢𝑃𝐾=[c′]⁢𝑃𝐾′, that is c⁢s=c′⁢(s+α). The two inputs differ, since 𝑃𝐾′≠𝑃𝐾 and 𝗌𝖾𝗋𝔾 is injective. Add the two queries at the inputs of the designated pair if they are missing, so that at most Q2+2 queries are made. Call a query with key component 𝑃𝐾 and one with key component 𝑃𝐾′ and the same R and m partners; each query has at most one partner. For each query define a target, where s+α≠0 because 𝑃𝐾′≠𝒪. If s≠0 and the partner was answered earlier, the target is the value the query’s own answer must take for the equation to hold: c⁢s/(s+α) for a query with key 𝑃𝐾′, and c′⁢(s+α)/s for a query with key 𝑃𝐾. If s=0, the equation reads c′⁢α=0, and every query with key 𝑃𝐾′ has target 0. A pair valid under both keys makes some query hit its target: the later-answered query of the pair if s≠0, the query with key 𝑃𝐾′ if s=0. Each target is fixed before the fresh answer is drawn, and that answer takes any fixed value with probability at most 1/q+δ (Math Guide, §“Statistical distance”, Theorem “Properties of statistical distance”, part (3)). The union bound over the at most Q2+2 queries gives the claim. □

The argument is that of the Ironwood Guide’s Remark “Key prefixing” for the unshifted response. The bound is for α fixed in advance; with α chosen adaptively, one query may pair with many. For FROST(Pallas, BLAKE2b-512) the per-query term 1/q+δ is below 2−253.9.

Spend authorisation re-randomises the validating key of every Action with a randomiser from 𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆, which makes validating keys unlinkable (Ironwood Guide, Proposition “Unlinkability of randomised validating keys”); a signer bound to one key cannot follow it (ZIP 312, “Motivation”). By part (i), a plain FROST aggregate is valid under 𝑃𝐾=𝖺𝗄ℙ, which consensus accepts only in an Action with 𝗋𝗄=𝖺𝗄ℙ, that is with randomiser zero, publishing the spend validating key in every such Action. By part (ii), it is valid under 𝗋𝗄 for a nonzero randomiser only with the stated probability. The re-randomised variant shifts every participant’s share, every verification share and the group key by one common scalar.

5.2 Re-randomisable threshold signatures

Definition 5.3 (Re-randomisable threshold signature scheme).

A re-randomisable threshold signature scheme is a scheme of Definition 2.8 over a group 𝔾 of prime order q with generator B, together with a randomiser set 𝒳 and:

  1. 1.

    a randomised algorithm 𝖦𝖾𝗇𝖱𝖺𝗇𝖽 with values in 𝒳;

  2. 2.

    an effective-randomiser map Hr:𝒳×{0,1}∗→𝔽q, sending a randomiser α and an auxiliary string 𝑎𝑢𝑥 to the effective randomiser α^:=Hr⁢(α,𝑎𝑢𝑥);

  3. 3.

    the shifts

    𝖱𝖺𝗇𝖽𝖲𝗁𝖺𝗋𝖾⁢(𝑠𝑘i,α,𝑎𝑢𝑥):=𝑠𝑘i+α^,𝖱𝖺𝗇𝖽𝖯𝖪𝖲𝗁𝖺𝗋𝖾⁢(𝑃𝐾i,α,𝑎𝑢𝑥):=𝑃𝐾i+[α^]⁢B,
    𝖱𝖺𝗇𝖽𝖯𝖪⁢(𝑃𝐾,α,𝑎𝑢𝑥):=𝑃𝐾+[α^]⁢B;

such that the following correctness holds. For valid key material with signing key s, every (α,𝑎𝑢𝑥) with 𝑃𝐾+[α^]⁢B in the domain of 𝗌𝖾𝗋𝔾 (every (α,𝑎𝑢𝑥) when 𝗌𝖾𝗋𝔾 is total), every signing set I and every message m: the shifted shares, verification shares and group key are valid key material for s+α^; and a run of the signing rounds on the shifted material over I on m in which every party is honest outputs either ⊥ or a signature that verification accepts under 𝑃𝐾+[α^]⁢B, and outputs ⊥ with negligible probability.

The definition is that of ePrint 2024/436, Definition 5, which names the algorithms, with general 𝖱𝖺𝗇𝖽𝖲𝗁𝖺𝗋𝖾, 𝖱𝖺𝗇𝖽𝖯𝖪𝖲𝗁𝖺𝗋𝖾 and 𝖱𝖺𝗇𝖽𝖯𝖪 and a distribution on 𝒳, without a correctness relation; the correctness clause is this volume’s. The auxiliary string models a contribution from the transcript of another protocol, so that a new session changes the shifted key even under a repeated α (Remark 1 there).

FROST is an instance, with the identity exception of Theorem 5.11 in a suite whose element serialisation is not total, with Hr a hash into scalars, whose role the randomiser hash HR of ZIP 312 plays, and with Rounds One and Two and aggregation run unchanged on the shifted material (ePrint 2024/436, Figure 5, read in additive notation and with the challenge input order of RFC 9591, nonce commitment, key, message, in place of the figure’s key, nonce commitment, message; ZIP 312, “Re-randomizable FROST”); its rounds are constructed once, in Construction 5.10. The shifted material is valid key material: for the sharing polynomial f, the polynomial f+α^ has degree at most t−1, constant term s+α^ and values 𝑠𝑘i+α^, and [s+α^]⁢B=𝑃𝐾+[α^]⁢B, [𝑠𝑘i+α^]⁢B=𝑃𝐾i+[α^]⁢B. Recombination on it is Lemma 2.4 applied to f+α^, whose case f=1 gives ∑i∈IλI,i=1. Correctness of the instance is Theorem 5.11.

5.3 Randomiser generation

Construction 5.4 (Randomiser generation of ZIP 312).

After Round One, let m be the message and L the commitment list of Definition 4.3, sorted in ascending order of the nonzero identifiers. The Coordinator draws u uniformly from the Ns-byte strings, Ns the length of a serialised scalar (32 for FROST(Pallas, BLAKE2b-512)), and sets

α^:=HR⁢(u∥enc⁢(L,m)),

where enc is any encoding from which m and, for each member of L, its identifier, hiding commitment and binding commitment are recovered uniquely. It sends α^ itself to the signers. Class (Definition 1.1): specified (ZIP 312, Draft).

The construction is that of ZIP 312, “Randomizer Generation” and “Round Two - Signature Share Generation”. The ZIP’s default encoding is a byte serialisation of the message and the commitment list; it permits any other encoding under which all these values are unambiguously encoded.

In spend authorisation the message is m=𝖲𝗂𝗀𝖧𝖺𝗌𝗁⁢(T) for the transaction T, and 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 commits to the randomised validating key of every Action: ZIP 244, “T.4c: orchard_actions_noncompact_digest”, field T.4c.ii, kept for version 6, and with the same structure for the Ironwood pool, by ZIP 229, “Transaction Identifiers, Auth Digests, and Signature Digests” (Ironwood Guide, Definition “Signature digest”). The aggregate is accepted only under 𝗋𝗄, which for the shifted key of Definition 5.3 is 𝑃𝐾+[α^]⁢B. A valid threshold spend by Construction 5.4 with this message therefore needs a fixed point: a randomiser α^ equal to HR of an input containing the digest of a transaction that contains 𝑃𝐾+[α^]⁢B.

Proposition 5.5 (No randomiser derived from the signature digest).

Let 𝑃𝐾 be the group key of an Orchard-protocol threshold key, with q=p𝖵𝖾𝗌𝗍𝖺 and B=G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁. Let HR=ToScalar∘HR′, where HR′ is a random oracle onto a set of size h and ToScalar maps a uniform element of that set to within δ of uniform on 𝔽q, the one-function form of Assumption 4.2; for FROST(Pallas, BLAKE2b-512), h=2512. Let an algorithm 𝒜, given 𝑃𝐾 and making at most qh queries to HR′, output a transaction T with at most NA Actions, an index j, and a string x=u∥enc⁢(L,m) with u of Ns bytes, as in Construction 5.4. It wins if m=𝖲𝗂𝗀𝖧𝖺𝗌𝗁⁢(T) and the randomised validating key of Action j of T equals 𝑃𝐾+[HR⁢(x)]⁢B. With Q:=qh+1,

Pr⁢[𝒜⁢wins]≤Qh+Q⋅Advcr⁢(ℬ)+Q2⁢NA⁢(1/q+δ)

for an algorithm ℬ of about twice the running time of 𝒜, where Advcr⁢(ℬ) is its probability of breaking the Ironwood Guide’s Assumption “Collision resistance of BLAKE2b”.

Proof.

Only HR′ is modelled as a random oracle; the digest tree of 𝖲𝗂𝗀𝖧𝖺𝗌𝗁 is computed with BLAKE2b under other personalisations, and only its collision resistance is used. Let ϵ be the winning probability. Define an algorithm ℱ for the Crypto Guide’s Theorem “General forking lemma” (§“Security in the random oracle model and the forking lemma”), with challenge set the range of HR′, of size h, and Q challenges. On input 𝑃𝐾 and challenges c1,…,cQ, it runs 𝒜, answering its k-th distinct query to HR′ with ck; on the output (T,j,x) it queries x itself if 𝒜 did not; it returns (I,(T,j,x)), with I the index of the query at x if 𝒜 wins and I=0 otherwise. Its acceptance probability is ϵ, so the forking algorithm succeeds with probability

𝑓𝑟𝑘≥ϵ⁢(ϵQ−1h).

On success the two runs coincide until the I-th query is asked, so both query the same string x at index I, and both win with that x, with outputs T1 and T2 and challenges cI≠cI′. The string x determines m, since u has fixed length and the encoding is unambiguous; hence 𝖲𝗂𝗀𝖧𝖺𝗌𝗁⁢(T1)=𝖲𝗂𝗀𝖧𝖺𝗌𝗁⁢(T2)=m.

If the tuples of randomised validating keys of T1 and T2 differ, descent through the two digest trees from their equal roots yields two distinct pairs of personalisation and input with equal BLAKE2b output, each node hashing a uniquely decodable input (ZIP 244, “TxId Digest” and “Signature Digest”; ZIP 229, “Transaction Identifiers, Auth Digests, and Signature Digests”): at the first node whose inputs differ, the two pairs collide. Running the forking algorithm and this descent is ℬ.

Otherwise T2 contains the point 𝑃𝐾+[ToScalar⁢(cI)]⁢B, which the first run placed at index j of T1. The second run is independent of cI. For a fixed fork index i, each of the at most NA keys of T2 equals 𝑃𝐾+[ToScalar⁢(ci)]⁢B only if ToScalar⁢(ci) takes one value fixed by the second run, which has probability at most 1/q+δ (Math Guide, Theorem “Properties of statistical distance”, part (3)); summing over the keys and over the Q indices,

𝑓𝑟𝑘≤Advcr⁢(ℬ)+Q⁢NA⁢(1/q+δ).

With the lower bound, ϵ2−(Q/h)⁢ϵ−K≤0 for K:=Q⋅Advcr⁢(ℬ)+Q2⁢NA⁢(1/q+δ), so ϵ≤(Q/h+(Q/h)2+4⁢K)/2≤Q/h+K. □

The derivation of Construction 5.4 with the digest as message therefore yields a valid threshold spend only with negligible probability: infeasible in the random-oracle model, not impossible. For FROST(Pallas, BLAKE2b-512), 1/q+δ<2−253.9 and Q/h=Q⋅2−512. Construction 5.4 is the only specified derivation, so no specified randomiser derivation is usable for spend authorisation; the order that a usable one must respect is Proposition 6.12.

Construction 5.6 (Seed-and-commitments randomiser).

After Round One, let L be the commitment list over the signing set I. The Coordinator draws a seed v uniformly from the 32-byte strings and sends it to every member of I over a confidential and authenticated channel (Definition 2.10, type (b)). The Coordinator and every member of I compute

α^:=HR⁢(v∥𝖾𝗇𝖼⁢(L)),

with 𝖾𝗇𝖼⁢(L) the encoding of Definition 4.3; the message is not an input. Two rules are part of the construction and are this volume’s own: HR in both computations, the Coordinator’s and every member’s, so that all parties obtain one scalar; and the confidential and authenticated channel for the seed, which the proof of Proposition 7.24, step (iv), shows necessary. Class (Definition 1.1): designed but unspecified.

The interface is that of ePrint 2024/436, Figure 5 and Remark 1, with (α,𝑎𝑢𝑥)=(v,𝖾𝗇𝖼⁢(L)) and every signer applying HR; the encoding of the commitment list is that of RFC 9591, Section 4.3. A seed flow is published only in the revision of ZIP 312 proposed in pull request 895, and the merged ZIP 312 has none. That hashing the signer-chosen commitments hedges a faulty generator at the Coordinator is asserted informally in ePrint 2024/436, Section 7, and proved nowhere; the Coordinator sees L before it chooses the seed, and it remains trusted for unlinkability (Definition 5.14).

Lemma 5.7 (Distance of the randomiser from uniform).

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

δ+qh⋅2−8⁢Nu

of the pair in which α^ is replaced by a uniform element of 𝔽q independent of all else. For Construction 5.4, Nu=Ns and w=enc⁢(L,m); for Construction 5.6, Nu=32 and w=𝖾𝗇𝖼⁢(L); with Nu=32 the bound is δ+qh⋅2−256.

Proof.

The proof is that of Lemma 4.5 with HR in place of H3 and Nu bytes in place of 32. The observer queries HR at u∥w with probability at most qh⋅2−8⁢Nu, by the union bound over its queries, each having prefix u with probability 2−8⁢Nu in the experiment in which the answer used for α^ is resampled. Outside that event the two experiments coincide, and the resampled answer is within δ of uniform; the triangle inequality (Math Guide, §“Statistical distance”, Theorem “Properties of statistical distance”) gives the bound. □

At qh=264 and Nu=32 the bound is below 2−191.99. The randomiser is thus close to uniform, not exactly uniform as ZIP 312, “Rationale”, states.

Remark 5.8 (Effective randomiser).

The randomiser of ZIP 312 is the effective randomiser α^ of ePrint 2024/436, not its α. The correspondence carries correctness (Theorem 5.11), not the paper’s unforgeability game, whose signing oracle applies Hr itself to an adversarial (α,𝑎𝑢𝑥) (Definition 6 and Figure 4, with 𝖱𝖺𝗇𝖽𝖲𝗁𝖺𝗋𝖾 and 𝖱𝖺𝗇𝖽𝖯𝖪 of Figure 5). Only Construction 5.6 presents the paper’s interface. Wherever the Coordinator sends α^ itself, as in the wire form of Construction 5.4 or when it forwards a randomiser chosen elsewhere, it chooses the effective randomiser outright and the signers use it unchecked; the paper’s game does not model this. This remark is the volume’s one statement of that fact; later statements cite it.

5.4 Authorisation of the signed message

Definition 5.9 (Message check).

In spend authorisation the signed message is m=𝖲𝗂𝗀𝖧𝖺𝗌𝗁⁢(T) for a transaction T (Ironwood Guide, Definition “Signature digest”), which alone does not show a signer what it authorises. With m the Coordinator sends transaction data DT, further data of T, over the confidential and authenticated channel of Definition 2.10, type (b). A signer performs the message check if, before returning a share, it verifies that m is the signature digest determined by DT, or computes m from DT itself. A signature share counts as an approval of the pair (𝗋𝗄,m), with 𝗋𝗄 the shifted group key of its request, only if its signer performed the message check.

ZIP 312, “Round Two - Signature Share Generation”, makes the check a MUST and names as possible data the transaction itself, openings of value commitments and decryptions of note ciphertexts; RFC 9591, Section 7.7 (“Input Message Validation”), recommends such input validation. The honest participants of the security games of §7 perform the check by definition, and their returned shares are the approvals the games count. A signer that omits it authorises whatever the transaction builder chose. Class (Definition 1.1): the obligation is specified; the mechanism by which a signer obtains and checks DT is outside ZIP 312 and designed but unspecified.

5.5 Re-randomised signing, aggregation and share verification

Construction 5.10 (Re-randomised signing of ZIP 312).

The key material is valid (Definition 2.5); the ciphersuite has the randomiser hash HR (Definition 4.1, part (f)).

  1. (1)

    Round One. Each participant runs Construction 4.4 unchanged and sends its commitments over an authenticated channel (Definition 2.10, type (a)).

  2. (2)

    Randomiser. The Coordinator chooses the signing set I and, for each i∈I, one unused commitment pair, forms the commitment list L, and obtains α^ by Construction 5.4 or Construction 5.6, fresh for this run. It sends to each Pi, i∈I, the tuple (m,L,α^,DT), or (m,L,v,DT) with the seed v of Construction 5.6, where DT is the data of Definition 5.9, over a confidential and authenticated channel (Definition 2.10, type (b)); RFC 9591 requires authentication only.

  3. (3)

    Round Two. Member Pi performs the checks of Construction 4.8, its check (1) being the message check of Definition 5.9; in the seed variant it computes α^:=HR⁢(v∥𝖾𝗇𝖼⁢(L)). It computes 𝑃𝐾′:=𝑃𝐾+[α^]⁢B from its stored group key and runs Construction 4.8 with 𝑠𝑘i+α^ in place of 𝑠𝑘i and 𝑃𝐾′ in place of 𝑃𝐾. The shifted group key 𝑃𝐾′, not 𝑃𝐾, is the key serialised into H1 for the binding factors and into H2 for the challenge (Definition 4.7). Its share is

    zi:=di+ei⁢ρi+λI,i⁢(𝑠𝑘i+α^)⁢c,

    returned as in RFC 9591 over an authenticated, not confidential, channel (Definition 2.10, type (a)).

  4. (4)

    Aggregation. The Coordinator runs Construction 4.9 with 𝑃𝐾′ in place of 𝑃𝐾, and verifies the aggregate under 𝑃𝐾′.

  5. (5)

    Share verification. The share equation of Construction 4.9 is checked with 𝑃𝐾i+[α^]⁢B in place of 𝑃𝐾i and with the shifted group key:

    [zi]⁢B=Ri+[c⁢λI,i]⁢(𝑃𝐾i+[α^]⁢B).

Every signing run uses a fresh randomiser, generated in its own Round Two: a randomiser used for two runs of one key gives both the same shifted key and links them. The output (R,z) is a signature under 𝗋𝗄:=𝑃𝐾′. Class (Definition 1.1): specified (ZIP 312, Draft), the seed variant designed but unspecified.

The construction is that of ZIP 312, “Round One - Commitment”, “Round Two - Signature Share Generation” and “Signature Share Verification and Aggregation”, over RFC 9591, Sections 5.1 to 5.4: the randomised signing, aggregation and share-verification functions are the regular ones with the share, the verification share and the group key shifted by α^ and by [α^]⁢B. Round One keeps the unshifted share in the nonce hash, the randomiser not yet existing. The keys 𝑃𝐾 and 𝑃𝐾i are those stored from key generation, never taken from the messages of the run (Construction 4.9). What the returned shares reveal to a party that sees them is Proposition 7.25.

Theorem 5.11 (Correctness of re-randomised FROST).

Let the key material be valid, with signing key s and group key 𝑃𝐾; let α^∈𝔽q, I a signing set and m a message that every member of I accepts. Outside the exceptions below, a run of Construction 5.10 in which every party is honest outputs (R,z) with

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

which the single-party verification accepts on m under 𝑃𝐾+[α^]⁢B, and every share satisfies its shifted share equation. The exceptions are those of Theorem 4.11 for the shifted material, together with the identity case of the shifted group key: in a suite whose element serialisation is not total, the run fails when 𝑃𝐾+[α^]⁢B=𝒪.

Proof.

By Definition 5.3 and the paragraph following it, the shifted shares 𝑠𝑘j+α^, verification shares 𝑃𝐾j+[α^]⁢B and group key 𝑃𝐾+[α^]⁢B are valid key material for s+α^, with sharing polynomial f+α^. Steps (3) to (5) of Construction 5.10 are Constructions 4.8 and 4.9 run on that key material. Round One enters those constructions only through the nonces, each an answer of H3 whichever share enters its input. Theorem 4.11 applied to the shifted material gives R=[r]⁢B, z=r+c⁢(s+α^) and acceptance under 𝑃𝐾+[α^]⁢B, outside its cases; and Proposition 4.10, part (ii), applied to it gives the shifted share equations. Both use only validity of the key material. When 𝑃𝐾+[α^]⁢B=𝒪 in a suite whose element serialisation is not total, 𝗌𝖾𝗋𝔾⁢(𝑃𝐾′) is undefined, and so are the binding factors of Definition 4.7; the run fails. □

ZIP 312, “Rationale”, makes the same argument, and ePrint 2024/436, Equation (2), displays it; the ZIP cites, rather than proves, the coefficient sum one on which it rests, which Lemma 2.4 proves.

Example 5.12 (The two-of-three run, re-randomised).

Every number below is output by the volume’s toy script. The toy curve, the key material, the encodings, the message toy message and the signing set I={1,3} are those of Example 4.12. Members 1 and 3 draw fresh Round One nonces: reusing that example’s nonces would reuse a nonce pair (Lemma 4.13). The randomiser is that of Construction 5.6, with a fixed seed and HR BLAKE2b-512 under the personalisation of FROST(Pallas, BLAKE2b-512) reduced modulo 967: α^=565. The shifted group key and shares are

𝑃𝐾+[565]⁢B=(268,139),𝑠𝑘1+α^=697,𝑠𝑘3+α^=319,

and λI,1+λI,3=1 modulo 967. With the shifted key in H1 and H2, the binding factors are ρ1=480 and ρ3=303, the group commitment is R=(302,757) and the challenge is c=151. The shares are z1=151 and z3=652, and each satisfies its shifted share equation against 𝑃𝐾i+[α^]⁢B. The aggregate is z=803=r+c⁢(s+α^), and [z]⁢B=R+[c]⁢(𝑃𝐾+[α^]⁢B) holds.

5.6 Trust model of ZIP 312

Remark 5.13 (Requirements of ZIP 312).

ZIP 312, “Requirements”, states three requirements, in lower case, although its “Terminology” invokes the key words of RFC 2119:

  1. (a)

    all signatures generated by following the ZIP must verify as Sapling or Orchard spend-authorisation signatures under the appropriate validating key, which Proposition 6.3 proves for the Pallas suite, the Sapling suite being outside the volume;

  2. (b)

    they should meet the security criteria of the protocol specification for signatures with re-randomisable keys, Definition 5.1, whose threshold form is an open problem (Table 3);

  3. (c)

    the threat model must be taken into account, which Definition 5.14 makes exact.

Definition 5.14 (Threat model of ZIP 312).

The threat model of ZIP 312 consists of two clauses.

  1. (i)

    The Coordinator is trusted with the privacy of the transaction, unlinkability included. A rogue Coordinator can break both, but “should not be able to create signed transactions without the approval of” t participants, “as specified in FROST”; the ZIP’s MIN⁢_⁢PARTICIPANTS is t. An approval is a share returned after the message check (Definition 5.9).

  2. (ii)

    Every key-share holder is likewise trusted with the privacy of the transaction and with unlinkability.

The clauses are those of ZIP 312, “Threat Model”. The should of clause (i) is lower case, within a threat model that the Requirements say must be taken into account; it is not a must not. ePrint 2024/436, Section 5.1, states the same split: the party choosing the randomiser is trusted with privacy, not with security. The privacy trust is forced by the flow: the Coordinator generates α^, every signer receives it, or the seed with L, and whoever holds it computes 𝑃𝐾=𝗋𝗄−[α^]⁢B and links the run to the key (the proof of Proposition 7.24, step (iv)). The unforgeability clause has no proof, as §7.5 records (Remark 7.22). In RFC 9591, Section 7, the Coordinator holds no private information; trust in it for privacy is what re-randomisation adds.

ZIP 312, “Non-requirements”, excludes four things: removal of the Coordinator role (RFC 9591, Section 7.5, “Removing the Coordinator Role”); prevention of key-share holders from linking a signing run to its transaction on the chain; a key-generation procedure, for which it refers to RFC 9591; and network privacy.

Remark 5.15 (Unlinkability as ZIP 312 states it).

ZIP 312, “Terminology”, defines unlinkability as statistical independence of signatures from the signers’ long-term keys, ensuring, “for perfectly uniform generation of Randomizers and no leakage of metadata”, that it is “impossible to determine whether two transactions were generated by the same party”. The statement is informal: it names no observer and no view. Definition 7.23 makes it exact against a specified observer, and Lemma 5.7 replaces perfect uniformity.