Domanda creare un hash per far diventare unico un file e poi riutilizzarlo per un altro file

Stato
Discussione chiusa ad ulteriori risposte.
Buongiorno,
mi spiego meglio, mettiamo che ad un file viene assegnato un hash con qualche programma con un algoritmo, ad esempio SHA1. Quindi verrà confrontato l'hash per vedere se il file è stato modificato, ma è possibile prendere il file, crearne uno nuovo ed aggiungere lo stesso hash precedente(conoscendolo) a quel file? spero di essere stato chiaro.
No, non è possibile. Questo perchè, in genere, l'hash è calcolato in base ai bytes che compongono il file, non è un attributo che viene assegnato. Ogni minima modifica, anche a un solo byte, fa sì che l'intero hash sia diverso (ci sono casi di collisione ma sono ultra-rari)
 
Ok, chiarissimo, quindi al momento identificare un file tramite hash è comunque una buona soluzione di sicurezza per assicurarsi che non sia stato "manomesso" ?
Sì, a patto di usare un algoritmo di hash sicuro. MD5 e SHA-1 non sono più ritenuti sicuri: qui puoi trovare un bel thread che parla di gif che mostrano il loro stesso MD5 e su questo sito puoi trovare due pdf diversi che hanno lo stesso SHA-1. Creare questo genere di files non è banale, però non c'è ragione a preferire algoritmi vecchi e rotti rispetto a quelli più recenti.
 
Dipende dallo scopo del controllo: per un antivirus, per esempio, controllare solo le signature di un file è un male, perchè anche solo modificando un byte un malware otterrebbe un nuovo hash e quindi risulterebbe non detectato (si viene a creare un meccanismo del gatto e del topo dove ogni volta un hash finisce in una blacklist ma subito dopo ne spunta uno nuovo che funziona, che a sua volta finisce in blacklist, ecc.)

Se invece lo scopo è verificare che il file che ti è stato inviato/che hai scaricato non è stato manomesso, alterato o più semplicemente non si è corrotto in qualche modo, la comparazione degli hash resta a mio avviso la tecnica migliore (non a caso molti siti mettono ancora a disposizione l'hash del file che si deve scaricare, proprio per verificare che tutto sia ok)
Si parlò proprio del secondo caso. Grazie sempre delle dritte.
 
  • Mi piace
Reazioni: 0xbro

Hackth3w0rld

Utente Bronze
13 Gennaio 2022
35
5
20
27
Buongiorno,
mi spiego meglio, mettiamo che ad un file viene assegnato un hash con qualche programma con un algoritmo, ad esempio SHA1. Quindi verrà confrontato l'hash per vedere se il file è stato modificato, ma è possibile prendere il file, crearne uno nuovo ed aggiungere lo stesso hash precedente(conoscendolo) a quel file? spero di essere stato chiaro.
 
No, non è possibile. Questo perchè, in genere, l'hash è calcolato in base ai bytes che compongono il file, non è un attributo che viene assegnato. Ogni minima modifica, anche a un solo byte, fa sì che l'intero hash sia diverso (ci sono casi di collisione ma sono ultra-rari)
Infatti mi sono spiegato male, almeno per algoritmi più datati tipo md5 e SHA1 non esiste un modo per forzare questa collisione?
 
L'unico modo credo sia quello di fare un brute-force di bytes a caso finchè non si trova una collisione, ma le probabilità sono molto basse:
There are attacks to create MD5 collisions on purpose, but the chance of finding a collision on accident is still determined by the size of the hash, so is approximately 2/2^128

Ho letto che in passato hanno creato con consistenza collisioni tra files usando MD5 (https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities) però il problema è che il secondo file condivide per gran parte i bytes utilizzati da quello originale - non è un file completamente diverso. Per cui probabilmente è possibile trovare con consistenza delle collisioni, ma non è possibile scegliere con esattezza come il file che collide debba essere composto
 
Ok, chiarissimo, quindi al momento identificare un file tramite hash è comunque una buona soluzione di sicurezza per assicurarsi che non sia stato "manomesso" ? O bisogna cmq stare attenti ad altre cose
 
Ok, chiarissimo, quindi al momento identificare un file tramite hash è comunque una buona soluzione di sicurezza per assicurarsi che non sia stato "manomesso" ? O bisogna cmq stare attenti ad altre cose
Dipende dallo scopo del controllo: per un antivirus, per esempio, controllare solo le signature di un file è un male, perchè anche solo modificando un byte un malware otterrebbe un nuovo hash e quindi risulterebbe non detectato (si viene a creare un meccanismo del gatto e del topo dove ogni volta un hash finisce in una blacklist ma subito dopo ne spunta uno nuovo che funziona, che a sua volta finisce in blacklist, ecc.)

Se invece lo scopo è verificare che il file che ti è stato inviato/che hai scaricato non è stato manomesso, alterato o più semplicemente non si è corrotto in qualche modo, la comparazione degli hash resta a mio avviso la tecnica migliore (non a caso molti siti mettono ancora a disposizione l'hash del file che si deve scaricare, proprio per verificare che tutto sia ok)
 
Stato
Discussione chiusa ad ulteriori risposte.