O que é TLS mútuo (mTLS)?

O TLS mútuo (mTLS) é um tipo de autenticação em que as duas partes em uma conexão se autenticam mutuamente usando o protocolo TLS.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Explicar como funciona o TLS (mTLS) mútuo
  • Entender a diferença entre o TLS mútuo e o TLS regular
  • Esclarecer como o mTLS para os ataques

Copiar o link do artigo

O que é TLS mútuo (mTLS)?

O TLS mútuo, ou mTLS, é um método para autenticação mútua. O mTLS assegura que as partes em cada extremidade de uma conexão de rede são quem afirmam ser, verificando que ambas têm a chave privada correta. As informações dentro de seus respectivos certificados TLS fornecem a verificação adicional.

O mTLS é frequentemente usado em uma estrutura* de segurança Zero Trust para verificar usuários, dispositivos e servidores dentro de uma organização. Também pode ajudar a manter as APIs seguras.

*Zero Trust significa que nenhum usuário, dispositivo ou tráfego de rede é confiável por padrão, uma abordagem que ajuda a eliminar muitas vulnerabilidades de segurança.

O que é TLS?

Transport Layer Security (TLS) é um protocolo de criptografia muito usado na internet. O TLS, que antes era chamado SSL, autentica o servidor em uma conexão cliente-servidor e criptografa as comunicações entre cliente e servidor para que as partes externas não possam espionar as comunicações.

Há três coisas importantes a entender sobre como o TLS funciona:

1. Chave pública e privada

A TLS trabalha utilizando uma técnica chamada criptografia de chave pública, que depende de um par de chaves — uma chave pública e uma chave privada. Qualquer coisa criptografada com a chave pública pode ser descriptografada apenas com a chave privada

Portanto, um servidor que descriptografa uma mensagem que foi criptografada com a chave pública prova que possui a chave privada. Qualquer pessoa pode visualizar a chave pública verificando o certificado TLS do domínio ou do servidor.

2. Certificado TLS

Um certificado TLS é um arquivo de dados que contém informações importantes para verificar a identidade de um servidor ou dispositivo, incluindo a chave pública, uma declaração de quem emitiu o certificado (os certificados TLS são emitidos por uma autoridade de certificação) e a data de expiração do certificado.

3. Hanshake TLS

O handshake TLS é o processo de verificação do certificado TLS e da posse da chave privada pelo servidor. O handshake TLS também estabelece como a criptografia ocorrerá quando o handshake estiver concluído.

Como funciona o mTLS?

Normalmente em TLS, o servidor tem um certificado TLS e um par de chaves pública/privada, mas o cliente não tem. O processo típico do TLS funciona assim:

  1. O cliente se conecta ao servidor
  2. O servidor apresenta seu certificado TLS
  3. O cliente verifica o certificado do servidor
  4. O cliente e o servidor trocam informações através de conexão TLS criptografada
As etapas básicas de um handshake TLS

No mTLS, entretanto, tanto o cliente quanto o servidor têm um certificado e ambos os lados autenticam usando seu par de chaves pública/privada. Em comparação com o TLS normal, há etapas adicionais no mTLS para verificar ambas as partes (etapas adicionais em em negrito):

  1. O cliente se conecta ao servidor
  2. O servidor apresenta seu certificado TLS
  3. O cliente verifica o certificado do servidor
  4. O cliente apresenta seu certificado TLS
  5. O servidor verifica o certificado do cliente
  6. O servidor concede acesso
  7. O cliente e o servidor trocam informações através de conexão TLS criptografada
As etapas básicas de um handshake TLS mútuo (mTLS)

Autoridades certificadoras em mTLS

A organização que implementa o mTLS atua como sua própria autoridade de certificação. Isso contrasta com o TLS padrão, em que a autoridade de certificação é uma organização externa que verifica se o proprietário do certificado possui legitimamente o domínio associado (saiba sobre validação de certificado TLS).

Um certificado TLS "raiz" é necessário para o mTLS; isso permite que uma organização seja sua própria autoridade de certificação. Os certificados usados por clientes e servidores autorizados devem corresponder a esse certificado raiz. O certificado raiz é autoassinado, o que significa que a própria organização o cria. (Essa abordagem não funciona para o TLS unidirecional na internet pública porque uma autoridade de certificação externa precisa emitir esses certificados).

Por que usar o mTLS?

O mTLS ajuda a garantir que o tráfego seja seguro e confiável em ambas as direções entre um cliente e um servidor. Isto proporciona uma camada adicional de segurança para os usuários que fazem login na rede ou aplicativos de uma organização. Ele também verifica conexões com dispositivos clientes que não seguem um processo de login, tais como dispositivos da Internet das Coisas (IoT).

O mTLS evita vários tipos de ataques, inclusive:

  • Ataques de invasores intermediários: os ataques de invasores intermediários se colocam entre um cliente e um servidor e interceptam ou modificam as comunicações entre os dois. Quando o mTLS é usado, os invasores intermediários não podem autenticar nem o cliente nem o servidor, tornando este ataque quase impossível de ser realizado.
  • Ataques de falsificação: os invasores podem tentar "falsificar" (imitar) um servidor web para um usuário, ou vice-versa. Ataques de falsificação são muito mais difíceis quando ambos os lados têm que autenticar com certificados TLS.
  • Preenchimento de credenciais: os invasores usam conjuntos de credenciais vazados de uma violação de dados para tentar entrar como um usuário legítimo. Sem um certificado TLS emitido legitimamente, os ataques de preenchimento de credenciais não podem ser bem sucedidos contra organizações que usam mTLS.
  • Ataques com força bruta: normalmente são realizados com bots. Um ataque com força bruta é quando um invasor usa tentativa e erro de forma rápida para adivinhar a senha de um usuário. O mTLS garante que uma senha não é suficiente para obter acesso à rede de uma organização. (Limitação de taxa é outra forma de lidar com este tipo de ataque de bots).
  • Ataques de phishing: o objetivo de um ataque de phishing é muitas vezes roubar credenciais do usuário, depois usar essas credenciais para comprometer uma rede ou um aplicativo. Mesmo que um usuário caia em tal ataque, o invasor ainda precisa de um certificado TLS e uma chave privada correspondente para poder usar essas credenciais.
  • Solicitações maliciosas de API: o mTLS, quando usado para segurança de API, garante que as solicitações de API venham somente de usuários legítimos e autenticados. Isto impede os invasores de enviar solicitações de API maliciosas que visam explorar uma vulnerabilidade ou subverter a maneira pela qual a API deve funcionar.

Os sites já usam TLS, então por que o mTLS não é usado em toda a internet?

Para fins diários, a autenticação unidirecional fornece proteção suficiente. Os objetivos do TLS na internet pública são 1) garantir que as pessoas não visitem sites falsificados, 2) manter os dados privados seguros e criptografados à medida que cruzam as várias redes que fazem parte da internet, e 3) para garantir que os dados não sejam alterados em trânsito. O TLS unidirecional, no qual o cliente verifica apenas a identidade do servidor, cumpre esses objetivos.

Além disso, a distribuição de certificados TLS para todos os dispositivos de usuário final seria extremamente difícil. Gerar, gerenciar e verificar os bilhões de certificados necessários para isso é uma tarefa quase impossível.

Mas em uma escala menor, o mTLS é altamente útil e bastante prático para organizações individuais, especialmente quando essas organizações empregam uma abordagem Zero Trust para segurança de rede. Como uma abordagem Zero Trust não confia em nenhum usuário, dispositivo ou solicitação por padrão, as organizações devem poder autenticar todos os usuários, dispositivos e solicitações sempre que tentarem acessar qualquer ponto da rede. O mTLS ajuda a tornar isso possível autenticando usuários e verificando dispositivos.

Como a Cloudflare usa o mTLS?

O Zero Trust da Cloudflare usa mTLS para a segurança Zero Trust. O API Shield da Cloudflare também usa mTLS para verificar os endpoints de API, garantindo que nenhuma pessoa não autorizada possa enviar solicitações de API possivelmente maliciosas. Aprenda a implementar o mTLS com a Cloudflare.