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


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 .


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.