A segurança da comunicação na internet é uma preocupação cada vez maior para usuários e empresas. Para garantir a privacidade e a integridade das informações transmitidas existem diversos protocolos de segurança, como o SSL (SSL é obsoleto) e o TLS. Mas qual é a diferença entre eles e como isso pode ser utilizado em sistemas distribuídos; De que modo; Quais protocolos e padrões são utilizados nessa indústria e de que modo eles e as CAs (Unidades certificadoras) suportam as aplicações modernas? Neste artigo, tentaremos esclarecer de alguma maneira perguntas como essas, como: “Diferença entre TLS e mTLS: O que você tem que saber”.
Sumário
Qual é a diferença entre SSL e TLS?
SSL (Secure Sockets Layer) é um protocolo antigo de segurança da camada de transporte que foi amplamente utilizado para criptografar comunicações na Internet. Ele foi desenvolvido originalmente pela Netscape e foi a primeira tecnologia a proporcionar comunicações seguras na Internet.
Por outro lado, o TLS (Transport Layer Security) é uma versão atualizada e melhorada do SSL. Assim, ele foi desenvolvido pelo IETF (Internet Engineering Task Force) como sucessor do SSL e foi projetado para corrigir algumas vulnerabilidades do SSL. Ele é baseado no SSLv3, mas inclui melhorias significativas na segurança e no desempenho.
Esses são alguns dos pontos que podemos destacar como melhorias características do TLS que não estão presentes no seu antecessor, SSL:
Algoritmos de criptografia mais seguros
Suporte a uma variedade de algoritmos de criptografia, como AES e RSA. Eles são considerados mais seguros do que os algoritmos de criptografia usados no SSL.
Autenticação mútua
O TLS inclui suporte para autenticação mútua (mTLS), onde tanto o cliente quanto o servidor se autenticam uns aos outros usando certificados digitais. Isso aumenta a segurança da conexão, pois impede que terceiros interceptem e modifiquem as informações transmitidas.
Versões mais recentes
Este inclui suporte para várias versões, incluindo TLS 1.3, que inclui melhorias adicionais na segurança e no desempenho, como o uso de chaves de sessão ephemeral e o suporte ao protocolo 0-RTT (zero round-trip time).
Melhoria no processo de handshake
O TLS inclui melhorias no processo de handshake, o que permite uma negociação mais rápida e eficiente das configurações de criptografia usadas na conexão.
Certificado de revogação
Além disso, o TLS inclui suporte para listas de revogação de certificados (CRLs) e listas de revogação de certificados online (OCSPs), que permitem que as autoridades de certificação revoguem certificados que foram comprometidos ou expirados, melhorando a segurança da conexão.
Suporte a extensões
E também o TLS possui suporte para extensões, o que permite que as partes da conexão negociem configurações adicionais como suporte a algoritmos de criptografia adicionais, o uso de certificados adicionais, ou o uso de recursos de segurança adicionais.
Em resumo, a principal diferença entre SSL e TLS é que o TLS é considerado mais seguro e eficiente do que o SSL, pois corrige algumas vulnerabilidades do SSL e inclui melhorias significativas na segurança e no desempenho. Além disso, o SSL é considerado obsoleto e não é mais usado e as implementações modernas devem usar o protocolo TLS.
Qual é a diferença entre TLS e mTLS?
Como já comentádo, o TLS (Transport Layer Security) é um protocolo de segurança que fornece comunicação segura na camada de transporte para aplicações. Ele é amplamente utilizado para criptografar comunicações na Internet, como conexões HTTPS para proteger informações confidenciais, como senhas e números de cartão de crédito.
Já o mTLS (Mutual Transport Layer Security) é uma extensão do protocolo TLS (Transport Layer Security) que adiciona autenticação mútua entre as partes que se comunicam. Isso significa que tanto o cliente quanto o servidor se autenticam uns aos outros usando certificados digitais. Além disso, as comunicações são criptografadas usando técnicas de criptografia simétrica e assimétrica para garantir a privacidade e a integridade dos dados transmitidos. O mTLS é amplamente utilizado em cenários como comunicação entre microserviços e segurança em redes privadas virtuais (VPNs).
Leia também os artigos como: Docker, docker swarm e kubernetes ou Porque você já deveria estar usando Hashicorp Consul: Diferença entre TLS e mTLS: O que você tem que saber
Protocolos e certificados de criptografia
Os certificados de criptografia usados em conexões baseadas em TLS geralmente usam o protocolo de Certificação X.509. Este protocolo define a forma como os certificados digitais são emitidos e validados, e como as chaves públicas e privadas são usadas para criptografar e assinar digitalmente os dados. Os certificados X.509 contêm informações sobre a identidade do titular do certificado, assim como a chave pública associada, e são assinados digitalmente por uma autoridade de certificação (CA) confiável. Isso permite que os clientes confiem na identidade do servidor e vice-versa.
Além disso, o protocolo X.509 define a estrutura de um certificado digital e como ele deve ser usado para autenticação e criptografia de dados. Um certificado X.509 é emitido por uma Autoridade de Certificação (CA) confiável e contém informações sobre a identidade do titular do certificado, incluindo seu nome, endereço e chave pública. O certificado é assinado digitalmente pela CA, o que garante sua autenticidade.
O Cliente se conectando ao servidor
Quando um cliente se conecta a um servidor usando uma conexão baseada em TLS, o servidor envia seu certificado X.509 para o cliente. O cliente, então, verifica a assinatura digital da CA e valida as informações contidas no certificado para garantir que ele é válido e confiável. Se o certificado é válido, o cliente gera uma chave simétrica, que é usada para criptografar as informações transmitidas entre o cliente e o servidor. Além disso, a chave pública contida no certificado é usada para criptografar uma nova chave simétrica, que é enviada de volta para o servidor e usada para criptografar as informações transmitidas no sentido oposto.
Além disso, é possível usar mTLS, onde o cliente também deve apresentar seu próprio certificado para o servidor, assim o servidor também pode autenticar o cliente. Esse processo garante que somente o cliente e o servidor possam ler as informações transmitidas e que a identidade do servidor foi confirmada, fornecendo uma comunicação segura e privada.
Exemplo de código em C#
Neste exemplo, o servidor está usando uma instância de TcpListener para escutar as conexões na porta 1234. Quando uma nova conexão é aceita, é criada uma nova instância de SslStream usando o fluxo de rede da conexão. Após isso, o certificado X.509 é carregado do arquivo “server.pfx” usando o objeto X509Certificate2 e é passado para o método AuthenticateAsServer do SslStream. Isso faz com que o SslStream configure a conexão para usar o certificado e autenticar o servidor para o cliente.
Depois disso, o servidor pode usar o SslStream para ler e escrever dados com o cliente de forma segura. Lembre-se que é necessário que a CA que emitiu o certificado esteja registrada no sistema operacional ou no navegador do cliente para que a autenticação funcione corretamente.
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
// Cria uma nova instância de TcpListener para escutar as conexões na porta 1234
TcpListener listener = new TcpListener(IPAddress.Any, 1234);
listener.Start();
while (true)
{
// Aceita uma nova conexão
TcpClient client = listener.AcceptTcpClient();
// Obtém o fluxo de rede da conexão
NetworkStream stream = client.GetStream();
// Cria uma nova instância do objeto SslStream usando o fluxo de rede
SslStream sslStream = new SslStream(stream);
// Carrega o certificado X.509 do arquivo "server.pfx"
X509Certificate2 certificate = new X509Certificate2("server.pfx", "password");
// Configura o SslStream para usar o certificado
sslStream.AuthenticateAsServer(certificate);
// Lê e escreve dados usando o SslStream
// ...
}
Unidade Certificadora
Uma Unidade Certificadora (CA) é um órgão ou entidade responsável por emitir, gerenciar e revogar certificados digitais. Elas são usadas para garantir a autenticidade e a integridade das informações contidas em um certificado digital.
Assim, quando uma entidade (como uma pessoa ou uma empresa) precisa de um certificado digital, ela envia uma solicitação de certificado para a CA. A CA, então, verifica a identidade da entidade e emite um certificado que contém informações sobre a identidade da entidade e sua chave pública. O certificado é assinado digitalmente pela CA, o que garante sua autenticidade.
Além disso, quando um cliente recebe um certificado, ele pode verificar a assinatura digital da CA para garantir que o certificado é válido e confiável. Ele também pode usar a chave pública contida no certificado para criptografar informações e verificar a assinatura digital de mensagens enviadas pelo titular do certificado.
E também, as CAs também são responsáveis por revogar certificados caso seja necessário, por exemplo se a chave privada associada ao certificado for comprometida. A lista de certificados revogados é disponibilizada em uma lista de revogação de certificados (CRL) ou em uma lista de revogação de certificados online (OCSP).
Existem diversos tipos de CAs, desde as autoridades de certificação públicas, até as privadas, sendo que as primeiras são geralmente mais confiáveis, pois possuem processos rigorosos de validação de identidade e possuem maiores recursos para garantir a segurança dos certificados.
Conclusão – Diferença entre TLS e mTLS: O que você tem que saber
Em resumo, o SSL e o TLS são protocolos de segurança utilizados para garantir a privacidade e a integridade das informações transmitidas na internet. Assim, a principal diferença entre eles é que o TLS oferece melhorias significativas em relação ao SSL, como a implementação de cifras mais seguras e a verificação do certificado do servidor. Portanto o mTLS é uma variação do TLS que inclui a autenticação de ambas as partes envolvidas na comunicação: Certificados de criptografia baseados em TLS usam protocolos mais modernos. Por fim, a Unidade Certificadora é uma entidade que emite e gerencia os certificados digitais utilizados pelos protocolos SSL/TLS, garantindo a autenticidade e a confiabilidade das informações transmitidas. Diferença entre TLS e mTLS: O que você tem que saber.
Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.