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").


2 comentários:

  1. 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...

    ResponderEliminar
  2. Nã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.

    O 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.

    ResponderEliminar