Segurança
O que é o TLS (Transport Layer Security) e sua importância?
O TLS é um protocolo de segurança que oferece privacidade e integridade de dados em comunicações pela internet. Implementar o TLS é uma prática padrão para criar apps da web seguros.
O Transport Layer Security, ou TLS, é um protocolo de segurança amplamente utilizado, criado para aumentar a privacidade e a segurança dos dados em comunicações pela internet. Um dos principais casos de uso do TLS é a criptografia da comunicação entre aplicativos web e servidores, como quando um navegador carrega um site. O TLS também pode ser usado para criptografar outras comunicações, como e-mails, mensagens e voz sobre IP (VoIP). Neste artigo, vamos falar sobre o papel do TLS na segurança de aplicativos web.
O TLS foi proposto pela Internet Engineering Task Force (IETF), uma organização internacional de normas, e a primeira versão do protocolo foi publicada em 1999. A mais recente é a TLS 1.3, publicada em 2018.
Qual é a diferença entre TLS e SSL?
O TLS evoluiu de um protocolo de criptografia anterior, chamado Secure Sockets Layer (SSL), desenvolvido pela Netscape. A versão 1.0 do TLS na verdade começou com o desenvolvimento da versão 3.1 do SSL, mas o nome do protocolo foi alterado antes da publicação a fim de indicar que ele já não estava mais associado com a Netscape. Por causa disso, muitas vezes os termos TLS e SSL são usados de forma intercambiável.
Qual é a diferença entre TLS e HTTPS?
O HTTPS é uma implementação da criptografia TLS sobre o protocolo HTTP, que é usado por todos os sites e por alguns serviços web. Todo site que usa o HTTPS, portanto, usa criptografia TLS.
Por que as empresas e os aplicativos web usam o protocolo TLS?
A criptografia TLS ajuda a proteger os aplicativos web de invasões de dados e outros ataques.Hoje, o HTTPS protegido por TLS é uma prática padrão para sites.O navegador Google Chrome gradualmente reprimiu sites que não usam HTTPS e outros navegadores têm seguido o exemplo.Todos os dias, usuários da internet estão cada vez mais atentos a sites que não exibem o ícone de cadeado do HTTPS.
O que o TLS faz?
O protocolo TLS tem três funções principais: Criptografia, Autenticação e Integridade.
- Criptografia: oculta os dados transferidos por terceiros.
- Autenticação: garante que as partes que estão trocando informações são autênticas.
- Integridade: verifica se os dados não foram falsificados ou adulterados.
Como funciona o TLS?
Para usar o TLS, um site ou aplicativo precisa ter um certificado TLS instalado no servidor de origem (esse certificado também é conhecido como certificado SSL, por causa da confusão na nomenclatura descrita anteriormente). O certificado TLS é emitido por uma autoridade de certificação para a pessoa ou empresa dona de um domínio. O certificado contém dados importantes sobre quem é o proprietário do domínio, bem como a chave pública do servidor, duas informações essenciais para validar a identidade do servidor.
Uma conexão TLS é iniciada por uma sequência chamada de handshake TLS. Quando um usuário navega até um site que usa TLS, o handshake começa entre o dispositivo (também conhecido como dispositivo cliente) e o servidor web.
Durante o handshake TLS, o dispositivo do usuário e o servidor web:
- Especificam qual versão do TLS (TLS 1.0, 1.2, 1.3, etc.) serão usadas
- Decidem que suítes de cifras (ver abaixo) usarão
- Autenticam a identidade do servidor por meio do certificado TLS
- Geram chaves de sessão para criptografar mensagens após o handshake
O handshake TLS define um pacote de codificação para cada sessão de comunicação. O pacote de codificação é um conjunto de algoritmos que informa, por exemplo, quais chaves de criptografia ou chaves de sessão compartilhadas serão usadas em uma sessão específica. O TLS define as chaves de sessão correspondentes em um canal não criptografado, graças a uma tecnologia conhecida como criptografia de chave pública.
O handshake também faz a autenticação, processo em que o servidor prova sua identidade ao cliente. Isso é feito com chaves públicas. Chaves públicas são chaves de criptografia que usam criptografia unidirecional, ou seja, qualquer pessoa com a chave pública pode reordenar os dados criptografados com a chave privada do servidor para garantir sua autenticidade, mas somente o remetente original pode criptografar dados com a chave privada. A chave pública do servidor é parte do certificado TLS.
Após a criptografia e a autenticação, os dados são assinados com um autenticador de mensagem (MAC). Assim, o destinatário pode verificar o MAC para garantir a integridade dos dados. É como um lacre, pois, quando está intacto, o consumidor sabe que ninguém mexeu no produto.
Como o TLS afeta a performance do aplicativo web?
As versões mais recentes do TLS quase não afetam a performance de aplicativos web.
Mas como o processo de configuração de uma conexão TLS é complexo, você gasta tempo de carregamento e capacidade de computação. O cliente e o servidor precisam se comunicar entre si diversas vezes antes da transmissão de dados, e isso consome valiosos milissegundos do tempo de carregamento de aplicativos web, bem como parte da memória do cliente e do servidor.
No entanto, existem tecnologias que ajudam a mitigar a possível latência criada pelo handshake TLS. Uma delas é o TLS False Start, em que o servidor e o cliente começam a transmitir dados antes da conclusão do handshake TLS. Outra tecnologia que acelera o TLS é a TLS Session Resumption, em que clientes e servidores que já se comunicaram anteriormente usam um handshake abreviado.
Essas melhorias ajudaram o TLS a se tornar um protocolo muito rápido, que não afeta de forma significativa o tempo de carregamento. Quanto aos custos de computação do TLS, são quase insignificantes nos padrões de hoje.
O TLS 1.3, lançado em 2018, acelerou ainda mais o TLS. No TLS 1.3, os handshakes só precisam de uma viagem de ida e volta (ou comunicação completa) em vez de duas, o que encurta o processo em alguns milissegundos. Quando o usuário já se conectou a um site antes, o handshake TLS não faz nenhuma viagem de ida e volta, e fica ainda mais rápido.
Como começar a implementar o TLS em um site
A Cloudflare oferece certificados TLS/SSL grátis para todos os usuários. Quem não usa a Cloudflare precisa adquirir um certificado SSL de uma autoridade de certificação, geralmente pago, e instalá-lo nos servidores de origem.
Referências: https://www.cloudflare.com/pt-br/learning/ssl/transport-layer-security-tls/