I would like to ask if it was possible to somehow transfer a public key and guarantee it without having to physically meet and verify that the person I met is who they say they are and without having to rely on a third party that may not be trustworthy (because of government mandates or because of the currency of data). I have thought of several ideas such as Convergence by Moxie Marlinspike, but that requires trusting that every notary out their is not evil and I have also thought of China's Quantum Satellite, but that would require a physical and secure exchange (am I right?). Cost is not an issue as I just want to know if it can be done.

The last thing I can think of is the shared secret and I think it may work, but I do not understand how can both computers generate the shared secret and know what the other computer generated, or does it matter (as the Wikipedia entry for Diffie-Hellman seems to indicate with the paint example that both secrets are different colors)?

Basically, I want to know if it is even possible to guarantee that a Man in the Middle Attack is not possible without either physically meeting or trusting a third party. Thanks!

Edit: Well, something I did figure out based off of Mike Ounsworth's answer is that since it isn't realistic for me to meet every person who wants me to verify keys, I could do things like print the key's fingerprint on business cards and post it in as many places as possible as it is a lot less likely that an attacker could modify every copy of the key or fingerprint and a person that really wants to confirm my identity could check multiple sources to do so even if they don't know me. This would be a combination of "meeting in person" and third party distribution that would satisfy me. After all, in order to modify everything in this world, one would need control of the whole world and if that happens, then we all have bigger problems on our hands. (This sounds a lot like the Tor Timing Correlation Attacks which shows we all have problems if this happened).

  • 1
    Human society is build on trust. While you can do things with limited trust it is impossible to do anything useful with no trust at all. You either trust people directly or algorithms and machines designed by these (hopefully trustworthy) people etc. Commented Sep 13, 2016 at 12:47
  • 1
    The "shared secret" implies that the two parties exchanged that secret in a confidential, trustworthy manner, not that both parties generated the same secret. There are obvious problems confidentially exchanging a shared secret with an authenticated partner for the purposes of using the shared secret to exchange a public key with the same authenticated partner without having to authenticate the partner...
    – gowenfawr
    Commented Sep 13, 2016 at 12:48

1 Answer 1


The fundamental question you're wrestling with here is:

How do I know that the human at the other end of the internet is who they say they are?

As far as I know, there's only two ways to accomplish this:

  1. Pre-share some information out-of-band, usually the hash of your public key, at a physical meeting, a phone call, printed on paper in a sealed envelope, etc.

  2. If you have a common person that you have both already established trust in, then you can extend trust. Ex.: a mutual friend in PGP, or a common root CA in PKI.

If you want to reject both of these and conjure trust out of thin air, then you might be stuck, regardless of the technology you use.

On the note of technologies, let's talk about two:


DH is a method to establish a shared secret with someone at the other end of the wire in such a way that an attacker can't eavesdrop it. DH has no inhearent mechanism to authenticate that the person you're talking to is in fact who they claim to be. When authentication is required, DH is usually augmented by requiring each person to have a certificate issued by a commonly-trusted root CA.

Quantum Key Distribution

If cost is not a concern, then QKD might be your answer. Instead of sending information encoded in voltage, like we usually do, a ~$1 million USD QKD machine encodes information in the spin of quantum particles. By the laws of quantum physics, this means that any eavesdropping will alter the message and the receiver will know. Like Diffie-Hellman however, this is a way to secure information in transit ... it doesn't do much to prove which human is at the keyboard.

  • Hmmmm. It looks like it's just down to choosing the right people to trust. Thanks! Commented Sep 13, 2016 at 13:07
  • Could a phone call in very extreme circumstances eventually also be susceptible to MITM attacks? Commented Sep 13, 2016 at 13:10
  • @Mok-KongShen Sure, if you have no idea what their voice sounds like, then a phone call is no better than an email. A phone call to my mother, on the other hand, I have much higher trust that I'm talking to the right person. Commented Sep 13, 2016 at 13:13
  • 1
    I remember a discussion elsewhere (though I have no knowldege to verify the claim of the participant concerned) saying that voices could be well simulated with hightech. Your calls to your mother could be analyzed for a time and, when a satisfactory piece of simulation software is ready, an attack could be launched, or not? Commented Sep 13, 2016 at 13:33
  • 1
    Without any initial assumption, there is no security. If Bob has contact to Alice for the first time, how should he find out her name is in fact Alice and not Eve? Even a physical meeting can't prevent a person to claim any name they want, especially if you distrust any other means of identification by third parties, e.g. an ID card or birth certificate. Without trusted third parties or shared secret information, there is no authentication.
    – tylo
    Commented Sep 13, 2016 at 15:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .