mirror of
https://github.com/status-im/specs.git
synced 2025-01-27 14:45:06 +00:00
Import account creation doc by Corey
https://notes.status.im/6IN8H23dT9-xEM6Xov4Slw?view
This commit is contained in:
parent
4e92d67f55
commit
bc22eea95f
@ -29,6 +29,7 @@ Drafts are prepended with x to indicate that they aren't accepted yet.
|
||||
| x6 | [Initial Conversational Security Specification](x6.md) |
|
||||
| x7 | [Initial Transport Privacy through Whisper Specification](x7.md) |
|
||||
| x8 | [Initial Message Payload Specification Specification](x8.md) |
|
||||
| x9 | [Status Account Creation and Maintenance Specification](x9.md) |
|
||||
|
||||
## Protocol Research
|
||||
|
||||
|
57
x9.md
Normal file
57
x9.md
Normal file
@ -0,0 +1,57 @@
|
||||
# Status Account Creation and Maintenance Specification
|
||||
|
||||
## Summary
|
||||
|
||||
The core concept of an account in Status is a set of cryptographic keypairs. Namely, the combination of the following:
|
||||
1. a whisper chat identity keypair
|
||||
1. a set of cryptocurrency wallet keypairs
|
||||
|
||||
Everything else associated with the contact is either verified or derived from the above items, including:
|
||||
- Ethereum address (future verification, currently the same base keypair)
|
||||
- 3 word mnemonic name
|
||||
- identicon
|
||||
- message signatures
|
||||
|
||||
## 1 Initial Key Generation
|
||||
### 1.1 Public/Private Keypairs
|
||||
- An ECDSA (secp256k1 curve) public/private keypair MUST be generated via a [BIP43](https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki) derived path from a [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) mnemonic seed phrase.
|
||||
- The default paths are defined as such:
|
||||
- Whisper Chat Key ($IK$): `m/43'/60'/1581'/0'/0` (post Multiaccount integration)
|
||||
- following [EIP1581](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1581.md)
|
||||
- DB encryption Key ($DBK$): `m/43'/60'/1581'/1'/0` (post Multiaccount integration)
|
||||
- following [EIP1581](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1581.md)
|
||||
- Status Wallet paths: `m/44'/60'/0'/0'/i` starting at `i=0`
|
||||
- following [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki)
|
||||
- NOTE: this (`i=0`) is also the current (and only) path for Whisper key before Multiaccount integration
|
||||
|
||||
### 1.2 X3DH Prekey bundle creation
|
||||
- A client must create an amount of X3DH prekey bundles, each defined by the following items:
|
||||
- Identity Key: $IK$
|
||||
- Signed prekey: $SPK$
|
||||
- Prekey signature: $Sig(IK, \text{Encode}(SPK)$)
|
||||
- one-time prekey: $OPK$ (???? need this?)
|
||||
|
||||
## 2 Account Broadcasting
|
||||
- A user is reponsible for broadcasting certain information publicly so that others may contact them.
|
||||
|
||||
### 2.1 X3DH Prekey bundles
|
||||
- A client [MUST/SHOULD] regenerate a group of X3DH prekey bundles every 24 hours and broadcast them through the appropriate channels
|
||||
|
||||
## 3 Optional Account additions
|
||||
### 3.1 ENS Username
|
||||
- A user MAY register a public username on the Ethereum Name System (ENS). This username is a user-chosen subdomain of the `stateofus.eth` ENS registration that maps to their whisper identity key ($IK$).
|
||||
- TODO: verify if this is contact code or public key
|
||||
|
||||
### 3.2 User Chosen Name
|
||||
- An account MAY create a display name to replace the $IK$ generated 3-word pseudonym in chat screens. This chosen display name will become part of the publicly broadcasted profile of the account.
|
||||
|
||||
### 3.3 User Profile Picture
|
||||
- An account MAY edit the $IK$ generated identicon with a chosen picture. This picture will become part of the publicly broadcasted profile of the account.
|
||||
|
||||
### 3.4 Tribute to Talk
|
||||
- TODO - Couched until later
|
||||
|
||||
### 3.5 Wallet Accounts
|
||||
- TODO (based in multiaccount)
|
||||
|
||||
## Security Implications
|
Loading…
x
Reference in New Issue
Block a user