disclaimer: I’m just asking to get understanding of the theory behind network traffic encryption, I know this doesn’t happen irl most likely.
Let’s take https connection for example. I like watching revolutionary things on youtube and do not wish for authorities to know what I am watching, we accept here for the sake of showcase that google won’t sell my watch history if asked (LMAO what am I even saying?).
So if I’m not mistaken since youtube has https implemented, our communication is encrypted, the keys are shared only between me and youtube. But when Youtube shares the key with me/my client the first time, is that also encrypted? Wouldn’t the same question keep getting answered until there is something unencrypted? I know this is a bit too much unlikely, but if ISP automated the process of gathering keys and decrypting web traffic for a certain site with them for all users, would that work for them?
I’m taking https here as an example, while I have the same question for like VPN.
EDIT: Thank you everybody. I am not a member of this community, but every comment was a golden experience to read!
SSL/TLS, the “S” in HTTPS, and other network encryption protocols such as SSH, use a technique called a Diffie-Hellman key exchange. This is a mode of cryptography where each side generates two keys: a public half and a private half. Anything encrypted with the public half is only decryptable by the associated private half (and vice versa).
You and Youtube only ever exchange the public halves of your respective key pairs. If someone snoops on the key exchange all they can do is insert spoofed messages, not decrypt real ones.
Moreover, the keypairs are generated on the fly for each new session rather than reused. This means that even a future compromise of youtube won’t unlock old sessions. This is a concept called forward secrecy.
Message spoofing is prevented by digital signatures. These also use the Diffie-Hellman principle of pairs of public/private keys, but use separate longer-term key pairs than those used with encryption. The public half of youtube’s signing key, as presented by the server when you connect to it, has to be digitally signed by a well-known public authority whose public signing key was shipped with your web browser.
this is very detailed answer thank you. however I face an ambiguity regarding this:
This is a mode of cryptography where each side generates two keys: a public half and a private half. Anything encrypted with the public half is only decryptable by the associated private half (and vice versa).
How can this private half be something that I know, Youtube knows but impossible for the snooper to our communication to know??
Your computer generates two keys. One to encrypt a message. One to decrypt the message. The encrypt key is public. The decrypt key is private. Your computer shares the public key with YouTube. The private key is never shared.
YouTube does the same thing for your computer.
Your computer will have YouTube’s public key and your computer’s private key…
Your computer will be able to encrypt messages to send to YouTube that only YouTube will be able to decrypt. Even your computer will not be able to decrypt these messages after it has encrypted them using YouTube’s public key.
Since the decryption keys are never shared they can’t be snooped. That is why it is only possible for an attacker to encrypt new messages but not read any messages from either sender.
Youtube never knows the private half of your key pair. That never leaves your system.
Anything encrypted with the private half can only be decrypted with the public half, and anything encrypted with the public half can only be decrypted with the private half. These halves are known as the public key and the private key. Each side of the connection generates their own key pairs.
We both generate a set of keys, and exchange the public halves with each other. I then want to send you a message: I first encrypt it using my private key, I then encrypt it again using your public key and send that to you.
In order to read that message, you first decrypt it using your private key. This ensures the message was intended for you and wasn’t modified in transit, as you are the only one with access to that private key and only its matching public key could have been used to encrypt that layer.
You then decrypt it a second time using my public key. As I’m the only one with access to my own private key, you can be sure the message was sent by me.
As long as that resulted in a readable message; You’ve now verified who sent the message, that it was intended for you, and that the contents have not been modified or read in transit.
All this, including the key exchange is handled for you by the https (tls) protocol every time you connect to a website. Each of the messages sent between you and the site are encrypted in this manner.
so you can encrypt a message with my public key but you cannot decrypt it afterward ??
Anything encrypted with the private half can only be decrypted with the public half, and anything encrypted with the public half can only be decrypted with the private half.
This is not true. In key pair cryptography, the public key used only for encryption and the private key is used only for decryption.
You are describing symmetric encryption where both parties have the same key. There is something called asymmetric encryption that solves this. Basically you have a public key and a private key. You can give your public key to youtube, they can use that key to encrypt the symmetric key that will be used for the actual communication. The only way to decrypt the symmetric key is by using your private key, which is only known to you. So youtube can safely send it to you so you can decrypt it. Now you both have the same key and nothing was sent unencrypted.
Well your public key was sent unencrypted but that’s fine because of how asymmetric encryption works.
Other comments here do a great job pointing to DH key exchange; I’d like to try explaining it with the paint analogy.
You and Youtube need to agree on a “color of paint” (encryption key) without ever sending it over the network.
You and Youtube agree on a common “yellow” in the clear, and you each pick a secret color. Youtube mixes yellow and their secret and sends it to you. This is okay, because un-mixing paint (factoring large prime numbers) is really hard. You add your secret to the mixture, and now you have yellow+Youtube’s secret+your secret.
You mix yellow and your secret and send it to youtube. Youtube adds their secret; now they’ve got yellow+Youtube’s secret+your secret. You both have the final color!
An eavesdropper can’t reconstruct this - everything sent over the network had yellow mixed in, and un-mixing paint can be really hard. Maybe you can guess that green minus yellow is probably blue, but you can’t get close enough to decrypt anything. And what if it’s brown? Is that blue + orange, or is it red + green?
Cryptographers have worked very hard to make the communications secure. I would be more worried about the other end ratting you out - using a relay / proxy / vpn that you trust is a good idea :)
Asymetrical encryption solves this, here is my attempt to do an ELI5:
Adam want’s to send a chat message to Ben, but want to do it securely, so they use a special program on their computers.
When the Adam’s program first reaches out to Ben’s computer, it asks for an unlocked padlock, this is a padlock that can only be unlocked by Ben’s program.
Adam’s program takes the padlock and crafts a new special series of padlocks that only Adam’s program can unlock, which it put’s in a box and locks it with Ben’s padlock.
The box is sent to Ben’s program, the program unlocks the box and creates it’s own special series of padlocks that only Ben’s program can unlock, put them in a box and locks it with Adam’s padlocks.
The box is then sent to Adam’s program, and is unlocked.
This now means that Adam’s program can put messages to Ben in a box, lock the box with one of Ben’s special padlocks and send it on it’s way knowing that only Ben can unlock the box and read the message.
Likewise, Ben can also send messages in boxes locked with Adam’s padlocks and know that only Adam can unlock them and read the message.
Added to this is the fact that messages from Ben can be verified as having used the special padlocks Adam sent to Ben, as else Adam’s special key wouldn’t fit the padlocks given to Ben.
In reality the padlocks are keys to lock a message, and the above text describe a secure key exchange.
Oh! I remember these steps being explained on a youtube video before. So the point is that the padlock (that Adam received on the third paragraph) is like a program on my windows desktop, I can run it (here like Adam uses it to encrypt the date), I can copy it and send it to a friend, but I can’t read the code which is compiled through an unknown language (i.e even if snooper received the padlock he can’t figure out how to unlock it and decrypt the data)?
Yep, if a thrid party gets the padlock they can lock the box, but can’t unlock other boxes