sábado, 2 de junho de 2007

Re: desafio de criptoanálise

Baal Há pouco mais de um mês postei um desafio de criptoanálise até um tanto malicioso.

O desafio consistia em uma cifra e algumas perguntas a serem respondidas:
  1. A mensagem é na verdade uma pergunta. Qual a pergunta?
  2. Qual a resposta à pergunta?
  3. Qual o algoritmo criptográfico usado?
  4. Qual o erro cometido?


Algumas dicas foram fornecidas nos comentários:
  • A chave simétrica está escondida no próprio criptograma.
  • É preciso trabalhar com os códigos ASCII dos bytes.
  • É preciso efetuar uma adição com esses códigos.
  • O resultado é binário, e você vai descobrir se deu certo quando o comando file retornar algo diferente de data.


Agora vou responder às perguntas 3 e 4 e deixar o resto com vocês!

Qual o algoritmo criptográfico usado?


O algoritmo criptográfico usado foi Vigenère-Vernam, também conhecido como «one time pad».

Este algoritmo é uma variação da Cifra de Vigenère onde a chave pseudo-aleatória tem o mesmo tamanho da mensagem. Isto torna a cifra matematicamente inquebrável.

Para cifrar a mensagem a chave foi subtraída da mensagem byte a byte, sempre somando 256 quando o resultado era negativo. Portanto, tendo a chave fica simples criar um código que extraia a mensagem.

Qual o erro cometido?


No entanto, como a entropia é muito alta, é impossível (de verdade) identificar a chave.

Mas foi cometido um erro intencional! E já contei qual foi…

Olhem lá nas dicas… num dos comentários eu disse:
É… pelo visto está difícil.

Vou dar mais uma dica: a chave é simétrica e está escondida no próprio criptograma.

[]'s


Eu simplesmente concatenei a chave no final da cifra!

Portanto a primeira metade do arquivo é a cifra em si, a segunda metade é a chave. =P


Que tal quebrar a cifra agora?

Então continuam as duas primeiras perguntas e adiciono mais uma:
— Qual o formato da mensagem (file pode ajudar)?

Vamos lá! A brincadeira ficou mais fácil! Postem seus códigos nos comentários! =D

[]'s
Rodrigo Cacilhas
blog comments powered by Disqus