Partilhar via


Protocolo de Handshake TLS

O protocolo de handshake TLS (Transport Layer Security (TLS) é responsável pela autenticação e troca de chaves necessárias para estabelecer ou retomar sessões seguras. Ao estabelecer uma sessão de segura, o Protocolo Handshake gerencia o seguinte:

  • Negociação de pacotes de codificação
  • Autenticação do servidor e, opcionalmente, do cliente
  • Troca de informações de chave de sessão.

Negociação do Cipher Suite

O cliente e o servidor fazem contato e escolhem o pacote de codificação que será usado durante toda a troca de mensagens.

Autenticação

No TLS, um servidor prova sua identidade para o cliente. O cliente também pode precisar provar sua identidade para o servidor. PKI, o uso de pares de chaves públicas/privadas, é a base desta autenticação. O método exato usado para autenticação é determinado pelo conjunto de codificação negociado.

Troca de chaves

O cliente e o servidor trocam números aleatórios e um número especial chamado Pre-Master Secret. Esses números são combinados com dados adicionais que permitem que o cliente e o servidor criem seu segredo compartilhado, chamado de Segredo Mestre. O Master Secret é usado pelo cliente e servidor para gerar o segredo MAC de gravação, que é a chave de sessão usada para hashing, e a chave de gravação, que é a chave de sessão usada para criptografia.

Estabelecendo uma sessão segura usando TLS

O protocolo TLS Handshake envolve as seguintes etapas:

  1. O cliente envia uma mensagem "Olá do cliente" para o servidor, juntamente com o valor aleatório do cliente e os pacotes de codificação suportados.
  2. O servidor responde enviando uma mensagem "Olá do servidor" para o cliente, juntamente com o valor aleatório do servidor.
  3. O servidor envia seu certificado para o cliente para autenticação e pode solicitar um certificado do cliente. O servidor envia a mensagem "Olá do servidor concluído".
  4. Se o servidor solicitou um certificado do cliente, o cliente envia-o.
  5. O cliente cria um Segredo Pré-Mestre aleatório e criptografa-o com a chave pública do certificado do servidor, enviando o Segredo Pré-Mestre criptografado para o servidor.
  6. O servidor recebe o Pre-Master Secret. O servidor e o cliente geram as chaves de sessão Master Secret e baseadas no Pre-Master Secret.
  7. O cliente envia uma notificação "Alterar especificação de cifra" para o servidor para indicar que o cliente começará a usar as novas chaves de sessão para hashing e criptografar mensagens. O cliente também envia a mensagem "Cliente concluído".
  8. O servidor recebe "Change cipher spec" e alterna seu estado de segurança da camada de registro para de criptografia simétrica usando as chaves de sessão . O servidor envia a mensagem "Servidor concluído" para o cliente.
  9. O cliente e o servidor podem agora trocar dados de aplicações através do canal seguro que estabeleceram. Todas as mensagens enviadas de cliente para servidor e de servidor para cliente são criptografadas usando chave de sessão.

Retomando uma sessão segura usando TLS

  1. O cliente envia uma mensagem "Olá do cliente" usando o ID de sessão da sessão a ser retomada.

  2. O servidor verifica seu cache de sessão em busca de uma ID de sessão correspondente. Se for encontrada uma correspondência e o servidor conseguir retomar a sessão, envia uma mensagem "Olá do servidor" com o ID da sessão.

    Observação

    Se uma correspondência de ID de sessão não for encontrada, o servidor gerará uma nova ID de sessão e o cliente e o servidor TLS executarão um handshake completo.

     

  3. Cliente e servidor devem trocar mensagens "Alterar especificação de cifra" e enviar mensagens "Cliente concluído" e "Servidor concluído".

  4. O cliente e o servidor agora podem retomar a troca de dados do aplicativo pelo canal seguro.