Hashing di messaggi di grandi dimensioni per l'integrità

2

Ho letto sull'integrità del messaggio usando l'hashing.

Come noto, l'integrità dei messaggi interrompe il contenuto del messaggio e lo invia al destinatario. Se il destinatario ha ricevuto questo messaggio, eseguire di nuovo l'hashing per confrontarlo con due valori di hashing.

Ho una domanda al riguardo.

La dimensione del file potrebbe essere superiore a 100 MB o qualcosa del genere.

Secondo me, potrebbe richiedere troppo tempo.

Quindi vorrei usare alcuni campi come la dimensione del file e la data di creazione in hashing. È questo il modo possibile o sicuro per l'hashing?

    
posta user1156041 24.11.2016 - 08:06
fonte

2 risposte

2

How can I manage the hashing for large file size? May be file size is over 100 MB or something. In my opinion, it may take too long.

Se si desidera verificare l'integrità di un file, è necessario eseguire l'intero file. Non c'è modo di saltare alcun bit perché esattamente questi potrebbero essere influenzati da un cambiamento. Calcolare l'hash su un file richiede esattamente una corsa sequenziale sull'intero file e gli algoritmi sono progettati per essere veloci. Probabilmente non lo farai più veloce.

So I would like to use some fields such as file size, and creation date in hashing. Is that possible or safe way for hashing?

No, non è così. Il contenuto del file può essere modificato senza influire sulle dimensioni e sulla data di creazione. A parte ciò, la data di creazione non è una proprietà del file ma una proprietà dell'archiviazione, ovvero può essere modificata senza influire sul contenuto del file. Ciò significa che con questa proposta un hash di corrispondenza non garantisce l'integrità né una mancata corrispondenza hash mostra una perdita di integrità.

    
risposta data 24.11.2016 - 08:11
fonte
2

prima che la tua domanda possa essere risolta, devi specificare perché vuoi l'integrità dei dati in primo luogo: la protezione contro le modifiche accidentali è una cosa molto diversa rispetto alla protezione contro la modifica dell'avversario. È inoltre necessario specificare in quale contesto si verifica la convalida: in che modo l'attore che convalida sa quale dovrebbe essere il checksum corretto.

I would like to use some fields such as file size, and creation date in hashing. Is that possible or safe way for hashing?

In generale, no: questo non ti dà molte informazioni significative. Questi elementi sono chiamati metadati: sono dati sui dati ed è, beh, un diverso insieme di dati su di essi. Quando lo leggi, ti fidi implicitamente del supporto di memorizzazione (file system) per fornirti informazioni accurate. Questa è una supposizione che è semplicemente sbagliata anche se stai solo cercando di proteggere da modifiche accidentali (non falsificazione).

In casi molto limitati, potrebbe essere utile: ad esempio, se si ha un file di registro creato su un server sicuro, è possibile utilizzare la dimensione del file / l'ultima data di scrittura per sapere quando il file è cambiato e quindi sapere se devi ri-analizzare. Ma questo implica che l'informazione sia corretta, aggiornata e che tu abbia uno stato precedente con cui confrontarlo.

In modo più generale

Come ha suggerito Steffen, l'hashing può essere molto veloce: è necessario leggere il file una sola volta e, a meno che non si lavori con risorse molto limitate (sistemi embedded, ecc.) il ritardo introdotto dal processo di hashing stesso dovrebbe essere minimale e molto più piccolo dell'operazione IO stessa nella maggior parte dei casi (a meno che tu non stia operando rigorosamente dalla memoria). Come sempre, il diavolo si trova nei dettagli: non hai fornito alcuna informazione su ciò che avevi intenzione di fare, quindi non c'è modo di fornire una risposta più utile.

    
risposta data 24.11.2016 - 08:39
fonte

Leggi altre domande sui tag