Fala rapaziada, tudo beleza?
Aqui estou eu, com mais um post sobre Criptografia. Dessa vez irei explicar um pouco como funciona o protocolo HTTPS. O post será um complemento dos anteriores: Criptografia – Conheça o Básico sobre Criptografia e Criptografia – Chaves Simétricas e Assimétricas, então se você ainda não viu, aconselho dar uma olhada lá para melhor compreensão dos assuntos que aqui serão ditos. Então bora lá!
Para começar, irei explicar alguns conceitos necessários para compreensão do funcionamento do HTTPS.
- HTTP – O protocolo HTTP é o protocolo na camada de aplicação responsável pela navegação Web, então sempre que você acessa algum site, é o protocolo HTTP em conjunto com o TCP/IP que fará com que o acesso funcione corretamente.
- SSL/TLS – Protocolo que utiliza chaves simétricas e assimétricas para criptografia dos dados trafegados.
*Obs1: Uma boa observação é o que protocolo utilizado atualmente é o protocolo TLS, que é a evolução do SSL. o SSL não é mais utilizado hoje em dia, porém sua nomenclatura ainda é muito utilizada, então quando você escutar alguém falando sobre SSL, muito provavelmente estará se referindo ao TLS.
*Obs2: Como visto no post Criptografia – Chaves Simétricas e Assimétricas, as chaves simétricas tem um grave problema em sua distribuição, então porque elas ainda são utilizadas? As chaves simétricas tem um baixo uso computacional em comparação as chaves assimétricas, o que faz que ele seja bem mais leve.
Por esse motivo a troca do tráfego entre cliente Web x Servidor Web utiliza a chave simétrica para criptografia, afinal, ninguém quer lentidão para navegar na internet. Irei detalhar melhor isso no funcionamento do Handshake TLS.
- HTTP + SSL/TLS = HTTPS – O HTTPS, nada mais é do que o uso do protocolo HTTP combinado com o uso do protocolo SSL/TLS. O protocolo SSL/TLS será responsável pela criptografia dos dados na comunicação do navegador com o servidor que hospeda a página web acessada.
Agora vamos ao que interessa…
Como funciona o HTTPS
Antes de iniciar a explicação, um termo importante a ser explicado é o Handshake. O Handshake (aperto de mãos), é a negociação entre dois hosts. Caso os dois hosts estejam de acordo com os parâmetros negociados, eles estabeleceram a conexão.
Bem, então vamos imaginar o ambiente onde uma pessoa está tentando acessar o “site X” utilizando HTTPS.
Tudo irá começar com um Handshake TCP, o qual não irei entrar em muitos detalhes agora, pois pretendo fazer um post voltado a esse assunto. Mas ele funciona literalmente como um aperto de mão entre o cliente x servidor, como assim? Caso ambos estejam de acordos com os parâmetros oferecidos entre um e o outro, a conexão TCP será estabelecida.
Com a conexão TCP estabelecida, o Handshake TLS entrará em ação.
O Handshake TLS será iniciado com uma mensagem do cliente para o servidor chamada Client Hello. Nessa mensagem irão alguns parâmetros, entre eles os mais importantes são:
- Max. Version – O cliente irá informar a versão máxima do TLS que ele suporta.
- List Cipher Suites – Uma Lista com várias cifras que poderão ser utilizadas nas chaves simétricas e assimétricas
- Random Number – Um número aleatório qual a função é a proteção contra os ataques de reply
Ao receber o Client Hello, o Servidor Web irá:
- Verificar se a versão do TLS é uma versão compatível com seus requisitos.
- Escolher uma Cipher da lista que melhor se encaixe com seus requisitos.
- Verificar o número aleatório
Caso todos lados estejam de acordo com os parâmetros, o servidor irá enviar uma resposta chamada Server Hello informando ao cliente as opções selecionadas para assim dar inicio a conexão TLS.
Com ambos os lados de acordo com os parâmetros, o servidor web irá para o próximo etapa, e acredito eu que a etapa mais importante. Enviar o seu Certificado Digital. No certificado irão conter informações como:
- Data de validade – Irá conter a data de validade do certificado
- CA (Certificate Authority) – Irá garantir que o Site X realmente é quem ele diz ser. Em outras palavras garante a Integridade do Certificado.
- Chave Pública – O certificado irá conter a chave pública do servidor Web (como dito anteriormente, esse assusto é discutido do artigo Criptografia – Chaves Simétricas e Assimétricas
O cliente web estando com a chave pública do servidor web, poderá enviar dados criptografados para ele através das chaves assimétricas, porém, como as chave assimétrica tem um alto custo computacional, a troca de dados criptografadas dessa forma se torna invíavel devida a lentidão.
Por essa razão, o cliente web utilizará a chave pública para criptografrar sua chave simétrica e enviá-la para o servidor web, assim corrigindo o problema de distruibuição da chave simétrica e garantido o tráfego criptografado e leve.
Assim que o Servidor Web estiver com a chave simétrica do cliente web, todo tráfego enviado entre eles serão criptografados e descriptografados por ela.
É dessa forma que o HTTPS, usando as chaves simétricas e assimétricas garante sua navegação segura na internet.
Seja o primeiro a comentar