I constantly think about key recovery. It's the greatest challenge in crypto. Most people will forget passwords. Probably up to 30% of Bitcoin private keys have been forgotten or lost. Additionally, a small percentage of people will get hacked or phished. How do we protect users? That's the #1 challenge in crypto. And by a long shot.
Previous Idea
The previous idea I had was to get: 1) a user to take a selfie image and hash that on the blockchain 2) email the selfie image file to him/herself so that 3) during a recovery request, the DAO with key reset authority can check the blockchain to verify that a user that owns the actual selfie image file is associated with the account and that 4) the user physically matches the person on the selfie image during the recovery process via zoom. The DAO would then reset the account with a new key. This is a very good solution.
New Idea
However, here is another solution that is both practical and robust:
Here is the process:
The DAO is given authority to reset keys to accounts
In the wallet app, a user inputs the ID numbers of up to two forms of ID. One needs to be a photo ID (eg. driver's license or passport)
The user ID data is combined, hashed and encrypted with a recovery partner's pubkey using ECDH and added to the blockchain. The recovery partner signs a message accepting his/her role as a recovery partner. There should be 3 partners for redundancy.
If the user loses his password or is hacked, he/she can reach out to the DAO recovery team who later invites the user and at least two recovery partners in a zoom call to check 1) if photo ID picture matches user on zoom & recovery partners agree and that 2) ID numbers match the hash. We can validate that the user is most likely linked with the account.
2 of 3 recovery partners sign an on-chain transaction with a new pubkey of user.
After 60 days the old pubkey is changed to the new pubkey unless challenged by someone who has access to the old private key.
This should solve the most common problem of lost private keys or seed phrases. This will not help as much with hacks, but if this recovery system is part of a smart contract wallet that limits withdrawals (eg. bitcashBank limits withdrawals to 5% a day), then a user can stop a hacker from draining an account if the user starts the recovery process soon enough. Our recovery method is an improvement over multisig because we provide some protection to the owner against his/her partners. (Unfortunately you can't trust your own friends & family sometimes. This process minimizes the ability of recovery partners in a multisig to collude or resolve a situation when multisig partners are hacked/compromised themselves.)
The DAO recovery team can be a trusted group of arbiters selected by the DAO in any crypto community selected by stakeholders to follow the process. For those who are familiar with Dan Larimer's latest project fractally, a system with a robust governance and human consensus process, fractal teams or communities can help with this recovery process. With Fractally governance we may ultimately not even need to rely on this specific process if the consensus process can ultimately fix the state of the blockchain. However, this recovery process should allow the fractally consensus process to resolve account recovery issues more efficiently. An identity-based network such as the Universal Gift Dividend Project (ugdp.org) can also add additional protection through radical transparency and web-of-trust systems. Also the EOS network with its Recover+ emergency system & insurance may add yet another layer of protection for users. With so many layers of protection, private key management could finally be solved and crypto can become a competitive mainstream solution.
I'd like to thank the following people for insights & feedback:
Luka from Port
Gabo Esquivel from bitcashBank
cc32d9 from EOS Amsterdam
John from Boid