Closed bharathrao closed 5 years ago
@bharathrao good idea. I was just helping a friend with a bip39 mnemonic with words generated using bip39 diceware. We realized that the 24 words wouldn't work and ended up using this python code to generate the checksum. Having this built into the bip39 tool would have been great.
Mnemonic phrase generated by human has not enough entropy. It is unsafe. Bip39 recommends to base mnemonic only on seed with high level entropy.
Although using a mnemonic not generated by the algorithm described in "Generating the mnemonic" section is possible, this is not advised and software must compute a checksum for the mnemonic sentence using a wordlist and issue a warning if it is invalid.
Giving user an opportunity to choose custom phrase is bad idea.
While a human generate mnemonic might not be as strong, using something like BIP39-Diceware to generate all but the last word should be fine. The issue is then easily generating the checksum word. Having that functionality within this utility could be of value to others.
A human generated mnemonic from their own mind has low entropy.But if they choose using a random generator from a word list and rearrange the words to be memorable the level of entropy is not dramatically different. Note that lower levels of security may be ok for storing smaller amounts.
I suggest not using your own words to make a mnemonic.
Secondly, I suggest using the entropy options in this tool if that's what's preferred. It accepts dice rolls as entropy.
Lastly, if people want to use their own words, my suggestion is to manually change the last word until the checksum matches. For example, a 12 word mnemonic has 4 bits of entropy so it should only take 16 (ie 24) changes to find a valid checksum word. But more than anything, I recommend not using your own words.
You may want to use the following to compute the checksum word if you want to enter a custom phrase: https://github.com/bharathrao/bip39check