Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable user-friendly seed backup and recovery. #77

Open
nuttycom opened this issue Nov 7, 2024 · 2 comments
Open

Enable user-friendly seed backup and recovery. #77

nuttycom opened this issue Nov 7, 2024 · 2 comments

Comments

@nuttycom
Copy link
Contributor

nuttycom commented Nov 7, 2024

Is your feature request related to a problem? Please describe.

Having to write down 24 (or 25, as #26 suggests) words in a secure fashion in order to make it possible to recover one's wallet introduces a huge amount of friction to user onboarding. There has to be a better way.

Describe the solution you'd like

There is a fundamental tradeoff between the security of the backed-up data and the ease of backup, and there's no universal solution that allows both "I convinced a stranger in the coffee shop to install a Zcash wallet and they had an easy time of it that didn't require writing down seed words or having a hardware token" and "a new user installing a Zcash wallet has reasonable defenses against nation-state actors who can subvert security controls on iCloud/Google storage" to be true.

Therefore, solutions like the following should be considered:

  • A user doesn't have to back up a seed phrase until their wallet has received funds.
  • A user doesn't have to back up a seed phrase unless their wallet balance has exceeded some threshold - i.e., consider the ZEC in the wallet to be like cash - it would be an unusual person who would store more than a few hundred dollars in their physical wallet, due to the risk of loss.
    • Perhaps for this approach, seed backup isn't the right thing? Maybe instead cloud backup of a spending key for a single "pocket money" account could help balance requirements between ease of use and security; if you have a "pocket money" account, you can later upgrade to a "vault" account by writing down the seed more securely? The UX gets really annoying if you have too much money in a "pocket money account"?
  • If a user has a hardware token available.
  • ??? We need more ideas here.
@jswihart
Copy link

Edge uses a hashed user name / password supported by its hosted infrastructure, which provides a much more familiar user experience. The whitepaper is here: https://edge.app/wp-content/uploads/2018/09/2017-10-Edge-White-Paper.pdf

@nuttycom
Copy link
Contributor Author

nuttycom commented Nov 12, 2024

Edge uses a hashed user name / password supported by its hosted infrastructure, which provides a much more familiar user experience. The whitepaper is here: https://edge.app/wp-content/uploads/2018/09/2017-10-Edge-White-Paper.pdf

This looks like essentially a "1Password" model - private data encrypted by client-side keys, stored by the upstream provider (and potentially exportable to your own data store). The interesting bit is here:

Edge Core utilizes a semi-decentralized, peer-to-peer network of data-sync backup servers running the
Git protocol and software. Referred to as ‘sync-servers’, this pool of Git servers only hosts data that is
pre-encrypted by the client devices running Edge Core. These are true peer-to-peer servers in that there
are no primary or secondary servers, however all sync-servers and the auth-server are operated by Edge.
A client can connect to any of the sync servers to upload or download data. Any new or modified data
sent to a sync-server is automatically replicated to other sync-servers, utilizing the Git protocol to
resolve conflicts and provide modification history and rollback if needed

I'm curious how they use the Git protocol to resolve conflicts; since the stored data is encrypted, such conflict resolution would have to be done client-side. Perhaps they do something like use per-client branches, and then locally handle "merges"?

Git isn't a great choice here, although I can see why they went with it because it's an easy solution. Billing them as "peer-to-peer" is maybe true but misleading, because it's not clear that it is possible to rely on your own git server here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants