Por que é importante que o segredo esteja no final ao assinar com o MD5?

16

Costuma-se dizer que, ao usar o algoritmo MD5 para assinar algumas informações arbitrárias, o segredo compartilhado deve estar no final. Por quê?

Hendrik Brummermann
fonte
2
Você pode, por favor, ser mais específico em vez de dizer "dito com frequência". Você pode citar referências e também expandir por que o problema é relevante?
Suresh Venkat
Há um erro de digitação no título da sua pergunta: você pode alterar "e" para "finalizar"?
Carlos Scheidegger

Respostas:

16

Veja "ataques de extensão" na construção Merkle-Damgard . Esse problema surge no uso de funções de hash para autenticação de mensagens .

Em resumo, colocar o segredo no início permite que o invasor, dada uma mensagem e seu hash, forje qualquer mensagem que tenha a mensagem especificada como prefixo. Esse é um problema para códigos ingênuos, mas é evitado por códigos conhecidos como HMAC .

randomwalker
fonte
11
Pelo que entendi, se você interromper o fluxo de entrada e a chave compartilhada for o início do fluxo, o primeiro bloco quase sempre terá o mesmo hash e, portanto, a chave compartilhada poderá ser adivinhada pelo uso de ataques do arco-íris, certo?
Alexandru