Skip to content
This repository was archived by the owner on Sep 26, 2023. It is now read-only.
This repository was archived by the owner on Sep 26, 2023. It is now read-only.

Fetching blocks for memos should not reveal what tx's a user is receiving #59

Description

@holmesworcester

Right now, a malicious lightwalletd, or anyone that can view a lightwalletd's network activity, can link transactions to a given recipient. This could be used to deanonymize a user, by linking them a to a transaction for which their identity is known. Here are some options.

  1. Let zecwallet-light-cli fetch a block over a separate Tor circuit, whenever it needs to retrieve a memo. (In this case, it's important for the code that fetches these blocks to not contain anything about the user's state, since that could also be used by a malicious lightwalletd to profile a user and link transactions. For example, it should receive a block id and the address of the lightwalletd, create a new Tor circuit, fetch the block, and terminate.)
  2. Give the user or wallet developer a setting that lets them designate their own tool for fetching blocks. Then they can build their own tool for fetching blocks that functions this way.
  3. Give the user or wallet developer a setting to disable the fetching of any blocks. (Does this exist already?) Then zecwallet-light-cli could simply fail to return memos, and let the user or wallet developer fetch and decrypt memos themselves.
  4. Implement SealPIR on the cli and lightwalletd side, as discussed here: https://github.com/zcash/zcash-android-wallet/issues/166

Option 3 is probably the easiest, but it's not ideal for the wallet developer, since they won't be able to rely on zecwallet-light-cli for state anymore, since they'll have to store their own state for transactions and memos, and make sure this matches the state provided by zecwallet-light-cli.

I'd say option 2 or 4 is the best place to start. Interested to hear more about this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions