Web Security - HTTPS, SSL, TLS and Certificates
Why is it needed?
Man-In-the-Middle attacks (someone reading the information you send and receive and may even change the message).
How is it implemented?
SSL or TLS.
SSL
This is the secure protocol i.e. a bunch of rules that creators of browsers like Chrome and IE follow.
Replaced by TLS.
Certificates are used to hold the information need for the Browsers to implement the SSL.
HTTPS
A secure/encrypted version of HTTP, combination of HTTP and SSL or TLS.
- Verifies that you are talking directly to the server that you think you are talking to.
- Ensures that only the server can read what you send it and only you can read what it sends back.
Anyone can intercept every single one of the messages you exchange with a server, including the ones where you are agreeing on the key and encryption strategy to use, and still not be able to read any of the actual data you send.
Certificates
SSL information is stored in these files. The browser then reads the contents and run some SSL algorithm to determine security.
See Signing below.
Public and Private keys
- Public key is unique and available to anyone accessing the server.
- Private Key lives on the Server only and is never shared.
- The Public key is visible to everyone and is used with an Encryption algorithm to encrypt and decrypt the message being sent between Client and Server.
- Anything encrypted with the Public key can only be decrypted by the Private key and vice-versa i.e.
- Private key encrypts on server, Public key decrypts on client.
- Public key encrypts on Client, Private key decrypts on Server.
- Public key never encrypts and then decrypts the same message, it is always either the Private key encrypting and Public key decrypting or Public key encrypting and Private key decrypting.
- Why can’t anyone decrypt the message from the Server to Client in all they need is the Public key to decrypt?
- Not possible because not only is the Public key required but additionally there is a Cipher (random symmetric encryption key) involved, which only the Client knows of.
- Then Public Key is contained within then Certificate returned from the Server in the initial communication.
- When 2 different Keys are used it is known as Asymmetric Encryption.
Signing
Certificate Authority (CA) – private companies that store tables of names and public keys. They act as a way to check if a certificate exists for particular website for example.
- CA returns a message to the requestor.
- The contents of the message are the Name and Public Key.
- The response is a signed message.
- The message is signed using the Certificate Authorities Private Key
- The response is the Certificate.
(You can setup your own Self-Signed-Certificate and this takes the Certificate Authority out of the equation but unfortunately your are banking on the client to trust you are how you say you are, this is usually where you see the browser warning you not to trust this website).
HTTPS Request and the Certificate Sequence
- User types https://www.google.ie into Chrome address bar.
- The Chrome browser visits the url and gets it's Certificate.
- The Chrome browser checks the url against the Certificate content or with the Certificate Agent to see if the Certificate matches the url.
- If the Certificate matches then the page is fetched.
- The Request is encrypted using the Public Key found in the Certificate.
- The page is returned and encrypted using the Private key.
- The page is decrypted in by the Chrome browser for the user using the Public Key,
- The page is displayed to the user without error or warning.
- If the Certificate does not match then the user is presented with a warning, the user can proceed to load, the page is fetched and display to the user with warning.
- TLS Handshake https://www.ssl.com/article/ssl-tls-handshake-overview/
Comments