Checksum vs Hash: differenze e somiglianze?

2

Quali sono le somiglianze e le differenze tra un "checksum" e una funzione "hash" ?

Possono essere usati invece l'uno dell'altro? O il loro utilizzo è diverso?

Ad esempio, per verificare l'integrità di un testo, quale è meglio usare?

E se sono diversi, quali sono gli algoritmi specifici per ognuno di essi? Significato di quale algoritmo è appropriato per "checksum" e quale per "hash" funzione?

    
posta sas 27.09.2018 - 16:00
fonte

3 risposte

3

Un checksum (come CRC32) serve a impedire modifiche accidentali . Se un byte cambia, il checksum cambia. Il checksum non è sicuro da proteggere da modifiche dannose: è piuttosto facile creare un file con un determinato checksum.

Una funzione di hash mappa alcuni dati in altri dati. Viene spesso utilizzato per accelerare i confronti o creare una tabella hash. Non tutte le funzioni di hash sono protette e l'hash non cambia necessariamente quando i dati cambiano.

Una funzione di hash crittografica (come SHA1) è un checksum sicuro contro le modifiche dannose. È piuttosto difficile creare un file con un hash crittografico specifico.

Per rendere le cose più complicate, le funzioni di hash crittografico vengono talvolta chiamate semplicemente funzioni di hash.

    
risposta data 27.09.2018 - 16:08
fonte
2

What are similarities and differences between a "checksum" algorithm and a "hash" function?

Viene usato un checksum per determinare se qualcosa è uguale.

Se hai scaricato un file, non puoi mai essere sicuro che sia danneggiato sulla strada verso il tuo computer. Puoi usare cksum per calcolare un checksum (basato su CRC-32) della copia che hai ora e quindi confrontare con il checksum che il file dovrebbe avere . Ecco come si controlla l'integrità del file.

Una funzione di hash viene utilizzata per mappare una data in un'altra data di dimensione fissa. Una funzione di hash perfetta è iniettiva, quindi non ci sono collisioni. Ogni input ha un output fisso.

Per la verifica viene utilizzata una funzione di hash crittografica. Con una funzione di hash crittografica non dovresti essere in grado di calcolare l'input originale.

Un caso d'uso molto comune è l'hashing della password. Ciò consente la verifica di una password senza dover salvare la password stessa. Un fornitore di servizi salva solo un hash di una password e non è in grado di calcolare la password originale. Se il database degli hash delle password viene compromesso, un utente malintenzionato non dovrebbe essere in grado di calcolare anche queste password. Questo non è il caso, perché ci sono algoritmi forti e deboli per l'hashing della password. Puoi trovarne di più su questo stesso sito.

TL; DR:

I checksum sono usati per confrontare due informazioni per controllare se due parti hanno esattamente la stessa cosa.

Gli hash sono usati (in crittografia) per verificare qualcosa, ma questa volta, deliberatamente solo una parte ha accesso alla data che deve essere verificata, mentre l'altra parte ha accesso solo all'hash .

    
risposta data 27.09.2018 - 16:44
fonte
1

Sono fondamentalmente la stessa cosa, ma i checksum tendono ad essere più piccoli (pochi byte).

Integrità

Sia le funzioni hash che i checksum vengono utilizzati per verificare l'integrità dei dati. Le funzioni hash crittografiche sono funzioni hash per le quali una collisione è sconosciuta. Questo è il motivo per cui le funzioni di hash crittografiche vengono utilizzate per costruire cose come un MAC (vedi sotto).

Perdita di informazioni

Un'altra proprietà delle funzioni di hash e dei checksum è che le informazioni vengono perse durante il calcolo. Questo deve essere vero se si convertono alcuni dati in un checksum / hash con meno bit. Questo è anche il motivo per cui non puoi tornare ai dati originali con solo un checksum o un hash.

HMAC

Quello che penso tu stia cercando è un MAC (Message Authentication Code). Tale codice viene utilizzato per rilevare la manomissione dei dati. Il più delle volte è solo una combinazione di una funzione hash e qualche valore segreto, come una password. Vedi anche:

link

Password

Le password vengono talvolta memorizzate come hash. Per verificare la password, viene calcolato un hash della password inserita e viene confrontato con l'hash della password memorizzata. I checksum non vengono utilizzati per queste cose perché sono generalmente più brevi e più soggetti a collisioni, il che significa che puoi provare password casuali e avere la possibilità che il tuo input abbia lo stesso checksum della password originale.

Si noti che l'uso delle normali funzioni di hash (digest) non è il modo giusto per memorizzare le password. Poiché vengono creati per una rapida digestione dei dati, gli hacker possono rompere quegli hash alle alte velocità. I programmatori dovrebbero utilizzare una funzione di hash progettata per memorizzare le password, come bcrypt o Argon2.

Modifica: esempi di algoritmi

Per rispondere alla tua domanda finale su algoritmi specifici: Dai un'occhiata alla pagina di Wikipedia che elenca le funzioni hash. Come ho detto sopra, sono fondamentalmente uguali. Su Wikipedia, i checksum sono elencati come un sottoinsieme di funzioni hash.

link

    
risposta data 27.09.2018 - 17:24
fonte

Leggi altre domande sui tag