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:
- A mensagem é na verdade uma pergunta. Qual a pergunta?
 - Qual a resposta à pergunta?
 - Qual o algoritmo criptográfico usado?
 - 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 
fileretornar 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
 CC-BY: Os textos deste blog podem ser reporduzidos contanto que sejam informados autor e origem.