Sempre que abrimos uma página e vemos um pequeno cadeado junto ao endereço, estamos perante o sinal mais visível de toda a segurança da web. Esse cadeado indica que a ligação está protegida por HTTPS, e por trás dele trabalha um protocolo chamado TLS. Este artigo explica o que essa proteção faz de facto, o que é um certificado, quem são as autoridades que os emitem e, talvez o mais importante de tudo, o que o cadeado não garante. Muita gente confia demais nesse pequeno ícone, e convém perceber com exatidão até onde vai a sua promessa.
O que o HTTPS protege
A diferença entre HTTP e HTTPS resume-se a uma letra, mas a consequência é grande. O HTTP, a versão sem proteção, envia tudo em texto simples: qualquer pessoa com capacidade para observar a ligação entre o seu dispositivo e o servidor, por exemplo numa rede Wi-Fi pública, pode ler aquilo que envia e recebe. O HTTPS acrescenta o TLS, que protege essa ligação de três maneiras complementares.
A primeira é a confidencialidade. O TLS cifra os dados antes de eles saírem do seu dispositivo, de modo que quem os intercete a meio do caminho veja apenas uma sequência sem sentido. A sua palavra-passe, os dados do cartão, as mensagens que escreve, tudo viaja embaralhado e só é legível nas duas pontas legítimas da conversa.
A segunda é a integridade. O TLS deteta se os dados foram alterados durante o trajeto. Se alguém tentar modificar, mesmo que ligeiramente, aquilo que circula entre você e o servidor, a alteração é detetada e a ligação é interrompida em vez de aceitar dados adulterados. Isto impede, por exemplo, que um intermediário injete conteúdo malicioso numa página enquanto ela viaja até si.
A terceira é a autenticação do servidor. Antes de cifrar seja o que for, o TLS verifica que o servidor com quem está a falar é mesmo quem diz ser, e não um impostor que se intrometeu no meio. É aqui que entram os certificados, que veremos a seguir, e é esta verificação que distingue uma ligação genuína ao seu banco de uma ligação a um servidor que se faz passar por ele.
Como funciona, em traços simples
Não é preciso conhecer a matemática para entender a ideia. Quando o seu navegador estabelece uma ligação segura, ele e o servidor passam por uma curta negociação inicial, por vezes chamada aperto de mão. Nessa negociação acontecem, em sequência, três coisas.
Primeiro, o servidor apresenta o seu certificado, que funciona como um documento de identidade digital. O navegador verifica esse certificado, confirmando que é válido, que não expirou e que foi emitido para o endereço que você está mesmo a visitar.
Depois, com a identidade do servidor confirmada, os dois lados acordam, de forma protegida, uma chave secreta partilhada que só eles passam a conhecer. Esta etapa apoia-se em criptografia assimétrica, um mecanismo que permite combinar um segredo comum sem nunca o enviar às claras pela ligação.
Por fim, a partir desse momento, toda a conversa passa a ser cifrada com essa chave partilhada. O navegador mostra o cadeado, e a página carrega normalmente, agora sob proteção. Tudo isto acontece em fracções de segundo, sem que você dê por nada.
Certificados e autoridades de certificação
O certificado é a peça que sustenta a confiança em todo o sistema, por isso vale a pena perceber o que é e de onde vem a sua credibilidade.
Um certificado é um ficheiro que associa uma identidade, tipicamente um nome de domínio como o do seu banco, a uma chave criptográfica. O que impede qualquer um de fabricar um certificado falso para o domínio do banco é o facto de os certificados serem assinados por uma entidade de confiança, chamada autoridade de certificação. Essa assinatura é uma garantia de que a autoridade verificou, à sua maneira, que quem pediu o certificado controla mesmo aquele domínio.
O sistema funciona por uma cadeia de confiança. O seu navegador e o seu sistema operativo já vêm com uma lista de autoridades de certificação em que confiam à partida. Quando recebe um certificado, o navegador verifica a assinatura, segue a cadeia até uma dessas autoridades de raiz e, se tudo encaixa, aceita o certificado como legítimo. Se a cadeia se parte, se o certificado expirou ou se foi emitido para outro domínio, o navegador mostra um aviso bem visível em vez do cadeado, e é por isso que esses avisos nunca devem ser ignorados de ânimo leve.
Aqui há também um ponto que liga diretamente ao trabalho da nossa equipa. Os certificados não assinam a totalidade dos seus dados: assinam um resumo, calculado por uma função de hash, daquilo que pretendem garantir. A segurança de um certificado depende, por isso, da solidez da função de hash usada nessa assinatura. Foi precisamente esta dependência que tornou a aposentação do SHA-1 tão importante: uma vez demonstrada a possibilidade de produzir colisões, uma assinatura deixava de garantir, sem ambiguidade, o que tinha sido assinado. O tema está desenvolvido na nossa secção de criptografia, que explica como as funções de hash sustentam as assinaturas em que os certificados assentam.
Os limites do TLS: o que o cadeado não garante
Esta é a parte que merece mais atenção, porque é onde residem os mal-entendidos mais perigosos. O cadeado é uma garantia precisa, e apenas isso. Confundir aquilo que ele promete com uma promessa mais geral de segurança leva muita gente a baixar a guarda no pior momento.
O ponto central é este: o cadeado garante que a ligação é segura, não que o site é honesto. Diz-lhe que aquilo que envia chega ao servidor sem ser lido nem alterado por terceiros, e que esse servidor é mesmo o dono do endereço que aparece na barra. Não lhe diz absolutamente nada sobre as intenções de quem controla esse site. Um site de burla pode ter um cadeado perfeitamente válido, porque obter um certificado é hoje fácil e gratuito. O cadeado garante que está a falar em privado com aquele endereço, não que aquele endereço seja de confiança.
Daí decorre o segundo limite, ligado ao phishing. Um endereço falso, parecido com o verdadeiro, pode ter o seu próprio cadeado. Ver o cadeado e concluir “isto é seguro” é exatamente o erro que os atacantes exploram. O que protege contra phishing não é o cadeado, é ler com atenção o endereço completo e confirmar que é mesmo o domínio certo, tema que tratamos no artigo sobre phishing.
Há ainda outros limites a reter. O TLS protege os dados enquanto eles viajam, mas não os protege depois de chegarem: se o servidor for invadido, ou se o seu próprio dispositivo estiver comprometido por software malicioso, a cifragem do trajeto já nada pode fazer. E o TLS protege o conteúdo da conversa, mas não esconde por completo com quem você está a falar, já que o nome do site que visita pode ainda assim ser observável por quem vigia a rede.
A leitura correta do cadeado é, portanto, modesta e útil ao mesmo tempo. Ele é necessário, e nunca deve introduzir dados sensíveis numa página que não o tenha. Mas não é suficiente, e a sua presença nunca substitui o cuidado de confirmar que está no sítio certo e que esse sítio merece a sua confiança.
Perguntas frequentes
Se um site tem cadeado, posso confiar nele?
Pode confiar que a ligação é privada e que está mesmo a falar com aquele endereço, e nada mais do que isso. O cadeado não diz se a pessoa por trás do site é honesta. Sites fraudulentos podem ter cadeados válidos, por isso continue a confirmar que o endereço é o verdadeiro antes de introduzir qualquer dado importante.
O que devo fazer se o navegador mostrar um aviso de certificado?
Leve o aviso a sério e não o ignore. Pode significar que o certificado expirou, que foi emitido para outro domínio ou que alguém se está a intrometer na ligação. Em qualquer dos casos, não introduza palavras-passe nem dados de pagamento nessa página enquanto não perceber a causa do aviso.
Qual é a diferença entre HTTPS e TLS?
HTTPS é simplesmente o HTTP, o protocolo das páginas web, a funcionar por cima do TLS, que é o protocolo que trata da cifragem e da autenticação. Na prática usam-se quase como sinónimos: quando vê o cadeado e o endereço começa por https, é o TLS que está a proteger a ligação por baixo.




