Certificados SSL – o que são e como funcionam

É frequente ouvir-se falar em certificados de segurança quando o assunto são páginas onde o sigilo dos dados trocados é da mais extrema importância. Sites de eBanking ou Lojas Online têm frequentemente este sistema de forma a proteger os dados dos clientes.

Para além de protegerem realmente informação trocada, estes certificados dão confiança aos utilizadores no momento de colocarem os seus dados sensíveis na Internet, como informação do seu cartão de crédito.

Neste artigo, explicarei como funciona este sistema de segurança com duas abordagens: uma mais simples, acessível a todos, e uma mais complexa, para os mais curiosos.

Keeping it Simple

Um certificado SSL é utilizado para estabelecer um “túnel” seguro entre 2 pontos: o utilizador e o site. Quando colocamos informação importante num website, é necessário tornar essa troca de dados segura e privada.

As mensagens são codificadas de forma a que quem esteja à escuta não consiga ter acesso aos dados, sendo estes descodificados ao chegar ao destino. Esta codificação é feita utilizando processos matemáticos de tal modo complicados quer seriam necessários milhares de anos para descodificá-los.

A atribuição de certificados válidos é realizada por Entidades de Certificação, como a Verisign (existem cerca de 36 em todo o mundo), mas é normalmente revendida por terceiros de confiança. Assim, vai sendo criada uma árvore de confiança, liderada pelas Entidades de Certificação.

Depois de se fazer a instalação do certificado no site, todas as comunicações passam a ser seguras. Normalmente os browsers identificam estes websites através de um ícone na barra de endereço, ou alterando a cor da mesma.

URL de um site que usa um Certificado SSL

URL de um site que usa um Certificado SSL

Como funciona

O sistema de certificados SSL utiliza uma codificação baseada em 2 pares de chaves públicas e privadas. Os websites com certificados têm uma chave privada que apenas eles conhecem e uma chave pública, conhecida por todos. O mesmo acontece para o browser de quem acede através de https a estes sites.

Uma mensagem ao ser codificada com uma das chaves públicas só poderá ser descodificada com a chave privada correspondente. O inverso também acontece: uma mensagem codificada com uma chave privada só pode ser descodificada com a chave pública correspondente.

Isto permite uma coisa muito interessante: ao codificarmos uma mensagem com a chave pública do destinatário, apenas o destinatário a poderá descodificar com a sua chave privada. Asseguramos o sigilo, desde que a chave privada não seja comprometida.

Imaginando que um cliente se chama Alice e o website é do Bob, uma interacção utilizando SSL seria assim:

-Alice obtém a chave pública de Bob, e Bob obtém a chave pública de Alice
-Alice codifica uma mensagem com a chave pública de Bob
-Bob recebe a mensagem codificada e descodifica-a utilizando a sua chave privada
-Bob lê o pedido de Alice e responde, codificando a sua resposta com a chave pública de Alice
-Alice recebe a resposta e descodifica-a utilizando a sua chave privada

Supondo que havia alguém a tentar escutar a comunicação, seria impossível descodificar qualquer uma das mensagens, pois só podem ser descodificadas com as chaves privadas de cada interveniente.

O algoritmo descrito é o RSA e é utilizado para iniciar a comunicação (handshake). Visto que a codificação/descodificação utilizando o RSA é um processo mais lento que outros algoritmos, a partir dessa primeira comunicação é escolhido um protocolo menos pesado de chave simétrica. Utilizando a técnica dos 2 pares de chaves (chaves assimétricas) é partilhada uma nova chave que será utilizada doravante para codificar e descodificar as mensagens utilizando um algoritmo de codificação mais rápido (DES, DSA, etc).

Complicando um pouco: Mecanismo de Encriptação

Mas se a mensagem que é codificada pela chave pública consegue ser descodificada pela sua chave privada, e vice-versa, significa que há uma ligação entre elas. E conhecendo o algoritmo que gera uma chave, em teoria seria possível descobrir as chaves privadas sabendo as públicas, certo? Actualmente não.

Tal como mencionado anteriormente, são utilizados processos matemáticos complexos que impedem a descoberta de uma chave a partir do seu par:

  1. São escolhidos 2 números primos pq com, pelo menos, 100 algarismos
  2. É calculado n = p * q
  3. É calculado z = (p-1) * (q-1)
  4. Encontra-se um valor para e, primo relativo de z e menor que o próprio z
  5. Calcular d tal que d.e = 1 mod n

Após descobertos todos estes números, obtém-se a chave pública e privada:

-Chave pública: (e,n)
-Chave privada: (d,n)

Cada chave consiste num par de números e podem agora ser usadas para cifrar e decifrar as mensagens, da seguinte maneira (exemplo para cifra com chave privada e decifra com chave pública):

-Cifra = Mensagem^d mod n
-Mensagem =  Cifra^e mod n

A complexidade aqui está no uso de números extremamente grandes e no ser necessário factorizar os mesmos para conseguir inverter o algoritmo, chegando à chave privada através da pública. Este é um processo computacionalmente intensivo, que demoraria milhares de anos a efectuar com a tecnologia actual.

Protecção para o Futuro?

De acordo com a Lei de Moore, o poder computacional duplica a cada dois anos. Esta “lei” tem-se vindo a comprovar com o passar do tempo, o que significa que cada vez se vai tornando mais realista a quebra deste tipo de algoritmos em tempo útil. Para ajudar, especialistas dizem que a chegada da Computação Quântica tornará estes processos triviais.

Todos estes factores implicam uma alteração nos algoritmos existentes (por exemplo o uso de chaves maiores) ou a criação de novos, que tornem as comunicações seguras por mais algum tempo.

Apesar destes futuros desafios, nos tempos que correm esta é, sem dúvida, uma maneira totalmente segura de garantir o sigilo e a autenticidade na troca de dados, pelo que deverá ser ponderado o uso desta tecnologia na protecção de sites abordem questões onde a segurança da informação é importante.

Sobre o Autor
Author Image
Miguel Duarte é o responsável pelo Departamento de eLojas e Programação PTWS. Além da instalação, configuração e customização das lojas online, desenvolve módulos, programas e scripts para diversos ambientes web. Encontra-se a a iniciar o Mestrado em Engenharia Informática no ISCTE.
Pode deixar um comentário, ou responder no seu blog.

Deixe a sua opinião