mirror of https://github.com/status-im/specs.git
changes to account spec to update X3DH
This commit is contained in:
parent
6f9a8f4cda
commit
5fd1d7b6b3
29
x9.md
29
x9.md
|
@ -1,4 +1,4 @@
|
||||||
# Status Account Creation and Maintenance Specification
|
# Status Account
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
|
@ -16,37 +16,42 @@ Everything else associated with the contact is either verified or derived from t
|
||||||
### 1.1 Public/Private Keypairs
|
### 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.
|
- 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:
|
- The default paths are defined as such:
|
||||||
- Whisper Chat Key ($IK$): `m/43'/60'/1581'/0'/0` (post Multiaccount integration)
|
- 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)
|
- 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)
|
- 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)
|
- 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`
|
- 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)
|
- 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
|
- NOTE: this (`i=0`) is also the current (and only) path for Whisper key before Multiaccount integration
|
||||||
|
|
||||||
### 1.2 X3DH Prekey bundle creation
|
### 1.2 X3DH Prekey bundle creation
|
||||||
- A client must create an amount of X3DH prekey bundles, each defined by the following items:
|
- Status follows the X3DH prekey bundle scheme that Open Whisper Systems outlines [in their documentation](https://signal.org/docs/specifications/x3dh/#the-x3dh-protocol) with the following exceptions:
|
||||||
- Identity Key: $IK$
|
- Because there are no central servers, we do not publish one-time keys `OPK` or perform DH including them.
|
||||||
- Signed prekey: $SPK$
|
- A client MUST create X3DH prekey bundles, each defined by the following items:
|
||||||
- Prekey signature: $Sig(IK, \text{Encode}(SPK)$)
|
- Identity Key: `IK`
|
||||||
- one-time prekey: $OPK$ (???? need this?)
|
- Signed prekey: `SPK`
|
||||||
|
- Prekey signature: `Sig(IK, Encode(SPK))`
|
||||||
|
- Timestamp
|
||||||
|
- These bundles are made available in a variety of ways, as defined in section 2.1.
|
||||||
|
|
||||||
## 2 Account Broadcasting
|
## 2 Account Broadcasting
|
||||||
- A user is responsible for broadcasting certain information publicly so that others may contact them.
|
- A user is responsible for broadcasting certain information publicly so that others may contact them.
|
||||||
|
|
||||||
### 2.1 X3DH Prekey bundles
|
### 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
|
- A client SHOULD regenerate a new X3DH prekey bundle every 24 hours. This MAY be done in a lazy way, such that a client that does not come online past this time period does not regenerate or broadcast bundles.
|
||||||
|
- The current bundle MUST be broadcast on a whisper topic specific to his Identity Key, `{IK}-contact-code`, intermittently. This MAY be done every 6 hours.
|
||||||
|
- A bundle MUST accompany every message sent.
|
||||||
|
- TODO: retreival of long-time offline users bundle via `{IK}-contact-code`
|
||||||
|
|
||||||
## 3 Optional Account additions
|
## 3 Optional Account additions
|
||||||
### 3.1 ENS Username
|
### 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$).
|
- 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
|
### 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.
|
- 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
|
### 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.
|
- 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
|
### 3.4 Tribute to Talk
|
||||||
- TODO - Couched until later
|
- TODO - Couched until later
|
||||||
|
|
Loading…
Reference in New Issue