Lição 2 de 4 · 9 min
Assinaturas digitais, certificados e TLS
Como é que um navegador sabe que está mesmo a falar com o seu banco, porque é que um ícone de cadeado significa algo específico, e o que não significa.
A lição anterior deixou uma pergunta em aberto: a encriptação assimétrica permite-lhe enviar um segredo a alguém cuja chave pública tem — mas como sabe que essa chave pública pertence mesmo a essa pessoa, e não a um atacante pelo meio? As assinaturas digitais e os certificados respondem a isso, e juntos tornam possível o TLS, o protocolo por trás de cada endereço https://.
Assinaturas digitais: prova de origem, não de sigilo
Uma assinatura digital executa a encriptação assimétrica ao contrário. Em vez de encriptar uma mensagem com a chave pública de alguém para que só essa pessoa a consiga ler, quem envia assina uma mensagem com a sua própria chave privada, e qualquer pessoa a pode verificar usando a chave pública de quem enviou. Se a verificação tiver sucesso, duas coisas são verdade: a mensagem veio de quem detém essa chave privada, e não foi alterada depois — a mesma propriedade de resistência a colisões da discussão sobre hashing na lição anterior é o que torna a adulteração detetável. Uma assinatura prova autenticidade e integridade; não mantém, por si só, a mensagem em segredo.
Certificados: uma assinatura a garantir uma chave pública
Um certificado digital resolve o problema de "de quem é mesmo esta chave pública". Como explica o Centro de Aprendizagem da Cloudflare, um certificado SSL/TLS é "um ficheiro de dados alojado no servidor de origem de um site" que contém o nome de domínio, a chave pública, uma data de expiração e — de forma crucial — "a assinatura digital da autoridade certificadora." Uma autoridade certificadora (CA) é um terceiro de confiança que verifica se um site controla o domínio para o qual está a pedir um certificado, e depois assina esse certificado com a sua própria chave privada. O seu navegador já vem com uma lista incorporada de CAs em que confia, por isso, quando recebe um certificado assinado por uma delas, pode confiar na chave pública lá dentro sem alguma vez ter conhecido o operador do site. Um certificado autoassinado — um que um site assina ele próprio em vez de o obter de uma CA — não tem esse aval externo, e é por isso que os navegadores o tratam por defeito como não fiável.
TLS: pôr as duas coisas a trabalhar
A RFC 8446, a especificação do TLS 1.3, descreve um cumprimento (handshake) em fases: troca de chaves, na qual os dois lados estabelecem material secreto partilhado; depois autenticação, em que, nas palavras da RFC, "o lado do servidor do canal é sempre autenticado; o lado do cliente é opcionalmente autenticado" — normalmente só o site prova a sua identidade, não o visitante. O servidor prova quem é usando o seu certificado e uma assinatura que só ele conseguiria produzir com a sua chave privada. Assim que ambos os lados confiam na ligação, derivam chaves simétricas rápidas (o AES da lição anterior, tipicamente) para os dados propriamente ditos. A RFC 8446 afirma claramente o que isto lhe traz: confidencialidade e integridade para os dados trocados, e autenticação do servidor. Também afirma, de forma igualmente clara, um limite: "o TLS não esconde o comprimento dos dados que transmite", e metadados como a que servidor se ligou e quando permanecem visíveis para quem estiver posicionado para observar a ligação.
O que o ícone de cadeado significa e não significa
| O cadeado / https:// significa | Não significa |
|---|---|
| A ligação a esse servidor está encriptada e a sua integridade está protegida | Que o site é fiável, honesto ou seguro de usar |
| Está a falar com quem quer que controle esse nome de domínio | Que esse nome de domínio é quem pensa que é — um domínio parecido e convincente também obtém um certificado válido |
| Ninguém no percurso de rede consegue ler ou alterar silenciosamente o tráfego | Que ninguém consegue ver que visitou o site, quando, ou com que frequência |
Um site de phishing construído sobre um domínio parecido pode ter um certificado perfeitamente válido: o TLS autentica o domínio, não a intenção de quem o registou. É por isso que a lição anterior sobre como os ataques se desenrolam trata uma página de início de sessão falsa, cadeado incluído, como uma ameaça real, e não como uma contradição.
A reter
- Uma assinatura digital prova quem enviou uma mensagem e que não foi alterada — não mantém, por si só, a mensagem em segredo.
- Um certificado é uma declaração assinada, de uma autoridade certificadora em que um navegador já confia, de que uma determinada chave pública pertence a um determinado domínio.
- Um cumprimento TLS (RFC 8446) autentica sempre o servidor; o visitante raramente é autenticado da mesma forma.
- O TLS protege a confidencialidade e a integridade em trânsito, e confirma que chegou ao domínio pretendido — não esconde que uma ligação aconteceu, nem garante que o site por trás dela é fiável.
- Um site de phishing num domínio parecido pode mostrar um cadeado perfeitamente válido; o certificado autentica o domínio, não a intenção do operador.
Teste-se
1. O que prova uma assinatura digital válida numa mensagem?
- Que a mensagem é secreta para todos exceto o destinatário
- Que a mensagem veio de quem detém uma determinada chave privada e não foi alterada — Certo.
- Que a mensagem foi enviada usando TLS
- Que a mensagem está livre de qualquer conteúdo prejudicial
As assinaturas verificam a autenticidade e a integridade usando o par de chaves de quem assina; não encriptam a mensagem para a manter em sigilo.
2. Que papel desempenha uma autoridade certificadora (CA) no TLS?
- Guarda as suas palavras-passe em seu nome
- Garante, com a sua própria assinatura, que uma chave pública pertence a um determinado domínio — Certo.
- Encripta todo o tráfego na internet
- Bloqueia automaticamente sites de phishing
Uma CA verifica o controlo do domínio e assina o certificado, permitindo que navegadores que já confiam na CA confiem na chave pública do certificado sem contactar diretamente o operador do site.
3. Segundo a RFC 8446, que lado de uma ligação TLS típica é sempre autenticado?
- Só o cliente (o seu navegador)
- O servidor — Certo.
- Nenhum dos lados, por defeito
- Ambos os lados, sempre, sem exceções
A RFC 8446 afirma que o lado do servidor é sempre autenticado, enquanto a autenticação do cliente é opcional e muito menos comum na navegação comum.
4. Porque é que um site de phishing ainda pode mostrar um ícone de cadeado válido?
- Os ícones de cadeado são cosméticos e não significam nada
- Um certificado autentica um nome de domínio, não a honestidade de quem o registou — Certo.
- Os navegadores já não verificam certificados
- Os sites de phishing não podem usar HTTPS de todo
Os certificados TLS confirmam que está a falar com o verdadeiro detentor de um determinado domínio; um domínio parecido e convincente pode obter o seu próprio certificado perfeitamente válido.
Praticar com o FireAI
Ponha esta lição em prática no seu próprio Mac.
- Inspeção profunda, sem decifrar nada — Obtenha detalhe real sobre uma ligação segura sem que o FireAI leia alguma vez o que está lá dentro.
- O que fica no seu Mac, e as únicas vezes em que o FireAI se liga sozinho — Leia a lista completa do que o FireAI envia, em vez de acreditar na palavra de uma firewall.
Fontes
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- Cloudflare Learning Center: What is an SSL certificate?
Ponha em prática no seu Mac
Experimente todas as funcionalidades grátis durante 17 dias, sem cartão.