A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Criptografia Numaboa

Algoritmo Posicional

Ter

7

Set

2004


22:00

(26 votos, média 4.00 de 5) 


A criação de um algoritmo criptográfico que fosse robusto o suficiente para ser considerado seguro, mas não o bastante para consumir demasiado processamento computacional nem aumentar muito o tamanho da informação a ser criptografada, foi o que levou [CHIARAMONTE e MORENO] a apresentarem e publicarem seu Algoritmo Posicional em 2001. A preocupação básica era a de criar um método seguro, rápido e que não exigisse chaves muito grandes mesmo que para isso fosse necessário aceitar uma menor segurança se comparada à proporcionada pelos algorítmos de chaves assimétricas. A simplicidade do método permitiu um ganho de tempo considerável ao processo de encriptação e desencriptação e, apesar de apresentar uma fraqueza para textos longos, pode ser considerado válido e eficiente para várias aplicações justificando a sua análise.

Analisando o algoritmo

Trata-se de um algoritmo de chave simétrica – portanto com todas as implicações e limitações que isso significa – e considerado pelos autores como uma melhoria da Cifra de César. Para evitar que a Análise de Freqüências fosse utilizada, os autores propuseram que a posição da letra no texto da mensagem influenciasse a sua codificação tornando-a, assim, numa cifra polialfabética.

O método se baseia na implementação de uma função polinomial, de coeficientes conhecidos somente entre o transmissor e os receptores da mensagem criptografada (Chave Privada), e na posição da letra no texto como variável da função, usando para tanto os valores numéricos de referência constantes na Tabela ASCII. O Algoritmo básico assim proposto permitiria que se obtivessem textos cifrados seguros, rápidos e sem o aumento de um byte sequer na informação bastando, para tanto, que todos os que quisessem ler a mensagem obtivessem acesso à chave com a qual ela fora cifrada.

Para exemplificar o uso do Algoritmo vamos apresentar uma versão reduzida, baseada em um polinômio-chave de grau 5:

f(x) = p0 x5 + p1 x4 + p2 x3 + p3 x2 + p4 x + p5

onde:

p0, p1, p2, p3, p4 e p5 são os coeficientes que formam a Chave Privada
X é a variável da posição da letra no texto da mensagem
Cifrando

Para exemplificar o processo vamos adotar a chave 1-5-1-2-7-1 (onde cada um dos números representa um dos coeficientes do polinômio acima: p0, p1, etc...) e codificar o texto VIKTORIA:

Posição (x)	1	2	3	4	5	6	7	8
Mensagem	V	I	K	T	O	R	I	A
ASCII [1]	86	73	75	84	79	82	73	65
f(x) [2]	17	143	715	2429	6461	14587	29303	53945
[3] = [1] + [2]	103	216	790	2513	6540	14669	29376	54010
[3] MOD 256	103	216	22	209	140	77	192	250
Texto cifrado	g	Ø		Ñ	Œ	M	À	Ú

OBS:

f(x) = 1.x5 + 5.x4 + 1.x3 + 2.x2 + 7.x + 1 onde f(1) = 17, f(2) = 143...

Os coeficientes do polinômio-chave podem ser quaisquer não nulos, mas o tamanho deles influencia somente o tamanho da chave, a complexidade do resultado obtido só depende do grau do polinômio.

Notar que a letra I se repete no corpo da mensagem, mas não no texto cifrado.

O processo é o mesmo para cada letra da mensagem, apenas se alterando o valor x do polinômio em função de sua posição no texto.

O tempo necessário para a quebra da chave de um polinômio de grau 5 pelo Método da Força Bruta foi calculado pelos autores com a fórmula: 600 + (256grau-3 x 386) e variou entre um mínimo de 7 horas a 74 dias.

Cabe ressaltar que quanto maior o grau do polinômio mais seguro será o método contra ataques do tipo Força Bruta para tentativa de descoberta da chave. Sabe-se que algoritmos do tipo RSA são considerados seguros no caso de chaves maiores do que 22048 e para o Algoritmo Posicional, que tem sua expressão na forma 256n+1 (onde n é o grau do polinômio-chave), isso se verifica com n = 255.

Decifrando

O processo inverso é obtido por meio da mesma chave (algoritmo simétrico) e das mesmas operações bastante simples de serem implementadas em qualquer microcomputador, informando-se agora o texto cifrado:

Posição (x)	1	2	3	4	5	6	7	8
Texto cifrado	g	Ø		Ñ	Œ	M	À	Ú
ASCII [1]	103	216	22	209	140	77	192	250
f(x) [2]	17	143	715	2429	6461	14587	29303	53945
[3] = [1] - [2]	86	73	-693	-2220	-6321	-14510	-29111	-53695
ASCII [1]	86	73	75	84	79	82	73	65
Mensagem	V	I	K	T	O	R	I	A
Criptoanálise

Como já foi ressaltado antes o Algoritmo da Substituição utiliza a função MOD 256 o que introduz 256 classes de equivalência das chaves a serem obtidas, todavia tal tarefa é dificultada com a adoção de polinômios de grau maior do que 1 de modo a se obterem níveis de segurança bastante eficientes com graus relativamente baixos (n = 255 – equivalente ao RSA com chave de 2048 bits). Percebe-se então que a abordagem pela Força Bruta não é a mais adequada nem a recomendada.

Mas vamos nos ater um pouco na afirmação de que o algoritmo apresentado trata-se de uma cifra polialfabética. [OLIVEIRA] verificou que a utilização da função MOD associada à ordem na qual o caracter aparece no texto cria condições efetivas para se tentar quebrar o código a partir da análise de frequências o que foi sistematizado por [SIMAS JR.] que constatou, na verdade, que tal artifício cria não uma cifra polialfabética, mas uma sucessão de 256 cifras monoalfabéticas distintas usadas rotacionalmente e, portanto, podem ter suas análises verificadas individualmente.

Conclusão

Apesar de ser um algorítmo muito simples e bastante resistente à análise pela Força Bruta, da forma como ele foi originalmente apresentado, a Análise de Freqüências apresenta resultados satisfatórios para quebra de sua segurança quando o texto cifrado apresenta uma grande quantidade de caracteres para ser analisada. Podemos deduzir que algo em torno de duas palavras para cada uma das 256 cadeias cifradas já seja suficiente para uma primeira investida contra o conteúdo encriptado do texto numa tentativa de descobrí-lo. Assim para textos da ordem de 5 x 29 bytes (2,5 Kb) o método ainda apresenta bons resultados.

Em vista disto, os autores propuseram medidas adicionais de segurança como a criação de uma chave secundária o que, todavia, aumentou muito o tempo de processamento, principal vantagem do método. Outras proteções estão sendo estudadas de modo a tornar o Algoritmo mais seguro para textos grandes e permitir que se tenha um ganho significativo de tempo para operações comerciais cotidianas.

Por se tratar de um algoritmo muito simples, facilmente implementável em qualquer microcomputador, e que apresenta resultados excelentes para textos de pequenas dimensões (menores do que 2,5 Kb) podendo ter sua segurança aumentada com o uso de ferramentas criativas dos criptologistas merece ser mais conhecido e estudado.

Fontes

  • Análise Sobre a Segurança do Algoritmo de Criptografia Posicional; SIMAS JR., Thales Evandro; Lavras – MG; 2002.
  • Criptografia POSICIONAL em Hardware (VHDL e FPGAs); CHIARAMONTE, Rodolfo Barros e MORENO, Edward David; Marília – SP; 2002.
  • Uma Análise da Segurança e da Eficiência do Algoritmo de Criptografia Posicional; OLIVEIRA, Mário Luiz Rodrigues; Lavras – MG; 2002.
  • Criptografia Posicional: Uma Solução para Segurança de Dados - CONCEITOS, EXEMPLOS E DESEMPENHO; CHIARAMONTE, Rodolfo Barros e MORENO, Edward David; Marília – SP; 2001.
  • Desempenho de um Algoritmo Posicional em Software e Hardware; CHIARAMONTE, Rodolfo Barros e MORENO, Edward David; Marília – SP; 2001.

Informações adicionais