The Internet is a very convenient platform for communication; however, an unprotected connection can be very dangerous for all parties within a channel. To tackle this, SSL and TLS cryptographic protocols were developed. The Secure Socket Layer (SSL) protocol is a digital certificate that authenticates a website's identity and enables a secure connection. The Transport Layer Security (TLS) protocol is an upgrade of the SSL as it uses a combination of cryptographic processes to create a secure connection over a network.
As discussed, we need SSL/TLS to secure our connections before we can share data between our machines. These SSL/TLS protocols provide integrity, authentication, and confidentiality. Here is where our handshake protocol comes in place. The handshake protocol allows us to establish a secure connection between the client and server using a secret key for encryption and decryption. This prevents hackers or malicious agents from seeing the data being sent back and forth. However, it is essential to note that these agents can still see that our connection has been established.
The Transmission Control Protocol/Internet Protocol (TCP/IP) is a collection of communication protocols used on the Internet to secure network connections. The handshake protocol sits on the application layer, dealing with application connection and data security.
The entire protocol can be divided into four phases.
This phase focuses on connecting both the client and the server.
The client sends a hello message to the server. This hello message contains the client's current SSL/TLS version, the session ID, a cipher suite, and a compression method list. The cipher suite contains a list of cryptographic algorithms, and the compression method list contains a list of compression algorithms installed on the client side.
When the server receives this request, it sends back a hello message to the client. This hello message contains the confirmed SSL/TLS version, the session ID, a sublist of ciphers, and compression methods from the client's list that will be used in this connection.
This phase focuses on authenticating the server and initiating the key exchange process.
The client will not send any messages and will wait for the server to reply.
The server will send its server certificate to the client.
Afterward, it will request the client's certificate for authentication.
Next, it will send its public key to the client.
Finally, the server will send a hello done message to the client, which prompts the client it to start its process.
This phase focuses on authenticating the client and finishing the key exchange process.
Before the client authenticates itself, it verifies the server's certificate by processing it through a certification authority (CA).
Now that the server has been authenticated. The client sends its certificate to the server so that the server can authenticate the client.
Moreover, the client encrypts its private key to the server with its public key. This means this key can only be opened with the server's private key. This ensures that only the server can see the client's shared key.
Finally, the client sends a finished message encrypted by the client's shared key. This is for verification purposes, as only the client can encrypt the message similarly.
This phase focuses on finalizing the established connection and preparing it for communication.
The client requests the server to change its cipher specification to the ones decided.
In response, the server requests the client to change its cipher specifications to the ones decided.
Before normal communication can proceed, the server sends the handshake finished message encrypted with the shared key to the client.
Now normal communications can occur on this protected connection that is symmetrically encrypted with a shared private key.
In conclusion, the handshake protocol is important in establishing secure and safe connections between networks. Due to its capability is used as the standard in protocols like SSL and TLS to ensure security while transmitting data.
In the context of SSL/TLS, what is the purpose of the server hello message?
To authenticate the client
To establish the session key
To negotiate the SSL/TLS version and cipher suite
To exchange the public keys
Free Resources