I've been told that WhatsApp implemented "end-to-end" encryption. In the grand scheme of things, what does this actually mean versus, say, another service which does use HTTPS, such as this website (StackExchange) or some other non-end-to-end encrypted site? Is there some point where even HTTPS/TLS will expose data that doesn't occur in an end-to-end encrypted app like WhatsApp?
2 Answers
End-to-end is where the message is encrypted by the sender and decrypted by the receiver. Nobody in the middle, not the chat provider nor other entities have the ability to decrypt it.
Compare this to a simple chat over HTTPS. Each message is encrypted in transit, just based on the fact that TLS is used. Now, while the intended recipient is another user, the TLS connection is initiated with a server (think Facebook). TLS terminates at the server, and whoever controls the server has the ability to view the messages since they are not encrypted end-to-end. Then, the message may be passed on encrypted over TLS again to the recipient.
The key difference is that the provider is able to view the messages in this case.
Below is a simple illustration of End-to-End encryption using ECDH asymmetric algorithm on the P-256 curve to Generate a CryptoKeyPair for Alice & Bob.
They proceed to derive an asymmetric shared secret using AES-GCM-256 algorithm from their own private keys & each others public keys.
Finally they use the AES-GCM-256 symmetric shared secret for all subsequent encryption. Symmetric encryption is much faster.
This can be achieved using the Javascript WebCrypto API.

- 130
- 4

- 12,842
- 3
- 32
- 43
End-to-end encryption (think: enduser-to-enduser encryption) is a concept where communication is encrypted directly between the users of a system, whereas many systems just provide encryption between each individual user and the service provider. That is, with E2EE only the sender and receiver of a message can access the message content. Neither the service provider nor any party involved in delivering the message would see it in clear text at any time.
What's the difference between end-to-end and regular TLS encryption?
E2EE does not describe a particular technology or dictate certain protocols, it only describes the way a system is designed. TLS on the other hand is a specific cryptographic protocol that could be used for an E2EE implementation (although many E2EE chat programs use advanced algorithms that are better suited for instant messaging than TLS, such as the Signal protocol). Note that technically speaking, any secure communication tunnel provides encryption between two ends, but the term end-to-end encryption is usually applied to messaging services or, more generally, the secure communication between users of a service but not between a user and the service provider itself.
So, if you send a regular Facebook message, it's not end-to-end encrypted between you and your conversation partner because Facebook's servers store your messages in plain text. Therefore, the message content would be accessible to Facebook administrators or law enforcement upon request. However, your connection to Facebook is technically an end-to-end encrypted connection between you and Facebook because you're using HTTPS.

- 44,770
- 14
- 145
- 139
I know with email, some services offer encryption of the email message itself and a key which is given to the recipient, so that would be end-to-end over HTTPS as well, right?
– the_endian Apr 13 '17 at 00:00