21

Since you send bitcoin payments through one of the Bitcoin clients, I assume it announces the payment to the network, so each computer it connects to in order to do so would know the IP address from which you announce the payment.

So when you make a bitcoin payment, who gets your address IP, and also which of them will know you are the originator of the transaction message and thus the wallet owner, and not just re-broadcasting it?

Does the sellers themselves see your IP address, and can they be reasonably sure that they are seeing the IP address of the wallet's owner (and not somebody else)?

Edit: Some clarifications - I'm not talking about visiting the seller's own webpage, suppose I'm viewing it through Tor. And I'm not talking about using an online wallet, since you don't really connect to the Bitcoin network yourself then.

  • I imagine that Bitcoin clients only send payments up to a central server. The recipient is then notified that a payment has been made, and retrieves it from the central server. I wouldn't think the recipient would know your IP, but the central server could probably link payments together. – RoraΖ Jan 14 '15 at 12:34
  • 8
    @raz There is no central server for bitcoin. Transactions are distributed into the network. – Thomas Stets Jan 14 '15 at 12:46
  • @ThomasStets Ah so it's more like the way Tor operates then? – RoraΖ Jan 14 '15 at 12:47
  • 2
    @raz not exactly. In TOR you have a more or less fixed set or router nodes, that are used by the clients. For bitcoin the network consists of all the clients currently online. There are a few more or less fixed servers that are used to help clients join the network, but basically the network are the clients. – Thomas Stets Jan 14 '15 at 12:57
  • 9
    Any questions about Bitcoin can be asked on bitcoin.stackexchange.com – Philipp Jan 14 '15 at 15:23
24

The receiver won't learn your IP, but a somewhat determined adversary could. (Of course, if the seller is an adversary, then they could.) This isn't a part of the protocol (there's no sender_IP field in the transaction), it is accomplished via listening in many places on the mesh network and doing statistics to determine the originating node of a transaction. Bitcoin unmask attack. No one knows you're the originator, unless they're watching many nodes in the network. The transaction, when first sent, is indistinguishable from a forwarded transaction; so the first node to see it will think the true sender is just forwarding from another node.

You don't want to run Bitcoin over Tor, because it would allow the exit node to arbitrarily confuse your client as to the real state of the external bitcoin network. It can do this because it is the middle man in the only link b/t the client and the outside world. Bitcoin over Tor attack. To understand how this can work even with bitcoin's POW system, consider that, since there is only one point of connection (the Tor exit node) b/t the bitcoin client and the rest of the network, it is trivial for the exit node segment the network, isolating the client from all legit nodes and all legit POW. The attacker can then run its own bitcoin node on the segmented network, making the only hashing power on the network that of the user (you) and of the attacker. To execute the well known 51% attack, all the attacker needs is more hashing power than you. (Given that most clients don't having hashing enabled at all, any amount of hashing the attacker wants to do would be sufficient, given enough time.)

To be clear, you can use Tor to proxy your browser. But don't use it to proxy your Bitcoin client.

If it's really a problem, and you're willing to sacrifice absolute control of your coins, I would recommend using a web client that doesn't require much info to register and doing so through Tor. That way the unmask attack only unmasks the web client's server, which has no way of tracing you since you access it through Tor. If you're not willing to sacrifice a little control, then I don't believe there is a totally anonymous way to transact in Bitcoin.

  • 1
    So if you use MultiBit nobody can know your IP unless MultiBit wants to cooperate (or are hacked). – sashoalm Jan 14 '15 at 17:46
  • 1
    Actually, I was wrong. Transaction sends happen like they do with full nodes. github.com/jim618/multibit/blob/bip21/src/main/java/com/google/…. I know receives are centralized, so that means that it is known that literally any transaction from your IP originates with you. – Tyler Jan 14 '15 at 18:01
  • 1
    @Ajedi32, read the link. They can't steal your coins, but they can double spend against you or not forward your transactions, etc. It's secure against MITM as long as the MITM doesn't have arbitrary control over all your traffic. So, e.g., your ISP could MITM you, but another node's ISP couldn't. – Tyler Jan 14 '15 at 18:04
  • 1
    @Tyler I did skim the article, though I missed the part near the beginning where they stated what kind of attacks were possible with this attack. I get why a MITM allows DDoS, but I don't get why MITM allows double-spending (shouldn't transactions be secured with a nonce?); I guess I'll have to read up on the Bitcoin protocol more... – Ajedi32 Jan 14 '15 at 18:16
  • 1
    @abligh Good point. As I understand it, it's actually not Tor's exit node, but the attacker's Bitcoin servers that are confusing the client in this attack. – Ajedi32 Jan 15 '15 at 14:51
5

From my basic understanding, since bitcoin network is peer to peer, you do not directly connect to your destination, but broadcast the message to your peers.

Because of this, those peers are the ones that see your true IP address (and most likely they are the only ones). Because of this, it might be possible to trace back the transaction to you, but no ordinary vendor would have the computing resources to do so. It would requure having access to peers, which would need to be quite targeted. Feasable, but most likely only governmental agencies would be able to pull it off.

If you worry about the anonymity of your bitcoin transactions, I suggest using TOR, or other anonymizing network, and tunneling wallet traffic over it. Note that all it would take is 1 screw up, so keep that wallet safe and never run it unless you are absolutely sure the connection is properly anonimized. Electrium(spelling?) bitcoin wallet supports socks proxies well.

Side note, vendors are not often interested in the IP address you paid from, as it is most often irrelevant. I would presume you would look at a web page that is a bitcoin payment request, and they would track the IP addresses visiting that page.

  • 1
    Do those peers that see your broadcast know that you are the wallet owner, as opposed to just re-broadcasting someone else's payment message? – sashoalm Jan 14 '15 at 13:55
  • 1
    @sashoalm No, they do not. (unless the attackers control such a large part of the nodes that they can trace that you couldn't have received the transaction from anyone else) The transaction is broadcast the same way whether it's your own or rebroadcasting for another. – Tim S. Jan 14 '15 at 15:32
3

When you send a payment through Bitcoin (or similar altcoin) your PC will connect to at least one node in the P2P network. It will then get replicated throughout the network, and eventually wind up in a block.

As of this writing, your Bitcoin payment needs to be sent to any of these 6,000 nodes to be included in the network.

That means one node will "see" your source IP, and none of the others.

Edit:

There is controversy about using ToR, some of that has been published in the past 2 months, and I haven't read them. But in theory, sending a transaction over ToR (and not verifying the Tx is in a block) should be sufficient for sending a Bitcoin payment.

Ismael Miguel suggests using a VPS or a proxy which will "know" your IP address. In my mind this seems very similar to using a SPV client, as you're trusting an external node, which then must relay out.

I will research this and update and comment on the best solution when I can.

  • 2
    You shouldn't use bitcoin over Tor. See my answer. – Tyler Jan 14 '15 at 17:00
  • 2
    @IsmaelMiguel The average Bitcoin transaction is 180 bytes. If ToR can't handle that, then it's more fragile than I thought – Christopher Jan 14 '15 at 17:11
  • 1
    Ok, it seems that it is not clear which answer is the correct one, so I'll refrain from accepting any answer for now, and leave the upvotes to decide it. – sashoalm Jan 14 '15 at 17:14
  • 2
    Suggestion: If you are going to do it, it would be polite to at least pre-sync by downloading most of the blockchain over the normal internet via bootstrap.dat. bitcoin.org/en/download – Tyler Jan 14 '15 at 17:14
  • 3
    You don't need to delete the ToR part. You should improve it by, for example, saying to use it only and only to send the transaction. This step is really only needed to send, not to receive. And you can point out other methods as the ones I said: a VPS or a proxy. – Ismael Miguel Jan 14 '15 at 17:54
2

Others have already mentioned that it is possible but difficult to track the IP of the transaction broadcaster.

However I should note that you don't need to rely solely on web wallets to hide your IP.

Several bitcoin wallet clients support raw transactions and therefore allow you to sign a transaction without broadcasting it to the network. You can then use some other node to broadcast it for you, and that includes web-based tools such as this one, which you can easily use via Tor.

  • 1
    +1, I knew about raw txs, but only in relation to their use in cold wallets. This is a better solution. – Tyler Jan 15 '15 at 17:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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