Please describe your proposed solution.
<u>The problem explained simply</u>
You just opened a self sovereign crypto account, and you were told to keep your 15 words seed phrase safe (replace 15 by 12, 24 or any other value as appropriate to your context, it is the same concept/problem/solution behind it). Those 15 words are the entry point to your wallet, or to be more precise, they can generate the private key that signs any transaction out of your crypto account. Anyone who has those 15 words have access to your wallet and can spend all of its content.
a typical seedphrase and warning message
-
If you store those 15 words online (backup system, cloud, or any system that is accessible via the internet) or in clear on a computer connected to internet (unfortunately prone to hacks), you are at risk that it will leak, and any day your wallet could be emptied.
-
If you write them on paper and keep it safe in your house, you are at risk that anyone seeing this paper could access your wallet and empty it.
Therefore the industry does not have much of a solution for this, and comes up with ludicrous solutions like "you should print the 15 words on a metal sheet and bury it under your house (https://blog.lopp.net/metal-bitcoin-seed-storage-stress-test--part-ii-)". Are you serious?
The problem is general across the crypto world, and is one of the main FUD of onboarding users. What if someone steals my keys? Where should I hide it? should I trust myself to keep it safe?
If we can remove this risk, we remove one of the biggest barriers to entry when onboarding new users into the world of crypto and self-custody. Therefore… it is a BIG deal!
<u>A good solution that nobody seems to have thought of</u>
Let's step back. The problem shows us that the solution must include this:
- the 15 words should never come close to the internet. Once they are given to you, they should never be uploaded anywhere.
- the 15 words should never be stored in plain text, otherwise your account is immediately at risk of being compromised.
- the 15 words should be accessible within a few seconds by whoever owns them (no digging under the house)
I have designed a system that provides a solution to this problem. I have a working prototype (see attached video) which is already available as an app on the AppStore, although at this stage it lacks some characteristics to be adopted by the crypto community. In short, it is not open source, it requires a backend, requires a database, a login (user email), and appears as a commercial product. As a consequence of all this, end users may not trust that this product will do as it says (keep their seed phrase safe and off internet).
I propose to spent time and effort to transform what could be called a first good prototype into a robust open source product, delivered as an app on iOS and Android.
Ultimately, this app will deliver the following:
- the code will be open source so that everyone will be able to see it and be confident that it does not contain any malicious code. It will also be minimal in terms of open source extra libraries, as to keep it light and easily auditable.
- the app will be always offline (i.e. no internet access), at least for what concerns the management of seed phrases and encryption of it, so that there is no risk of the seed phrase leaking online.
- the owner of the wallet will be asked to enter in the app her 12, 15 or 24 words as they are given by the self-custodian wallet that the owner wants to protect
- those 15 words will be encrypted by the app with a strong encryption library using a private key specific to this user (see below)
- the encrypted result is then shown to the user as a QR code, which can be downloaded, and printed for later reuse.
- anyone scanning this QR code will see nothing behind it (strong encryption / gibberish).
- however via the app, the owner of this QR code will be able to decode it and see the 12, 15, or 24 words in clear immediately after the scanning.
- the owner can decide to delegate the reading of his QR code, with some conditions attached (of date range, or other) to another user (using his public key), allowing this other user to retrieve the words on behalf of the original owner if/when the conditions are met (therefore making irrelevant the industry of private wills and lawyers/executors to access contracts after such or such event happens).
- the owner's main private key used for encoding is generated by the owner with words chosen by the owner, therefore one private key (simple for the owner to recreate) controls them all.
a QR code containing a seedphrase that nobody else can decode
<u>Additional educational content</u>
Since this app is likely to be a very good entry point for onboarding users on their self-custodian crypto journey, it is the right access point to deliver some very important educational short videos on best practices regarding security. We will provide a few educational animated videos which will be embedded into the app.
<u>Additional Cardano extras</u>
For keys of Cardano wallets, it could be interesting to give the ability of those Cardano users to see the balance of their wallet, so if they have say 4 Cardano accounts, not only they would have a safe storage of their 4 private keys, but also could see the consolidated balance of their 4 wallet. It's a small gimmick, but could be a nice addon for the Cardano community of users.
As mentioned earlier, the app would also contain a few tutorials (how to…) which would be made on Cardano examples (wallet, use case, logo, visuals) therefore pushing the Cardano brand and associated wallets brands with the app.
Please describe how your proposed solution will address the Challenge that you have submitted it in.
The challenge addressed is "Security and Privacy". The most important and dramatic security issue in crypto, is the one of being at risk of having someone access your seed phrase and therefore your private keys, and extract the content of your wallet.
At the start of their journey into Crypto, most users will feel unsecure and overwhelmed. Onboarding users on self-custodian wallets is the first most critical step. The blockchain that secures it best will receive the goodwill that comes along.
It is very much under-estimated (and under-stated) that one of the biggest challenge of the Crypto community as a whole is how to onboard the next billion users on-chain and with self-custodian wallets. One Crypto Pass is a step in the right direction to address this cross-chain common global challenge.
The solution provided is an app that will work across all major blockchains. Therefore there is a strong incentive for Cardano to be seen as the leading and most trustworthy blockchain among all. By showing that the Cardano community can deliver, on behalf of the whole crypto industry, a better solution for keeping users' seed phrases safe, educate them, and remove some FUD, it sends a strong signal about Cardano's and its developer community's ethics for doing good.
Although the app will work cross-chain, it is our intention to provide Cardano users with a few added functionality vs users of other chains, such as providing cumulated Cardano accounts balance at first glance of dashboard.
In addition, to increase the profile of Cardano vs all other blockchains, it is also our intention to make the app's onboarding tutorials (how to use…) and explainer videos (protect yourself from hacks, best practice to keep safe…) all based on Cardano (and specific user experiences with Cardano wallets), including brands and visuals.
Finally, since the app is mostly going to operate offline (no need for a backend or database), its scalability is not going to be an issue, and since most crypto seed phrases are derived from bitcoin BIP39 or similar standard, what will be delivered will already be at scale, with a positive impact across most chains.
What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?
In truth there are no great technological challenges anymore at this stage. I have already developed a "web2" version of the solution (as can be seen in the videos, and as can be downloaded from the AppStore). I now need to "refactor" this web2 solution to get rid of the backend and database, and rebuild it on a more modern framework (I used Cordova in the current release and I will likely build the new one with React Native). That will allow the delivery of the app for iOS and Android.
There will be no need for the user to register (no email, no id..), hence no need for backend / database in this new app. At the equivalent of first login, the user will be required to enter his/her own original seed phrase. That will generate a private key used for encoding all future seed phrases into QR codes. This original seed phrase will then be encoded in the app (localstorage or equivalent) and will not be accessible / hackable from outside the app. I plan the additional use of phone security system (fingerprint / face recognition) to access the app after first login. As noted by a community member, it may be that to deal with the case of rooted devices, the app should allow the user to either keep the original seed phrase securely in app storage (convenience) or ask it at each app usage (stronger security, but a lot less convenient).
The risk of a moving deadline will be mitigated by allowing more time than I would normally allocate for a full time job.
The only part which has not been prototyped at this stage is the integration of a Cardano library to scan through Cardano wallets balance and provide an additional feature for Cardano users. That is not critical to the app, and this is only a nice to have, which I intend to implement, but in case it takes longer to do so, this can be delayed a bit without impacting much the release of the main feature / main benefit.