Parte II - Criptografia Assimétrica

Na parte I desta série comentei alguns aspectos básicos sobre criptografia. Falei de maneira mais simples possível o que é criptografia e como ela é realizada. Terminei falando sobre a questão da chave, e a sua importância, e introduzi brevemente a questão da criptoanálise.

Nesta segunda parte o objetivo é entender o conceito de um tipo especial de criptografia: a criptografia assimétrica. Antes de iniciar a leitura, tenha certeza de ter entendido os conceitos da parte I.

O problema das chaves

Não sei se você parou pra pensar, mas a chave é um problema. Se você quer cifrar uma mensagem, passar ela para outra pessoa, e quer que ela possa decifrar a mensagem, você precisa passar a chave pra essa pessoa. E se você está cifrando o texto, quer dizer que você quer que aquela pessoa possa ler a mensagem, mais ninguém.

A questão óbvia é: como vou enviar a chave de maneira segura? Mandar ela junto com a mensagem, em anexo, não dá: qualquer pessoa que tiver acesso no meio do caminho vai poder ler a mensagem, pois tem a chave e a mensagem. Talvez então telefonar e falar a chave? Se o telefone é seguro, por que não fala a mensagem pelo telefone de uma vez?
A mesma pergunta vale para todo outro meio que você tentar imaginar. Como é possível resolver este dilema?

A criptografia simétrica, que é essa aí onde você combina uma única chave que é conhecida pelas duas pessoas, é sim muito utilizada. Mas antes de começar a falar como se faz, afinal, pra combinar essas chaves de maneira segura, vou falar sobre outro tipo de criptografia. A criptografia assimétrica!!!

Criptografia Assimétrica

Não seria bom se, quando eu quero cifrar um texto pra você, você pudesse me falar sua chave publicamente, por exemplo colocar ela no seu site? A criptografia assimétrica permite isso. A ideia básica é a seguinte: através de uma série de artifícios matemáticos (envolvendo por exemplo fatoração de números primos), é possível fazer criptografia com duas chaves. Uma, você guarda pra você, e chama de chave privada. A outra, você fala pra todo mundo, e chama de chave pública. Existem métodos de gerar essas chaves, de forma que vão acontecer três coisas muito interessantes:

  • Se você cifrar algo usando a chave privada, a chave pública pode decifrar o código gerado. Ou seja, se você usar sua chave privada para cifrar uma mensagem, todo mundo vai poder decifrá-la! Isso pode parecer inútil pra você neste momento, mas no próximo artigo, vou mostrar a utilidade disso.
  • Se você cifrar algo usando a chave pública, a chave privada pode decifrar o código gerado. Agora sim! Se você percebeu, todos tem acesso à sua chave pública, não apenas você! Ou seja, todos podem cifrar mensagens que só você pode abrir!
  • E, como não poderia deixar de ser, é impossível descobrir qual é a chave privada tendo apenas acesso à chave pública. Como não pretendo entrar em detalhes, apenas aceite que, usando bons métodos de geração de chaves, isso é verdade.

Ou seja, basta cada pessoa gerar um par de chaves, contar a sua chave pública pra todo mundo, e nossos problemas acabaram! É claro, existem várias coisas que devem ser observadas, e gerar estas chaves não é algo tão simples assim (é simples suficiente pra qualquer computador caseiro fazer em poucos segundos). Mas é possível e é assim que funcionam muitos dos sistemas de criptografia modernos. A figura abaixo ilustra o processo de cifragem e decifragem com criptografia assimétrica:

E a criptografia simétrica?

Agora você pode estar perguntando: por que, então, ainda se usa criptografia simétrica?

Antes vamos voltar a pergunta que eu lhe fiz antes: "Por que você não fala a mensagem pelo telefone?". Talvez você tenha pensado que existem meios de enviar a chave que são seguros e valem a pena, pois precisam ser feitos apenas uma vez, e depois os lados tem a chave e podem trocar quanta informação quiserem. Por exemplo, você poderia ir pessoalmente até a casa do seu amigo, entregá-lo a chave, e depois trocar dados tranquilamente pelas semanas, meses ou anos seguintes. Custou caro (combustível, tempo, etc.) combinar a chave, mas valeu a pena considerando a quantidade de dados que foi trocada de maneira segura depois.

Esta situação hipotética explica a pergunta introduzida nessa sessão. A resposta para o fato de usarmos ainda hoje criptografia simétrica é simples: ela é muito mais barata. E quando nos referimos a algo ser barato em computação, estamos falando principalmente de ser rápido e eficiente.

Se você precisa cifrar milhões de dados, não vai querer usar a criptografia assimétrica. É muito mais lenta, muito mais pesada. Você já tem um indício disso pelo próprio tamanho das chaves. Uma cifra simétrica (AES) é muito segura com chaves de 256 bits, mas uma cifra assimétrica (RSA), para obter uma segurança equivalente, necessita de chaves de 2048 bits!

Mas como no exemplo citado, que tal usar a criptografia assimétrica pra combinar uma chave, e depois usar de novo criptografia simétrica para cifrar seus dados? Se a criptografia assimétrica é “cara”, use ela só pro que interessa, ou seja, cifrar com a chave pública da pessoa com quem você quer se comunicar uma quantidade pequena de informações: uma chave simétrica. Depois que ambos conhecem a chave simétrica, pronto, use ela para trocar dados sigilosos.

É baseado nessa idéia que funciona, entre muitas outras coisas, o sistema de “sites seguros”, aqueles com https e “cadeado”. Por exemplo os sites de bancos virtuais.

Considerações Finais

Com este artigo, você deve ter obtido uma noção básica do funcionamento da criptografia assimétrica. Tenha certeza de ter compreendido, pelo menos, a diferença entre a criptografia simétrica e assimétrica, e como ambas são utilizadas. Se tiver dúvidas, entre em contato!

No próximo artigo, agora que temos um pouco de noção dos dois principais modos de criptografia, farei uma abordagem um pouco mais prática, explicando uma das aplicações de criptografia mais utilizadas: a assinatura digital.

Comments