Análise de frequência
Em qualquer língua algumas letras aparecem muito mais que outras, e isso denuncia a tabela de uma substituição.
Numa substituição com alfabeto embaralhado, a chave é a própria tabela de trocas. São 26! (cerca de 4 × 10²⁶) tabelas possíveis, e testar todas é impossível. Mas a substituição tem um defeito: cada letra do original vira sempre a mesma letra no cifrado. Então a letra mais comum do original continua sendo a mais comum do cifrado, só que com outra cara.
Em português, as letras mais frequentes são, mais ou menos nesta ordem: A, E, O, S, R, I, N, D, M, U, T, C. Num texto de algumas centenas de letras, as três primeiras já aparecem bem destacadas.
A receita:
- Conte as letras do cifrado. No CyberChef, a operação Frequency distribution faz isso. As mais comuns devem ser
A,EeO. - Olhe as palavras curtas. Em português, palavras de uma letra quase sempre são
a,eouo; de duas,de,da,do,em,um,os; de três,que,nao,uma,com. - Use qualquer pedaço que você já conheça (um nome, um formato fixo) para fixar letras de graça.
- Troque as letras que já descobriu e leia o resultado. Palavras meio prontas, como
c_saou_ue, sugerem a próxima letra.
Exemplo: num cifrado, K é a letra mais comum e aparece sozinha várias vezes. Bom palpite: K é a. A palavra XYM também aparece muito; se M já é e, ela pode ser que, o que entrega X e Y de uma vez.
No CyberChef, a operação Substitute faz as trocas: em Plaintext vão as letras cifradas e em Ciphertext as letras que você acha que elas são. Se o cifrado está em maiúsculas, escreva seus palpites em minúsculas: o que já foi decifrado fica em minúsculas e o que falta continua em maiúsculas. Em Python, Counter(c for c in texto if c.isalpha()).most_common(5) (com from collections import Counter) mostra as cinco letras mais comuns.
A técnica foi descrita pelo estudioso árabe al-Kindi no século IX e derrubou as cifras de substituição por séculos. Foi para escapar dela que surgiram cifras como a Vigenère, em que a mesma letra vira letras diferentes.