Sei sulla pagina 1di 8

CCMN

Computação

Hugo Bevilaqua

Universidade Federal do Rio de Janeiro –


UFRJ

Dissertação - Cifra de Vinegère

Rio de Janeiro
2016
Hugo Bevilaqua

Universidade Federal do Rio de Janeiro – UFRJ

Dissertação apresentada ao curso de


Números Inteiros e Criptografia,
como parte dos requisitos
necessários à obtenção
da nota final.

Orientador: Professor Luis Menasché

Rio de Janeiro
2016
1 - Introdução
A Cifra de Vigenère é um método polialfabético de codificação textual privada pré-
computação que pode ser resumido simplisticamente como um conjunto de Cifras de César
interlaçadas, encriptadas por meio de uma palavra-chave. Embora a legitimidade da autoria
da cifra seja questionável, a mesma foi atribuída a Blaise de Vigenère e, erroneamente, por
mais de dois séculos considerada inquebrável, obtendo o apelido de "le chiffre indéchiffrable".
Ainda que amplamente conhecida pelo nome de Vigenère, a cifra resultou (assim
como inúmeras outras grandes invenções humanas) da sobreposição de décadas de trabalho
no campo, sendo necessário um breve conhecimento de sua história para total entendimento
do assunto a ser descrito em páginas seguintes e detalhes relacionados.
Leon Battista Alberti e Johannes Trithemius, criptógrafos do final do século XV, podem
ser metaforicamente considerados progenitores da Cifra de Vigenère, sendo cada um criador
independente de um componente crítico do método. Enquanto Alberti é creditado com a
invenção da primeira cifra polialfabética documentada, Trithemius descreveu a tabula recta,
uma tabela alfabética quadrada de lado 26 onde cada linha ou coluna é equivalente à anterior
deslocada por 1; uma ferramenta de visualização de deslocamento alfabético com auxílio de
cruzamento de coordenadas.
Já no século XVI, Giovan Battista Bellaso concebeu um sistema polialfabético
fundamentado na tabula recta, que diferia de cifras já desenvolvidas por Alberti e Trithemius
em sua importante ausência de substituições fixas. Presente uma keyword que
proporcionasse mudança no deslocamento alfabético toda letra, segurança seria necessária
somente à chave. Esta cifra de Bellaso, notável por comparativa segurança, seria futuramente
conhecida por um nome errôneo. Vigenère concebeu uma cifra semelhante e mais forte
poucas décadas após Bellaso. Em séculos seguintes essa semelhança levou a um erro de
nomenclatura, e a cifra descrita por Bellaso tornou-se o que hoje conhece-se por Cifra de
Vigenère.
A cifra foi avaliada como extremamente forte, o que em conjunto com sua aparente
simplicidade de entendimento e prática, levou a alegações de indecifrabilidade. Não obstante
afirmações quanto à impossibilidade do ato, diversos criptoanalistas quebraram a cifra por
volta do século XIX, sendo a primeira técnica publicada por Friedrich Kasiski.
2 - Funcionamento
O funcionamento da então-chamada "cifra indecifrável" baseia-se e difere da Cifra de
César no fato de sua encriptação objetivar mascarar a frequência da presença de cada letra
na mensagem original, assim dificultando criptoanálise por frequência, uma das grandes
fraquezas da Cifra de César. Escolhe-se uma chave a ser repetida até atingir o comprimento
da mensagem a ser encriptada, alinha-se ambos, e em cada par de caracteres o referente à
chave corresponde ao deslocamento do referente à mensagem. Para maior compreensão,
visualiza-se a tabula recta:

2.1 - Encriptação
Cada par Chave-Mensagem corresponde a uma coordenada equivalente à letra da
mensagem codificada. Demonstra-se a seguir:

 Chave – BZA;
 Mensagem – SEGREDOS;
 Código - ???.

CHAVE B Z A B Z A B Z

MSG S E G R E D O S
CODE T D G S D D P R
A mensagem SEGREDOS cifrada pela chave BZA é o código:

 TDGSDDPR.
Ou, visualmente:
A letra presente no ponto onde a coluna B cruza a linha S (Ou coluna S linha B) é o
caractere codificado correspondente. O mesmo é análogo aos outros pares de caracteres.
Verifica-se que a primeira e oitava letras da mensagem original são iguais (S), mas os
espaços correspondentes na mensagem codificada contêm caracteres diferentes (T e R). Essa
característica da cifra causa grande dificuldade à análise de frequência de letras individuais.
Como o caractere pareado com S não é constante, a codificação de S também não é. O mesmo
é válido para qualquer outra letra, é claro. Nota-se que uma chave composta por um único
caractere seria exatamente igual à cifra de césar.

2.2 - Decriptação
Possuindo-se uma mensagem codificada e a chave desta, segue-se o caminho inverso
para obter o texto original. Analogamente à obtenção de um ponto fazendo uso das
coordenadas, pode-se obter uma coordenada fazendo uso do ponto e coordenada
contraparte. Demonstra-se a seguir:

 Chave – TRUTH;
 Código - XOJHZMFM;
 Mensagem – ???.

CHAVE T R U T H T R U
CODE X O J H Z M F M
MSG E X P O S T O S
O código XOJHZMFM decifrado pela chave TRUTH é a mensagem:

 EXPOSTOS.
Ou, visualmente:
A letra X está presente no ponto onde a linha T cruza a coluna (Ou coluna T cruza a
linha) correspondente ao caractere decodificado. O mesmo é análogo aos outros pares de
caracteres.
Seguindo o caminho inverso, verifica-se que a sexta e oitava letras da mensagem
codificada são iguais (M), mas os espaços correspondentes na mensagem original contêm
caracteres diferentes (T e S), o que está de acordo com a ocultação de frequência de
caracteres individuais observada em 2.1.

2.3 - Exposição Algébrica


Tendo em mente que a analogia gráfica associada à tabula recta é nada mais que
auxílio à compreensão, é factível expressar os passos descritos para encriptação e decriptação
em 2.1 e 2.2 de forma matemática em lugar de verbal. A grelha de Vigenère é uma ferramenta
de visualização de somas em módulo 26 (Quantidade de caracteres), com o alfabeto mapeado
de A ≡ 0 até Z ≡ 25. Segue que:

 Ci ≡ Mi + Ki (mod 26);
 Mi ≡ Ci – Ki (mod 26).

3 - Técnicas de quebra
Assim como inúmeros outros métodos de codificação de informação, a Cifra de
Vigenère sofreu diversas tentativas de desenvolvimento de métodos para sua quebra. Apesar
de seu apelido, ela não é inquebrável. O ponto fraco da cifra encontra-se em sua chave, ou
mais especificamente, na característica repetitiva desta.
Devido à chave ser repetida até atingir o comprimento da mensagem a ser encriptada,
conhecimento do número de caracteres da chave equivale a conhecimento de que espaços
da mensagem codificada foram deslocados pelo mesmo valor. Um exemplo seria uma chave
de sete caracteres; O primeiro, oitavo, décimo quinto (e assim por diante) caracteres da
mensagem codificada equivalem aos caracteres de mesma posição da mensagem original,
mas deslocados pelo valor do primeiro caractere da chave. Logo, mesmo que não se saiba
qualquer caractere da chave, sabe-se que posições foram deslocadas por cada "incógnita" da
chave. Um conjunto de letras deslocadas todas pelo mesmo valor é uma Cifra de César.
Agrupando-se os caracteres do código por valor de deslocamento, obtém-se um
conjunto de Cifras de César interlaçadas e, individualmente, Cifras de César podem ser
quebradas facilmente por meio de análise de frequência.
Em outras palavras, quando se sabe o comprimento da chave, quebrar a Cifra de
Vigenère resume-se a quebrar um certo número de Cifras de César; algo de grande
simplicidade. Portanto, não é surpreendente que métodos de ataque da Cifra de Vigenère
baseem-se em determinar o comprimento da chave.

3.1 - Examinação de Kasiski


Friedrich Kasiski observou que palavras repetidas numa mensagem a ser cifrada
podem ocasionalmente ser encriptadas pelas mesmas letras, sendo a chave repetida
múltiplas vezes. Supõe-se que essas repetições representam sequências equivalentes do
texto original (Algo relativamente provável). Mede-se a distância entre repetições no texto
codificado. É evidente que se a suposição anterior está correta, o comprimento da chave será
um fator da distância. Ignora-se comprimentos que seriam curtos demais para prover
qualquer segurança real, como 1 ou 2, e assim é obtida uma lista de prováveis comprimentos
da chave.
Nota-se que se há mais de uma repetição no texto codificado, o comprimento deverá
ser um fator comum a todas as distâncias entre repetições.
3.2 - Teste de Friedman
William F. Friedman desenvolveu uma fórmula baseada num índice de coincidência,
ou em outras palavras, na probabilidade da comparação de dois textos fornecer caracteres
idênticos nas mesmas posições.
Para textos quaisquer, a probabilidade média para o inglês não-capitalizado é cerca
de 0.067. Entretanto, também é necessário calcular o índice de coincidência da mensagem
codificada por meio de uma equação envolvendo o somatório da frequência de cada
caractere. Isso feito, usa-se:

 (Kp – Kr) / (K0 – Kr)


Onde Kp é o índice para a linguagem escolhida não-capitalizada, K0 é o índice do texto
codificado, e K0 é 1/26 (A probabilidade de duas letras escolhidas no alfabeto uniforme serem
a mesma).
A fórmula resultará no valor aproximado do comprimento da chave usada na cifra.
Nota-se que mensagens maiores obterão resultados mais precisos, e mensagens pequenas
podem obter resultados distantes do verdadeiro. Estatísticas são mais precisas em grandes
números, afinal.

4 – Melhorias
Assim como técnicas para quebrar a Cifra de Vigenère foram desenvolvidas, variações
para fortificá-la foram também, visando impedir o funcionamento de técnicas como as
descritas anteriormente:

4.1 - Chave longa, ou running key


Baseia-se no uso de uma chave tão longa quanto o texto, ou seja, sem repetição,
barrando o funcionamento das técnicas desenvolvidas por Kasiski e Friedman. Sofre de uma
fraqueza no fato de que sendo um texto não aleatório longo, informação sobre a chave pode
ser obtida por meio de estatísticas relacionadas à linguagem em que ela está escrita; quanto
maior a chave, mais precisa a informação. Se uma sequência aleatória de caracteres for usada
em lugar de um texto coerente, a cifra é teoricamente inquebrável. Entretanto, uma "cifra"
onde é a chave que promove a segurança, e não o método em si, ignora o próprio propósito
da codificação de informação, e gera problemas práticos que previnem seu amplo uso. Essas
são denominadas cifras de uso único.

4.2 - Variação de Beaufort


Baseia-se numa reversão levemente modificada; a encriptação é feita com o método
de decriptação de Vigenère, e a decriptação é feita com o método de encriptação. A grelha e
o sistema tem pequenas modificações para melhor funcionamento.

4.3 - Cifra de Autochave


A uma palavra-chave é anexada a mensagem a ser enviada, e esta junção é usada
como a chave de encriptação:

 Mensagem: ATAQUEAOAMANHECER
 Palavra-chave: SOLDADO
 Chave: SOLDADOATAQUEAOAM
 Codificação: SHLTUHOOTMQHLEQED
Isso permite uma chave tão longa quanto a mensagem, não totalmente aleatória, e
menos propensa a aderir a estatísticas da língua, mais segura ainda que a cifra original, achada
inquebrável.
Nota-se que até mesmo a Cifra de Autochave não é inquebrável. Sabendo a língua em
que foi escrita, sabe-se também palavras comuns, com alta probabilidade de estarem
presentes na chave. Checa-se todas as posições possíveis na chave para estas palavras
comuns, repetindo-as até terem o comprimento da mensagem, e obtem-se texto
"decodificado" na maior parte sem sintaxe qualquer. Entretanto, algumas combinações de
letras serão sempre mais frequentes que outras em qualquer língua. Obtendo-se texto com
uma destas combinações presentes, mantém-se a palavra comum na posição desta
combinação, e repete-se o processo com outras palavras, eventualmente encontrando
fragmentos já decifráveis da mensagem original.

5 – Fontes
 https://planetcalc.com/2468/
 http://rumkin.com/tools/cipher/vigenere-autokey.php
 https://www.cs.uri.edu/cryptography/classicalvigenere.htm
 http://practicalcryptography.com/ciphers/autokey-cipher/
 http://crypto.interactive-maths.com/autokey-cipher.html#encrypt
 http://www.counton.org/explorer/codebreaking/vigenere-cipher.php
 https://www.kaspersky.com.br/blog/vigenere-cipher-history/5688/
 https://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re

Potrebbero piacerti anche