Sobes.tech
Middle

Como é realizado o encriptamento de mensagens entre o navegador e o servidor?

sobes.tech IA

Resposta da IA

A encriptação entre o navegador e o servidor é realizada usando o protocolo HTTPS, que é uma camada adicional sobre o HTTP usando os protocolos SSL/TLS (Secure Sockets Layer / Transport Layer Security).

Processo de estabelecimento de uma conexão segura (Handshake):

  1. Client Hello: O navegador envia ao servidor uma mensagem contendo as versões suportadas de SSL/TLS, a lista de conjuntos de cifras (cipher suites), algoritmos de compressão e um número aleatório (do cliente).
  2. Server Hello: O servidor escolhe a melhor versão do protocolo, o conjunto de cifras e o algoritmo de compressão entre os propostos pelo navegador, além de gerar seu próprio número aleatório (do servidor) e enviá-lo ao navegador junto com seu certificado SSL/TLS.
  3. Autenticação: O navegador verifica o certificado do servidor:
    • A autoridade de certificação raiz (Root CA).
    • A validade do certificado.
    • A correspondência do nome de domínio no certificado com o endereço do site.
    • A ausência de certificado revogado na lista (CRL ou OCSP).
  4. Premaster Secret: O navegador gera um número aleatório (premaster secret), cifra-o com a chave pública do servidor (do certificado) e envia ao servidor.
  5. Geração da chave de sessão: Tanto o navegador quanto o servidor usam os números aleatórios do cliente (Client Random), do servidor (Server Random) e o premaster secret para gerar uma chave de sessão simétrica.
  6. Change Cipher Spec: O navegador envia ao servidor uma mensagem informando sobre a transição para usar a chave de sessão gerada para a comunicação futura.
  7. Finished: O navegador envia ao servidor um hash de todas as mensagens anteriores do handshake, cifrado com a chave de sessão. Essa mensagem verifica a correção do handshake.
  8. Change Cipher Spec: O servidor envia ao navegador uma mensagem indicando a transição para uma conexão cifrada.
  9. Finished: O servidor envia ao navegador um hash de todas as mensagens anteriores do handshake, cifrado com a chave de sessão.

Após o handshake bem-sucedido, toda a transmissão de dados entre o navegador e o servidor ocorre usando criptografia simétrica baseada na chave de sessão gerada. A criptografia simétrica é muito mais eficiente que a assimétrica, tornando-a adequada para criptografar grandes volumes de dados.

Algoritmos utilizados (exemplo):

  • Criptografia assimétrica (para troca de chave de sessão): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
  • Criptografia simétrica (para criptografar dados): AES, 3DES, ChaCha20.
  • Hashing (para verificar a integridade das mensagens): SHA-256, SHA-384.