README: edit BIP32 section

This commit is contained in:
The MMGen Project 2018-09-29 10:46:23 +00:00
commit 29933ce0bf
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2

View file

@ -74,21 +74,36 @@ wallet file.
#### Why MMGen is not a BIP32 wallet
Most popular deterministic wallets use the elliptic-curve-based BIP32 or
Electrum protocols to generate their key/address pairs. MMGen, on the other
hand, uses a much simpler system: a SHA-512 hash chain with double SHA-256
branches. One advantage of this system is that you can recover your keys from
an MMGen seed without the MMGen program itself using standard command-line
utilities. But the most important advantage is security: elliptic-curve wallets
are not only cryptographically weaker than hash-bashed ones but have a dangerous
flaw -- their “master public key” feature allows an attacker to recover any key
in the wallet from a single compromised key (for a detailed discussion of this
problem, see Vitalik Buterin’s article [Deterministic Wallets, Their Advantages
and Their Understated Flaws][7]). Though the master public key feature of BIP32
and Electrum wallets is undeniably convenient, MMGen makes up for its absence by
allowing you to save a virtually unlimited number of Bitcoin addresses for
future use in an address file, which addresses may safely be made public.
Most popular wallets today are based on the [BIP32][w] protocol. But while
BIP32 is undeniably powerful and flexible, it has two significant weaknesses, in
our view. First of all, it relies on elliptic-curve cryptography, which means
that with the advent of quantum computing, or perhaps the discovery of a
weakness in the secp256k1 curve, not only will your individual keys be at risk
but the entire system used to derive them. Thus an attacker could conceivably
gain access to all your crypto assets in one fell swoop. With MMGen you're
protected against this danger, as its key derivation scheme relies entirely on
the SHA256 and SHA512 cryptographic hash algorithms, which use no complex math
and are generally considered quantum-safe. Incidentally, a nice side-effect of
MMGen's hash-based KD scheme is that you can [recover your keys from an MMGen
seed without the MMGen program itself][r] using standard command-line utilities.
A second critical weakness of BIP32 is mentioned in the [text of the BIP][w]:
> *One weakness that may not be immediately obvious, is that knowledge of a
> parent extended public key plus any non-hardened private key descending from
> it is equivalent to knowing the parent extended private key (and thus every
> private and public key descending from it).*
This means that the compromise of a single key could lead to the theft of
other, **or even all,** of your keys, something that MMGen's hash-based
derivation scheme once again protects you against. True, BIP32 does implement
“hardened” keys to counter this vulnerability, but with their use you lose the
ability to generate addresses from a master public key, which is the only
functionality an EC-based wallet provides over a hash-based one in the first
place. In which case you might as well be using a hash-based wallet like MMGen
for the additional security it provides. As to the master public key feature,
MMGen makes up for its absence by allowing you to easily generate address lists
for distribution to potential payers.
### Download/Install
@ -132,3 +147,4 @@ Donate (BTC,BCH): 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
[r]: https://github.com/mmgen/mmgen/wiki/Recovering-Your-Keys-Without-the-MMGen-Software
[x]: https://github.com/mmgen/mmgen/wiki/Getting-Started-with-MMGen#a_alt
[z]: https://user-images.githubusercontent.com/6071028/31656274-a35a1252-b31a-11e7-93b7-3d666f50f70f.png
[w]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki