The Zcash ArboretumFROST Guide PDF

6 The aggregate as a spend-authorisation signature

This section instantiates the re-randomised protocol of §5 over the ciphersuite FROST(Pallas, BLAKE2b-512) and composes it with the Orchard protocol. After the ciphersuite comes the section’s main result: the aggregate is an ordinary RedPallas spend-authorisation signature under the shifted group key, and consensus accepts it for an Action exactly when the effective randomiser is the Action’s randomiser. There follow the sign normalisation that makes a threshold group key a spend validating key; the key tree of ZIP 2005 for an Orchard-protocol threshold key, with the lemma that its common secrets are simulable; the order of randomiser, randomised validating key, signature digest and proof that the main result forces; and the threshold construction of an Action in that order. Throughout, q=p𝖵𝖾𝗌𝗍𝖺, B=G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁, the effective randomiser is α^ (Definition 5.3) and the randomiser of an Action is α.

6.1 The ciphersuite FROST(Pallas, BLAKE2b-512)

For a point P of the Pallas group write P¯:=𝖫𝖤𝖡𝖲𝟤𝖮𝖲𝖯256⁢(P⋆), the 32-byte form of the star encoding (Ironwood Guide, §“Fields, groups, and encodings”, Definition “Star encoding”), and 𝖺𝖻𝗌𝗍ℙ for its partial inverse.

Construction 6.1 (FROST(Pallas, BLAKE2b-512)).

The ciphersuite FROST(Pallas, BLAKE2b-512) is the following instance of Definition 4.1, for re-randomised signing.

  1. (a)

    Group. The Pallas group ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌), of prime order q=p𝖵𝖾𝗌𝗍𝖺 (ZIP 312’s rℙ) and cofactor 1, with identity 𝒪 and generator

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

    (Ironwood Guide, §“GroupHash, domain separation, and nothing-up-my-sleeve generators”; Definition “Spend-authorisation and binding-signature instances”), ZIP 312’s 𝒢𝖮𝗋𝖼𝗁𝖺𝗋𝖽. A random scalar is uniform on {0,…,p𝖵𝖾𝗌𝗍𝖺−1}.

  2. (b)

    Elements. Ne=32 and 𝗌𝖾𝗋𝔾⁢(P):=P¯, which is total: 𝒪⋆=LE256⁢(0). The deserialisation maps a 32-byte string b to 𝖺𝖻𝗌𝗍ℙ⁢(𝖫𝖤𝖡𝖲𝟤𝖮𝖲𝖯256−1⁢(b)), and fails if that value is ⊥ and, in addition, if it is 𝒪. The function 𝖺𝖻𝗌𝗍ℙ itself decodes LE256⁢(0) to 𝒪 (step 2 of Definition “Star encoding”); the rejection of the identity is the suite’s, not 𝖺𝖻𝗌𝗍ℙ’s.

  3. (c)

    Scalars. Ns=32, 𝗌𝖾𝗋𝔽q⁢(k):=𝖨𝟤𝖫𝖤𝖮𝖲𝖯256⁢(k), and 𝖽𝖾𝗌𝖾𝗋𝔽q fails on a 32-byte string whose little-endian integer is not below p𝖵𝖾𝗌𝗍𝖺.

  4. (d)

    Hashes. BLAKE2b-512 with a 16-byte personalisation, Nh=64, the roles H1 to H5 as in Table 2.

  5. (e)

    Signature encoding and verification as in Definition 4.1, part (e), with these data.

  6. (f)

    Randomiser hash. The role HR of Table 2.

Class (Definition 1.1): specified (ZIP 312, Draft).

The data are those of ZIP 312, “FROST(Pallas, BLAKE2b-512)”, which takes the group, the order and the encoding 𝗋𝖾𝗉𝗋ℙ from the protocol specification, §“Pallas and Vesta”, and the base point from §“Spend Authorization Signature (Sapling and Orchard)”. The generic element serialisation of RFC 9591, Section 3.1, fails on the identity; this one does not. Three consequences for Theorem 4.11 follow. Its case (2), R=𝒪, does not arise, the serialisation being total. Its case (1), a zero nonce, remains: a commitment Di or Ei equal to 𝒪 is serialised in Round One and rejected by 𝖽𝖾𝗌𝖾𝗋𝔾 in check (3) of Round Two. The only identity condition left on the output is the consensus rule 𝗋𝗄≠𝒪 (Corollary 6.4).

Role Personalisation Output
H1, binding factor FROST_RedPallasR ToScalar
H2, challenge Zcash_RedPallasH ToScalar
H3, nonce FROST_RedPallasN ToScalar
H4, message pre-hash FROST_RedPallasM 64-byte digest
H5, commitment-list pre-hash FROST_RedPallasC 64-byte digest
HR, randomiser FROST_RedPallasA ToScalar
Table 2: Hash functions of FROST(Pallas, BLAKE2b-512). Each role maps x to BLAKE2b⁢-⁢512⁢(𝑝𝑒𝑟𝑠,x), followed where stated by ToScalar⁢(y)=𝖫𝖤𝖮𝖲𝟤𝖨𝖯512⁢(y)modp𝖵𝖾𝗌𝗍𝖺 (Ironwood Guide, §“Pseudorandom functions and field reductions”, Definition “Field reductions”). The challenge hash H2 is, as a function, the RedPallas hash 𝖧⊛⁢(z)=ToScalar⁢(BLAKE2b⁢-⁢512⁢(Zcash_RedPallasH,z)) (Ironwood Guide, §“The RedPallas signature scheme”, Definition “RedPallas hash”), so the FROST challenge is the challenge that RedPallas validation recomputes; the other five personalisations carry the prefix FROST_. Source: ZIP 312, “FROST(Pallas, BLAKE2b-512)”.

The reduction ToScalar is ZIP 312’s “interpreting the 64 bytes as a little-endian integer, and reducing the resulting integer modulo G.Order()”. ZIP 312 records the equality of H2 and 𝖧⊛ (protocol specification, §“RedDSA, RedJubjub, and RedPallas”).

Proposition 6.2 (Random-oracle model of the Pallas ciphersuite).

Assume Assumption 4.2 in its form for a suite built from one hash function under distinct personalisations: the map (𝑝𝑒𝑟𝑠,x)↦BLAKE2b⁢-⁢512⁢(𝑝𝑒𝑟𝑠,x) is modelled as a random oracle. Its restriction to 𝑝𝑒𝑟𝑠=Zcash_RedPallasH is the Ironwood Guide’s Assumption “The RedPallas hash as a random oracle”. No further assumption is introduced. Then:

  1. (i)

    the hashes H1, H2, H3, H4, H5 and HR are independent random oracles;

  2. (ii)

    each value of H1, H2, H3 and HR at a new input is within statistical distance

    δ512:=p𝖵𝖾𝗌𝗍𝖺/2512<2−257

    of a uniform scalar, so the suite meets Assumption 4.2 with δ=δ512;

  3. (iii)

    the hashes H4 and H5 are random oracles onto the 64-byte strings, so Q queries find a collision of either with probability at most Q2/2513;

  4. (iv)

    the independence of Hdkg that Assumptions 3.5 and 4.2 require holds for every instantiation of Hdkg by BLAKE2b-512 under a 16-byte personalisation distinct from the six of Table 2. No such instantiation is specified (ZIP 312, “Key Generation”).

Proof.

(i) The six personalisations are pairwise distinct and all 16 bytes long, hence prefix-free; Crypto Guide, §“Domain separation and personalisation”, Proposition “Domain separation yields independent oracles”, gives independence. (ii) A value at a new input is ToScalar of a uniform 64-byte string, whose distance from uniform is at most p𝖵𝖾𝗌𝗍𝖺/2512 by Math Guide, §“Uniform sampling and the bias of modular reduction”, Proposition “Bias of modular reduction”, with L=512, the bound that the Ironwood assumption records; and p𝖵𝖾𝗌𝗍𝖺/2512=2−258⁢(1+e) with 0<e<2−128. (iii) Birthday bound, Math Guide, §“The union bound and a birthday calculation”, Proposition “Birthday bound”: (Q2)⁢2−512≤Q2/2513. (iv) Part (i) applied to seven distinct personalisations. □

At Q=264 the collision bound of part (iii) is 2−385.

6.2 Validity of the aggregate

Proposition 6.3 (Aggregates are spend-authorisation signatures).

Let valid key material (Definition 2.5) with group key Y be given over FROST(Pallas, BLAKE2b-512), let α^∈𝔽q be an effective randomiser and m a message that every member of the signing set accepts (Definition 5.9). Every run of Construction 5.10 in which every party is honest either fails, in the zero-nonce case of Theorem 4.11, or outputs (R,z) whose encoding

σ:=𝗌𝖾𝗋𝔾⁢(R)∥𝗌𝖾𝗋𝔽q⁢(z)

(RFC 9591, Appendix A) is accepted by the validation of the spend-authorisation instance of RedPallas (Ironwood Guide, Construction “RedPallas”, part 3, with base G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁) under X:=Y+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 on M:=m. No completed honest run yields an aggregate that validation rejects.

Proof.

Theorem 5.11 gives [z]⁢B=R+[c]⁢X with c=H2⁢(𝗌𝖾𝗋𝔾⁢(R)⁢‖𝗌𝖾𝗋𝔾⁢(X)‖⁢m) (RFC 9591, Section 4.6), its only exception in this suite being the zero nonce, since 𝗌𝖾𝗋𝔾 is total. Validation of σ under X on m proceeds as follows.

  1. 1.

    The first 32 bytes are R¯=R¯, and 𝖺𝖻𝗌𝗍ℙ⁢(R⋆)=R because the star encoding is canonical and total, R=𝒪 included; so the decoded point is R≠⊥.

  2. 2.

    The last 32 bytes give S=z, an integer below p𝖵𝖾𝗌𝗍𝖺 since z∈𝔽q.

  3. 3.

    Validation computes 𝖧⊛⁢(R¯⁢‖X¯‖⁢m), where X¯=𝗌𝖾𝗋𝔾⁢(X): the inputs of the FROST challenge in the same order. Since H2=𝖧⊛ (Table 2), it recomputes c.

  4. 4.

    The equation [S]⁢B=R+[c]⁢X, whose cofactor is 1 on Pallas, is the FROST equation of RFC 9591, Appendix B, which holds.

How R was produced does not enter validation. These are the conditions that ZIP 312, “Rationale”, lists. □

ZIP 312, “FROST(Pallas, BLAKE2b-512)”, states that the suite is meant to produce signatures “indistinguishable from RedPallas Orchard Spend Authorization Signatures”. This volume reads that phrase as the statement of format and validation above; the distributional statement, for randomisers of Construction 5.6, is Proposition 7.24.

Corollary 6.4 (The effective randomiser is the Action’s randomiser).

Let Y=𝖺𝗄ℙ=[s]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 be the spend validating key of the key of the note that an Action consumes, and let the Action carry 𝗋𝗄=𝖺𝗄ℙ+[α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 (Ironwood Guide, §“Randomised validating keys”, Construction “Randomised validating key”). Then

Y+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁=𝗋𝗄⟺α^=α⁢in⁢𝔽p𝖵𝖾𝗌𝗍𝖺.

Consequently:

  1. (i)

    if α^=α, the aggregate of Proposition 6.3 on the signature digest is valid under 𝗋𝗄;

  2. (ii)

    if α^≠α, with α and α^ fixed before the queries to H2 whose inputs contain either key, the aggregate is valid under 𝗋𝗄 with probability at most (Q2+2)⁢(1/p𝖵𝖾𝗌𝗍𝖺+δ512) in an experiment with at most Q2 queries to H2 (Proposition 5.2, applied to the key Y+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 and the shift α−α^≠0);

  3. (iii)

    the consensus rule 𝗋𝗄≠𝒪 (protocol specification, §“Action Descriptions”; Ironwood Guide, Construction “Verification”, part (1)) fails exactly when α=−s. For α=α^ the output of Construction 5.6, fixed after the key, this has probability at most

    1/p𝖵𝖾𝗌𝗍𝖺+δ512+qh⋅2−256,

    with qh the number of queries to HR made by the party that fixed the key (Lemma 5.7).

Hence, up to these probabilities, consensus accepts the aggregate as the Action’s spend-authorisation signature if and only if the effective randomiser equals the Action’s α.

Proof.

The map k↦[k]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 is injective on 𝔽p𝖵𝖾𝗌𝗍𝖺, since G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 generates a group of prime order p𝖵𝖾𝗌𝗍𝖺; and Y+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁−𝗋𝗄=[α^−α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁. Part (i) is Proposition 6.3 with X=𝗋𝗄. Part (ii) is the cited proposition, whose hypotheses hold: the shifted material is valid key material (Definition 5.3 and the paragraph following it), and 𝗋𝗄≠𝒪 in an accepted Action. For (iii), 𝗋𝗄=[s+α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 is 𝒪 exactly when α=−s; a value within statistical distance ϵ of uniform takes a fixed value with probability at most 1/p𝖵𝖾𝗌𝗍𝖺+ϵ (Math Guide, Theorem “Properties of statistical distance”, part (3)), and Lemma 5.7 gives ϵ=δ512+qh⋅2−256. □

For FROST(Pallas, BLAKE2b-512) the term 1/p𝖵𝖾𝗌𝗍𝖺+δ512 of parts (ii) and (iii) is below 2−253.9.

Remark 6.5 (Consensus is unchanged).

No consensus rule refers to FROST or to a threshold key. The rules that bear on spend authorisation, 𝗋𝗄≠𝒪 and validity of the spend-authorisation signature under 𝗋𝗄 on the signature digest (Ironwood Guide, §“Verification of a transaction”, Construction “Verification”), read only 𝗋𝗄, the 64-byte signature and the digest; validation does not depend on how R was produced (ZIP 312, “Rationale”). The first requirement of ZIP 312, “Requirements”, that every signature produced by following the ZIP be verified successfully as an Orchard spend-authorisation signature under the appropriate validating key, is met by Proposition 6.3. The remark makes no claim about the security of the signers, which is the subject of §7.

6.3 Sign normalisation of a shared key

The spend validating key 𝖺𝗄ℙ of an Orchard-protocol key has even y-coordinate: the last bit, the y~ bit, of 𝗋𝖾𝗉𝗋ℙ⁢(𝖺𝗄ℙ) is 0. For keys with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾 the protocol specification, §“Orchard Key Components”, produces this by negating 𝖺𝗌𝗄 when the bit is 1 (Ironwood Guide, §“The spending key and the spend-side secrets”, Construction “Spend validating key and sign normalisation”). For keys with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝗍𝗋𝗎𝖾, ZIP 2005’s replacement text for that section (“Changes to the Protocol Specification”, § 4.2.3 “Orchard Key Components”) requires 𝖺𝗄ℙ∈ℙ∗ to be obtained “by any suitably secure method that ensures the last bit of 𝗋𝖾𝗉𝗋ℙ⁢(𝖺𝗄ℙ) is 0”; the published specification does not yet carry that text. The requirement is one of key derivation, not a consensus rule: the Action statement admits either sign (protocol specification, §“Action Statement (Orchard)”; Ironwood Guide, Remark “Sign of 𝖺𝗄ℙ”). A full viewing key records only 𝖺𝗄=𝖤𝗑𝗍𝗋𝖺𝖼𝗍ℙ⁢(𝖺𝗄ℙ) (Ironwood Guide, §“Viewing keys”, Definition “Full viewing key”), from which a transaction builder recovers the point by the even-y lift. For a group key 𝑃𝐾 of odd y the lift yields −𝑃𝐾; the builder forms 𝗋𝗄=−𝑃𝐾+[α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁, which with α=α^ differs from 𝑃𝐾+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 by [2]⁢𝑃𝐾≠𝒪, and by Proposition 5.2, part (ii), applied to the key 𝑃𝐾+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 and the shift −2⁢s≠0, the aggregate is accepted under 𝗋𝗄 with probability at most (Q2+2)⁢(1/p𝖵𝖾𝗌𝗍𝖺+δ512). The randomised key 𝗋𝗄 carries no parity condition. Class (Definition 1.1): specified (ZIP 2005, Proposed, taking effect with NU6.3, which ZIP 258, Draft, deploys; ZIP 258, “ZIP 2005 activation”).

Lemma 6.6 (Negation of key material).

Let shares 𝑠𝑘j, coefficient commitments A0,…,At−1, verification shares 𝑃𝐾j and group key 𝑃𝐾 be valid key material for the signing key s with sharing polynomial f (Definition 2.5). Then −𝑠𝑘j, −Ak, −𝑃𝐾j and −𝑃𝐾 are valid key material for −s, with sharing polynomial −f. If 𝑃𝐾≠𝒪, the last bit of 𝗋𝖾𝗉𝗋ℙ⁢(−𝑃𝐾) differs from that of 𝗋𝖾𝗉𝗋ℙ⁢(𝑃𝐾), and 𝖤𝗑𝗍𝗋𝖺𝖼𝗍ℙ⁢(−𝑃𝐾)=𝖤𝗑𝗍𝗋𝖺𝖼𝗍ℙ⁢(𝑃𝐾).

Proof.

The polynomial −f has degree at most t−1, coefficients −ak and constant term −s; and −𝑠𝑘j=(−f)⁢(j), [−ak]⁢B=−Ak, [−𝑠𝑘j]⁢B=−𝑃𝐾j and [−s]⁢B=−𝑃𝐾, which are the conditions of Definition 2.5. For 𝑃𝐾=(x,y)≠𝒪, −𝑃𝐾=(x,p𝖯𝖺𝗅𝗅𝖺𝗌−y). Here y≠0, since a point with y=0 has order 2 and the group has odd order; and p𝖯𝖺𝗅𝗅𝖺𝗌 is odd, so y and p𝖯𝖺𝗅𝗅𝖺𝗌−y have opposite parities. The last bit of the star encoding is ymod2 (Ironwood Guide, Definition “Star encoding”). The extracted coordinate is x for both points (Ironwood Guide, §“Fields, groups, and encodings”, Lemma “Coordinate extraction identifies opposite points”). □

On the toy curve of Example 4.12, the negated material has −s=646 and shares 835, 57, 246; the group key 𝑃𝐾=(526,125) becomes −𝑃𝐾=(526,884), with the same x-coordinate and the parity of y changed from 1 to 0.

Construction 6.7 (Sign normalisation of key material).

Input: valid key material output by Construction 3.2 or by Construction 3.6. Every party computes 𝑃𝐾 from public data (Lemma 2.6).

  1. 1.

    If 𝑃𝐾=𝒪, key generation is repeated: ZIP 2005 requires 𝖺𝗄ℙ∈ℙ∗, and neither key generation excludes s=0.

  2. 2.

    Otherwise, if the last bit of 𝗋𝖾𝗉𝗋ℙ⁢(𝑃𝐾) is 1, every participant Pj replaces its share 𝑠𝑘j by −𝑠𝑘j, and every party replaces each Ak, each 𝑃𝐾j and 𝑃𝐾 by its negative.

The test reads public data only, so all parties decide identically without interaction. Output: the resulting key material and 𝖺𝗄ℙ:=𝑃𝐾. Class (Definition 1.1): the requirement is specified (ZIP 2005, Proposed); the method is this volume’s.

Correctness.

Validity of the output and even y of 𝖺𝗄ℙ follow from Lemma 6.6; 𝑃𝐾≠𝒪 on output by step (1). □

6.4 The key tree of an Orchard-protocol FROST key

The Ironwood Guide constructs only keys with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾 (Remark “Scope of the key derivations”). Write 𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽 for the Ironwood Guide’s Construction “Expansion function” and ToBase, ToScalar for its Definition “Field reductions” (“Pseudorandom functions and field reductions”); 𝗍𝗋𝗎𝗇𝖼𝖺𝗍𝖾32 returns the first 32 bytes of its input.

Construction 6.8 (Orchard-protocol threshold key).

This is the branch 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝗍𝗋𝗎𝖾 of ZIP 2005’s replacement for § 4.2.3 “Orchard Key Components”.

  1. 1.

    Run a key generation (§3) and Construction 6.7; let 𝖺𝗄ℙ:=𝑃𝐾 and 𝖺𝗄:=𝖤𝗑𝗍𝗋𝖺𝖼𝗍ℙ⁢(𝖺𝗄ℙ), non-zero since 𝖺𝗄ℙ≠𝒪 (Ironwood Guide, Lemma “Extract vanishes only at the identity”).

  2. 2.

    The participants privately agree on a spending key 𝗌𝗄, a 32-byte string drawn uniformly and independently of the key material.

  3. 3.

    Every participant computes

    𝗇𝗄 :=𝖧𝗇𝗄⁢(𝗌𝗄)=ToBase⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗌𝗄⁢([𝟶⁢𝚡⁢𝟶𝟽])),
    𝗊𝗌𝗄 :=𝖧𝗊𝗌𝗄⁢(𝗌𝗄)=𝗍𝗋𝗎𝗇𝖼𝖺𝗍𝖾32⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗌𝗄⁢([𝟶⁢𝚡⁢𝟶⁢𝙲])),
    𝗊𝗄 :=𝖧𝗊𝗄⁢(𝗊𝗌𝗄)
    =BLAKE3.derive⁢_⁢key⁢(Zcash ZIP 2005 qk-derivation v1,𝗊𝗌𝗄,32),
    𝗋𝗂𝗏𝗄 :=𝖧𝗊𝗄𝗋𝗂𝗏𝗄⁢_⁢𝖾𝗑𝗍⁢(𝖺𝗄,𝗇𝗄)
    =ToScalar⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗊𝗄⁢([𝟶⁢𝚡⁢𝟶⁢𝙳]⁢‖𝖨𝟤𝖫𝖤𝖮𝖲𝖯256⁢(𝖺𝗄)‖⁢𝖨𝟤𝖫𝖤𝖮𝖲𝖯256⁢(𝗇𝗄))),

    where 𝖧𝗊𝗄 is the key-derivation mode of the BLAKE3 hash function with the displayed context string and a 32-byte output, ZIP 2005’s derivation, of which no property is used below.

  4. 4.

    The remainder of § 4.2.3 is unchanged: 𝗂𝗏𝗄:=𝖢𝗈𝗆𝗆𝗂𝗍𝗋𝗂𝗏𝗄𝗂𝗏𝗄⁢(𝖺𝗄,𝗇𝗄), the internal keys and the other keys derived from (𝖺𝗄,𝗇𝗄,𝗋𝗂𝗏𝗄), and the rejection of a key whose 𝗂𝗏𝗄 or internal 𝗂𝗏𝗄 lies in {0,⊥}. On rejection step (2) is repeated with a new 𝗌𝗄, and 𝖺𝗄ℙ is kept.

  5. 5.

    The protocol MUST ensure that all participants obtain the same 𝖺𝗄, 𝗇𝗄 and 𝗋𝗂𝗏𝗄, which ZIP 2005 calls 𝗋𝗂𝗏𝗄⁢_⁢𝖾𝗑𝗍.

The spend authorising key 𝖺𝗌𝗄=s stays threshold-shared. Figure 1 shows the tree.

Steps (3) and (5), the agreement of step (2) and the rejection of step (4) quote ZIP 2005, “Usage with FROST” and “Changes to the Protocol Specification”, § 4.2.3; the uniform, independent draw of 𝗌𝗄 in step (2) and keeping 𝖺𝗄ℙ on rejection in step (4) are this volume’s reading of “privately agree” and of the repetition with a new 𝗌𝗄. Step (1) meets the even-y clause of that section by Construction 6.7. Attempts of step (4) are independent, 𝗌𝗄 being fresh on each; the volume proves no bound on their rejection probability.

ZIP 2005 names two sources of 𝖺𝗄ℙ for 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝗍𝗋𝗎𝖾: direct generation of an Orchard-protocol 𝖺𝗌𝗄∈𝔽p𝖵𝖾𝗌𝗍𝖺∗ with 𝖺𝗄ℙ=[𝖺𝗌𝗄]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁, which a dealer then shares by Construction 3.2; and FROST distributed key generation in which the spend-authorisation material is t-of-n shared, here Construction 3.6. Its “Deployment” states that “FROST distributed key generation requires the 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝗍𝗋𝗎𝖾 case”. The key-generation section that ZIP 2005 cites for the second method is ZIP 312, “Key Generation”, which leaves key generation out of scope.

The Orchard pool is spend-only by consensus: no transaction increases its value, and every Orchard-pool Action creates its note at the address of the note it consumes (ZIP 258, Draft, “Consensus rules from NU6.3 activation”; Ironwood Guide, §“The Orchard protocol and its two pools”). By consensus, therefore, only a party able to authorise spends for an address can create an Orchard-pool note to it, the consumed side of the Action being possibly a dummy note at that address (ZIP 326, “Rationale for key-generation restrictions”). ZIP 326 (Draft), “Wallet key-generation restrictions”, forbids conforming wallets to send Orchard-pool funds to a key with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝗍𝗋𝗎𝖾; under that rule such a key, in particular every key from distributed key generation, holds no Orchard-pool notes, and consensus does not enforce the rule. A dealer-shared key with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾 may spend notes of either pool. This qualifies the statement of §1.1 that both pools are served.

Remark 6.9 (Scope of the ZIP 2005 constraints).

ZIP 2005, “Usage with FROST”, states its constraints for keys whose 𝖺𝗄 is derived jointly by distributed key generation, and this volume reads its MUST as binding those keys. A dealer that shares an 𝖺𝗌𝗄 derived from a spending key, which ZIP 312, “Key Generation”, permits, produces an ordinary key with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾, known to the dealer and outside that constraint. A dealer that shares a directly generated 𝖺𝗌𝗄 may use Construction 6.8.

Remark 6.10 (Custody of the common secrets).

Under Construction 6.8 the spend authorising key 𝖺𝗌𝗄 is threshold-shared and no signing run assembles it, while 𝗌𝗄, 𝗇𝗄, 𝗋𝗂𝗏𝗄 and 𝗊𝗌𝗄 are known to every participant. Each participant MUST treat 𝗊𝗌𝗄 as a secret held at least as securely and reliably as 𝖺𝗌𝗄 (ZIP 2005, “Usage with FROST”).

Lemma 6.11 (Viewing material and the signing key).
  1. (a)

    For Construction 6.8, the tuple V:=(𝗌𝗄,𝗇𝗄,𝗊𝗌𝗄,𝗊𝗄,𝗋𝗂𝗏𝗄,𝗂𝗏𝗄,…), with every key derived from 𝖺𝗄, 𝗇𝗄 and 𝗋𝗂𝗏𝗄, is a randomised function of 𝖺𝗄 alone, 𝗌𝗄 being drawn independently of the key material. Hence, for every experiment in which an adversary receives V together with other inputs, an adversary that receives only the other inputs, 𝖺𝗄ℙ among them, draws 𝗌𝗄 uniformly, computes V with the same rejection, and runs the first, has identical output distribution.

  2. (b)

    For a dealer-shared key with 𝗎𝗌𝖾⁢_⁢𝗊𝗌𝗄=𝖿𝖺𝗅𝗌𝖾 and 𝖺𝗌𝗄=±ToScalar⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗌𝗄⁢([𝟶⁢𝚡⁢𝟶𝟼])) derived from 𝗌𝗄, the spending key determines 𝖺𝗌𝗄, so no participant may hold 𝗌𝗄. The participants’ 𝗇𝗄=ToBase⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗌𝗄⁢([𝟶⁢𝚡⁢𝟶𝟽])) and 𝗋𝗂𝗏𝗄=ToScalar⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗌𝗄⁢([𝟶⁢𝚡⁢𝟶𝟾])), hence the full viewing key, are simulated from 𝖺𝗄ℙ and independent uniform values with the same rejection, at a cost, per key attempt, of the advantage against the Ironwood Guide’s Assumption “Pseudorandomness of PRF expansion” plus the sum of the three reduction distances, below 3⋅2−257.

Proof.

(a) Every component of V is computed from 𝗌𝗄 and 𝖺𝗄, and the rejection test reads only 𝗌𝗄 and 𝖺𝗄; the construction draws 𝗌𝗄 independently of the key material, as the simulating adversary does. (b) By the Ironwood Guide’s Lemma “Independence of domain-separated expansions” (“Pseudorandom functions and field reductions”), under Assumption “Pseudorandomness of PRF expansion” and with the three distinct leading bytes 𝟶⁢𝚡⁢𝟶𝟼, 𝟶⁢𝚡⁢𝟶𝟽, 𝟶⁢𝚡⁢𝟶𝟾, the triple (𝖺𝗌𝗄,𝗇𝗄,𝗋𝗂𝗏𝗄) is replaced by independent uniform values at the stated cost, each reduction distance being below 2−257. After the replacement 𝗇𝗄 and 𝗋𝗂𝗏𝗄 are independent of 𝖺𝗌𝗄, hence of 𝖺𝗄ℙ, and the simulator draws them and applies the rejection test, which reads 𝖺𝗄, 𝗇𝗄 and 𝗋𝗂𝗏𝗄. No property of 𝖧𝗊𝗄 is used. □

Section 7 uses the lemma to give the corrupt participants the common secrets. Class (Definition 1.1): ZIP 2005’s constraints on FROST key generation are specified (ZIP 2005, Proposed); how the participants privately agree on 𝗌𝗄 is designed but unspecified: ZIP 2005, “Usage with FROST”, requires only that they agree privately, no specification gives a protocol for it, and the revision of ZIP 312 proposed in pull request 895 publishes one.

Refer to caption
Figure 1: The Orchard-protocol threshold key of Construction 6.8. Red: threshold-shared values; the shares 𝑠𝑘1,…,𝑠𝑘n determine 𝖺𝗌𝗄 by Lagrange recombination, which no signing run performs (dashed). Amber: secrets common to all participants, derived from the privately agreed spending key 𝗌𝗄: 𝗇𝗄 and 𝗊𝗌𝗄 from 𝗌𝗄, 𝗊𝗄 from 𝗊𝗌𝗄, and 𝗋𝗂𝗏𝗄 from (𝖺𝗄,𝗇𝗄) keyed by 𝗊𝗄. Blue: values known to every party, the group key 𝑃𝐾, normalised to 𝖺𝗄ℙ and extracted to 𝖺𝗄. Every edge is labelled by its operation.

6.5 Order of randomiser, validating key and signature digest

Proposition 6.12 (Order of a threshold spend authorisation).

Consider a signing run over an Orchard-protocol threshold key, re-randomised as in Definition 5.3 by an effective randomiser α^, whose aggregate consensus accepts as the spend-authorisation signature of an Action with randomiser α and randomised validating key 𝗋𝗄, in a transaction with signature digest m. Except with the probabilities of Corollary 6.4 and of Proposition 5.5:

  1. (i)

    the randomiser α^=α is fixed before 𝗋𝗄, which is the function 𝖺𝗄ℙ+[α^]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁 of it;

  2. (ii)

    the key 𝗋𝗄 is fixed before m, which commits to it (Ironwood Guide, §“Transaction digests and signatures”, Definition “Signature digest”);

  3. (iii)

    the digest m is fixed before any Round Two share, being the message of the binding factors and of the challenge;

  4. (iv)

    Round One precedes α^ under Construction 5.6, which hashes the commitment list, and need not precede it for a randomiser fixed before signing, as in Remark 6.13, where (i) to (iii) still hold;

  5. (v)

    the Action proof takes α as auxiliary input and 𝗋𝗄 as instance, so it follows (i), and it is unconstrained with respect to m and to Round Two, proofs being authorising data outside the digest.

Proof.

(i) is Corollary 6.4. (ii) and (iii) are the data dependencies of the cited definition and of Construction 4.8, as run in step (3) of Construction 5.10: ρi takes H4⁢(m) and c takes m. (iv) is the input of HR in Construction 5.6. (v) follows from the Ironwood Guide’s Definition “Authorising-data digest; effecting and authorising data” and “Construction of a transaction”, where signing can precede proving (ZIP 244, “Authorizing Data Commitment”, field A.3a). A randomiser that is a function of m, as under Construction 5.4 with the digest as message, would by (i) and (ii) be a fixed point, which Proposition 5.5 bounds; so that derivation admits no order except with that negligible probability. □

Class (Definition 1.1): the order of Proposition 6.12 under Construction 5.6 is designed but unspecified; no specification composes ZIP 312 with a transaction format.

Remark 6.13 (Randomisers chosen by a transaction constructor).

ZIP 312 derives the randomiser in Round Two (“Randomizer Generation” and “Round Two - Signature Share Generation”), and a derived randomiser equals an α fixed earlier, as Corollary 6.4 requires, only with probability at most 1/p𝖵𝖾𝗌𝗍𝖺+δ512+qh⋅2−256 (Lemma 5.7). A flow in which the transaction constructor fixes α and 𝗋𝗄 before signing, and the Coordinator sends that α as the effective randomiser, respects the order of Proposition 6.12, but no specification or published design states it: its design is an open problem (Definition 1.1), and under it the Coordinator chooses the effective randomiser outright (Remark 5.8).

Refer to caption
Figure 2: Order of one threshold spend authorisation (Proposition 6.12), in two lanes, Coordinator and signers, time running left to right: Round One commitments (Di,Ei); the seed-and-commitments randomiser α^ (Construction 5.6), which hashes the commitment list L; the Action’s randomiser α; the randomised validating key 𝗋𝗄; the signature digest m, which commits to 𝗋𝗄; the Round Two shares zi; the aggregate (R,z). The Action proof is a branch from α and 𝗋𝗄, connected neither to m nor to Round Two. The dashed edge closes the cycle of the Draft derivation (Construction 5.4 with m as message): randomiser, 𝗋𝗄, digest and back, which Proposition 5.5 bounds.

6.6 Threshold signing of an Action

The single-signer construction is cited, not rebuilt. Each Action draws α by 𝖦𝖾𝗇𝖱𝖺𝗇𝖽𝗈𝗆, sets 𝗋𝗌𝗄:=𝖺𝗌𝗄+α and 𝗋𝗄:=𝖺𝗄ℙ+[α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁, proves the Action statement with α as auxiliary input, computes the signature digest and signs it under 𝗋𝗌𝗄 (Ironwood Guide, §“Randomised validating keys”, Construction “Randomised validating key”; “Construction of a transaction”, Construction “Ironwood-pool bundle”, steps (5), (7), (10) and (11); protocol specification, §“Sending Notes (Orchard)” and §“Spend Authorization Signature (Sapling and Orchard)”).

Construction 6.14 (Threshold spend authorisation of an Action).

The transaction builder acts as Coordinator: it creates the Action proof and so already controls the privacy of the transaction (ZIP 312, “Threat Model”). For each Action that consumes a note of an Orchard-protocol threshold key (Construction 6.8), in the order of Proposition 6.12, it proceeds as follows.

  1. 1.

    It runs Round One (Construction 5.10, step (1)) with a signing set I of at least t participants.

  2. 2.

    It derives the effective randomiser α^ by Construction 5.6, the only designed derivation that respects that order: Proposition 5.5 excludes the Draft derivation, and a constructor-chosen α has no published design (Remark 6.13).

  3. 3.

    It sets α:=α^ and 𝗋𝗄:=𝖺𝗄ℙ+[α]⁢G𝖲𝗉𝖾𝗇𝖽𝖠𝗎𝗍𝗁.

  4. 4.

    Once every Action of the transaction is fixed, it computes the one signature digest m of the transaction.

  5. 5.

    It runs Round Two of Construction 5.10 with message m, each signer performing the message check of Definition 5.9, and aggregates.

  6. 6.

    At any point after step (3), it proves the Action statement with α as auxiliary input (Ironwood Guide, §“The Action statement”).

These steps replace the draw of α and the single-holder signature in the cited construction; every other Action, dummy spends included, is built as there. No party holds 𝗋𝗌𝗄. The builder alone makes the binding signature (Ironwood Guide, §“The binding signature”). Every threshold-spent Action has its own α and 𝗋𝗄 and its own signing run, with fresh nonces and randomiser, all on the one digest m; since m commits to the 𝗋𝗄 of every Action, the Round One and the randomiser of every threshold-spent Action precede m, and hence every Round Two (Proposition 6.12, (i) to (iv), applied to each Action). Class (Definition 1.1): designed but unspecified; the composition of ZIP 312 with the transaction is this volume’s own.

Acceptance.

After normalisation 𝖺𝗄ℙ=𝑃𝐾, and α=α^; so Proposition 6.3 and Corollary 6.4, part (i), give a signature valid under 𝗋𝗄 on m, except in the zero-nonce case and when 𝗋𝗄=𝒪, whose probabilities Theorem 4.11 and Corollary 6.4, part (iii), bound. □

The circuit and the consensus rules are unchanged (Remark 6.5). Both pools of the Orchard protocol use the same RedPallas spend authorisation, so one flow serves an Action of either pool (Ironwood Guide, §“The Orchard protocol and its two pools”; ZIP 229, “Reuse of the Orchard protocol with minimal changes”); which pool’s notes a key may hold is fixed in §6.4.