It's one of the biggest problems that I worry about with the internet. Yes, public key cryptography can prove that "message x came from source y". But nobody's figured out a way to prove "source y is a person" or even better "source y is definitely the person they say they are".
I like the approach projects like Keybase and Stellar are taking: Building a decentralized network of trust based on existing, real-world trust-based relationships.