ZIP: ???
Title: Authenticated Reply Addresses
Owners: Jack Grigg <jack@electriccoin.co>
        Kris Nuttycombe <kris@electriccoin.co>
        Daira Emma Hopwood <daira@electriccoin.co>
Status: Draft
Category: Standards / Wallet
Created: 2023-11-12
License: MIT
Discussions-To: <https://github.com/zcash/zips/issues/???>
Pull-Request: <https://github.com/zcash/zips/pull/???>

Terminology

The key words “MUST” and “SHOULD” in this document is to be interpreted as described in BCP 14 (1) when, and only when, they appear in all capitals.

Abstract

TODO

Motivation

TODO

Specification

Authenticated reply address encoding

Creating

Verifying

Sapling address proof

Encoding

Creating

Taking as input:

The Sapling address proof is created as follows:

Verifying

Rationale

We do not generate and include a full ZIP 304 signature in the Sapling address proof; we only rely on its proof-of-address helper function. This is for two reasons:

The individual address proofs commit to the entire reply address. For example, if the reply address contains a Sapling and Orchard receiver, but the transaction only spends Sapling notes, the sender is still confirming that the Orchard receiver is also an allowed reply address receiver.

However, to have proper cross-linking, we need to ensure that all receivers in the UA have proofs of spend authority, to prevent a sender from including a receiver that they do not control (as a form of impersonation attack). There are a few ways this could be resolved:

In any case, doing this for UAs that include Orchard receivers will result in more data than can be stored in a single memo field, so this is blocked on some kind of multi-part memo encoding.

Security and Privacy Considerations

The verification process for authenticated reply addresses requires that the full transaction is validated, because it outsources proof-of-spend-authority to the spend proofs and signatures. As a consequence, wallets that scan transactions via a light client protocol MUST NOT show the reply address as authenticated until the full transaction has been downloaded and validated.

Reference implementation

TBD

References


  1. Information on BCP 14 — “RFC 2119: Key words for use in RFCs to Indicate Requirement Levels” and “RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words” https://www.rfc-editor.org/info/bcp14  ↩︎

  2. zip-0304  ↩︎