Esiste una struttura hash che può essere utilizzata per il download sicuro di un file e la convalida del suo contenuto?
Sembra che tutti gli hash come MD5 siano fatti per il controllo della coerenza e siano vulnerabili all'hash extension attack, quindi è possibile creare un altro file con lo stesso MD5 semplicemente aggiungendolo alla fine di esso.
Sto scrivendo un servizio automatizzato che scarica dati su canali non sicuri e voglio assicurarmi che MITM non possa alterare il file.
UPDATE : l'hash viene trasferito all'utente tramite il canale sicuro. In questo momento sto usando la combinazione hash + filesize, per evitare gli attacchi dell'estensione hash. È possibile utilizzare solo una singola funzione di hash?
UPDATE 2 : ho frainteso cosa sia un attacco di estensione della lunghezza . Citando @CodeInChaos:
It does not give you a collision, it merely allows you to compute the hash of a longer file given the hash of a shorter file whose contents you don't know
Quindi non è possibile semplicemente aggiungere al file con l'hash esistente per ottenere lo stesso hash. Fare questo significa cercare le collisioni in un file più lungo, quindi la domanda si riduce al classico "quanto è strong la funzione hash". D'altra parte, è comunque interessante il motivo per cui SHA3 non sia vulnerabile all'estensione hash, ma questo è un altro argomento.