Web-based Key Management (web wallet)
Ease of use is a primary requirement for the FIO web app. The goal is to reduce friction that comes with downloading applications or linking to external wallets, key management plugins, or other external tools. At the same time, there is a tradeoff between ease-of-use and security when it comes to key management.
Creating a web-based application that incorporates the entire key management and transaction signing workflow is considered a fundamental feature to accommodate the ease-of-use requirements.
This document summarizes the transaction signing and key management requirements associated with the development of a web-based application, identifies the risks and uncertainty regarding key management in a web app, summarizes different approaches development, and attempts to estimate the scope of the various approaches.
Web-based key management
The FIO web app requirements include:
Using a password as the primary method for accessing the application:
The user will create a password and that password would be used to encrypt seed phrases or other keys which will then be centrally stored on the dApp servers.
This approach is used by:
Blockchain.com (one of the most popular wallets)
EDGE (mobile wallet)
The ability to generate and store seed phrases and FIO Private Keys:
FIO Private Key(s) will be generated by the app
FIO Private Key(s) and/or seed phrases will be encrypted using password hash and stored on dApp servers.
Split key password recovery will be available, but set-up will be optional.
(Non-web app key management will also be available. For example, it will also be possible to connect to 3rd party wallets (e.g., Anchor and Scatter) to sign transactions. This document only focuses on evaluating the viability of the web app approach to key management.)
Web wallet security considerations
Development strategies
Strategy | Pros | Cons |
---|---|---|
Use of existing dev team |
|
|
Augment existing dev team with wallet expertise |
|
|
Outsource development |
|
|
Third-party applications and development services organizations
Refer to the dApp research page for background on research performed regarding account creation/login and signing: Dashboard research
Technology / Organization | Info |
---|---|
Edge Security API | Notes from 2/4/21 Conversation with Paul
|
WebCrypto API | One direction is to use the Web Cryptography API for client-side cryptography in the web browser. Then, you can create a keypair using the webcrypto api, and store the CryptoKey object, containing the user's private key, with the .extractable property set to false, using Indexed DB storage. This way the private key can only be used for decrypting and/or signing messages within the browser - but can not be read (even by client-side scripting in the browser). |
fido alliance | |
Oodles Blockchain (services) | |
Torus Labs |
|