Input 11 x 8-sided dice rolls [1-8]: 48625254671
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 | 2 | 3 |
|000 001 010 01 | 1 100 101 110 1 | 11 000 001 010|
| 1. ahead | 2. slight | 3. scout |
One of the greatest thrills for a Bitcoin enthusiast is generating a new private key based on home-brew entropy. Sure, there are reasons why this may be overkill. Random number generators have become more reliable and trustworthy over the years. But the only way to be certain of where your entropy comes from is to generate it yourself. Unfortunately, translation from entropy to seed words isn't currently within everyone's reach.
My 10-year-old daughter loves the process of generating a seed based on dice rolls. I actually created a worksheet for her to complete as she generates 1's and 0's based on even/odd dice rolls to generate 256-bits of entropy, which she then converts from binary to decimal in groups of 11 bits and then looks up the appropriate entry in a BIP-39 wordlist. (Unfortunately, she can never make it 100% of the way to the end of the process manually due to the checksum). However, to expect this from a non-techie is a bit much.
While assisting non-technical clients with generating their seed words, it had always troubled me that I was unable prove to them that their seed words were directly derived from their dice rolls. I therefore spent most of my idle brain cycles trying to come up with a process for seed generation that can be easily audited by a non-technical user; one which would leave them absolutely certain that I had no hand in choosing any of their seed words. Such a process is crucial - not only to ensure high comfort-level of my clients - but to ensure high comfort-level for me as well. The ability to prove to a client that her dice rolls directly determined her seed words and that I could not have planted any part of it reduces (at least somewhat?) my exposure.
As I began puzzling over the problem, I got stuck for a while on the fact that there is no easy way for a non-techie to convert base6 numbers to binary. I couldn't have my clients sit and make 256 dice rolls. In searching for an easy way to convert between base6 and base2, it struck me that any dice with 2^n sides would transform the problem into a matter of simple value-lookup / translation, and that 8-sided dice would probably be optimal.
And so, I set to work and I…
developed a noob-friendly worksheet and companion set of lookup-tables
integrated this new feature into my seed generation software: Rudefox Burrow.
created a procedure
I'm a huge fan of Christopher Allen and what he is doing with Blockchain Commons. I incorporate a lot of their methods when building solutions for my clients. This particular feature is a solution to #SmartCustody Adversary: Systemic Key Compromise. Perhaps this concept can be integrated into their LetheKit.
I hope you find the idea interesting. I welcome any comments, critiques and feedback.
Read about the initial release of Burrow (or simply proceed to the Burrow Quick Start)!