Receive all Bitcoinist news in Telegram! An anonymous user on Unspent bitcoin news has provided evidence that some wallet software may be generating private keys that can be easily discoverable, and therefore easy to take any bitcoins associated with that address.
I’m going to give a little bit of background and explain some terminology for those who don’t know how bitcoin works under the hood. The first thing is a private key. If you think of your bitcoin wallet address as a lock, the private key is the key used to unlock it and spend the funds inside. Your private key is the only thing that gives you legitimate ownership of your coins. Control of your private key is what allows you to spend the coins that are in your wallet.
Once your private key is generated, it is run through a hash function. It is very easy to find the second number from the first, but mathematically impossible to find the first from the second. Since a private key can be literally anything, you could technically take any phrase or string of numbers and letters and use it as your key. You could just throw anything into the hash function and generate the wallet. The public key would be derived from that, and you’d be on your way. Since the blockchain is an open public ledger, you can go look at some addresses that have been derived from common phrases.
It’s quite obvious these were _meant_ to be found. It turns out there are a lot of these addresses. Keep looking and you will easily find some. This is nothing new and has been known to the bitcoin community for a while. The user that posted these findings, who has chosen to remain anonymous, goes much further down the rabbit hole. It was kind of a pet project.
He used block hashes for every block since the Genesis Block, Merkle roots from every block, common words and phrases that had been hashed multiple times, and finally started testing all bitcoin addresses. His first experiment involved checking every block hash to see if any of them had been used as a private key. This is kind of a smart way of remembering your private key, because you’d only need to know the block number to be able to go recover your key. Sure enough, over forty addresses existed that at one point over the past seven years been sent bitcoins.
He then used the Merkle roots of some blocks to check for discoverable keys, and once again found addresses that had coins sent to them. Unfortunately, the balances were all zero, but the hunt was heating up. The last experiment is where the user started asking some questions. He took his index of all bitcoin addresses and tested every public address to see if it had been used as a private key.
And again, he searched a fraction of the blockchain and found dozens of addresses. The difference with many of these was that they had received and emptied the bitcoins associated with them within the last weeks or days. The idea of using a public address as a public key doesn’t really make sense and is very risky because it is discoverable. These addresses were receiving bitcoin and taking it within minutes or hours of it being confirmed. At this point, Anonymous Pastebin Guy started to smell something fishy.