2013/09/06
Como funciona o HTTPS?
A maioria das pessoas já saberá que quando quer a aceder a algum site onde tenha que introduzir login e password ou realizar operações mais sensíveis (como aceder ao serviço do banco online), é essencial que o site utilize o HTTPS que garante a segurança das comunicações de dados e impede que sejam apanhadas por terceiros (bem... talvez exceptuando a NSA).
A verdade é que por trás do HTTPS, que para nós nenhuma diferença faz, se esconde um sistema altamente complexo de troca de chaves e encriptação.
Nada como vos colocar perante um desafio para verem se conseguiram arranjar solução. O problema é o seguinte: têm que falar com um desconhecido, mas apenas o podem fazer usando outra pessoa como intermediário. O objectivo é conseguirem comunicar com o desconhecido com quem nunca trocaram uma palavra, de forma a que o intermediário não consiga perceber o que lhe estão a dizer.
(Na prática, será o equivalente a fazerem uma ligação segura com um serviço online, mesmo quando estão a usar uma rede WiFi pública em que não sabem se poderão confiar.)
Não é lá muito fácil, pois não?
O sistema utiliza matemática um "bocadinho" complicada, com os números primos a mostrarem porque são especiais; mas há um exemplo bem mais simples que ajuda a perceber o sistema. O passo mais crítico ocorre no início, na fase em que os interlocutores se têm que entender sem que um (ou mais) intermediários tenha hipótese de perceber o que se está a passar. Esta troca de chaves de encriptação de forma segura através de um canal público processa-se da seguinte forma, aqui usando cores para mais fácil compreensão.
Mesmo estando a falar com um desconhecido, temos que saber de antemão qual o sistema que vamos usar. Isso dá-nos uma cor "base" sobre a qual podemos trabalhar. Cada um dos interlocutores tem uma cor secreta adicional, que mistura a essa cor base e envia para o outro. Todos os intermediários verão apenas a cor misturada - e embora também saibam a cor base do sistema, o problema é que se torna praticamente impossível "desmisturar" as cores misturadas, pelo que não é fácil saberem qual a cor secreta que cada um adicionou.
Quando a cor mistura chega ao destinatário, este adiciona novamente a sua cor secreta, e ambos ficam com uma última cor resultante da sua troca que poderão usar como chave para a encriptação que será usada na sua comunicação.
Traduzindo isto para a linguagem matemática, as cores base e secretas são números primos "gigantes", que embora sejam fáceis de multiplicar ("misturar") são incrivelmente difíceis de reverter tendo apenas o resultado. Daí se perceba o interesse daquelas notícias que de vez em quando surgem: "foi descoberto mais um número primo com "milhões" de dígitos!" que para os criptógrafos é logo motivo de festa...
Se quiserem dissecar mesmo ao pormenor e de forma "nua e crua", podem visitar este excelente post que relata o que se passa nos milisegundos iniciais de uma ligação HTTPS (que como poderão ver, é mesmo coisa recomendada só para quem gosta mesmo de "queimar neurónios").
E os sites chamados de fidedignos? Serão de confiança? Será que "autoridades" do tipo "VeriSign" e outros do mesmo tipo são mais confiáveis que um certificado auto-assinado? Será que não forneceram os certificados de todos os clientes à NSA? Na volta cabo por confiar mais num certificado auto-assinado do que num "garantido" de ter sido comunicado/vendido aos espiões...
ResponderEliminarNão querendo "deitar abaixo" o artigo, que está explicado com clareza e é pertinente nesta altura, acho que não tinha custado nada mencionar que o https assenta numa base frágil: as Certificate Authorities, como o João Silva alude acima.
ResponderEliminarO problema nem é saber se a VeriSign é confiável (IMO não é mas isso é outra guerra); o problema é que *qualquer* CA que seja considerado de confiança pelos browsers pode emitir certificados para *qualquer* domínio. Basta ver a lista de CAs autorizados em qualquer browser para ver que é simplesmente impossível confiar em todos, e com apenas um CA malicioso pode-se quebrar o sistema (associado a um ataque MITM -- https://www.schneier.com/blog/archives/2010/09/uae_man-in-the-.html). Portanto usar https não é garantia de privacidade, e isto devia ter sido mencionado no artigo.
Também teria sido útil recomendar a extensão HTTPS Everywhere: https://www.eff.org/https-everywhere
E eventualmente o papel do SSL Observatory (https://www.eff.org/observatory) na monitorização da qualidade dos certificados usados, para o qual podemos contribuir com a referida extensão.