Introdução SSL/TLS

Quando uma pessoa acessa um site da Web que não possui chave de criptografia, a conexão não poderá ser criptografada. Isso significa que essa conexão está aberta e qualquer terceiro interessado pode dar uma olhada nas informações que estão trafegando pela rede.

Nas conexões seguras, o URL começa com "HTTPS", independente do navegador que esteja usando. Para que o HTTPS apareça é necessário usar um Certificado SSL ou TLS. Desse modo, uma conexão do tipo HTTP é insegura e do tipo HTTPS é segura.

Para verificar a segurança de um site, veja o status de segurança, à esquerda do endereço da Web. Nos sites que permitem conexão HTTPS, a imagem de um cadeado fechado costuma aparecer à esquerda do endereço da Web. Nas conexões HTTP, aparece a imagem de um cadeado fechado com uma barra de bloqueio cadeado com barra de bloqueio (taxado) ou um triângulo com exclamação com a inscrição não seguro ( Não seguro | url ).

A próxima figura mostra o painel de configuração do Firefox Opções->Privacidade e Segurança, onde existe a opção "Modo somente HTTPS". Vale ressaltar que esse exemplo é do Firefox, mas estende-se para os outros navegadores.

Firefox - Modo somente HTTPS

Se a opção "Ativar o modo somente HTTPS em todas as janelas" estiver selecionada, a tentativa de acessar um site sem criptografia resulta na seguinte mensagem:

Firefox - Conexão segura não disponível

Para que um site seja seguro, é necessário que a comunicação entre cliente e servidor sejam criptogfadas, isto é, sejam do tipo HTTPS e não HTTP. A criptografia proteje as informações para que que bisbilhoteiros e hackers não vejam o que é transmitido pela internet. É particularmente útil para proteger informações privadas e confidenciais, como senhas, números de cartão de crédito e correspondência pessoal.

Uma conexão criptografada é obtida por meio de SSL (Secure Sockets Layer) ou sua versão aprimorada denominada de TLS (Transport Layer Security). São técnicas empregadas na encriptação de dados antes de serem transmitidos pela Web.

SSL, ou Secure Sockets Layer, foi o protocolo de criptografia original desenvolvido para HTTP. O SSL foi substituído pelo TLS por volta do ano 1999. No entanto, o nome "SSL" ainda é amplamente utilizado quando o assunto é conexão segura.



SSL/TLS Handshack

Considerando que o SSL foi substituído pelo TLS por volta de 1999, o texto dará preferência para o termo TLS.

Quando alguém utiliza um navegador para acessar um site que possui um certificado TLS instalado, leva apenas alguns milissegundos para uma conexão criptografada ser negociada. O SSL/TLS handshake ocorre depois que uma conexão TCP foi aberta por meio de um TCP handshake. Os passos descriminados a seguir exemplificam o que ocorre durante o TLS handshake.

  • O cliente envia uma mensagem "Olá do cliente". Isso inclui o número da versão TLS do cliente, configurações de criptografia, dados específicos da sessão e outras informações de que o servidor precisa para se comunicar com o cliente usando TLS.
  • O servidor responde com uma mensagem "Olá do servidor". Isso inclui o número da versão TLS do servidor, configurações de criptografia, dados específicos da sessão, um certificado TLS com uma chave (criptografia assimétrica) pública e informações sobre a autoridade de certificação (CA) que o emitiu, além de outras informações de que o cliente precisa para se comunicar com o servidor por TLS.
  • O cliente envia o certificado TLS do servidor que pretende se conectar para o servidor da Autoridade de Certificação (CA) que o emitiu.
  • O servidor CA autentica ou recusa a autenticação. Em seguida envia o aceite ou recusa para o cliente que fez a solicitação. Se a autenticação falhar, o cliente recusará a conexão TLS e lançará uma exceção. Se a autenticação foi aceita, o passo 5 ocorrerá.
  • O cliente cria uma chave de sessão (criptografia simétrica), criptografa-a com a chave pública (criptografia assimétrica) do servidor e a envia ao servidor.
  • O servidor descriptografa a chave de sessão (criptografia simétrica) com sua chave privada (criptografia assimétrica) e envia a confirmação ao cliente criptografada com a chave de sessão.

Assim, ao final do TLS handshake, tanto o cliente quanto o servidor têm uma chave de sessão válida que usarão para criptografar ou descriptografar dados reais. A chave pública (criptografia assimétrica) e a chave privada (criptografia assimétrica) não serão mais usadas depois disso.

TLS Handshake


Chaves Assimétricas

A criptografia assimétrica (também conhecida como criptografia de chave pública) é realizada por meio de duas chaves, a pública e a privada. Elas são relacionadas matematicamente para criptografar e descriptografar dados. A chave pública é compartilhada com qualquer pessoa interessada em uma comunicação. A chave privada deve ser mantida em segredo pelo servidor.

A criptografia assimétrica é utilizada para iniciar a comunicação (TLS handshake). Os algoritmos de criptografia de chave assimétrica mais comumente usados ​​incluem EIGamal, RSA, DSA, técnicas de curva elíptica e PKCS.

Durante o passo dois ("Olá do servidor") o servidor criptografa com a chave privada o certificado TSL do servidor, as informações CA que o emitiu, a chave (assimétrica) pública, criptografia escolhida por ele, dentre outras informações e envia para o navegador (cliente). Esses dados criptografados funcionam como a assinatura digital do servidor, estabelecendo que o servidor possui a chave privada que corresponde à chave pública do certificado SSL.

chaves assimétricas: pública e privada - passo 02

Durante o passo cinco o navegador gera uma chave simétrica e a criptografa usando a chave pública do servidor. Na sequência, envia a mensagem criptografada para o servidor. Essa mensagem somente pode ser descriptografada com a chave privada do servidor. A partir desse ponto, tanto o servidor quanto o cliente vão utilizar a mesma chave simétrica para criptografar e descriptografar as mensagens.

chaves simétricas - passo 05


Chaves Simétricas

Na criptografia simétrica, existe apenas uma chave que criptografa e descriptografa os dados. Tanto o cliente (navegador) quanto o servidor devem ter essa chave, enviada do navegador para o servidor no passo 5, que só eles conhecem.

chave assimétricas pública e privada - passo 02

A vantagem de utilizar chaves simétricas para criptografar e descriptografar as mensagem é reduzir o esforço de processamento. Caso a comunicação fosse realizada somente com as chaves pública e privada do servidor, exigiria maior esforço computacional tando do cliente (navegador) quando do servidor. Desse modo, como a função do servidor a de atender a vários clientes "ao mesmo tempo", a criptografia assimétrica iria esgotar mais rápido seus recursos de processamento.

Além disso, é fácil para um hacker obter a chave pública de um servidor e, portanto, ser capaz de descriptografar as mensagens enviadas pelo servidor que conseguir interceptar. Por outro lado, não conseguiria saber o conteúdo de uma mensagem criptografada por algum cliente com a chave pública do servidor, visto que somente a chave privada do servidor pode descriptografá-la.

Informações sobre como gerar as chaves utilizadas na criptografia assimétrica são fornecidas na próxima página, intitulada "Chaves Assimétricas".