quinta-feira, 11 de setembro de 2008

Criptografia é Matemática (uma inocente visão)

Continuando a leitura(3º capítulo) do livro "O último teorema de Fermat", pude conhecer além das trágicas hitórias da vida de alguns matemáticos além de mulheres que ofereceram uma grande contribuição para a matemática mas não foram reconhecidas, o princípio de funcionamento da criptografia de chave pública e privada a partir dos estudos de Euler.

Imagine a chave como se fosse uma senha, senha essa usada para codificar e decodificar algum texto usando um determinado algoritmo(não importa qual algoritmo é usado nesta explicação).

Segundo o livro conta, os matemáticos procuravam uma forma de criar 2 chaves, a primeira que fosse fácil de criar e a segunda, baseada na primeira, que fosse quase impossível de ser recriada / deduzida.

A segunda chave, a pública(onde todos podem saber), seria usada para gerar um texto codificado(ainda não importa o algoritmo usado) no qual somente quem detem a primeira chave poderia decodificá-la.

Como gerar essas chaves?
Vejamos um exemplo:
Escolhemos 2 números: 5 e 17
Multiplicamos eles entre si : 5 x 17 = 85

O número 85 seria a chave pública divulgada e o 5 e 17 (que juntas geram o 85) seria a chave privada (somente o dono a possui).

Então neste momento podemos deduzir a partir do número 85 qual seria os 2 números que multiplicados entre si se igualasse a 85 (é claro que você deve considerar que não conhece a chave privada que foi citada acima)?

Existem algumas possibilidades além da chave original 5 e 17.

A quantidade de possibilidades de combinações mostra o quanto uma chave(privada) pode ser forte (capacidade de deduzí-la através de tentativa e erro), quanto maior o número maior a possibilidade.

É claro que não utilizariamos números pequenos numa aplicação real, mas números muito grandes com 80 a 100 digitos(por exemplo, é claro que pode ser maior) cada um dos 2 termos da multiplicação(chave privada).

E para dificultar mais ainda usaríamos números primos, ou seja, teríamos que computar primeiros os 2 números primos grandes antes de efetuar a multiplicação e gerar a chave pública.

Números primos tão grandes assim poderiam fazer com que sistemas computacionais levasse anos para descobrir qual combinação de 2 primos muito grandes multiplicados dão como resultado a chave pública por tentativa e erro.

E ainda segundo o texto, essa chave poderia ser alterada frequentemente(a cada ano por exemplo), para que desmotive quem esteja tentando calcular, via tentativa e erro, a chave privada a partir da pública, forçando-o a iniciar novamente todo o processo.

Essa dificuldade se dá pelo fato das características dos números primos, que são números divisíveis por 1 e por ele mesmo apenas.

Provavelmente devem existir algumas formas de acelerar estas buscas, como por exemplo, uma catalogação dos números primos, ou algum outro método que desconheço.

Bom, dadas a minhas humildes experiências com criptografia e seus métodos atuais de funcionamento e matemáticos, esse é minha pequena contribuição para os interessados nesse assunto.

Até a próxima !