While the Bitcoin technology can support strong anonymity, the current implementation is usually not very anonymous.
The main problem is that every transaction is publicly logged. Anyone
can see the flow of Bitcoins from address to address (see first image).
Alone, this information can't identify anyone because the addresses are
just random numbers. However, if
any of the addresses in a
transaction's past or future can be tied to an actual identity, it might
be possible to work from that point and guess who may owns all of the
other addresses. This identity information might come from network
analysis, surveillance, or just Goggling the address. The
officially-encouraged practice of using a new address for every
transaction is designed to make this attack more difficult.
The second image shows a simple example. Someone runs both a money
exchanger and a site meant to trap people. When Mr. Doe buys from the
exchanger and uses those same coins to buy something from the trap site,
the attacker can
prove that these two transactions were made by the same person. The block chain would show:
- Import coins from address A. Send 100 to B. Authorized by (signature).
- Import coins from address B. Send 100 to C. Authorized by (signature).
Bitcoin transactions do not have a "from" address but if the attacker
believes that address B is controlled by Mr. Doe because the attacker
received $5 from Mr. Doe's Paypal account and then sent 100 BTC to that
address then they can infer the identity of the party sending to C. This
assumption is not always correct because address B may have been an
address held on behalf of Mr. Doe by a third party and the transaction
to C may have been unrelated.
Another example: someone is scammed and posts the address they
were using on the Bitcoin forum. It is possible to see which address
they sent coins to. When coins are sent which were previously send to
this (the scammer's) address, the addresses that receive them can also
be easily found and posted on the forum. In this way, all of these coins
are marked as "dirty", potentially over an infinite number of future
transactions. When some smart and honest person notices that his address
is now listed, he can reveal who he received those coins from. The
Bitcoin community can now ask some pointed questions, "Who did you
receive these coins from? What did you create this address for?"
Eventually the original scammer will be found. Clearly, this becomes
more difficult the more addresses that exist between the "target" and
the "identity point".
You might be thinking that this attack is not feasible. But consider this case:
- You live in China and want to buy a "real" newspaper for Bitcoins.
- You join the Bitcoin forum and use your address as a
signature. Since you are very helpful, you manage to get 30 BTC after a
few months.
- Unfortunately, you choose poorly in who you buy the newspaper
from: you've chosen a government agent! Maybe you are under the mistaken
impression that Bitcoin is perfectly anonymous.
- The government agent looks at the block chain and Googles (or
Baidus) every address in it. He finds your address in your signature on
the Bitcoin forum. You've left enough personal information in your posts
to be identified, so you are now scheduled to be "reeducated".
You need to protect yourself from both forward attacks (getting
something that identifies you using coins that you got with methods that
must remain secret, like the scammer example) and reverse attacks
(getting something that must remain secret using coins that identify
you, like the newspaper example).
+Morris Nzioka