sexta-feira, 3 de janeiro de 2020


O TLS é um protocolo de criptografia projetado para proteger as comunicações da Internet. Um handshake TLS é o processo que inicia uma sessão de comunicação que usa criptografia TLS. Durante um handshake TLS, os dois lados da comunicação trocam mensagens para reconhecer um ao outro, verificar um ao outro, estabelecer os algoritmos de criptografia que eles usarão e concordar com as chaves da sessão. Os handshakes TLS são uma parte fundamental de como o HTTPS funciona .

TLS vs. SSL handshakes

SSL, ou Secure Sockets Layer , foi o protocolo de criptografia original desenvolvido para HTTP . O SSL foi substituído pelo TLS, ou Transport Layer Security, há algum tempo. Os handshakes SSL agora são chamados de TLS, embora o nome "SSL" ainda seja amplamente utilizado.

Quando ocorre um handshake TLS?

Um handshake TLS ocorre sempre que um usuário navega para um site por HTTPS e o navegador começa a consultar o servidor de origem do site. Um handshake TLS também acontece sempre que outras comunicações usam HTTPS, incluindo chamadas de API e consultas DNS sobre HTTPS.
Os handshakes TLS ocorrem depois que uma conexão TCP é aberta por meio de um handshake TCP.

O que acontece durante um handshake TLS?

Durante o curso de um handshake TLS, o cliente e o servidor juntos farão o seguinte:
  • Especifique qual versão do TLS (TLS 1.0, 1.2, 1.3 etc.) eles usarão
  • Decida em quais conjuntos de cifras (veja abaixo) eles usarão
  • Autentique a identidade do servidor por meio da chave pública do servidor e da assinatura digital da autoridade de certificação SSL
  • Gere chaves de sessão para usar criptografia simétrica após a conclusão do handshake

Quais são as etapas de um handshake TLS?

Os handshakes TLS são uma série de datagramas, ou mensagens, trocados por um cliente e um servidor. Um handshake TLS envolve várias etapas, pois o cliente e o servidor trocam as informações necessárias para concluir o handshake e possibilitar conversas adicionais.
As etapas exatas em um handshake TLS variam de acordo com o tipo de algoritmo de troca de chaves usado e os conjuntos de cifras suportados por ambos os lados. O algoritmo de troca de chaves RSA é usado com mais frequência. É o seguinte:
  1. A mensagem 'olá cliente': O cliente inicia o handshake enviando uma mensagem "olá" ao servidor. A mensagem incluirá qual versão TLS o cliente suporta, os conjuntos de criptografia suportados e uma cadeia de bytes aleatórios conhecida como "cliente aleatório".
  2. A mensagem 'olá servidor': em resposta à mensagem olá cliente, o servidor envia uma mensagem contendo o certificado SSL do servidor, o conjunto de cifras escolhido pelo servidor e o "servidor aleatório", outra sequência aleatória de bytes gerada pelo servidor.
  3. Autenticação: o cliente verifica o certificado SSL do servidor com a autoridade de certificação que o emitiu. Isso confirma que o servidor é quem diz ser e que o cliente está interagindo com o proprietário real do domínio.
  4. O segredo do pré-mestre: o cliente envia mais uma sequência aleatória de bytes, o "segredo do pré-mestre". O segredo do pré-mestre é criptografado com a chave pública e só pode ser descriptografado com a chave privada pelo servidor. (O cliente obtém a chave pública do certificado SSL do servidor.)
  5. Chave privada usada: o servidor descriptografa o segredo do pré-mestre.
  6. Chaves de sessão criadas: o cliente e o servidor geram chaves de sessão a partir do cliente aleatório, do servidor aleatório e do segredo do pré-mestre. Eles devem chegar aos mesmos resultados.
  7. O cliente está pronto: o cliente envia uma mensagem "finalizada" criptografada com uma chave de sessão.
  8. O servidor está pronto: o servidor envia uma mensagem "finalizada" criptografada com uma chave de sessão.
  9. Criptografia simétrica segura alcançada: o handshake é concluído e a comunicação continua usando as chaves da sessão.
Todos os handshakes TLS usam criptografia assimétrica (a chave pública e privada), mas nem todos usarão a chave privada no processo de geração de chaves de sessão. Por exemplo, um aperto de mão efêmero Diffie-Hellman é o seguinte:
  1. Olá ao cliente: O cliente envia uma mensagem de saudação ao cliente com a versão do protocolo, o cliente aleatório e uma lista de conjuntos de cifras.
  2. Olá ao servidor: o servidor responde com seu certificado SSL, seu conjunto de cifras selecionado e o servidor aleatoriamente. Ao contrário do handshake RSA descrito acima, nesta mensagem o servidor também inclui o seguinte (etapa 3):
  3. Assinatura digital do servidor: o servidor usa sua chave privada para criptografar o cliente aleatoriamente, o servidor aleatoriamente e seu parâmetro DH *. Esses dados criptografados funcionam como a assinatura digital do servidor, estabelecendo que o servidor tenha a chave privada que corresponde à chave pública do certificado SSL.
  4. Assinatura digital confirmada: o cliente descriptografa a assinatura digital do servidor com a chave pública, verificando se o servidor controla a chave privada e é quem diz ser. Parâmetro DH do cliente: O cliente envia seu parâmetro DH ao servidor.
  5. O cliente e o servidor calculam o segredo do pré-mestre: em vez de o cliente gerar o segredo do pré-mestre e enviá-lo ao servidor, como em um handshake RSA, o cliente e o servidor usam os parâmetros DH trocados para calcular um segredo do pré-mestre correspondente separadamente.
  6. Chaves de sessão criadas: agora, o cliente e o servidor calculam as chaves de sessão a partir do segredo do pré-mestre, do cliente aleatório e do servidor, exatamente como em um handshake RSA.
  7. O cliente está pronto:
  8. O mesmo que um aperto de mão RSA.
  9. O servidor está pronto
  10. Criptografia simétrica segura alcançada
* Parâmetro DH: DH significa Diffie-Hellman. O algoritmo Diffie-Hellman usa cálculos exponenciais para chegar ao mesmo segredo pré-mestre. O servidor e o cliente fornecem um parâmetro para o cálculo e, quando combinados, resultam em um cálculo diferente em cada lado, com resultados iguais.
Para ler mais sobre o contraste entre os efêmeros apertos de mão Diffie-Hellman e outros tipos de apertos de mão, e como eles alcançam sigilo adiante, consulte O que é SSL sem chave?

O que é um conjunto de cifras?

Um conjunto de criptografia é um conjunto de algoritmos de criptografia para uso no estabelecimento de uma conexão de comunicação segura. (Um algoritmo de criptografia é um conjunto de operações matemáticas executadas em dados para fazer com que os dados pareçam aleatórios.) Existem vários conjuntos de cifras em uso amplo, e uma parte essencial do handshake TLS está de acordo sobre qual conjunto de cifras será usado para esse aperto de mão.


Referencia: https://translate.google.com/translate?hl=pt-BR&sl=en&u=https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/&prev=search 

Nenhum comentário:

Postar um comentário