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
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