I've read in quite a few places how to sort of be your own RNG, using dice or cards, to create a private key. I have read a few different ways to do this with Armory and would like some clarification please on how to best do this. I feel that cards would be the best way, because you don't have to worry about the weight of the dice being perfect.
I also think cards are the easiest way, but they do have some pitfalls. See here for a good discussion on how to shuffle well enough to provide sufficient entropy:
https://bitcointalk.org/index.php?topic=682842.0That was a very interesting read, thank you!
Once I achieve the random shuffle, do you know how I go about getting the private key? And can this be used to generate a HD wallet, so I only need one backup?
Thanks!
Shuffling 52 cards is equivalent to 225 bits of entropy, more than enough. I added the three jokers, just since they were there.
I wrote down the sequence of cards, using one letter for each suit, the number for ace to 10, and JQK for the last three. Any code will do.
In a terminal window
on the secure offline machine I started the shasum -a 256 command and typed the sequence directly as input.
I then found the translation from hex to the Armory backup alphabet somewhere in the source code. I also found the lines that did the checksum. I made a small Python script that took the sha256 and converted it to Armory input. Then I started Armory, cut-and-pasted the code into it, set a password,
made a 2-of-3 paper backup, deleted the armory wallet again, restored from the paper backup, stored the paper backups in three safe places, and proceeded to use the wallet.
Hmm, I intended to paste the ten lines of code here - but I cannot find it. That makes this post somewhat less useful.
As I remember it, I spend most of an afternoon looking at the source code to find the alphabet (easy to find) and the checksum calculation (not so easy to find) - and then writing the code was pretty fast. But it is so long ago that I cannot reproduce it now. Maybe somebody has posted such a code snippet somewhere.
WARNING: It is of course possible to use the same procedure to generate brain wallets by sha256'ing a passphase. That is a good way to lose bitcoins, either by using an insecure passphase (we are awful at generating entropy!) or by forgetting the passphase. Not that the two are mutually exclusive