0

Is it possible to manually create a seed from the BIP 39 English word list, and enter them in the Trezor Model T recovery to create a wallet from those words. I know that choosing the 12 words doesn't work, because the last word is a checksum of the previous 11. Is there a way to determine the 12th word from the first 11?

  • 5
    Warning: DO NOT use a human to choose the seed words, use a proper cryptographic library. Humans are a very bad source of entropy, there is a very real chance your funds will be stolen if you ignore this. – chytrik Jan 21 '19 at 20:59
  • Remember that even if you properly generate the seed on a computer, you have lost a part of the security already if your computer isn't airgapped (which it probably isn't). The purpose of a hardware wallet is to be a lightweight airgapped computer with specifically this as its job. – Gendarme Jan 22 '19 at 23:36
1

Here is an easy working example that will augment https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc#using-a-bitcoin-wallet.

% bx mnemonic-new 0C1E24E5917779D297E14D45F14E1A1A

army van defense carry jealous true garbage claim echo media make crunch

The following will provide even greater insights what is going on under the hood.

% echo 0C1E24E5917779D297E14D45F14E1A1A | bx sha256 | cut -c 1-1

7


 0   C   1     E   2   4     E   5   9     1   7     7   7   9     D   2   9 
 00001100000  11110001001  00111001011  00100010111  01110111100  11101001010
000001100000 011110001001 000111001011 000100010111 001110111100 011101001010
0x060        0x789        0x1CB        0x117        0x3BC        0x74A
96           1929         459          279          956          1866
97           1930         460          280          957          1867
army         van          defense      carry        jealous      true
   7   E   1     4   D     4   5   F     1   4   E     1   A   1     A   7
 01011111100  00101001101  01000101111  10001010011  10000110100  00110100111
001011111100 000101001101 001000101111 010001010011 010000110100 000110100111
0x2FC        0x14D        0x22F        0x453        0x434        0x1A7
764          333          559          1107         1076         423
765          334          560          1108         1077         424
gap          claim        echo         media        make         crunch
0

The possible secret + checksum bit lengths from BIP39 are:

  • Entropy Lengths: 128, 160, 192, 224, 256 bits
  • Corresponding checksum Lengths: 4, 5, 6, 7, 8 bits

Each word represents 11 Bits. Therefore, for a 12 word phrase represents a total of 132 bits, of which 128 are entropy and 4 checksum. So note that the 12th word "includes" the 4-Bit checksum but not exclusively.

To generate your 12-word passphrase, simply determine:

  • 128 bit secret
  • 4 bit checksum (first four bytes of sha256(secret))
  • Concatenate above, split into 11 bits and determine word conversion via wordlists.

Wordlist documentation: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.