The same way banks do "email money transfers": they email the recipient their pairing token. The logic being, if you can get into X's email, either you are X, or you're acting on their behalf. (And these types of services are used rarely-enough that if X has their email compromised, the sender will have already heard about it.)
> How are keys exchanged?
And this is why I said "pairing token" above--it seems like both clients have to be running at the same time for the transfer to progress, so presumably it's something like an ICE[1]-enabled TLS session between the two computers.
[1] http://en.wikipedia.org/wiki/Interactive_Connectivity_Establ...
I fear this page was written with a straight face :(
What would you prefer personally: (1) MD5 fingerprint for convenience AND entire peer public key base64 available if you really want; vs (2) just a longer SHA-256 fingerprint.
On the server-side, we don't store the authentication
code in plaintext. We hash it with PBKDF2 / SHA-256,
salt it, then store it.To mitigate MITM attacks, ask your peer for their public key fingerprint using something other than WireOver: phone, SMS, email, PGP email - whatever you're comfortable with. That's your "second factor of authentication".
Your approval is cached so you only need to do it once.
We'll better explain this on the website.