<p>Bitcoin doesn't currently provide any protection against that. Alice and Bob will need to make sure that their communication channel is secure.</p>

CC BY-SA 3.0
2012-03-18T18:16:23.697Z
So does that mean Bob would need to reveal his identity to Alice?
Alice
CC BY-SA 3.0
2012-03-18T20:03:35.983Z
@Alice: If Bob hasn't revealed his identity to Alice, then why would Alice care whether she sends money to Bob or Eve? What difference does it make? What's special about Bob that makes him the one she wants to send money to?
David Schwartz
CC BY-SA 3.0
2012-03-18T21:41:10.070Z
@David Schwartz: The difference between Bob and Eve is that Bob is selling Alice something, e.g. socks. Bob and Alice both want to remain anonymous, but Alice wants her socks and will only get them if Bob gets the coins. I know that there is no customer protection (i.e. there's no guarantee that if you pay the right person that you will definitely get the items), but is there a way to guarantee that you are at least paying the correct person? What I'm really asking is: what is the protocol for sending addresses when transferring a coin?
Alice
CC BY-SA 3.0
2012-03-18T21:45:54.553Z
@Alice: How do you know that Bob is selling socks? By what method could you know reliably that Bob is in fact selling socks at a particular price that wouldn't also communicate Bob's address to you? Wouldn't you just know that some unspecified person (which could just as well be Eve) is selling socks? So sending to Bob would be just as good as sending to Eve because, as far as you know, either one might be selling socks? I guess I don't get the circumstances at all. How do you know there *is* a "correct address"?
David Schwartz
CC BY-SA 3.0
2012-03-18T21:53:55.953Z
@David Schwartz: It's not so much who exactly she is sending to. It is more how does Alice request an address to which she wants to send the coins? It's more of a question of: are there measures to prevent a MITM attack?
Alice
CC BY-SA 3.0
2012-03-18T23:03:32.320Z
@Alice: How does she know whose address to request? I don't understand the circumstances. How does Alice even know Bob is selling socks without knowing Bob's address? She just knows someone is selling socks but has no idea who? Then the question has nothing to do with Bitcoin but is, how can Alice find out who is selling socks? (To me, the question makes no sense.) Where you say "I am selling socks, I need X bitcoins, ..." you can put your Bitcoin address. And if you could't trust that information, you couldn't buy the socks even if you knew the address, right?
David Schwartz
CC BY-SA 3.0
2012-03-19T10:28:56.500Z
@David Schwartz: I see your point now. Thank you for your help (and patience!) :)
Alice
CC BY-SA 3.0
2012-03-18T17:58:53.893Z
2012-03-18T17:58:53.893Z
theymos
<p>The #bitcoin-otc marketplace uses GPG authentication to protect against this very situation.</p>

<p>Because irc nicknames are vulnerable to manipulation, the task of first authenticating with the channel's bot helps to ensure that the communications are truly from the intended trading partner.</p>

<ul>
<li><a href="http://wiki.bitcoin-otc.com/wiki/OTC_Rating_System" rel="nofollow">http://wiki.bitcoin-otc.com/wiki/OTC_Rating_System</a></li>
</ul>

<p>This is just one method to address this subject.  There are many options.</p>

CC BY-SA 3.0
2012-03-18T21:57:00.143Z
So is this a similar idea to Amazon's marketplace ratings, except with anonymous users sort of centrally authenticated?
Alice
CC BY-SA 3.0
2012-03-18T21:07:35.837Z
2012-03-18T21:07:35.837Z
Stephen Gornick
<p>If Alice met Bob through his website, <a href="https://bobbysox.com/" rel="nofollow">https://bobbysox.com/</a>, then she can be pretty sure that the address Bob displays on his site is real, so long as Bob's SSL certificate is verified successfully.  For Eve to play woman-in-the-middle she would have to somehow get hold of a certificate for bobbysox.com, or Alice's browser will alert her to the fact that there's a problem with the secure connection.  (Whether Alice takes any notice is another matter).</p>

<p>That's often how Bitcoin addresses are passed from merchant to buyer, via secure socket layer web connections.</p>

<p>Note: interestingly, when I click on that link I just made up, I see a warning: "The site's security certificate is not trusted!"</p>

CC BY-SA 3.0
2012-03-19T16:04:42.563Z
2012-03-19T16:04:42.563Z
Chris Moore
<p>The problem itself is not Bitcoin-specific per se. It's a matter of being able to verify the sender of some data. Bitcoin addresses are only designed to be immune to typos (they contain a checksum), but otherwise the protocol does nothing.</p>

<p>One can, however, do a couple things to make sure a proper address is sent and received:</p>

<ul>
<li>One can use a vanity address that is hard to generate and clearly is related to the situation. Using 1Bob... would not be the best choice, but 1BobEveryman..., or 1ThankYouAlice... can be better (examples chosen for clarity, normally you'd be using base 58 alphabet). Generally, if it takes more than a couple minutes to generate an address you know it either came from the original sender, or someone deliberately wanted to steal Bob's identity (by spending a lot of time beforehand generating the address).</li>
<li>One can try checking the history of the address in the <a href="http://blockexplorer.com/" rel="nofollow">Bitcoin Block Explorer</a>. If the address has been used a couple times, it is less likely it will be fake. Being Eve I probably wouldn't want to use the same address for scamming people more than once, and generating a history of transactions would take some time.</li>
<li>One can ask Bob to provide his Bitcoin address wrapped in Bob's digital signature. The main problem with this is securing Bob's signature in the first place, which is basically the same problem as we are solving right now.</li>
<li>One can look for address received on the internet. A lot of people have a habit of including the Bitcoin address they use in places like forum signatures, their websites and the like.</li>
<li>If Alice knows Bob, they might decide on using some information only they would know to create an ECDSA keypair and use that for transmitting Bitcoins. Such information might be for example be the movie they saw when they first met, some information from the school they attended and so forth. Generally, something that they remember and would be hard to find out. Alice can use that as the private seed of the keypair, generate the public address to send the Bitcoins to, and make the transfer. Bob then would have to repeat the same process and withdraw Bitcoins on their end. The main problem with this approach is whether Bob an Alice know each other beforehand and trust themselves with handling private keys.</li>
<li>When all else fails, one can always meet Bob in person and get their address that way.</li>
</ul>

<p>All in all, there are many ways to prevent a man in the middle attack in the descried scenario.</p>

CC BY-SA 3.0
2012-03-19T11:14:09.983Z
2012-03-19T13:08:43.707Z
2012-03-19T13:08:43.707Z
ThePiachu
<p>Let's say Alice wants to send Bob some coins. Bob needs to tell Alice where to send them, so he sends his address to Alice. How does Bob send this address so that Alice knows that the address she is receiving is indeed Bob's address and not an Eve's (an eavesdropper) who wants to steal the coins?</p>

CC BY-SA 3.0
2012-03-18T20:03:05.453Z
What is the difference between Bob and Eve? That is, what does Alice know about Bob that makes Bob the person she wants to send to?
David Schwartz
<client><security><address><sending>
How does Alice know she is receiving the correct address?
Alice
# How does Alice know she is receiving the correct address?

(Asked by: username_0 on 2012-03-18)

Let's say username_0 wants to send Bob some coins. Bob needs to tell username_0 where to send them, so he sends his address to username_0. How does Bob send this address so that username_0 knows that the address she is receiving is indeed Bob's address and not an Eve's (an eavesdropper) who wants to steal the coins?

**Tags:** client, security, address, sending

> **Comments:**
> **username_1**: What is the difference between Bob and Eve? That is, what does username_0 know about Bob that makes Bob the person she wants to send to?  

---

## 4 answers

### Answer by username_5 on 2012-03-19. Score: 4 | Accepted answer

The problem itself is not Bitcoin-specific per se. It's a matter of being able to verify the sender of some data. Bitcoin addresses are only designed to be immune to typos (they contain a checksum), but otherwise the protocol does nothing.

One can, however, do a couple things to make sure a proper address is sent and received:

* One can use a vanity address that is hard to generate and clearly is related to the situation. Using 1Bob... would not be the best choice, but 1BobEveryman..., or 1ThankYouusername_0... can be better (examples chosen for clarity, normally you'd be using base 58 alphabet). Generally, if it takes more than a couple minutes to generate an address you know it either came from the original sender, or someone deliberately wanted to steal Bob's identity (by spending a lot of time beforehand generating the address).
* One can try checking the history of the address in the [Bitcoin Block Explorer](http://blockexplorer.com/). If the address has been used a couple times, it is less likely it will be fake. Being Eve I probably wouldn't want to use the same address for scamming people more than once, and generating a history of transactions would take some time.
* One can ask Bob to provide his Bitcoin address wrapped in Bob's digital signature. The main problem with this is securing Bob's signature in the first place, which is basically the same problem as we are solving right now.
* One can look for address received on the internet. A lot of people have a habit of including the Bitcoin address they use in places like forum signatures, their websites and the like.
* If username_0 knows Bob, they might decide on using some information only they would know to create an ECDSA keypair and use that for transmitting Bitcoins. Such information might be for example be the movie they saw when they first met, some information from the school they attended and so forth. Generally, something that they remember and would be hard to find out. username_0 can use that as the private seed of the keypair, generate the public address to send the Bitcoins to, and make the transfer. Bob then would have to repeat the same process and withdraw Bitcoins on their end. The main problem with this approach is whether Bob an username_0 know each other beforehand and trust themselves with handling private keys.
* When all else fails, one can always meet Bob in person and get their address that way.

All in all, there are many ways to prevent a man in the middle attack in the descried scenario.


---

### Answer by username_2 on 2012-03-18. Score: 3

Bitcoin doesn't currently provide any protection against that. username_0 and Bob will need to make sure that their communication channel is secure.

> **Comments:**
> **username_0**: So does that mean Bob would need to reveal his identity to username_0?  
> **username_1**: @username_0: If Bob hasn't revealed his identity to username_0, then why would username_0 care whether she sends money to Bob or Eve? What difference does it make? What's special about Bob that makes him the one she wants to send money to?  
> **username_0**: @username_1: The difference between Bob and Eve is that Bob is selling username_0 something, e.g. socks. Bob and username_0 both want to remain anonymous, but username_0 wants her socks and will only get them if Bob gets the coins. I know that there is no customer protection (i.e. there's no guarantee that if you pay the right person that you will definitely get the items), but is there a way to guarantee that you are at least paying the correct person? What I'm really asking is: what is the protocol for sending addresses when transferring a coin?  
> **username_1**: @username_0: How do you know that Bob is selling socks? By what method could you know reliably that Bob is in fact selling socks at a particular price that wouldn't also communicate Bob's address to you? Wouldn't you just know that some unspecified person (which could just as well be Eve) is selling socks? So sending to Bob would be just as good as sending to Eve because, as far as you know, either one might be selling socks? I guess I don't get the circumstances at all. How do you know there *is* a "correct address"?  
> **username_0**: @username_1: It's not so much who exactly she is sending to. It is more how does username_0 request an address to which she wants to send the coins? It's more of a question of: are there measures to prevent a MITM attack?  
> **username_1**: @username_0: How does she know whose address to request? I don't understand the circumstances. How does username_0 even know Bob is selling socks without knowing Bob's address? She just knows someone is selling socks but has no idea who? Then the question has nothing to do with Bitcoin but is, how can username_0 find out who is selling socks? (To me, the question makes no sense.) Where you say "I am selling socks, I need X bitcoins, ..." you can put your Bitcoin address. And if you could't trust that information, you couldn't buy the socks even if you knew the address, right?  
> **username_0**: @username_1: I see your point now. Thank you for your help (and patience!) :)  

---

### Answer by username_3 on 2012-03-18. Score: 1

The #bitcoin-otc marketplace uses GPG authentication to protect against this very situation.

Because irc nicknames are vulnerable to manipulation, the task of first authenticating with the channel's bot helps to ensure that the communications are truly from the intended trading partner.

* <http://wiki.bitcoin-otc.com/wiki/OTC_Rating_System>

This is just one method to address this subject. There are many options.

> **Comments:**
> **username_0**: So is this a similar idea to Amazon's marketplace ratings, except with anonymous users sort of centrally authenticated?  

---

### Answer by username_4 on 2012-03-19. Score: 1

If username_0 met Bob through his website, <https://bobbysox.com/>, then she can be pretty sure that the address Bob displays on his site is real, so long as Bob's SSL certificate is verified successfully. For Eve to play woman-in-the-middle she would have to somehow get hold of a certificate for bobbysox.com, or username_0's browser will alert her to the fact that there's a problem with the secure connection. (Whether username_0 takes any notice is another matter).

That's often how Bitcoin addresses are passed from merchant to buyer, via secure socket layer web connections.

Note: interestingly, when I click on that link I just made up, I see a warning: "The site's security certificate is not trusted!"


---

