How secure is 256 bit security?
In the main video on cryptocurrencies, I made two references to situations where, in order to break a given piece of security, you would have to guess a specific string of 256 bits. One of these was in the context of digital signatures and the other in the context of a cryptographic hash function. For example, if you want to find a message whose SHA-256 hash is some specific string of 256 bits, you have no better method than to just guess and check random messages, and this would require, on average, 2^256 guesses.
Now this is a number so far removed from anything that we ever deal with that it can be hard to appreciate its size. But let's give it a try. 2^256 is the same as 2^32, multiplied by itself 8 times. Now what's nice about that split is that 2^32 is 4 billion. Which is at least a number we can think about, right? It's the kind of thing you might see in a headline. So what we need to do is appreciate what multiplying 4 billion times itself 8 successive times really feels like. As many of you know the GPU on your computer can let you run a whole bunch of computations in parallel incredibly quickly. So if you were to specially program a GPU to run a cryptographic hash function over and over, a really good one might be able to do a little less than a billion hashes per second. Let's say that you just take a bunch of those and cram your computer full of extra GPUs so that your computer can run 4 billion hashes per second.
So the first 4 billion here is going to represent the number of hashes per second per computer. Now, picture four billion of these GPU-packed computers. For comparison, even though Google does not at all make their number of servers public, estimates have it somewhere in the single-digit millions. In reality, most of those servers are going to be much less powerful than our imagined GPU-packed machine. But let's say Google replaced all of its millions of servers with a machine like this. Then four billion machines would mean about a thousand copies of this souped-up Google. Let's call that one KiloGoogle worth of computing power. There's about 7.3 billion people on Earth, so next imagine giving a little over half of every individual on Earth their own personal KiloGoogle. Now, imagine four billion copies of this Earth. For comparison, the Milky Way has somewhere between 100 and 400 billion stars. We don't really know, but the estimates tend to be in that range. So this would be akin to a full 1% of every star in the galaxy, having a copy of Earth, where half the people on that Earth have their own personal KiloGoogle.
Next, try to imagine 4 billion copies of the Milky Way. And we're going to call this your GigaGalactic Super Computer, running about 2^160 guesses every second. Now four billion seconds? That's about 126.8 years. Four billion of those? Well, That's 507 billion years, which is about 37 times the age of the universe. So even if you were to have your GPU-packed KiloGoogle per person multiplanetary GigaGalactic computer guessing numbers for 37 times the age of the universe, it would still only have a 1 in 4 billion chance of finding the correct guess.
By the way, the state of Bitcoin hashing these days is that all of the miners put together guess-and-check at a rate of about five billion billion hashes per second. That corresponds to one-third of what I just described as a KiloGoogle. This is not because there are actually billions of GPU-packed machines out there, but because miners actually use something that's about a thousand times better than a GPU – Application Specific Integrated Circuits. These are pieces of hardware specifically designed for Bitcoin mining, for running a bunch of SHA-256 hashes and nothing else.
Turns out, there's a lot of efficiency gains to be had when you throw out the need for general computation, and design your integrated circuits for one and only one task. Also, on the topic of large powers of two that I personally find it hard to get my mind around, this channel recently surpassed 2^18 subscribers, and to engage a little more with some sub-portion of those 2^18 people, I'm going to do a Q&A session. I've left a link in the description to a Reddit thread where you can post questions and upload the ones you want to hear answers to, and probably in the next video or on Twitter or something like that, I'll announce the format in which I'd like to give answers. See you then..