O Transport Layer Security, ou TLS, é um protocolo utilizado para fornecer privacidade e integridade de dados entre duas partes durante a comunicação pela Internet. É a tecnologia de segurança padrão para estabelecer um link criptografado entre um servidor web e um navegador/aplicação.
A criptografia Secured Socket Layer, ou SSL, foi desenvolvida pela Netscape em 1995 com o propósito de garantir privacidade, autenticação e integridade de dados nas comunicações pela Internet. Em 1999, a Internet Engineering Task Force (IETF) propôs uma atualização para SSL. Como esta atualização estava sendo desenvolvida pela IETF e a Netscape não estava mais envolvida, o nome foi alterado para TLS.
Em 2014, o SSL foi oficialmente considerado obsoleto devido à falta de atualizações e vulnerabilidades de segurança identificadas. A maioria dos navegadores modernos parou de oferecer suporte ao SSL, tornando-o incompatível com websites e serviços modernos. Os termos SSL e TLS agora são usados indistintamente quando se referem a esta tecnologia. O TLS, ou Transport Layer Security, funciona de maneira similar para proteger seus dados online. É como um protocolo de segurança que cria um túnel confidencial entre seu dispositivo e um site ou serviço. Através desse túnel, as informações trafegam de forma criptografada.
Como o TLS funciona?
O objetivo principal do TLS é a Autenticação e a Confidencialidade, mas ele também fornece Integridade para os dados.
Durante o processo de autenticação chamado handshake entre dois dispositivos em comunicação, o processo garante que ambos os dispositivos devam confirmar quem afirmam ser. Durante um handshake TLS, os dois lados em comunicação trocam mensagens para se reconhecerem, verificarem um ao outro, para então estabelecer os algoritmos de criptografia que usarão e assim concordar com as chaves de sessão. Caso alguma pessoa tente interceptar esses dados que serão criptografados verá apenas uma mistura distorcida de caracteres que é quase impossível de descriptografar. O SSL/TLS também assina digitalmente os dados para fornecer integridade dos dados, verificando se os dados não foram alterados antes de chegarem ao destinatário pretendido.
Passo a passo do TLS:
O handshake TLS consiste em três partes, começando com um cliente enviando uma solicitação SYN para um servidor que hospeda as informações que o cliente está procurando. O servidor então confirmará o recebimento da solicitação de sincronização do cliente enviando um SYN ACK de volta ao cliente. Por último, o Cliente confirma o recebimento da mensagem de sincronização do servidor (ACK).

Quando um cliente, como um navegador da Web, inicia uma conexão TLS, com a mensagem ClientHello, ele especifica a versão mais alta do protocolo TLS que suporta, um número aleatório, uma lista de conjuntos de criptografia que suporta em ordem preferencial, métodos de compactação sugeridos e quaisquer extensões TLS, como ID de sessão, tickets de sessão, SNI, ALPN e assim por diante.

Depois de receber o ClientHello, o servidor escolhe os parâmetros para o handshake daqui para frente. O servidor então responde ao cliente escolhendo o seguinte: uma versão do protocolo, um número aleatório, um conjunto de criptografia, Certificado e um método de compactação. O servidor pode impor sua própria preferência de seleção do conjunto de cifras seguido de uma mensagem informando que a negociação do handshake foi finalizada.

O cliente então valida o Certificado em relação ao trusted store, o período de validade especificado no certificado e verifica a revogação pela Autoridade de Certificação emissora, a CA. O cliente pode responder com uma Troca de Chave do Cliente (Client Key Exchange), se necessário, seguida por uma mensagem Alterar Especificação de Cifra (Change Cipher Spec). Isto indica ao servidor que todas as mensagens futuras nesta conexão serão criptografadas e autenticadas com as informações previamente negociadas. Finalmente, o cliente envia uma mensagem Finished contendo o código de autenticação das mensagens de handshake anteriores.
O servidor então responde com sua própria mensagem Change Cipher Spec, indicando ao cliente que todas as mensagens futuras nesta conexão serão criptografadas e autenticadas com as informações previamente negociadas.
Finalmente, o servidor envia uma mensagem Finished contendo o código de autenticação das mensagens de handshake anteriores. O handshake TLS agora está completo e inicia-se a comunicação segura entre o cliente e a aplicação.
Ao final da comunicação, cliente e servidor fecham o túnel privado e descartam a chave secreta compartilhada.
Referência
https://www.cloudflare.com/pt-br/learning/ssl/what-happens-in-a-tls-handshake










