TLS Fingerprint – O que é?

Em seu nível mais básico, o Transport Layer Security (TLS) é um algoritmo que criptografa todo o tráfego da Internet e ajuda você a se manter seguro online. Para ser mais preciso, é um protocolo usado para criptografar comunicações baseadas na web entre um cliente e um servidor, usando conjuntos de algoritmos criptográficos. Antes que o TLS possa ser usado na comunicação, o cliente e o servidor passam por um processo conhecido como handshake do TLS.

A identificação de um cliente com base nos dados de sua mensagem Client Hello durante um handshake do TLS é chamada de fingerprinting do TLS.

Algumas maneiras comuns de usar o fingerprinting do TLS são:

  • Obter informações sobre um cliente na web, como sistema operacional ou versão do navegador.
  • Analisar o tráfego TLS criptografado, permitindo que seu provedor de serviços de Internet adivinhe quais sites você está usando e quais ações você realiza enquanto navega na web.
  • Obter informações sobre um servidor remoto, como sistema operacional ou software do servidor.
  • A identificação exclusiva de um cliente também pode ser útil para casos de uso de anti-fraude, pois usuários mal-intencionados muitas vezes tentam ocultar sua identidade para realizar várias atividades fraudulentas em um site. Enquanto a identificação de usuários usando cookies e fingerprinting do navegador, o fingerprinting do TLS pode ser uma camada de identificação mais confiável que a anterior para o seu sistema de anti-fraude.

Neste artigo, você aprenderá os detalhes de como funciona o fingerprinting do TLS e como isso pode ajudá-lo a compreender melhor sua rede e fontes de tráfego, além de proteger seu site contra fraudes.

O Handshake do TLS

O processo de handshake começa com o cliente solicitando que o servidor inicie uma sessão segura. Como o protocolo TLS tem várias versões e opções de criptografia, o cliente envia primeiro seus métodos de criptografia suportados (também conhecidos como conjuntos de cifras), e a versão atual do TLS em uma mensagem Client Hello para iniciar uma comunicação com o servidor.

O servidor então analisa essa solicitação e compara a lista de conjuntos de cifras no Client Hello com a lista de cifras suportadas pelo servidor. Em seguida, ele envia uma mensagem Server Hello para o cliente contendo seu protocolo TLS, o conjunto de cifras escolhido e o certificado SSL do servidor, que inclui a chave de criptografia pública do servidor.

Alguns passos adicionais no processo de handshake não são relevantes para o fingerprinting do TLS.

Quando o cliente recebe o certificado digital do servidor, ele usa a chave pública da autoridade de certificação emitente para verificar a assinatura digital do certificado. O nome do servidor no certificado deve corresponder ao nome DNS do servidor, e o certificado não deve estar expirado.

Após a verificação adequada, o cliente envia uma segunda sequência aleatória conhecida como segredo pré-mestre. Isso é criptografado usando a chave pública do servidor. Por fim, o servidor descriptografa o segredo pré-mestre com a chave privada, e tanto o cliente quanto o servidor geram uma chave de sessão usando o seguinte:

  • Sequência aleatória do cliente
  • Sequência aleatória do servidor
  • Segredo pré-mestre

Eles devem chegar ao mesmo resultado.

Por fim, o cliente envia uma mensagem finished criptografada com a chave de sessão, e o servidor responde com uma mensagem finished que também é criptografada com a chave de sessão.

Quando o cliente e o servidor estão criptografados de maneira segura e simétrica, o handshake do TLS está completo.