Please describe your proposed solution.
Sometimes I think about a world where crypto wins. Where all value is tokenized on blockchains. What if my mom, someone who is not adept with technology, needed to secure her entire retirement savings? Would she be able to securely store her seed phrase, when no one could help her if she lost it? What if someone broke in to her house and took it? What if her house burned down? What if war erupted and she had to flee at a moment's notice, never to return? At such a difficult time, would she also lose access to communication accounts attached to her DIDs? I fear she would lose everything, with no recourse.
At global scale, these events happen every day. While some are preventable with steel/titanium backups, this is a highly technical task and still requires the user to have enough physical security to properly conceal their backups.
I strongly believe the lack of simpler and safer key management will prevent mass adoption of crypto and decentralized identity. Solved well, it will enable them.
This project aims to:
- Make it safe to replicate seed phrases online by first encrypting them with hardware-backed keys held on Yubikeys. These keys contain a full 256-bits of entropy, as opposed to password-based key derivation.
- Reduce the need for physical security by placing those keys on secure hardware (Yubikeys) and setting random PINs. This allows the user to physically distribute Yubikeys among multiple physical locations, even if they don't have perfect physical control of each location (e.g. a friend's house, a safe-deposit box, etc.)
- Solve extreme edge cases (displacement due to war, etc.) by creating a system that's configurable enough (as part of this proposal) to support (some day, not part of this proposal) centralized recovery, social recovery, and inheritance planning, while retaining a high degree of self-sovereignty.
There is much renewed interest in this space recently (1, 2), with varying degrees of self-sovereignty built into their designs. This proposal intends to build a solution that is highly self-sovereign and also useful in a multi-chain world, with no need to trust anyone, even family/friends/neighbors/banks/etc. who might physically store your one of your Yubikeys for you.
By funding this proposal, the Catalyst project can help get this idea to market, potentially enabling simpler and safer self-sovereign key management for many Cardano users in the future.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
This proposal benefits the Cardano (and wider crypto ecosystem) by making self-custody simpler and safer for users, thus making Cardano easier to use.
It does so with a design that supports a multi-chain world, as opposed to something like Bitkey, which is Bitcoin only. This is important because, if Bitkey truly makes self-custody simple (and they're on a good path to do so), Bitcoin may become significantly simpler to self-custody (and use) than any other cryptocurrency.
The proposed solution consists of a mobile app (on Android, to start), three or more Yubikey 5 series devices, and a password.
The user experience (see prototype) is designed to be extremely simple:
- Order a welcome kit, which includes three Yubikeys and brief instructions.
- Use the QR code in the welcome kit to download the app.
- Open the app and walk through a step-by-step setup flow:
- Using NFC, tap each Yubikey to the phone to 1) verify it's authenticity, 2) verify it is not already in use, 3) generate new hardware-backed keys, 4) configure the Yubikey's metadata and security defaults, and 5) configure the Yubikey's PINs.
- Generate a random account ID for the backend service and create an account (we aim to be like Mullvad and hold as little customer data as possible, ideally none, apart from temporarily for payments.)
- NOTE: it is also acceptable if the app only stores backups in user-owned storage like Google Drive/iCloud.
- Write down and/or store a passphrase (protects against edge-cases where someone is able to extract a key from one of your Yubikeys.)
- Walk through some educational screens to help them know how to store their Yubikeys (e.g. to protect against fire, make sure you have them in an emergency, etc.)
Once the user finished setup, they can generate additional BIP-39 seed phrases for any hardware or software wallets they use. These are automatically encrypted in a way only the Yubikeys can decrypt, backed up, and replicated across multiple data centers to protect against their loss. This design keeps the user in control of their keys.
For the technically inclined, the app is effectively a stateful (but still state-minimized) companion to BIP-85, such that it can back up any of the user's keys. Ideally, some day–not part of this proposal–it may be possible to have an SDK that wallets can use such that, with a single set of Yubikeys, all of a customer's wallets, DIDs, etc. are safely replicated to protect against loss.
In the long future (also not part of this proposal), we hope to also have centralized recovery options that are significantly more preserving of self-sovereignty than, say, Ledger Recover.
Lastly, it gets the technical ball rolling on using smartcard protocols (the ISO/IEC 7816 family of standards) to help provide simpler key management, which may eventually lead to custom hardware that makes mass adoption cheaper than Yubikeys would allow. It also brings this expertise to the Catalyst ecosystem, which may be useful in future projects (e.g. tap to pay, etc.)
How do you intend to measure the success of your project?
Immediate adoption is not a measure of success for this proposal. At this early stage, we want to prove that the idea is sound, can be implemented securely, and that customers like and trust it.
The aim is to build something that is secure, beautifully designed, user-friendly, and capable of operating at scale–all things that may help increase adoption.
Our main measures of success are:
- Acceptance by cryptographers. I would love to have the design reviewed by cryptographers, to ensure the design is sound. Having a secure design is the foremost goal.
- A complete implementation. By the end, there must be a mobile app and it must be possible to back up keys securely.
- Ideally (but optionally, and uncommitted, as a stretch goal), this includes a backend that is privacy-preserving (ex: random account IDs using something like SRP or OPAQUE for authentication, not username/email/password, such that we don't know the customer's identity and can't be compelled to disclose data for any specific customer.)
- A secure implementation. The implementation should pass independent security review from a security company like Doyensec.
- Actually solving the problem. The design and UX should make key management easier and more forgiving of user error. Novice users should be able to pull it off, or we should gain additional clarity on work that might further simplify things (e.g. direct integration with hardware wallets, SDKs for software wallets or apps that use this product to manage keys for E2E encryption, etc.)
- We must launch. We must launch publicly (if and only if 1-3 succeed), even if it's a soft launch/preview (similar to Bitkey). A soft launch might help deter aggressive pushback and give customers an opportunity to provide feedback.
- Future funding. Ideally, the progress from this proposal would open options for future funding (from Catalyst, other chains, actual customer sales, SBIR grants, etc.) such that we can push toward our ultimate vision of enabling individuals to safely self-custody currency and use E2E encryption in more apps.
- Bonus: Engage in nuanced conversation. Ideally, I'd love to have some in-depth resources (blog posts, whitepapers, etc.) that help people understand why replication online is safer than they think (when the prevailing wisdom is to never place private keys online.) There was a lot of pushback on Ledger Recover (rightfully so: 1, 2), and over the course of a few weeks a great deal of nuanced discussion occurred online. I think people are open to thinking more deeply around key management now, and highly value their self-sovereignty (which this proposal tries to preserve, to a much greater extent than Ledger Recover.)
Please describe your plans to share the outputs and results of your project?
I'll be sharing all progress in this status document:
<https://wipcrypto.com/catalyst/status>.
Specifically, the Figma designs/prototypes/branding as they become available, and the first early Android APKs where some of the functionality is available (for example, as parts of Milestones 1-5.) I may also share draft blog posts for early feedback before being published publicly.
Many of these will also be shared publicly via our future website and blog.
I expect this project will result in true market-based feedback from real, potential customers, as well as the wider crypto community. Hopefully I will have done a good enough job to warrant funding for future development, ideally directly from customer sales, but maybe also from Catalyst, other chains, and VCs who have a vested interest in simplified self-custody in a multi-chain world.