Pular para o conteúdo
Todos os conceitos

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:

  1. Conte as letras do cifrado. No CyberChef, a operação Frequency distribution faz isso. As mais comuns devem ser A, E e O.
  2. Olhe as palavras curtas. Em português, palavras de uma letra quase sempre são a, e ou o; de duas, de, da, do, em, um, os; de três, que, nao, uma, com.
  3. Use qualquer pedaço que você já conheça (um nome, um formato fixo) para fixar letras de graça.
  4. Troque as letras que já descobriu e leia o resultado. Palavras meio prontas, como c_sa ou _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.

cifrado contagem das letras português ordem conhecida a mais comum cada letra muda de cara, não de frequência K ? ? ? ? ? ? ? ? ? ? ? A E O S R I N D M U T C
A substituição troca a cara de cada letra, mas não quantas vezes ela aparece: contadas, as letras do cifrado formam o mesmo perfil que as do português, e a mais comum, K, deve ser o a.

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.

Aparece nestes desafios