Cifra de Vigenère: encontre o comprimento da chave e quebre a cifra

Uma chave com L letras transforma a mensagem em L cifras de César entrelaçadas. Ao dispor o texto cifrado em linhas de k letras e contar as coincidências coluna a coluna, cada coluna volta a ser inglês quando k atinge o valor certo. Siga o ataque passo a passo ou escolha você mesmo uma barra.

A carregar a simulação interativa...

Lição

A teoria — Cifra de Vigenère: encontre o comprimento da chave e quebre a cifra

A cifra de Vigenère adiciona à mensagem uma chave que se repete letra a letra. Com A = 0 a Z = 25, a letra cifrada i calcula-se por (letra da mensagem i + letra da chave i mod L) mod 26; assim, cada letra da chave funciona como um deslocamento de César aplicado a cada L-ésima letra. O índice de coincidência de N letras, IC = Σ n(n − 1) / (N(N − 1)), dá a probabilidade de duas letras escolhidas em posições distintas serem iguais: 1/26 = 0,0385 para letras aleatórias e cerca de 0,066 para o inglês. O teste de Friedman dispõe o texto cifrado em linhas de comprimento k e conta as coincidências ao longo das colunas: quando k coincide com o comprimento da chave, ou com os seus múltiplos, cada coluna é uma versão deslocada do inglês e o seu IC regressa ao valor do inglês. O teste de Kasiski, publicado em 1863, analisa os fatores dos espaçamentos entre grupos repetidos de letras.

O que significa cada símbolo

L
o número de letras da chave
k
o comprimento de chave testado: o número de colunas em que o texto cifrado é distribuído
N
o número de letras da mensagem
n
na fórmula do IC, o número de ocorrências de uma dada letra
Pressupõe
Apenas letras: maiúsculas, minúsculas, espaços e pontuação são eliminados antes da cifragem, como no cartão de Carroll. «Inglês» designa aqui o Capítulo I de Alice no País das Maravilhas, com 8.606 letras; as suas frequências relativas e o seu IC de 0,0665 servem de referência a todos os testes, e os ensaios de eficácia recolhem excertos desse mesmo capítulo, o que favorece ligeiramente o ataque. O comprimento da chave é o menor k cujo IC médio das colunas atinge pelo menos três quartos do caminho entre 1/26 e o inglês. Chaves aleatórias sorteiam cada letra de forma uniforme, pelo que podem ter repetições; uma chave com repetição a meio do comprimento pode elevar a barra correspondente a essa metade acima da linha.

Em média, cada barra alcança mdc(k, L)/L do caminho até ao inglês 🖖

Clique em RABBIT, 600 letras e observe as barras. Distribuído em k colunas, cada coluna mistura os alfabetos de L/mdc(k, L) letras da chave e, na média sobre as chaves, retém mdc(k, L)/L da distância entre letras aleatórias e o inglês. Para as seis letras de RABBIT, isso coloca 6, 12 e 18 no topo, 3, 9 e 15 a meio caminho, os outros k pares a um terço e os restantes a um sexto; aqui, as barras situam-se entre 98 e 106%, 42 e 52%, 26 e 37% e 9 e 23%. A barra 1 representa todo o texto cifrado; logo, uma chave de dez letras preserva, em média, um décimo do desequilíbrio típico do inglês na contagem das letras, embora cada décima letra continue a ser inglês. Numa média sobre 100 chaves aleatórias para cada comprimento de 1 a 12, cada uma das vinte barras desvia-se menos de 3% da posição prevista por mdc(k, L)/L. A edição de 1935 do artigo de Friedman sobre o índice de coincidência indica os dois extremos: 0,066 para um período correto e 0,038 para um errado. Este capítulo regista 0,0665, enquanto 1/26 vale 0,0385. A linha de corte situa-se a três quartos da altura porque a barra em L/2 fica, em média, perto da metade, caindo ligeiramente abaixo disso quando as colunas são curtas.

Cada letra da chave é mais uma cifra de César a resolver 🖖

Clique em Chave de doze letras. O comprimento está certo: cada uma das doze colunas é agora uma cifra de César de 18 letras, que resolvemos testando todos os 26 deslocamentos contra as frequências relativas do capítulo. Onze saem certas. A coluna 5 tem apenas dois E e três R, e a rotação que transforma cada R num E ajusta-se ao inglês um pouco melhor do que a verdadeira. Uma única coluna de 30 letras decifra-se corretamente em 98% dos casos, mas a chave exige que todas funcionem: em mais de 2.000 excertos deste capítulo com 30 letras por coluna, as doze estavam certas em 81% das vezes. Cada coluna repete o ataque de César da etapa anterior; logo, uma chave longa multiplica as hipóteses de erro. Contando em intervalos de cinco letras, uma chave de doze letras só é decifrada na totalidade em 99% dos casos a partir de 55 letras por coluna, ou seja, 660 letras ao todo. Isto depois de descoberto o comprimento. O teste das barras, por sua vez, precisa de mais texto quando a chave é curta, porque calcula a média sobre menos colunas: a 60 letras por coluna, o ataque completo recupera uma chave de uma letra em cerca de 87% das tentativas e uma chave de doze letras em mais de 99%.

Uma chave do tamanho da mensagem só deixa E 🖖

Clique em Chave do tamanho do texto e avance até ao fim. Vinte letras sob vinte letras de chave deixam uma só letra em cada coluna. Não há pares para contar, o que faz desaparecer a barra 20, e o qui-quadrado aplicado a uma única letra só pode escolher o deslocamento que a transforma em E, a letra mais comum do capítulo. Todas as colunas devolvem E, e a decifração acerta duas vezes: nos dois E de «Alice was beginning to g». No capítulo inteiro, o E representa 1.078 de 8.606 letras, ou seja, 12,5%; com uma letra por coluna, o ataque atinge 12,6% em excertos desse texto, correspondendo apenas ao que o algoritmo já sabia sobre o inglês, sem nada ter aprendido com a cifra. Se as vinte letras da chave forem sorteadas ao acaso e nunca mais reutilizadas, qualquer mensagem de vinte letras ajusta-se a estas vinte letras cifradas com igual probabilidade. É este o princípio do bloco de uso único.

Problema resolvido na íntegra

  1. O cartão cifrado de Carroll estava certo? 4 passos

    Lewis Carroll mandou imprimir um cartão a explicar esta cifra. O documento não tem data; as suas cartas sobre o envio de uma palavra-chave datam de abril de 1868, cinco anos após a publicação do livro de Kasiski. O cartão cifra «meet me on Tuesday evening at seven» com a palavra-chave vigilance e promete que será «impossível para qualquer pessoa que ignore a palavra-chave decifrar a mensagem, mesmo com o auxílio da tabela». Clique em Cartão de Carroll: conseguirá a ferramenta decifrar a mensagem? Em seguida, cifre o início do Capítulo I com essa mesma palavra-chave. De quantas letras precisa o algoritmo para recuperar a palavra VIGILANCE?

    Abrir este problema na ferramenta

    1. Calcule uma letra à mão para verificar. m é 12 e v é 21; 12 + 21 = 33 e 33 − 26 = 7, que corresponde a h. O texto cifrado gerado, HMKBXEBPXPMYLLYRXIIQTOLTFGZZV, coincide letra por letra com o de Carroll.

    2. Com 29 letras em 9 colunas, temos duas colunas de 4 letras e sete de 3. Nenhum grupo de três letras se repete, não restando fatores para Kasiski analisar. Nenhuma barra atinge a linha fixada em 0,0595; a mais alta é k = 9, que marca 0,0556, acertando assim no comprimento. Ainda assim, calcular o qui-quadrado sobre três ou quatro letras equivale quase a adivinhar: a chave obtida é HIGXXLNPM, com apenas 3 das suas 9 letras certas e 10 das 29 letras da mensagem.

    3. Clique em VIGILANCE, 189 letras: o início do capítulo sob a palavra-chave de Carroll, com 21 letras por coluna. A barra 9 é a primeira a cruzar a linha, com 0,0794, e 4 dos 5 espaçamentos entre grupos repetidos são múltiplos de 9 (54, 36, 27 e 72; o quinto é 29). Todas as nove colunas saem certas, e com elas todas as 189 letras.

    4. Mude o número de letras para 188. O comprimento continua a ser 9, mas a coluna 9 passa a ter 20 letras e aproxima-se mais de T do que de E: recuperam-se 168 de 188 letras. A 189.ª letra calha precisamente na coluna 9 e faz pender a decisão para o E.

    Resposta

    Na prática da ferramenta, a mensagem do próprio Carroll resiste, mas 189 letras de Alice não. Três ou quatro letras por coluna é uma amostra insuficiente para uma boa contagem, devolvendo a chave HIGXXLNPM; 21 letras por coluna já bastam para reconstituir VIGILANCE. O que protegeu a mensagem de Carroll foi a sua brevidade. Se alguém que adivinhasse uma das palavras, por exemplo «Tuesday», conseguiria ler o restante, a página não tem como avaliar: o seu único método é contar letras.

Percurso de aprendizagem

Como se quebram os códigos

Referências (3)