Last updated a year ago
Many believe hardware wallets are the final, most ideal form of self-custody and sovereign key management. Physical security of seed backups remains a weak link, making self-sovereignty hard at scale.
This is the total amount allocated to Seed phrase backup using Yubikeys.
This proposal protects keys from physical loss, theft, fire, flood, and war by encrypting them with HW-bound keys on multiple Yubikeys, then replicating them geographically. The MVP is an Android app.
No dependencies.
I answered "no" so that I'm not committed to it, but I do want to open source most or all of the code. I'm learning in this space and actively seeking advice on how to run a company based on open source.
My current thinking is that source is likely to be dual licensed (possible example: GPL + commercial) and possibly include restrictions on companies like AWS running the backend services (example: Business Source License). It will also be Redhat-like, where logos, trademarks, etc. are not open source.
Overall, I want all source to be open source, but I also want to create a sustainable business so the product's evolution becomes self-sustainable for the long-term. This will help the product become better over time and reach as many people as possible.
Big idea
I want to make self-custody of private keys for cryptocurrencies and digital identities easier by making physical security of seed phrase backups easier. Users encrypt their backups using hardware-backed keys on three or more low-cost hardware security modules (for now: Yubikeys), then use multiple encryption (think Russian nested dolls...) to ensure only certain combinations can recover the original seed phrase. Proposed combinations:
By encrypting the seed phrase with keys held on Yubikeys, it reduces the amount of physical security required to secure seed phrases. For example, you could have a family member hold a copy for you without worrying that they could recover your seed phrase.
* The combinations are highly adaptable. The centralized recovery options are not required, but I think there's a path to making that work with a reasonably low risk to self-sovereignty (for many people's needs, at least.) and also in a way that protects users from themselves (even if they lose one or more Yubikeys.)
The MVP is a mobile app, but long-term (not part of this initial proposal) I want to run this on secure hardware, possibly on a new generation of hardware wallets (made by us, or others, as an open standard.)
What I've built so far
This idea hinges on giving users low-cost hardware security modules. To make the MVP easier, I'm starting by using the Yubikey 5 series' support for the OpenPGP card standard. This means I don't need to build new hardware.
I've built the backend code to communicate with Yubikeys over NFC and talk to the OpenPGP card application. I can configure the Yubikey, generate keys (X25519 keys generated in hardware, unable to be exported), and use the public key to encrypt data only the Yubikey can decrypt. I can also decrypt the data with the Yubikey. To encrypt, I'm using libsodium, X25519, and XChaCha20-Poly1305-IETF.
This was the largest technical hurdle to clear. It works end-to-end: I can communicate with Yubikeys, I can communicate with the Yubikey OpenPGP application, I can encrypt data, then decrypt it with keys held in Yubikey hardware. Next, I can add support for multiple Yubikeys, then build out the rest of the app according to the prototype: https://wipcrypto.com/catalyst/prototype-mobile.
Where you can find and play with it to verify
For the latest dev build and instructions on how to test, please see https://wipcrypto.com/catalyst/links.
What I intend to do as a result of this proposal
I'll be building an MVP capable of backing up seed phrases, encrypted with keys held on 3 (or more) Yubikeys. The initial designs can be seen in the Figma prototype here: https://wipcrypto.com/catalyst/prototype-mobile.
In-depth
Sometimes I think about a world where crypto wins. Where all value is tokenized on blockchains. What if my mom (not tech savvy) needed to secure her entire retirement savings? Would she be able to securely handle her seed phrase, when no one could help her if she lost it? What if someone broke in to her house and took her seed phrase? What if her house burned down? What if war erupted and she had to flee her home at a moment's notice, never to return (e.g. Ukraine, Gaza, etc.)? At such a difficult time, would she also lose access to communication apps and social media accounts attached to her digital identities/DIDs? The result would likely be permanent loss, with no recourse.
At global scale, all of these events happen every day. Without solving for them, self-sovereign key management (and decentralized identity) is incomplete and--in my opinion--unlikely to succeed.
While some of these are preventable with steel/titanium backup plates, this is highly technical and still requires the user to properly conceal their backups.
I strongly believe the lack of simpler and safer key management schemes will prevent mass adoption of crypto and decentralized identity. Solved well, it will enable them.
This project aims to:
There is much renewed interest in this space recently, with varying degrees of self-sovereignty built into their designs. This proposal intends to build a solution that is maximally self-sovereign and useful in a multi-chain world, with no need to trust anyone, even family/friends/neighbors/banks/etc. who might physically store one of your Yubikeys for you.
By funding this proposal, the Catalyst project can help get this fledgling idea to market, potentially enabling self-sovereign key management for millions of users in the future.
My goal is to increase the number of people capable of self-sovereign key management, from millions today to billions tomorrow. My hope is that this project will be a catalyst (pun intended) that enables millions of people to enjoy the benefits of the entire Cardano ecosystem.
Stated another way, my hope is for this project to lower the barrier to entry of self-sovereignty on the Cardano blockchain, expanding the top of the funnel.
Stated a third way, I want my mom to be able to securely--and self-sovereignly--use Cardano. There are currently too many sharp edges around key management (and especially physical security) for that to happen.
I've been a software engineer for about 15 years, working at a variety of startups as well as Amazon.
At Amazon, I worked on the app for Amazon Care, a HIPAA-compliant healthcare service, where privacy and security are critical. As part of that work, I designed and implemented on-device encrypted caching, passing security review on the first try (when common thought was that no such system could pass.)
At Amazon, I also I created a scalable internal-facing Maven proxy service that helped Android developers work more effectively. There was much pushback early on around the security of such a system (vs using Amazon's internal Brazil build system). I successfully built a multi-AZ system with a minimal attack surface that that passed review by Amazon's AppSec group, then passed pen-testing by an external vendor, with zero findings. This service has been in reliable service at Amazon for about four years.
Not that I am perfect, especially among a group at IOG who routinely use formal verification. However, I do have a reasonable background of secure and high quality implementation and using good judgement with regard to cryptography.
I also have a high bar for user experience, and a deep conviction around the importance of self-sovereignty. This proposal is a culmination of these qualities, and my own conviction 1) that key management is not "solved" yet, 2) that the user experience of writing down seed phrases is not ready for mass adoption, and 3) that a secure alternative is possible.
Milestone 1: Initial app functionality
Deliverables:
AC:
Not part of AC: Account registration. Syncing of data to a backend. Backup file (or API) format specification. Recovery if password lost. Error handling if a Yubikey is already in use.
Milestone 2: Continued app functionality
Deliverables:
AC:
Milestone 3: BIP-85 support, early backend explorations
Deliverables
AC:
How can a user run their own backend easily (single executable, Docker container, Cloudformation/Terraform)
Milestone 4: Largely complete app functionality, minus APIs
Deliverables:
AC:
Milestone 5: Release to early testers and feedback
Deliverables:
AC:
Milestone 6: Launch of "Public Beta"
Deliverables:
AC:
Uncommitted / stretch goals:
Pete Doyle - Founder and engineer
I'm the founder and sole engineer for the MVP phase of this project. I've been an engineer for 15 years, mostly on Android, and have an affinity toward building beautiful products with a high degree of UX fit and finish.
I've followed Cardano closely since the 2017 bull market and have a high degree of respect for, and affinity toward, the engineering practices espoused in the Cardano project.
I've worked for well run San Francisco/Bay-area startups as well as the distinguished (and recently defunct) Grand Challenge at Amazon, which worked on moonshot ideas that aimed to be 10x better than existing solutions, with an ability to scale to 1% of the world's population (on the order of ~100 million people).
I've spent the past few months prototyping this project's interaction with Yubikeys. With communication, key generation, and encryption/decryption now working, the next phase is to add support for multiple Yubikeys and build a delightful, shippable product. Funding from Catalyst will allow me to focus full-time, and have a huge hand in enabling me to ship.
Resume: https://wipcrypto.com/catalyst/resume
LinkedIn: https://www.linkedin.com/in/petedoyle/
Twitter / X: https://twitter.com/nomadicpete_
Engineering and development - ₳155,500 (~$58,000 USD)
Costs for copywriting for the web site, marketing, etc.
Design - ₳41,000 (~$15,000 USD)
Budget for design services such as visual and UX design, prototyping, design systems work, etc.
Yubikeys for early testers - ₳11,000 (~$4,000 USD)
Yubikeys for ~25 early testers so they can test and give their early feedback.
Web development - ₳13,500 (~$5,000 USD)
Budget for web design for an informational web site.
Copywriting and editing - ₳5,500 (~$2,000 USD)
Costs for copywriting for the web site, marketing, etc.
Branding / Marketing / Publicity / Promotion - ₳41,000 (~$15,000 USD)
Budget for initial branding / marketing ideation and ad spend.
Copywriting and editing - ₳5,500 (~$2,000 USD)
Costs for copywriting for the web site, marketing, etc.
Legal - ₳27,000 (~$10,000 USD)
Budget for legal services related to incorporation, contracts/IP clauses for working with vendors, privacy policies, etc.
By funding this project, the Cardano community gets to take a "shot on goal" at making self-custody simpler and more forgiving of user error, especially for the hundreds of millions of people who do not have secure physical locations to store their seed phrases.
If we succeed, millions of people will be able to use Cardano more easily, without relying on trusted third parties (banks, exchanges, etc.) to manage their keys.
The cost of not succeeding may be the rise of alternative designs like Ledger Recover, which have a lower bias for self-sovereignty in their design. Alternatively, Bitcoin-focused products like Bitkey may make self-sovereignty much simpler, but only for Bitcoin.
Regardless of whether this particular project succeeds in making self-sovereignty easier, it's likely that the pieces of this design (but in a different configuration), will be a large part of one that does. (e.g. the ability to use USB/NFC to talk to ISO/IEC 7816 smart card applications, with hardware backed keys, potentially on multiple devices.)