Thursday, June 19, 2014

Vanity in BitCoins

Quote from the movie The Devil's Advocate: "Vanity ...is definitely my favorite sin."


The address generation of a BitCoin wallet uses similar cryptography routines as is used for mining the coins themselves. Logic if you consider the address is part of the bit-coin transaction itself.

By running a "brute force" address generator, the generated walled ID can be compared with a wanted result. Millions upon millions private keys have been hash'd to get the ID as in the QR Code.
A wallet ID with the Prefix "1BTC4Me....."

Generating this ID gives an indication of the computing power and/or luck needed to hack an actual bit-coin wallet. On my system getting this prefix took about 2.5 hours. The software itself indicated that getting to 50% probability that a key generated this specific prefix was 5.5 hours.

For each additional character added to the prefix this time is multiplied by a factor of roughly 58. This number of 58 can be computed from the valid characters; these are alphanumeric with some exceptions for look-alike like the lower case L, and zero, or just the fact its is a base58 representation :-)
Finding the prefix "1BTC4You.." indicates a 12 day running time to hit the 50% probability mark.
Finding the prefix "1Kangaderoo.." indicates a 6700 year running time to hit the 50% probability mark.

Using a crypto coin mining setup can increase your computing power, thus reducing the running time; the chance to find/hack the private-key for this particular address is still slim.

Having someone else to generate the address for you seems like a security issue, if a third party generates the key it is no longer a private key. The solution is to generate a private and public key first, use this public key in the generation process to generate a new partial private key,
These two private keys can be combined, to generate a third and final private key yielding your wanted BTC wallet ID prefix. Don't have the computing power? There is a pool where you could submit your request.