Quanto tempo ci vorrà per generare un file per abbinare un hash? [duplicare]

0

Un singolo file ha un solo hash di una lunghezza di byte specifica. Ma un singolo hash può rappresentare un numero elevato di file diversi.

Dato un hash di 256 byte, quanto tempo ci vorrà per generare un file che corrisponda all'hash?

Per rispondere a questa domanda in modo concreto, dovremo prendere alcune decisioni arbitrarie sull'hardware disponibile. Le risposte possono assumere l'uso di:

  • Una singola scheda madre.
  • Il processore x86 più veloce oggi disponibile, con un massimo di 16 processori sulla stessa scheda madre, se if (se e solo se) esiste effettivamente una scheda madre.
  • Fino a 256 GB di RAM, se supportato.
  • Le schede grafiche più veloci disponibili per il processore, con tutte le schede supportate dalla scheda madre.
  • Fino a 256 GB di RAM per scheda grafica, se supportato.
  • Qualsiasi sistema operativo.
  • Qualsiasi linguaggio di programmazione o combinazione di linguaggi di programmazione.

Fondamentalmente, supponiamo che un singolo computer dedicato realistico funzioni sull'attività, non su una rete distribuita.

    
posta RockPaperLizard 20.06.2016 - 13:28
fonte

2 risposte

4

Diciamo che possiamo provare 10.000.000.000 di hash SHA-256 al secondo. Per trovare l'hash a 256 byte, dobbiamo cercare circa metà dello spazio di ricerca, quindi dobbiamo calcolare 2 ^ 255 hash. Ciò richiederà 2 ^ 255 / 10.000.000.000 di secondi o circa 183587153154040137340770841274555916814545257270485419900205 anni.

Modifica: Ho rovinato il calcolo, perché ho interpretato i byte come bit.

Da 256 byte è di 2048 bit, dobbiamo calcolare 2 ^ 2047 hash, e questo richiede 51238277002966462615288680696140842149359624983694006900257396986816107209011749894084857641303452346031072363206966672206556886019931064648478171591908109970558849199804978582810435296787246490988168503272557661524594461318207375954208038968918332176848119374740463348058688311043039397208828638895120474254684064861853663147965776868601866905847564743985163080412553366519257662208999737046959970928743526011452948564278693172244975824932848021949038580088291525918197749731767202126390635665479647814685664923669295305438224994217717272665406466244034334639145952931934304676113772521803887927378002 anni.

    
risposta data 20.06.2016 - 14:15
fonte
2

Assumendo un ottimo hash, usa una delle risposte di Sjoerd. Se l'hash fosse molto, molto cattivo, tuttavia una collisione potrebbe essere calcolata in microsecondi.

vale a dire. L'hash a 256 bit / byte non significa nulla se non è stato progettato correttamente. Un hash ingenuo potrebbe essere qualcosa di semplice come un CRC, che non è mai stato pensato per essere sicuro.

Anche gli hash progettati per scopi di sicurezza possono in seguito essere considerati insicuri. Un buon esempio è l'hash LanMan , utilizzato nei primi prodotti Microsoft. Sebbene fornisca una lunghezza di 16 byte (128 bit), ha più problemi che rendono l'attacco MOLTO MOLTO più facile di una complessità di 2 ^ 127. Mentre LanMan è stato utilizzato per le password, non per i file, si applica ancora il principio generale del disegno hash.

    
risposta data 20.06.2016 - 19:47
fonte

Leggi altre domande sui tag