MMGenTrackingWallet now split into:
- TwUnspentOutputs, for unspent outputs display
- TrackingWallet, for label and other operations
EthereumTrackingWallet is now subclassed from TrackingWallet
Versions of MMGen prior to 0.9.7 were vulnerable to an attack whereby a
compromised MMGen installation on the network-connected machine could trick
an offline installation into revealing the user's seed via a specially crafted
transaction file.
Since sufficient time has passed for users to upgrade, we now deem it safe to
publish the exploit, implemented as a patch against v0.9.6. Instructions for
use are in the patch itself.
- A password is now generated for each privkey in Ethereum key-address list
- As with Monero wallet passwords (df03851), password is first 16 bytes of
SHA256x2(privkey)
- Password can be used with geth's private.importRawKey() method to create a
relatively secure online wallet. Unlock using private.unlockAccount()
- This commit introduces a backwards incompatibility. Users with non-UTF-8
brainwallets (if there are any, which is very unlikely) must export them to
another MMGen wallet format using an older version of MMGen.
Different keyboard keys make different clicking sounds when pressed. In
particular, the ENTER and SPACE keys are noticeably louder on most keyboards.
This makes possible an acoustic side-channel attack whereby an eavesdropper
with a microphone could gain knowledge about the lengths of the words in a
user's mnemonic seed phrase as they're being typed. This information could
also be obtained by analyzing the pauses between words.
Since the words in the Electrum wordlist used by MMGen vary in length from three
to twelve letters, the keyspace required to be searched in a brute-force attack
on the seed could thus be drastically reduced.
Stealth mnemonic entry mitigates this vulnerability by treating all characters
that are not lowercase letters in the range 'a-z' as “pad characters”. Pad
characters are simply discarded and can be typed either before, after or in the
middle of words. For each word, once a sufficient number of characters,
including pad characters, have been typed (currently 12), any pad character
can be used to enter the word. Since each word can now be entered using the
same number of keystrokes and padded with random characters at random
positions, acoustic analysis of the user's keyboard clicks will yield little
useful information for an attacker.
This feature is enabled by default as it doesn't impact existing functionality
and can simply be ignored if one chooses not to use it.