quarta-feira, 19 de agosto de 2015

Pensando Sobre Matemática #27 - Bases da Criptografia

E estamos nós pensando em matemática novamente. Oh céus, isso nunca vai parar?


Me inspirei tanto que fiz a minha imagem no paint dessa vez!

Criptografia é uma coisa que existe desde a roma antiga. Muita gente já deve ter utilizado, mesmo sem saber o código de César que é uma coisa bastante simples. Vamos supor que você queira brigar na internet de forma criptografada, ou seja, você só vai falar com o caps lock ativado e não vai usar acento nenhum. Isso lhe dá as seguintes letras para serem usadas:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z

O código de César consiste em você mover a letra que você vai escrever alguns passos a frente no alfabeto, e isso obviamente é definido entre o remetente e o receptor. Então se você for escrever um "OI" com o código de César 1 vira "PJ". Bastante simples né? Por exemplo é fácil você decodificar a palavra abaixo dado que eu estou usando o código de César 3.

EDQDQD

Só que existe mais matemática do que você imagina nessa coisa toda aí. Tanta matemática que isso foi absorvido pela galera da matemática e existe um ramo dedicado exclusivamente à criptografia. E agora a gente vai entrar naquele jargão matemático um pouco mais profundo.

Pra você fazer uma criptografia útil você precisa transformar a mensagem de modo que quem venha a ler não consiga entender, e quem venha a ler tenha uma forma de destransformar a mensagem. Matemáticamente falando, nós vamos aplicar uma função em cima de uma mensagem e depois aplicar a inversa no elemento que foi gerado pela codificação. Ou seja, eu tenho uma função encriptar(Msg) e descriptar(Msg), e a relação entre elas é óbvia:

descriptar(encriptar(Msg)) = Msg

Mas como é que o computador faz isso?

O computador entende cada caracter como um número diferente. Então quando você utiliza a função encriptar você está efetivamente utilizando uma função sobre uma lista de números. A grande brincadeira é você utilizar a função para cada caracter da mensagem.

Legal e como você quebra a criptografia de alguma coisa? Bom existem diversas formas de quebrar uma criptografia, a melhor delas é obviamente conhecendo o método de criptografia que está sendo usado. Só que quando um método de criptografia é divulgado, todo mundo já está sabendo como ele funciona, como ele consegue ser forte mesmo assim?

Porque elas se baseiam em problemas muito complicados.

A criptografia RSA se baseia em fatoração de números primos. Parece fácil não é? Só que fatorar números grotescamente grandes se torna um trabalho horrendo. Agora imagine se o número for um produto de apenas dois primos com mais de 100 casas. Pois é, aí vive a força do RSA.

Esse é o básico da criptografia e você pode fazer coisas bastante simples que funcionam bastante bem. Se você quer codificar uma lista de inteiros, por exemplo, você pode multiplicar cada pedaço dele por 1001. O numeral 921 dessa forma fica:

900920021001

Um observador aleatório provavelmente não quebraria esse código se eu não tivesse divulgado o que está acontecendo.

Ufa! Acho que está bom! Boa sorte encriptando mensagens.

Nenhum comentário:

Postar um comentário