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?
-
5Warning: 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.– chytrikCommented Jan 21, 2019 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.– GendarmeCommented Jan 22, 2019 at 23:36
2 Answers
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
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