How secure is 256 bit security?

in #crypto6 years ago

 We all know that Bitcoin and Bitcoin Cash use sha-256 algo. 

 How secure is 256 bit security? 

 

In order to break a given piece of security, You would have to guess a specific string of 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 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 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.