Se ainda não instalou este programa, clique aqui, baixe e instale:

download

Sobre Criptografia e Autenticação Digital

Notas do Autor Rudolfo Horner Jr

(É permitida a distribuição deste texto, em parte ou em todo o seu teor, desde que citado o autor).

De forma bem sintética, a criptografia consiste no recurso necessário para transmitir uma mensagem de forma que ela somente possa ser lida pelo seu Destinatário e sem que ela possa ser compreendida por terceiros que venham a intercepta-la.

Este tema já rendeu muitas lendas e histórias ao longo da trajetória humana, contando, entre outras, com episódios muito interessantes que incluem a vida, loucura e suicídio do inglês Allan Turing, decifrador das mensagens geradas pelas máquinas Enigma alemães durante a Segunda Guerra Mundial.

Os algoritmos por meio dos quais se executa a Criptografia podem ser ditos Simétricos ou Assimétricos. Na ação criptográfica existe um elemento que é a Mensagem propriamente dita e a Chave que consiste no segredo por meio do qual a Mensagem pode ser Cifrada ou Decifrada. São ditos Simétricos os algoritmos criptográficos onde a mesma Chave pode ser usada tanto para cifrar como para decifrar a Mensagem.

O algoritmo de criptografia simétrica mais rudimentar consiste na Substituição das letras e símbolos da Mensagem. Neste caso substitui-se cada letra da mensagem original por outra letra ou símbolo de acordo com uma regra fixa. Este algoritmo é considerado muito fraco e inseguro pois é possível descobrir a regra e decifrar a Mensagem apenas com base na freqüência estatística da ocorrência de cada símbolo substituído na mensagem cifrada e que certamente será a mesma freqüência existente de cada letra na língua escrita. Então, logo que se desvendam alguns símbolos iniciais, todo o esquema desmorona como uma queda de dominós em seqüência.

Um segundo algoritmo simétrico bem melhor e mais seguro também consiste em substituir as letras por outras, todavia com um aprimoramento que cuida de substituir cada letra por uma outra em que se considere também a posição de cada uma das letras dentro da mensagem.Neste caso, desde que a tabela de substituição, ou Chave Criptográfica Simétrica, seja suficientemente aleatória, este esquema impede a abordagem de tentar decifrar a Mensagem codificada com base no critério estatístico de freqüência típica das letras e símbolos da linguagem.

Todavia ainda permanece um problema grave que é a necessidade de que ambos, tanto o Emissor da Mensagem quanto o seu Receptor saibam qual é e como funciona a Chave Criptográfica. Esta é a grande fragilidade dos sistemas criptográficos simétricos. E a necessidade de troca e divulgação desta Chave Criptográfica, fundamental para o funcionamento do processo e que sempre terá de ser feito de forma absolutamente restrita e seletiva, também sempre estará sujeito a ser captado por terceiros interessados em roubar a informação transmitida por meio dele. Ora, se furtada a Chave Criptográfica, ou captada durante a combinação, cifrar as mensagens é inútil! Qualquer um que possua a Chave poderá decifrar e ler o conteúdo de todas as mensagens transmitidas. Neste caso a segurança somente será restabelecida se o Receptor e o Emissor combinarem uma nova Chave a utilizar. Porém, como combinar uma nova Chave com segurança se eles podem estar sendo ouvidos por terceiros espiões?

Bem, então entre os anos de 1976 e 1977, os matemáticos Rivest, Shamir e Adleman demonstraram um teorema que oferece a base para um novo esquema de criptografia, denominado algoritmo RSA.

Ele é um algoritmo diferente e inovador, dito Assimétrico. Sua força está na grande capacidade de embaralhar as mensagens, também, sobretudo por ele não necessitar de uma combinação entre o Emissor e o Receptor de Chaves a serem aplicadas o que exime o risco de que a própria chave criptográfica possa ser espionada e identificada durante a sua transmissão.Neste caso não existe mais uma única Chave Criptográfica, mas existem Duas Chaves!

Existe uma Chave para cifrar e outra chave para decifrar. A Chave para cifrar pode ser mostrada sem restrições a qualquer pessoa. Apenas a Chave para decifrar necessita e é mantida em segredo. O Receptor das mensagens, a partir de dois números primos quaisquer que ele venha a escolher, pode criar estas duas Chaves, que são ditas Chave Pública e Chave Privada. Em seguida ele retém em segredo a Chave Privada e informa, sem restrições ou perigos, a sua Chave Pública.

O Emitente deve saber qual é a Chave Pública do Receptor ao qual ele pretende escrever. Todavia não é necessário preservar esta Chave Pública em segredo sendo que qualquer um pode conhece-la. Mesmo aqueles que estão espionando o canal de comunicação.

De acordo com o Teorema e devido a certas propriedades aritméticas, a Chave Pública somente serve para cifrar as mensagens, porém é incapaz de decifra-las. Quando o Emissor vai enviar uma Mensagem ao Receptor ele submete esta mensagem a um processo de cifragem baseado na Chave Pública que o seu Receptor havia informado. A mensagem cifrada desta forma pode ser enviada com segurança pelo canal de comunicação. Uma vez cifrada, não é possível retornar à mensagem original mesmo contando-se com a Chave Pública que tiver sido utilizada no processo. Quando a mensagem cifrada chega ao Receptor, para decifra-la, basta que ele repita o mesmo processo executado na cifragem, porém, desta vez, utilizando-se a sua Chave Privada que ficou preservada em segredo.

Quando geradas, a Chave Pública e a Chave Privada são calculadas e feitas complementares entre si. O que uma cifra a outra decifra e vice-versa. Mas somente uma delas é apresentada em público de forma que somente seja possível usa-la em um único sentido. É claro que no caso de uma resposta da primeira mensagem ao Emissor original, invertendo-se os papéis de Emissor e Receptor, neste caso a cifragem utilizará o mesmo algortimo assimétrico, porém serão utilizadas as Chaves Públicas e Privadas não mais do primeiro Receptor, mas as do Emissor original. Isto é, cada elemento do processo de comunicação possui as suas próprias Chaves Públicas e Privadas..

Existem algoritmos e métodos simples para estabelecer Chaves Públicas e Privadas que podem ser adotados por quaisquer pessoas interessadas em criptografia. Como citado anteriormente, a forma de criar a Chave Pública e a Chave Privada correspondente são baseados em números inteiros e primos, aqueles que somente são divisíveis por 1 e por eles próprios. Como existem infinitos números primos e como qualquer combinação de dois deles ainda pode dar origem a infinitas Chaves Públicas e Privadas, torna-se muito improvável que alguém possa descobrir a Chave Privada a partir da Chave Pública.

Quando os números primos iniciais escolhidos para a geração das chaves são números pequenos existe maior possibilidade de que a criptografia possa ser quebrada. Todavia quando a geração das chaves escolher números primos grandes a quantidade de combinações torna-se tão astronomicamente imensa que o sistema de torna-se muito seguro e é bastante improvável que o código possa ser quebrado.

Desta forma a criptografia assimétrica é mais segura a medida em que se utilizam chaves grandes. A dimensão das chaves é normalmente especificada pelo seu número de bits. É comum que sejam aplicadas chaves de 128 bits, 512 bits, 1024 ou 2048 bits.

Cada uma das Chaves, após terem sido geradas, sejam elas Públicas ou Privadas, consistem simplesmente, cada chave, em dois pares de números inteiros. O primeiro número deste par é chamado Expoente da Chave e o segundo é chamado de Módulo da Chave.

Tendo em vista que a uma Chave Pública corresponde uma Chave Privada, a geração das chaves faz com que, ao final, o Módulo da Chave Pública seja o mesmo que o Módulo da Chave Privada. Cifrar um certo símbolo é feito de forma bastante simples utilizando operações aritméticas básicas: Pega-se o número correspondente a letra que será cifrada, eleva-se este número ao Expoente da Chave. Em seguida, com o resultado, realiza-se uma divisão inteira pelo Módulo da Chave. O resto desta divisão corresponde ao número original na sua forma cifrada. Repete-se este processo para cada letra da mensagem original e gera-se a mensagem cifrada correspondente. A Chave Pública utilizada neste processo, composta pelo Expoente e pelo Módulo não é capaz de reverter o processo e voltar a Mensagem Original.

Devido a uma certa benesse da ciência matemática demonstrada no teorema original, caso este código cifrado seja novamente submetido ao mesmo processo de elevar-se ao Expoente e pegar-se o Resto de sua divisão inteira pelo Módulo, todavia desta vez usando não mais na Chave Pública, mas na Chave Privada correspondente, o resultado será a própria Mensagem Original permitindo que ela possa ser lida pelo Receptor.

Como exemplo, digamos que se queira codificar a letra "R". Esta é a décima oitava letra do alfabeto e desta forma vamos assumir que ela tem o valor 18. Bem, para criar um exemplo bem simples, digamos que, uma vez executado o processo necessário para gerar as Chaves Públicas e Privadas, que é simples, mas que não será explicado aqui, tenhamos chegado a uma chave Pública com Expoente 3 e Módulo 33 e uma chave Privada com Expoente 7 e Módulo 33. Estas chaves são diretamente extraídas do processo de geração de chaves e são complementares entre si.

Vamos então criptografar a letra "R", usando a Chave Pública, temos 18 elevado a 3, igual a 5832, aí fazemos o módulo, a divisão inteira por 33. Dá 24. É como se a letra "R" tenha se transformado na letra "X", após a aplicação da Chave Pública. De fato, "X" é a vigésima quarta letra do alfabeto. E não dá para voltar este "X" ao "R" original usando a Chave Pública que acabou de ser aplicada.

Para fazer o caminho de volta é necessário aplicar a Chave Privada. Vamos lá: 24 elevado a 7, igual a 4586471424, fazendo a divisão inteira pelo módulo 33, temos novamente o 18 que é o "R" original. Mas somente foi possível retornar a mensagem original porque sabíamos a chave Privada, a que no caso possui expoente igual a 7.

É deste modo que funciona, aquele que pretende receber mensagens criptografadas gera as chaves, guarda a Privada para si e informa aos demais a Pública. Desta forma somente ele será capaz de desvendar as mensagens que tenham sido escritas para ele.

Naturalmente o exemplo citado é banal, didático, e as chaves realmente aplicadas na prática possuem imensos números inteiros em seus Expoentes e Módulos.

Não bastasse o recurso de criptografar desta forma, quando visto pelo outro lado a engenhosidade do processo assimétrico guarda ainda uma outra grande vantagem adicional que não se refere diretamente a Criptografia, mas ao que se chama Autenticação Digital.

Trata-se de uma forma de publicar uma certa Mensagem e assegurar de que o seu conteúdo foi realmente emitido por uma certa Origem. Digamos que um certo órgão público, banco ou indústria de software queira publicar um arquivo e assegurar a todos que venham a recebe-lo que aquela Mensagem, Programa ou Documento não é falso ou foi adulterado por terceiros. Neste caso, esta Origem emissora, devidamente possuidora de sua Chave Privada, trata de cifrar a Mensagem com esta sua Chave Privada e levar o resultado obtido ao público. Como esta Origem tem também publicada a sua Chave Pública, caso a Mensagem possa ser lida e interpretada após sofrer aplicação desta Chave Pública fica certificada que foi ela mesmo que a emitiu. Este segundo recurso oferecido pela Criptografia Assimétrica é chamado Assinatura Digital.