Criptografia Cesar, Vigenère e RC4 em Excel

Neste post veremos como fazer criptografia básica no Excel.

Baixe a planilha grátis e criptografe mensagens usando três métodos tradicionais: RC4, Vigenère e César.

Cesar

A criptografia de Cesar é, provavelmente, a mais antiga e conhecida. Era usada pelo imperador Júlio Cesar há dois mil anos para trocar mensagens sigilosas com seus generais durante as guerras. Isso nos mostra que desde os primórdios a criptografia é uma técnica de interesse militar.

Simples para os dias atuais, a cifra de Cesar é um algoritmo de substituição, em que um caractere é trocado por outro definido a partir de um deslocamento na lista de caracteres. Por exemplo, se for adotado o deslocamento 1, o caractere A será substituído pelo caractere B que corresponde ao deslocamento de uma posição na sequência de letras do alfabeto romano. A lista é circular, então, a letra Z é substituída por A.

Para decifrar a mensagem encriptada basta aplicar o mesmo deslocamento usado para a cifragem, só mudando as posições no sentido oposto.

Cifra de substituição e deslocamento

A cifra de César não é difícil de quebrar desde que se conheça o método. Por tentativas o hacker pode ir testando deslocamentos até obter uma mensagem em linguagem natural. Para reduzir o risco seria preciso combinar o algoritmo de Cesar com algum método adicional, como por exemplo, embaralhar os caracteres em uma ordem diferente da tradicional ordem alfabética.

A cifra de Cesar tradicional é composta pelas 26 letras maiúsculas do alfabeto romano, mas, em nossa planilha adotamos uma lista mais extensa com 128 caracteres, o que abrange a maioria dos caracteres da nossa escrita.

Reversibilidade

Uma característica notável da criptografia Cesar é que existe um deslocamento que torna o processo reversível, ou seja, aplicando o algoritmo à mensagem cifrada, recupera-se a mensagem plana original. Na cifra tradicional com 26 caracteres o deslocamento 13 gera a reversibilidade. Em nosso encriptador com 128 caracteres o deslocamento 64 é reversível.

Vigenère

A cifra de Vigenère foi criada em 1553 por Giovan Battista Bellaso, mas leva o nome de Blaise de Vigenère que na verdade desenvolveu uma versão do método. Trata-se de um algoritmo de substituição onde cada caractere da mensagem plana original é trocado por outro que é definido a partir de uma chave escolhida por quem deseja criptografar a mensagem.

encriptador vigenere

O método Vigenère pode ser entendido como uma evolução da cifra de Cesar em que o deslocamento do caractere na tabela é ditado pela chave escolhida. Relembrando: na cifra de Cesar cada caractere da mensagem original é deslocado um número de casas no alfabeto. Por exemplo: se o deslocamento for 2, então A é substituído por C que está duas casas adiante de A no alfabeto romano. No método de Vigenére o deslocamento é dado pelo caractere correspondente da chave.

Como criptografar mensagens pela cifra Vigenère

Comece escolhendo uma chave. Por exemplo: abracadabra.

Converta a mensagem original e a chave em números da tabela de caracteres. Por exemplo:

M e n s a g e m s e c r e t a .
13 31 40 45 27 33 31 39 107 45 31 29 44 31 46 27 121

a b r a c a d a b r a
27 28 44 27 29 27 30 27 28 44 27

Se a chave for menor que a mensagem repita a chave até que alcance o comprimento da mensagem a ser cifrada.

Alinhe os caracteres da mensagem e da chave e vá somando os códigos correspondentes. O resultado da soma deve ser dividido pelo número total de caracteres permitidos. O resto dessa divisão é o código do caractere substituto. Em nossa planilha dividimos por 128 que é o total de caracteres de nossa tabela. Na cifra original eram usados apenas as 26 letras maiúsculas do alfabeto romano.

código substituto = (código original + código da chave) MOD 128

Cifra Vigenère

A decifragem segue o mesmo processo, só que em vez de somar os códigos subtraímos o código da chave.

Segurança da cifra

Por séculos a cifra Vigenère foi considerada indecifrável, até que surgiram algumas abordagens que permitem quebra-la. Em uma mensagem codificada longa, um hacker talvez perceba algumas repetições de caracteres. Usando análise estatística ele pode identificar os caracteres que se repetem mais e assim associa-los com os caracteres mais usados na linguagem comum. Assim, com paciência e senso de observação é possível imaginar o tamanho da chave usada e se aproximar aos poucos da mensagem original. As dicas para quem usa a cifra de Vigenere são usar chaves longas, trocar a chave com frequência e evitar mensagens longas.

RC4

O algoritmo RC4 foi desenvolvido em 1987 por Ronald Rivest para a empresa RSA Data Security e foi o algoritmo mais usado pela indústria da Informática por vários anos. É um algoritmo de chave simétrica, ou seja, a mesma chave é usada para codificar e decodificar. Além disso, é reversível, pois se a mensagem codificada for passada novamente pelo algoritmo gera a mensagem plana original. A seguir, veja a sequência para implantar uma versão simplificada do algoritmo no Excel.

RC4

O primeiro passo do processo é converter cada caractere da mensagem e da chave em um número entre 1 e 256. Na planilha adotamos uma tabela própria de conversão com 256 caracteres imprimíveis mais comuns. O algoritmo RCA tem duas etapas conhecidas como KSA e PRGA.

Etapa KSA

Na primeira etapa são geradas duas matrizes (T e S) cada uma com 256 células. A matriz T é gerada preenchendo sequencialmente as células com a chave já convertida em números. Veja o exemplo a seguir onde aplicamos a chave “misterio” na matriz T primeiro em texto e depois com códigos numéricos.

Matriz T em texto
Matriz T numérica

Definida a matriz T, o próximo passo é gerar a matriz S. Inicialmente, essa matriz é preenchida com uma sequência ordenada de números de 0 a 255 como se vê na tabela a seguir.

Os números da matriz S serão embaralhados de forma pseudo aleatória. Como assim? Vamos trocar os números de lugar dois a dois, mas essa permuta de posições depende da matriz T.

A permuta de posições é feita em uma rotina de 256 ciclos. Começa na posição 1 e vai até a posição 256. No primeiro ciclo fazemos a permuta de valores da célula 1 com o valor de outra célula que é definida pela fórmula a seguir:

j = (j + S[i] + T[i])mod 256

Lemos assim: No ciclo i, a posição j é igual à posição j anterior somada com o conteúdo da célula i da matriz S mais o conteúdo da célula i da matriz T. O resultado da soma é dividido por 256 e consideramos o resto da divisão.

Com esse algoritmo geramos a matriz S final que é única para cada chave usada. Essa matriz pseudo aleatória ajudará na segunda parte do algoritmo onde efetivamente ocorre a criptografia. Veja como fica a matriz S final embaralhada pela chave “misterio”.

Matriz S final

Etapa PRGA

Essa é a etapa em que a mensagem é codificada. Os “ingredientes” do algoritmo são a mensagem plana e a matriz S final. O algoritmo é executado k vezes onde k é o número de caracteres da mensagem.

Nessa etapa também ocorre permuta de posições na matriz S. A cada ciclo a célula i é permutada com a célula j.

i e j são iniciados com valor zero.

i = (i + 1) mod 256

j = (j + S(i)) mod 256

Em seguida, é definida uma posição t pela fórmula:

t =( S(i) + S(j)) mod 256

O valor encontrado na posição t será usado no último passo do algoritmo. Faremos a operação lógica XOR binário entre S(t) e o caractere plano da mensagem. A tabela abaixo mostra um exemplo da operação.

XOR binário

A operação XOR (OU exclusivo) realizada sobre os números convertidos para binários é que garante a reversibilidade do algoritmo. Veja que no exemplo caractere plano 85 é substituído pelo caractere 233 codificado. Se passarmos o caractere 233 novamente pelo algoritmo RC4 chegaremos na última etapa com as posições invertidas: 233 na segunda linha e 85 na terceira.

Autor: Radamés

Engenheiro curitibano pela UFPR, professor e produtor de conteúdos e ferramentas educacionais para a Internet.

Sua opinião me interessa