replace Argon2 with PBKDF2

This commit is contained in:
tevador 2020-06-14 21:54:15 +02:00
parent 9e9b8c7464
commit f1c7829f04
6 changed files with 321 additions and 9 deletions

View file

@ -16,7 +16,7 @@ The sole argument is the wallet creation date in `yyyy/MM/dd` format.
> ./monero-seed --create 2100/03/14
Mnemonic phrase: pumpkin alter spice lend position sentence surface snow atom lobster exotic robot profit chase
- version: 1
- private key: a147f59c9b80e77824ba2e44241598b3b9ddf2e6458e9970352894216b9cbbba
- private key: 9a1a9fe303f84d39277c0e87ccf42aa78f19c28127b2187d574266f29992971f
- created on or after: 02/Mar/2100
```
@ -25,7 +25,7 @@ Mnemonic phrase: pumpkin alter spice lend position sentence surface snow atom lo
```
> ./monero-seed --restore "pumpkin alter spice lend position sentence surface snow atom lobster exotic robot profit chase"
- version: 1
- private key: a147f59c9b80e77824ba2e44241598b3b9ddf2e6458e9970352894216b9cbbba
- private key: 9a1a9fe303f84d39277c0e87ccf42aa78f19c28127b2187d574266f29992971f
- created on or after: 02/Mar/2100
```
@ -36,7 +36,7 @@ This can be tested by replacing a word with `xxxx`:
> ./monero-seed --restore "pumpkin alter xxxx lend position sentence surface snow atom lobster exotic robot profit chase"
Warning: corrected erasure: xxxx -> spice
- version: 1
- private key: a147f59c9b80e77824ba2e44241598b3b9ddf2e6458e9970352894216b9cbbba
- private key: 9a1a9fe303f84d39277c0e87ccf42aa78f19c28127b2187d574266f29992971f
- created on or after: 02/Mar/2100
```
@ -64,7 +64,14 @@ and September 2105 can be represented.
### Private key seed
The private key is generated by wallet software from the 128-bit seed included in the mnemonic phrase. Argon2id is used as KDF (memory = 256 MB). The wallet creation date is used as a salt. 128-bit seed provides the same level of security as the elliptic curve used by Monero.
PBKDF2 with 4096 iterations is used to generate the private key from the 128-bit seed included in the mnemonic phrase. The wallet creation date is used as a salt. 128-bit seed provides the same level of security as the elliptic curve used by Monero.
### Reserved bits
There are 2 reserved bits for future use. Possible use cases:
* a flag to differentiate between normal and "short" address format (with view key equal to the spend key)
* different KDF algorithms for generating the private key
### Error detection/correction