ZIP 2005
Ironwood Quantum Recoverability
- Proposed
-
Case : The spender must prove knowledge of , and that , , and are derived correctly from . This works because the derivations use post-quantum hashes (and is deterministic).
In particular, is an essentially random function of , and so we expect that an adversary has no better attack than to search for values of to find one that reproduces a given . Since must be an -coordinate of a Pallas curve point (see the note at the end of § 4.2.3 Orchard Key Components), it can take on values. So if there are targets the success probability for each attempt in a classical search is , which is negligible provided that . -
Case : This case is almost the same except that is now an essentially random function of . The success probability in terms of is also the same as for the case.
The above security argument means that provided we also check the uses of and in the post-quantum Recovery Statement, Orchard-protocol note commitments can be considered binding on the note tuple .
Note that the argument associated with Theorem 5.4.4 in the protocol specification (" yields a nontrivial discrete logarithm relation." and "Since by assumption it is hard to find a nontrivial discrete logarithm relation, we can argue that it is safe to use incomplete additions when computing Sinsemilla inside a circuit.") is not applicable when it is necessary to defend against a discrete-logarithm-breaking or quantum adversary. Therefore, the post-quantum Recovery Statement will need to use complete curve additions to implement Sinsemilla.
Security argument for key binding
The security of the Orchard shielded protocol against several attacks depends on cryptographic keys being bound to a recoverable note's . Different Orchard-protocol properties need different components of the key witness pinned:
- Nullifier-binding (used by the Balance argument and by the Spendability argument below — the latter via the -pinning lemma): uniquely determined by .
- Spend Authorization: (up to -sign of ) and uniquely determined by . This includes uniquely determining the tag of , i.e. which of the and branches produced the .
The determination of must fix the branch itself, not merely the value of within the branch. Suppose an address generated with —whose owner authorizes recovery by proving knowledge of via — shared its with an -branch witness. An adversary holding a suitable could then recover the note through the -branch of the Recovery Statement, authorizing the spend with and never demonstrating knowledge of . Against a discrete-logarithm-breaking adversary —for which the accompanying RedDSA signature over gives no protection— this breaks Spend Authorization for such addresses. Ruling out these cross-branch collisions (both -values pinned, included) is therefore a requirement of the argument, not incidental strength.
The formal key-binding condition stated below covers all of these uniformly: a key-binding break is a pair of distinct witnesses sharing the same , where each witness carries the full key tuple — plus whichever of or is in use. If key binding fails, the Balance, Spendability, and Spend Authorization arguments each lose their corresponding pinning step.
Relative to the situation with note commitments where it was reasonable to only obtain quantum recoverability for newly output Ironwood-pool notes, there is a complication. Addresses may be used over the long term and it may not be desirable to switch to new addresses, or to avoid funds being sent to old ones. Fortunately, the Orchard protocol specified each of , , and to be derived from via , which is assumed collapsing. ( is derived differently for an "internal IVK", but that is also via .)
Classically, the binding of —instantiated via Sinsemilla— fails against a discrete-logarithm-breaking adversary, similarly to . We use essentially the same fix as for , with the -derivation hashes playing the role of . The Recovery Statement checks the derivation of :
The witness carries the branch as a tagged union —following the formalization's sum type— so exactly one branch is present per witness, by construction. This is equivalent to case-splitting by .
- In the branch, .
- In the branch, , with and also derived from via and .
In either case, is then either directly (external IVK) or (internal IVK). All of these hashes are modelled as independent random oracles for the key-binding argument.
As in the Recovery Statement, we have:
Let the key-binding condition on a witness be:
where .
The predicate intentionally does not constrain the -sign of . This is consistent with the Orchard protocol's design choice to use as a single element (the -coordinate ), which avoids point-decompression in places that consume , in exchange for a factor-of-2 reduction in concrete binding security. Accordingly, the break event below identifies witnesses up to the -sign of .
The flags and that appear in the protocol diagram do not appear in this witness — nor in the formal Recovery Statement above. Their roles are absorbed into the witness's structural form:
- is encoded in the tag of : the witness carries exactly one of the two branches by construction (enforced by the tagged form, not by a -exclusion constraint), and the branch-specific constraint applies to whichever is present.
- is encoded in : both derivations are admitted simultaneously.
This formulation is strictly stronger than a flag-conditioned one: a key-binding break can have and in different branches across either flag (e.g., in the branch and in the branch, or with external and with internal ), provided both produce the same . A flag-based formulation would forbid only same-branch breaks. For the flag this extra strength is required by Spend Authorization —forbidding the -versus- cross-branch collision described above— and not merely incidental; for it is additional robustness.
A key-binding break is a pair of witnesses with shared satisfying the key-binding condition, whose projections differ — i.e., and differ in some component other than the -sign of .
The random oracles used in the key-binding condition are , , , , and .
Let be the probability, over 's randomness and at most queries in total to these random oracles, that outputs a key-binding break. Here counts the derivation inputs of 's output witnesses among its queries — a convention that is without loss of generality, by the accounting normalization in the proof.
Theorem (key-binding, classical ROM). Let be a classical adversary making at most total queries to the random oracles used in the key-binding condition. Then .
Proof sketch.
Algebraic setup. By § 5.4.1.10 “Sinsemilla commitments”,
where is the rivk-randomization base
and
By expanding the Sinsemilla bases used inside as scalar multiples of , without loss of generality we have for a Pedersen-like deterministic scalar hash , so
Domain separation in the protocol's BLAKE2b instantiations ensures does not query , , , , or : depends only on fixed Sinsemilla bases and on .
By the same argument used in the Spendability proof (using § 5.4.9.7 for the -style -coordinate convention), a key-binding break implies
Define for a witness , and let for . The break condition is .
Final-random-oracle structure. For each witness satisfying the key-binding condition, is the output of a final random oracle at a final input , determined by the witness's branch and IVK choice:
- qk-branch, external IVK: , .
- sk-branch, external IVK: , .
- qk-branch, internal IVK: , where .
- sk-branch, internal IVK: , where .
In each case , with the deterministic shift independent of 's responses (by non-querying).
The shifted combined oracle. Treat the three rivk-derivation oracles (, , ) as a single combined oracle on the disjoint union of their input domains. Each instance contributes outputs uniform on , independently of the others, by domain separation. and are not part of : they enter only through the shifts below, and their output types differ.
For a combined input , define the shift , with read off the input: directly for and inputs, and via , for an input . So is a function of the input and of the / oracles only; since is non-querying, never depends on the rivk-derivation responses. Define the shifted combined oracle
For every witness satisfying the key-binding condition the derivation constraints give , so the break condition is a ±-collision of at the pair .
Distinct final inputs. The final inputs of a break need not be distinct, but the case is fully deterministic. If the witnesses decode differently —one external, one internal— their final inputs lie in disjoint summands of the combined domain, so is impossible outright. If both witnesses are externally decoded, equal final inputs force the witnesses to coincide on all fields constrained by the key-binding condition, contradicting distinctness. (Equal inputs determine and thence ; equal inputs determine and thence everything, via and .) So both witnesses are internally decoded, sharing and differing only in their branch data. Then is an equality of outputs at the two upstream (rivk_ext-derivation) inputs, which the differing branch data make distinct. The shifts at those inputs agree: both equal , using the derivation constraints on the side. So this is again a ±-collision of , at distinct inputs. In every case: a key-binding break yields a ±-collision of at two distinct inputs among the adversary's queries, under the convention that counts the derivation inputs of the adversary's output witnesses among its queries. This convention is without loss of generality: replace by the adversary that runs , queries the (at most 4) derivation inputs of its output witnesses —each witness's final input and its rivk_ext-derivation input— and returns the output unchanged. This "reasonable adversary" normalization38 leaves the output distribution —and therefore the break probability— unchanged, puts the collision inputs among the queries by construction, and adds at most 4 to .
Note that the external/internal decode is by value (), not by how the witness was derived: at a fixpoint an internally-derived witness decodes as external. Both readings give the same , and the accounting partitions pairs by the decode.
Sequential collision bound. The adversary chooses each query adaptively, so we reveal the oracle responses in query order rather than fixing a pair in advance. Before the -th query to , condition on the transcript so far: the / responses (which fix the shifts ) and the recorded responses. Under every such conditioning the fresh response is uniform on , and for each recorded input and each sign there is exactly one value of with ; so the fresh response completes a shifted ±-collision with probability at most . Because the conditioning is on the transcript itself, this holds however was chosen from the transcript. Summing over the queries,
(Queries to or are not inputs and cannot complete a collision, so counting them in is conservative.)
Security argument for Spendability
DeriveNullifier is based on a Pedersen hash. In the current Orchard protocol, the property that it is infeasible to find two distinct Orchard-protocol notes with the same nullifier depends on the collision resistance of that hash, which would not hold against a discrete-logarithm-breaking adversary.
Does this mean it is possible to break Spendability for the given Recovery Statement? As it turns out, no, but the argument is somewhat involved.
Since each function in the Recovery Statement is deterministic, the free variables that the adversary can control are the sources of the derivation digraph within that statement and either or . That is, the adversary can control all of
subject to exactly one of and being present, per the tagged union. The choice between external and internal IVK is encoded in 's value (either or ).
We analyze as a function of these controllable inputs. Recall that is defined in § 4.16 ‘Computing ρ values and Nullifiers’ as:
Also recall from [Repairing note commitments] that we have
Let denote the discrete logarithm of with respect to . This is well-defined and nonzero: generates the prime-order Pallas group, so any non-identity Pallas point has a unique nonzero discrete logarithm with respect to it; and is non-identity by construction.
Recall that is determined by via . The nullifier corresponding to is then
We model as a random oracle with output uniform on . The functions , , and are deterministic functions of that do not query : is the Sinsemilla-base lift; and are conventional hash functions.
The non-querying constraint rules out trivializing instantiations such as . In the concrete protocol, it reflects that depends only on fixed Sinsemilla bases; and that the hashes , , and use distinct domain separators, so can be considered unrelated to each other.
A key-binding break is as defined above in the Security argument for key binding.
Let be the probability, over 's randomness and at most queries to the random oracles used in the key-binding argument, that outputs a key-binding break (with counting the derivation inputs of the output witnesses among the queries, as in the accounting normalization). is bounded separately by that argument; the bound below is unconditional, but is only useful to the extent that is small.
We give a reduction-based argument that any classical adversary in the Random Oracle Model attempting to find two valid Recovery Statement witnesses with distinct note tuples that have colliding nullifiers, succeeds with probability at most , where is the number of queries makes to , and is as defined above. The bound depends only on and on , not on running time.
The components are fields of by definition; and , , , and are fields of , hence of .
-pinning lemma. For any valid Recovery Statement witness with , the value is well-defined, since on the prime-order Pallas curve and ; is therefore uniquely determined by .
-pinning lemma. Suppose 's output does not contain a key-binding break. Then for each , is uniquely determined by : by the conditioning, is the only opening of appearing in 's output, so is a function of , which is in turn a function of by the -pinning lemma; is a field of ; and the remaining inputs and are determined by through the Recovery Statement's deterministic derivations.
The argument here covers nullifier-binding — it argues that binds the note tuple under modelled as a random oracle and the key-binding theorem.
Theorem (distinct-notetuple Spendability, classical ROM). Let be a classical adversary with oracle access to having output uniform on , making at most oracle queries. The Spendability-collision game has output two Recovery Statement witnesses satisfying:
Validity of witnesses : both witnesses satisfy the Proposed Recovery Statement.
Distinct note tuples : the -input tuples satisfy .
Then wins this game with probability at most
taken over the random oracle's responses and any internal randomness of .
This bound is essentially tight against classical generic adversaries. Maurer 39 (Section 2, p. 5) establishes a matching upper bound of on the success probability of any classical algorithm in finding a collision against a random oracle with an -element output space using queries. Maurer's bound applies to the equality event ; our win condition allows (two winning configurations per pair instead of one). Applying Maurer with (the output space) gives for the equality event; doubling for the sign relaxation gives our bound. Classical parallel collision search 40 (top of p. 8) achieves the equality-event regime up to a constant factor; the same adversaries achieve a constant fraction of the doubled bound for the -equivalence event.
Proof sketch. makes at most queries to before outputting satisfying Validity of witnesses, Distinct note tuples, and Colliding nullifiers. The probability that contains a key-binding break is at most ; condition on the complement.
Algebraic setup. Under this conditioning, define
, where are fields of and is determined by via the key-binding leg of the -pinning lemma, and let for .
(§ 5.4.9.7 'Coordinate Extractor for Pallas' 41) is the -coordinate of its argument for non-identity points, with the identity mapping to . Since Pallas has the form and no Pallas point has -coordinate , the collision holds iff .
Independence claim per pair. By Distinct note tuples, , so the outputs at are independent uniform on . The deterministic shifts ( and the contribution scaled by ) do not query , so they are independent of its responses. Hence and are independent uniform on .
Bounding the win probability. The win condition is a linear constraint on a pair of independent uniform variables, satisfied with probability at most (one per sign). Union-bounding over the at most pairs of distinct queries:
Decomposing on whether a key-binding break occurs and applying :
This completes the classical-ROM proof.
The key-binding theorem bounds . Substituting, an adversary that makes at most queries to and at most queries to the key-binding random oracles wins the Spendability-collision game with probability at most .
For the post-quantum lift of this bound and of the key-binding bound above, see the next section.
Adaptation to the quantum setting
The classical-ROM proofs above (for key binding and Spendability) rely on and the various -derivation hashes being collision-resistant. The natural quantum analog is called the collapsing property, introduced by Unruh 28 29. It says that even a quantum adversary holding a superposition over several preimages of a fixed output cannot tell —by any subsequent measurement— which preimage it now has. This is the right property for our reductions. Each proof above splits cases based on which oracle query produced the colliding output; that case analysis works the same classically and quantumly only if the underlying hash "collapses" the adversary's superposition to a single classical preimage.
Subsequent work has analyzed whether standard hash-function constructions inherit collapsing from their compression function. Unruh 29 proved this for Merkle–Damgård (with a padding restriction); Czajkowski et al. 42 for the sponge construction (the absorb-then-squeeze paradigm used by SHA-3 / Keccak), with 37 strengthening the sponge result via the related notion of quantum indifferentiability. Fehr 43 gave a unified algebraic framework that recovers these results and proves the collapsing property of HAIFA, a Merkle–Damgård variant with a per-iteration salt and counter. Gunsing and Mennink 35 extended this kind of analysis to tree-hash constructions, relevant for the Recovery Protocol's note-commitment tree.
BLAKE2b uses HAIFA, so by Fehr's theorem modelling as collapsing reduces to modelling BLAKE2b's compression function as collapsing. The "iv-preimage resistance" side condition Fehr's theorem requires for arbitrary-length inputs is automatically satisfied if the compression function is modelled as a random oracle — which is also the modelling assumption underlying the classical-ROM analyses above.
Citation graph
Cites
- 32 — Shielded Hierarchical Deterministic Wallets
- 200 — Network Upgrade Mechanism
- 209 — Prohibit Out-of-Range Chain Value Pool Balances
- 212 — Allow Recipient to Derive Ephemeral Secret from Note Plaintext
- 226 — Transfer and Burn of Zcash Shielded Assets
- 227 — Issuance of Zcash Shielded Assets
- 229 — Version 6 Transaction Format
- 231 — Memo Bundles
- 258 — Deployment of the NU6.3 Network Upgrade
- 312 — FROST for Spend Authorization Multisignatures
- 2003 — Disallow version 4 transactions
- 2007 — Quantum Recoverability for a Subset of Transparent Addresses
Cited by
- 32 — Shielded Hierarchical Deterministic Wallets
- 226 — Transfer and Burn of Zcash Shielded Assets
- 229 — Version 6 Transaction Format
- 230 — Withdrawn Version 6 Transaction Format
- 231 — Memo Bundles
- 258 — Deployment of the NU6.3 Network Upgrade
- 316 — Unified Addresses and Unified Viewing Keys
- 326 — NU6.3 Consequences for Wallets
- 374 — Partially Created Zcash Transaction Format