Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computação
Hugo Bevilaqua
Rio de Janeiro
2016
Hugo Bevilaqua
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.
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.
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:
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