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):
- 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).
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- Change Cipher Spec: O servidor envia ao navegador uma mensagem indicando a transição para uma conexão cifrada.
- 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.