4
respostas

quem criptografa os dados trafegados via http?

fiquei confuso com uma coisa, quem criptografa as informações trafegados via http? é o próprio certificado digital que criptografa as informações OU é o sistema que o cara desenvolveu que faz a criptografia dos dados e ele só usa a chave publica/privada que o certificado digital tem?

4 respostas

Marcos,

Depende... Por exemplo, alguns servidores de e-mail implementam S/MIME - Secure/Multipurpose Internet Mail Extensions, que já fazem essa criptografia. Há programas que permitem uma integração com outros programas e complementos específicos para criptografia. Há também programas que só fazem isso (criptografar). Mas, em todos os casos, precisam do certificado digital ou chave privada para executar o processo. Após, a cifragem dos dados, eles são apenas transmitidos usando HTTP.

Marcos, A criptografia nem sempre ocorre no sistema. Quando você envia os dados pelo meio de comunicação HTTPS, eles são criptografados automaticamente utilizando o algoritmo de criptografia + chave que podem ser vista nos detalhes do certificado.

Ou seja, se você desenvolve um site por exemplo, e hospeda ele em um servidor, esse servidor vai cuidar de toda a tarefa de criptografar os dados que serão trafegados pelo seu site.

Marcos, Exatamente, quem cuida da criptografia é o HTTPS, que é a versão do HTTP com criptografia. Ou seja, com o HTTP, não existe criptografia no tráfego, apenas com o HTTPS.

Quando se utiliza o protocolo HTTPS, quem criptografa é o software cliente e o software servidor, isto é, navegador e servidor web, usando as informações (certificado e chaves) fornecidas pelo servidor web cuja identidade é confirmada pela entidade certificadora.

Este processo é transparente ao usuário e também ao desenvolvedor web (programador front-end ou back-end).

Os dados são criptografados ao serem empacotados para trafegar na rede, isto é, ao saírem da camada de aplicação para a camada de transporte. E descriptografados novamente ao serem entregues da camada de transporte para a camada de aplicação no destino.

Neste caso então, quem criptografa o que se trafega é o Chrome, Edge, Opera, Firefox, Internet Explorer, Safari, etc. do lado cliente e o Apache, Ngingx, etc. do lado servidor.

Já quando se utiliza o protocolo HTTP (sem S), o navegador e o servidor web não se preocupam em criptografar nada. Se o autor da página quiser, ele deve embutir código no projeto que criptografe as informações antes de irem para a camada de transporte. Teria, por exemplo, que incluir um código Javascript que descriptografasse os dados recebidos de um servidor web e outro no back-end que fizesse os mesmo para os dados recebidos do navegador. Veja que, neste caso, o desenvolvedor é quem deve implementar o processo e se preocupar com o tipo de criptografia a ser usada. O que é muito mais trabalhoso e passível a erros e a quebra de criptografia.

De qualquer modo, esta criptografia adicional, também pode ser aplicada quando se usa https, embora, na maioria dos casos seja desnecessário.