Rethinking private key storage: Dice, Math and Art wallets.
This may sound as surprisingly simple concept, but Bitcoin private key is just a big number. So, all you have is a number that, fortunately, very difficult to guess. This is just as difficult as finding a certain atom in the universe. For example take a look at the biggest private key:
I was incredibly impressed by this approach of proving the fact of ownership. Simple and elegant.
But here is the problem: how to remember or save this thing? And even its more complex version: how to remember it securely that other people could not find it?
The traditional way is to use software, hardware or paper -wallets. The first two work almost perfectly: they are fast, easy to use and quite safe. The third provides the highest level of offline security. So why would we need anything else?
Because it's so obvious that you have bitcoins! Hardware wallet, for example, could be very secure from a technological perspective, but the fact that you keep that little device makes you vulnerable.
So can we hide them? Yes, the method is called Brainwallet. Brainwallet allows you to store the entire key in you head in a form of a secret phrase. The only weakness of this approach is the phrase itself. People come up with "super secure" passphrases like
bitcoinisawesome and then "suddenly" lose their money.
Therefore, I propose to approach the process of storing keys more creatively. In this article I will show several Superbrain wallets. The rule is simple: the more creative you are, the safer your keys, but the important thing here is not to fool yourself.
In this section I want to cover simple self-generated wallets. This is probably the most secure way of key generation. A private key could be created without a computer, so without the risk of being spied on. Just grab a pair of dice, lock in your bathroom and start to generate the key. You need 78 dice rolls to generate a perfect random private key.
Each roll of the pair will give you a digit in your decimal private key representation:
If sum of numbers is from 2 to 9 => write the sum;
If sum of numbers is 10 => write 0 (zero);
If sum of numbers is 11 => write 1;
If sum of numbers is 12 => roll again;
You'll get something like:
(To generate the public key you'll need an offline computer with a dec2hex converter and the local version of bitaddress.org)
So far, so trivial. Now the creative part: why would you ever store your key as it is or in a form of mnemonic phrase? This is what most people do. But we are smarter, right? We'll hide it. For example we could take our most reliable password (usually the oldest one) and make some calculations with a private key:
« s u p e r p a s s »
u = 117
p = 112
e = 101
r = 114
p = 112
a = 097
s = 115
s = 115
(in decimal ASCII codes)
Combined give us: X = 115117112101114112097115115. Now our
obfuscated private key Po could be:
520 711 385 241 306 060 803 293 880
797 620 851 493 040 139 607 986 763
091 587 602 261 749 204 963 183
That's it! Now you can print this number wherever you want. The formula is easy to remember and reversible, so you can get the original key back.
Of course you need to come up with your custom formula. Perhaps, instead of subtracting you will use XOR, or the power will be 7 and you cut the highest digits, or you'll create a totally different algorithm for calculating X. Most importantly, if you come up with it by yourself, then you will remember it for a long time.
We got the key. Now let's think, how we can completely hide the fact of its existence. Well, we have a lot of digits, why not put them in their native habitat, for example... in an electricity bill? Easy!
Print out multiple copies of this invoice and put them in the deepest corners of your grandma's house. (have you noticed the lightning network logo by the way?)
Now your money are pretty safe, right? Not actually. Figure out your own ideal concealment scheme, use the imagination but keep it simple!
This one is for nerds. But in fact it can be used by ordinary people... I guess. The idea behind it is similar to the brainwallet method with the exception of using custom math for key generation. Basically, you take several big numbers (or methods of their calculation) and a simple easy-to-remember formula to get the final number. Also you'll need a little bit of your brain juice.
The first idea that comes to my mind is prime numbers. The formulas that compute prime numbers are widely known. So you will never forget that. Also it's good to use name/username as a seed (something that you'll remember even in the middle of the night):
« c y b e r w o l f »
y = 121
b = 098
e = 101
r = 114
w = 119
o = 111
l = 108
f = 102
(in decimal ASCII codes)
It's time to choose a prime numbers formula. I like Carol primes:
I will use my ASCII codes as n (just insert them in the formula above) and calculate 9 different Carol numbers:
I can just sum the numbers, but this would be too obvious. Plus I'd like the sequence of characters to influence the final result.
As you can see, the length of number (2) is 9 digits less than what we need. This is the exact number of characters in my username. So I'll take the sequence of the first digits and extend all numbers except (1) and (3) because these are too long :
Now I can finally sum the numbers and get my private key:
Why does this work, you ask? Because the course of my thoughts is a real password. Even if I forget the exact algorithm I still can reproduce it through the same method of thinking.
Now the key is entirely in my head. No hardware / paper wallets, and it's pretty secure (it was before I published it).
If you are an artist you are really lucky - you can create art wallets. Again, everyone can do this, but your wallets will also be valuable art objects.
As you may have guessed, I'm talking about works that you can spread over the internet, print in magazines and hang in galleries. And no one will know about the secret.
It took about 3 years to solve this popular $50,000 bitcoin puzzle. It would have taken much longer if the author had hidden the fact that there was a key. May be longer than the potential Bitcoin lifetime.
For example, well-known gif artist Zack Dougherty could have stored some bitcoins in this beautiful art piece:
The simplest way is to count the number of triangles in each frame and then produce the result using some simple formula.
Triangle in our case is any contour with 3 black edges, which can be detected by applying Paint Bucket Tool with the maximum tolerance (100) on the edge-detected image:
We got: 8, 6, 5, 7, 6, 5, 4, 6, 5, 8, 9, 6, 5, 7, 4, 0, 7, 8, 7. It's only 19 digits, but we need about 78, so we'll use cubed X for the extension:
X = 8657654658965740787
X3 = 648934368119118738927965517829892670314024368938341623403
Pk = 8657654658965740787648934368119118738927965517829892670314024368938341623403
I think the key to success here is to be as original as possible, but not so much as to forget your own scheme. Of course, this particular image is not the best choice because of low resolution and ambiguous encoding, but if you create your own art, you will take care of the details.
There are many more methods to encrypt and remember private keys - only your imagination is the limit. You are a universe and that universe is larger than 256-bit space. Obviously, these methods only applicable for long holding and backup wallets. Don't use them to buy coffee - you will get mad!