As funções hash para assinaturas digitais precisam ser resistentes à pré-imagem?
Eu entendo que as funções hash usadas para hash de um documento ou alguns dados antes de assiná-lo, precisam ser resistentes a colisões e à 2ª pré-imagem. Caso contrário, um adversário poderia "procurar" dois documentos aleatórios com o mesmo hash ou um segundo documento, tendo o mesmo hash de um determinado documento, e apenas substituir o "documento original" pelo "documento falso", pois daí as assinaturas de os dois documentos também são iguais.
No entanto, não vejo razão para que uma função hash para assinar documentos precise ser resistente à pré-imagem, ou é de fato uma propriedade supérflua?
Respostas
Uma função hash que não é resistente à pré-imagem também não é resistente à colisão. Se eu hash uma grande mensagem aleatória e aplicar o algoritmo de pré-imagem, é extremamente improvável que receba a mesma mensagem com a qual comecei, encontrando assim uma colisão.
A resistência à colisão é crítica para um hash usado em uma assinatura. Como você pode criar assinaturas falsas. Mesmo que você precise de um pouco mais para forjar mensagens significativas, como explorar a colisão de estado interno para fazer as extensões colidirem e utilizar formatos como pdf ou postscript.