Tell me more ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

Here's a what-if scenario:

Person A has a Bitcoin address with 25BTC. Person B opens up their Bitcoin client:

  • which may or may not have the complete blockchain (the latter would mean no copies of Person A's transactions)

Person B presses "New Address", and Person A's address happens to somehow be generated. Now, the blockchain finishes synchronizing.

What happens? Is this a possibilty, sans the astonishing improbability? After all, random number generation can be influenced.

share|improve this question
4  
They'd be able to spend each other's coins. – Nick ODell Feb 16 at 20:54

5 Answers

.. this link might help:

How Bitcoin Security Works by Analogy

share|improve this answer
2  
Hi mijj, please try to improve the answer by including some of the information from the link in your answer. That way the answer is not useless if the link would later be broken. – D.H. Feb 16 at 21:08

If this happens, then Person B will be able to spend person A's bitcoins. BUT there is only two ways this can happend:

a) Person B generate the same keypair (private key) as person A

or b) Person B generates a different keypair, which (public key) hashes to person A's address (a hash collision)

Take a look at the specification for at bitcoin address: https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses

A Bitcoin address is a 160-bit hash of the public portion of a public/private ECDSA keypair

For "a" to happen, person B would need to break "secp256k1". I am no expert on this field, but from what I can find on bitcointalk.org, then the "strength" of this is 2^128 bits. And if you're wondering how strong that is, then look for the video "Exhaustive search attacks" from Dan Boneh. 11 minutes in the video he says "anything that's bigger than 2^90 is considered sufficiently secure" (its about attacking 3DES, which is a symmetric block cipher so I'm not sure it actually apply to secp256k1, but I really have no better argument for why 2^128 is "so secure that you won't never, ever, ever generate the same key as someone else"

And for "b" to happen, you would need to find a collision on RIPEMD-160(SHA-256(pk)). As far as I know, then neither RIPEMD-160 nor SHA-256 is known to have any vulnerabilities to hash collision attacks. So somehow breaking both or randomly generation a key which hashes is exactly the same as another bitcoin address, is highly unlikely.

There is also a chance for you computer to catch on fire, and some of the materials to melt together into a lotto coupon with winning numbers on (and a valid barcode), but it just won't happen because of the chance is so unbelievable small (it's the same with the "click and generate another persons bitcoin address").

EDIT Woops, one important thing: This all assumes that all bitcoin addresses is properly generated using "true random". All brain-addresses and addresses generated using a bad PRG, might be easy to find by either using a flaw in the PRG or exploit the (flaws in the) human brain.

share|improve this answer
1  
Your case "b" is a (multi target) second pre-image, not a collision. You want to match the hash of an existing message you can't influence. A collision would be Person B creating two distinct inputs with the same hash. – CodesInChaos Mar 19 at 11:51

This is the way I see it. The total number of bitcoins that will ever be mined is 21 million. The smallest bitcoin unit is a satoshi (0.00000001 BTC). If we place all possible satoshis into a wallet of their own, we would get the maximum number of wallets that could have any balance to them (so the actual number of wallets with bitcoins is obviously less). This is 21x10^6(BTC) x 10^8 (satoshi/BTC) = 21 x10^14 wallets. It's a huge number, but it's eclipsed by 2^256 possible wallets. So in this worst case scenario, the probability of guessing a wallet with one satoshi is 21x10^14/(2^256)=1.813595x10^-62. An incredibly small number.

share|improve this answer
1  
By the Birthday Problem, the odds of two people have the same address in that situation would be about 1-e**(-((21*10**14)**2)/(2*(2**256))) . That's like 1 atom compared to the number of atoms in the Earth. Quite small. – Eyal May 3 at 7:08

I suspect the simple answer is that Person B would be able to spend Person A's bitcoins, as he would show up in the ledger as owning them. Not dissimilar from simply giving someone your wallet.

share|improve this answer
I'm not sure that this is fundamentally different than Nicolai's answer. Nicolai just goes into more details. i.e. whether it was just a public key hash that collided or a true duplicate key pair. As well as details on the improbability of that happening. – David Ogren May 3 at 13:20

Funny how people claiming to know about crypto can't calculate probabilities.

The address space of 2128 is not the probability or "strength" of anything (other than the probability of picking a value in the address space).

The probability of 2 people having the same bitcoin address is actually a lot higher than people may suspect by (faulty) intuition.

In fact, the likelihood of collision is related to the Birthday Problem (read about it).

As the number of people and addresses generated increases, likelihood of a collision increases close to exponentially.

Given a few million users each generating a new address per month, the likelihood of a collision is such that it could occur several times in a lifetime, especially as we're dealing with hashes (or hashes of hashes).

Make it a billion users and you have regular stories of collisions appearing.

share|improve this answer
3  
Actually, the probability of a collision goes up as the square (i.e. quadratically) of the number of bitcoin addresses used. Not exponentially. Now, with that correction the probability of a collision is approximately zero in the lifetime of the solar system. – Neal Gafter Feb 17 at 6:47
1  
I believe that I am reading wikipedia there needs to be ~2.2×10^19 bitcoin address until there is a 50% probability that there has been at least one collision. So basically don't worry. – Peter Micheal Lacey-Bordeaux Feb 18 at 3:05
Birthday problem on 160 bit bitcoin addresses doesn't apply, since collisions are irrelevant. It's a second pre-image attack which has cost (2^160)/n where n is the number of targets. So if all 21 million bitcoins are already mined, you need to calculate (2^160)/(21*10^6) = 7*10^40 = 2^135 hashes per stolen bitcoin. Which is not profitable (by far), even if you assume bitcoin is used for all of our economy. – CodesInChaos Mar 19 at 11:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.