This question already has an answer here:
Me and my colleague are trying to come up with a way around preventing a theoretical man in the middle attack.
The scenario is:
Communication is only through one channel and either sides isn't aware of what is going to be said.
Alice and Bob want to communicate with each other.
Eve is the "man in the middle". All communication from the start goes through her first.
If Alice publishes her public key Eve can intercept this and send her own public key to Bob. When Eve intercepts a message from Bob she uses her private key and decrypts the message, does what she wants with it and encrypts it with Alice's public key and sends it to Alice.
As Eve has intercepted the first message and the two unknowing parties haven't pre exchanged any keys or certificates is there any way that they can communicate without Eve reading the messages?
I cannot see any conceivable way as Eve has intercepted Alice's public key first so Bob has no genuine way of checking to see if the message is from Alice at all.