Potrei recuperare il contenuto del file dal suo checksum / hash?

29

Diciamo che ho un file video diviso in più parti. Ogni pezzo è 2 Megabyte. Ho anche un elenco di * inserire il nome hash qui * per ogni pezzo e anche per il file completo.

Supponiamo ora di aver inserito / perso / perso / fubar uno di questi pezzi.

Potrei recuperare il pezzo perso dal suo hash, usando la forza bruta o qualsiasi altro metodo in un intervallo di tempo di durata della vita umana ?

Un tavolo in stile arcobaleno sarebbe irrealizzabile, credo.

Domanda numerica bonus: quanto ci vorrebbe su una rete di calcolo distribuita di medie dimensioni basata principalmente su PC consumer? (Esempio: CPU 4 GHz + GPU entry level + 8 GB RAM)

    
posta beppe9000 25.01.2016 - 04:26
fonte

12 risposte

61

Una risposta semplice, NO.

È come chiedere, se lo so, che x%4 = 3 , è possibile trovare il valore di x ? No. Sicuramente, ci sarebbero infiniti valori di x che soddisfano questa equazione, ma non si potrebbe semplicemente sapere quale è corretto.

Allo stesso modo, molti (o infiniti) video clip potrebbero dare un determinato valore di hash (ovviamente, i video clip infiniti devono essere mappati su un numero specifico di valori hash, quindi è probabile che le collisioni accadano). Non sapresti quale clip è corretta.

Anche questo, nel tempo umano? No.

EDIT: Come indicato nei commenti, poiché il file è suddiviso in pezzi di 2 MB, non ci saranno possibilità infinite , ma sarebbe piuttosto ampio (2 elevato a potenza di 16,7 milioni, circa). Forzare brutalmente un numero così grande di possibilità, nel tempo umano, è ancora quasi impossibile. Ma sì, non è infinito .

    
risposta data 25.01.2016 - 09:39
fonte
14

Questo non è possibile indipendentemente dalla velocità del tuo computer, semplicemente perché non puoi ricreare le informazioni corrette da praticamente nulla.

In realtà stai chiedendo il ripristino di 2 MB da 32 byte (dimensione di SHA-256) o al massimo 64 byte (SHA-256 per blocco e per file totale). Questo sarebbe un rapporto di 1: 65536 o 1: 32768. Dato che il video è già pesantemente compresso, la possibilità è praticamente nulla che è possibile ripristinare i dati originali da queste poche informazioni. Potrebbe essere che potresti creare un chunk da 2 MB che risulta negli hash SHA-256 specifici, ma è molto probabile che questo sarebbe il pezzo originale.

    
risposta data 25.01.2016 - 06:43
fonte
9

Non è stato possibile riprodurre il file in un ragionevole lasso di tempo. Il motivo è che l'unico modo per "invertire" un hash è tramite la forza bruta, e considerando quanto grande fosse il file originale, ti richiederebbe una quantità esatta di byte per la forza bruta.

Supponiamo che tu abbia un file video di 100 MB di dimensioni, precisamente.

  • 1 MB = 1.000.000 di byte
  • 100 MB = 100.000.000 byte

Questo significa che è necessario forzare la forza di questo file originale e verificarne l'hash, è necessario provare le permutazioni n. Supponendo che il file video utilizzi solo 256 caratteri per byte (ascii), guarderemmo:

256 100.000.000 e circa; 10 240,823,997 &; ∞

Questo è essenzialmente infinito - ci vorrebbe praticamente SEMPRE per calcolarlo, indipendentemente dalle risorse della CPU.

UPDATE : C'è anche, ovviamente, il problema con le collisioni hash che ho lasciato qui - con un hash Sha256, è probabile che si verifichi una quantità infinita di collisioni con un file grande come il nostro esempio. Ho dimenticato di menzionarlo prima per semplicità.

    
risposta data 25.01.2016 - 04:33
fonte
7

Supponiamo che tu abbia un computer che ha una potenza di elaborazione infinita e che possa controllare in modo affidabile ogni possibile messaggio contro ogni possibile hash in breve tempo. Ecco il problema che ora stai affrontando: collisions .

Cos'è una collisione? Molti file diversi possono corrispondere alla stessa identica firma. Molti messaggi diversi possono corrispondere esattamente alla stessa firma.

L'hash è one-way . Converti una serie di caratteri in un hash. Quando convalidi il tuo hash, stai semplicemente controllando se il messaggio corrisponde al valore calcolato dell'hash. Il problema è che molti messaggi diversi potrebbero corrispondere allo stesso hash. Si chiama collision .

Tuttavia, dal momento che hai anche un potere di calcolo infinito, puoi anche ricostruire il file attraverso prove ed errori supermassicci. Tuttavia, una volta che hai tutti i possibili esempi per questo valore di hash, come hai intenzione di dire quale è quale?

Quindi mi stai dicendo che c'è una possibilità?

Con la tecnologia di oggi, e dato che non avremo mai una potenza computazionale infinita, sarà completamente impossibile. Anche prendendo la potenza di calcolo combinata di tutto il mondo e moltiplicandola per un miliardo, non puoi farlo. Anche se in qualche modo l'hai fatto, come saresti in grado di dire quale messaggio era corretto?

Dove si applica la mia idea?

  • L'hashing è a una via . Con la chiave fornita, convalidi solo che corrisponde al tuo hash calcolato.
  • La crittografia è bidirezionale . Con la chiave fornita, ottieni i risultati.

La tua idea si applicherebbe con la crittografia, non con l'hashing. Con la crittografia, se hai la chiave, puoi ottenere il contenuto decrittografato del file.

    
risposta data 25.01.2016 - 15:59
fonte
3

È difficile se il file sottostante ha un'entropia sufficientemente alta. Se sai qualcosa sui dati sottostanti, allora potresti essere in grado di recuperarli. Ad esempio, se c'è un hacker da qualche parte nelle vicinanze, non passerà molto tempo prima che qualcuno ti dica cosa ho cercato per md5:

73868cb1848a216984dca1b6b0ee37bc

Tuttavia il video di solito ha molta entropia, rendendo questa una causa persa o almeno una dannatamente dura. Avresti bisogno che il video sia una videocam e dovresti sperare che il pezzo mancante mostri un'ora di nero come una notte nera. Mettiamolo in prospettiva: la creazione di un bitcoin è essenzialmente una questione di invertire un hash. Invertire un brevissimo video snip è probabilmente come fare circa 20 bitcoin, forse di più. Quindi nei tuoi panni farei i bitcoin, comprerei una nuova copia del video e intascerò il resto. Quasi ottomila dollari di valore. Forse potrei comprare azioni in una società di computer quantistica e rendere più facili gli exploit futuri; è divertente fare il "impossibile".

A quelli che dicono "gli hash sono molti a uno, quindi non puoi dire cosa è stato cancellato": è vero, ma di tutti i molti valori che hanno un valore per quell'unico valore, alcuni saranno più plausibili di altri. Se inverti l'hash sopra, non avrai il minimo dubbio che hai trovato il giusto input. Divertiti! : -)

    
risposta data 26.01.2016 - 02:22
fonte
1

Un commento, ma è troppo lungo:

Come altri hanno dimostrato, questo non è possibile. Tuttavia, c'è un problema correlato che è certamente ragionevole:

Ok, non puoi ricostruire quel video da 200mb che è stato diviso in 100 file 2mb di cui hai 99.

Tuttavia, puoi creare un altro file che sarà un capello su 2mb che ti consentirà di ricostruire qualsiasi file uno mancante. Due di questi file ti permetteranno di ricostruire due file mancanti e così via. Sebbene la dimensione del blocco non possa essere impostata in maniera redditizia rispetto alla dimensione del file (un file di riparazione di 4mb risolve solo un file mancante) può essere impostato su un valore inferiore che può essere utile se il danno parziale è una possibilità. (Il tempo di calcolo sale, i file diventano leggermente più grandi ma hai più capacità di recupero dai danni.)

Il programma standard per un lungo periodo è stato: Quickpar ma non è stato aggiornato da secoli. L'alternativa più moderna di cui sono a conoscenza (ma che non ho ancora usato molto) è Multipar (Nota: questo sito è in giapponese, tuttavia il programma è in inglese.)

Se eseguo il backup di alcuni dati su un DVD, di solito creo file di riparazione aggiuntivi nel caso in cui qualcosa accada: lo spazio aggiuntivo sul DVD verrà comunque sprecato, perché non mettere un po 'di assicurazione lì? Multipar ha anche delle modalità specifiche per questo (anche se non le ho ancora provate) dove genererà blocchi per riempire un disco DVD-R o BD-R.

    
risposta data 26.01.2016 - 05:02
fonte
1

In pratica, richiede troppo tempo per ottenere un risultato soddisfacente, affrontando entrambi: la generazione della parte video mancante (in base a criteri calcolabili) e l'ordinamento dei migliori (che necessita di risorse umane) intelligenza o intelligenza artificiale estremamente avanzata). Anche se finalmente hai un bel video che corrisponde a tutti i criteri, non saprai mai se il film originale avesse gli stessi contenuti. potrebbe non avere senso cercare di "ricostruire" qualcosa che può essere più variabile, meglio e più veloce: usa la tua fantasia.

Certamente alcuni valori di hash da 10 byte "crossfiring" non possono rappresentare / contenere l'informazione di 10 MB, quindi penso che il tuo spirito sia il seguente:

Anche se disponi di molte informazioni aggiuntive per correzioni all'interno dell'intero file video: formato dati, frame, lo storyboard stesso, voci degli attori e così via: ci saranno migliaia di video più o meno diversi che soddisfare tutti i criteri noti. Immagino anche che una manciata di singoli fotogrammi qui e là possano rendere qualsiasi video che porti agli stessi hash.

Questa domanda è molto simile: è possibile che un (piccolo) virus si aggiunga a un (grande) file mantenendo il checksum del file lo stesso valore riempendo una quantità (non così grande) di byte variabili? Immagino che sia possibile, anche se difficile da calcolare in tempo oggi. D'altra parte, sappiamo che molti codici possibili portano allo stesso hash, quindi il tempo di elaborazione potrebbe essere sovrastimato. Forse è possibile in pochi secondi - solo gli hacker lo sapranno.

Modifica: Durante la notte ho trovato l'ispirazione per un ulteriore confronto del tuo "problema del video perso": per questi casi (recupero completo dei dati) è già stato inventato il < strong> RAID-5 tecnologia (Wiki vedi qui: link ). Uno su tre o più harddrive potrebbe fallire e tutti i dati possono essere ricostruiti senza perdita di dati. Sicuramente hai un sacco di dati-overhead (ridondanza per correzione degli errori) memorizzati su tutte le unità per poterlo fare.

Hash / Checksum sono buoni per il rilevamento di piccoli (bit o pochi byte) manomissioni / errori che si sono verificati da qualche parte all'interno di un file. Più avanzati sono i CRC con correzione degli errori. Almeno abbiamo sistemi di ridondanza come RAID.

    
risposta data 26.01.2016 - 18:45
fonte
1

La risposta è NO e sembra che tu stia mescolando due cose diverse:

  • Checksum e Hash sono controllori di integrità unidirezionali . Lo scopo del loro utilizzo in questa materia è quello di assicurarsi che i dati non siano corrotti e nient'altro
  • I codici di recupero sono quelli che stai utilizzando se hai bisogno di recuperare i tuoi dati in base al codice fornito . L'esempio più brillante è un codice Reed-Solomon per il recupero di CD- Dati ROM. Lo scopo del loro utilizzo in questa materia è quello di aiutarti a recuperare i dati corrotti / persi per qualche motivo

Sembrano simili da un primo sguardo, ma sono MOLTO cose diverse.

    
risposta data 08.02.2016 - 04:02
fonte
1

C'è una possibilità per questo: Google it - letteralmente.

Se il file è già stato caricato su un certo numero di siti di condivisione file, probabilmente hanno pubblicato un hash e potrebbe essere stato indicizzato.

Ad esempio, google 60CCE9E9C6557335B4F7B18D02CFE2B438A8B3E2 '.

    
risposta data 24.07.2016 - 14:26
fonte
0

È effettivamente impossibile, a causa della teoria dell'informazione. Effettivamente impossibile, come nella "morte termica dell'universo" diventa un fattore limitante legittimo per la tua ricerca.

Manca una sezione di 2.000.000 byte (2 MB). Un hash come SHA-1 ha 20 byte di informazioni al suo interno. Secondo la teoria dell'informazione, dovremmo aspettarci che ci siano 1.999.980 byte che sono ancora sconosciuti. Ciò significa che 2 ^ (8 * 1,999,980) file da esplorare. Questo è un numero così grande che inizi a parlare della morte termica dell'universo prima che ogni atomo nell'universo agisca magicamente come un processore da 2 Ghz, lavorando in tandem, potrebbe trovarlo. E ciò non include la sfida di capire realmente quale delle soluzioni è quella giusta. È solo il costo di produrre alla fine quello giusto.

Alcuni hanno detto che hai informazioni aggiuntive. Ad esempio, hai SHA-1 dell'intero file. Purtroppo, questo non è molto utile. Presumendo che tu abbia questo hash, hai ora 1.999.960 byte di informazioni che sono ancora sconosciute, e quindi 2 ^ (8 * 199.960) possibili sezioni da considerare. Siamo ancora nel caldo della morte del regno dell'universo. Potremmo aggiungere ulteriori vincoli, come la continuità con il video esistente, ma alla fine avremo dei limiti su quanto potremmo sapere sulla fetta senza avere abbastanza informazioni per ricrearla direttamente dalle informazioni che conosciamo.

La migliore possibilità che potresti avere è quella di riunire tutto il mondo per risolvere il tuo problema e fornirti ogni 2 MB di dati nell'intero Internet. È molto probabile che se hai "perso" i dati, qualcun altro potrebbe averne una copia. È molto più facile analizzare i petabyte di dati raccolti dall'umanità che non attraverso il numero molto più ampio di possibilità offerte da 2 MB di dati arbitrari.

    
risposta data 26.01.2016 - 22:41
fonte
0

Gli hash sono progettati per essere unidirezionali. È facile viaggiare da sinistra a destra, ma è praticamente impossibile viaggiare da destra a sinistra quando si parla di Hashing.

    
risposta data 08.02.2016 - 03:38
fonte
0

Prefazione: un hash viene normalmente utilizzato per verificare l'integrità di un file o di un insieme di dati.

A condizione che l'hash del checksum includa i dati e il nome, potrebbe essere un punto di riferimento per il contenitore, che potrebbe quindi essere implementato nella ricerca della corrispondenza del modello di checksum. A condizione che tu sappia un salt (che potrebbe includere il valore di data o ora per esempio).

Sebbene causare una singola collisione ad una velocità di 1 MH / s, potrebbero comunque essere necessari circa 3 anni per eliminare ogni possibilità assoluta per un risultato di soli 15 numeri. Quindi comprendendo un altro riferimento, ad es. dove questo file si trova sul supporto di memorizzazione potrebbe essere più specifico .e.g. settore o id id file.

Ma è credibile notare che il trasferimento dei dati (in particolare sulle reti) tende a intromettersi di frequente, con il proprio checksum come riferimento.

E se qualcuno vuole discutere, un sale è solitamente gratuito e la crittografia non deve essere confusa con il recupero, come quando si cripta non solo con uno standard patetico di crittografia, e si dimentica la chiave, quindi in genere essere in grado di recuperare i tuoi dati.

    
risposta data 24.07.2016 - 07:14
fonte

Leggi altre domande sui tag