Cos'è una funzione di hash crittografica?

Sommario:

Cos'è una funzione di hash crittografica?
Cos'è una funzione di hash crittografica?
Anonim

Una funzione hash crittografica (CHF) è un algoritmo che può essere eseguito su dati come un singolo file o una password per produrre un valore chiamato checksum.

L'uso principale di un CHF è verificare l'autenticità di un dato. Si può presumere che due file siano identici solo se i checksum generati da ciascun file, utilizzando la stessa funzione hash crittografica, sono identici.

Alcune funzioni hash crittografiche comunemente utilizzate includono MD5 e SHA-1, sebbene ne esistano anche molte altre. Queste sono spesso denominate "funzioni hash", ma non è tecnicamente corretto. Una funzione hash è un termine generico che comprende CHF insieme ad altri tipi di algoritmi come i controlli di ridondanza ciclica.

Funzioni hash crittografiche: un caso d'uso

Supponiamo che tu scarichi l'ultima versione del browser Firefox. Per qualche motivo, dovevi scaricarlo da un sito diverso da quello di Mozilla. Poiché non è ospitato su un sito di cui hai imparato a fidarti, vorresti assicurarti che il file di installazione che hai appena scaricato sia esattamente lo stesso di quello offerto da Mozilla.

Utilizzando un calcolatore di checksum, calcoli un checksum utilizzando una particolare funzione di hash crittografica, come SHA-2, e quindi lo confronti con quello pubblicato sul sito di Mozilla. Se sono uguali, puoi essere ragionevolmente sicuro che il download che hai è quello che Mozilla intendeva che tu avessi.

Image
Image

Le funzioni hash crittografiche possono essere invertite?

Le funzioni hash crittografiche sono progettate per impedire la possibilità di invertire i checksum che creano sui testi originali. Tuttavia, anche se sono praticamente impossibili da invertire, non è garantito al 100% la protezione dei dati.

Gli hacker possono utilizzare una tabella arcobaleno per capire il testo normale di un checksum. Le tabelle Rainbow sono dizionari che elencano migliaia, milioni o addirittura miliardi di checksum insieme al loro valore di testo normale corrispondente.

Anche se tecnicamente non si tratta di invertire l'algoritmo di hash crittografico, potrebbe anche esserlo, dato che è così semplice da fare. In re altà, poiché nessuna tabella arcobaleno può elencare ogni possibile checksum esistente, di solito sono utili solo per frasi semplici come password deboli.

Ecco una versione semplificata di una tabella arcobaleno per mostrare come funzionerebbe utilizzando la funzione hash crittografica SHA-1:

Esempio di tabella Rainbow
Testo normale SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
password1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Un hacker deve sapere quale algoritmo di hash crittografico è stato utilizzato per generare i checksum per calcolare i valori.

Per una maggiore protezione, alcuni siti Web che memorizzano le password degli utenti eseguono funzioni aggiuntive sull'algoritmo hash crittografico dopo che il valore è stato generato ma prima che sia stato archiviato. Questo processo produce un nuovo valore che solo il server web comprende e che non corrisponde al checksum originale.

Ad esempio, dopo aver inserito una password e generato il checksum, potrebbe essere separata in più parti e riorganizzata prima di essere archiviata nel database delle password, oppure alcuni caratteri potrebbero essere scambiati con altri. Quando si tenta di autenticarsi al successivo accesso dell'utente, il server annulla questa funzione aggiuntiva e il checksum originale viene nuovamente generato per verificare che la password di un utente sia valida.

Seguire questi passaggi limita l'utilità di un hack in cui vengono rubati tutti i checksum. L'idea è di eseguire una funzione sconosciuta, quindi se l'hacker conosce l'algoritmo di hash crittografico ma non quello personalizzato, conoscere i checksum della password non è utile.

Password e funzioni hash crittografiche

Un database salva le password degli utenti in un modo simile a una tabella arcobaleno. Quando viene inserita la tua password, il checksum viene generato e confrontato con quello registrato con il tuo nome utente. Ti viene quindi concesso l'accesso se i due sono identici.

Dato che un CHF produce un checksum non reversibile, è sicuro per te rendere la tua password semplice come 12345, invece di 12@34 $5, semplicemente perché i checksum stessi non possono essere compresi? No, ed ecco perché.

Queste due password sono entrambe impossibili da decifrare solo guardando i checksum:

MD5 per 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 per 12@34$5: a4d3cc004f487b18b2ccd4853053818b

A prima vista, potresti pensare che sia giusto usare una di queste password. Questo è vero se un utente malintenzionato ha provato a capire la tua password indovinando il checksum MD5, cosa che nessuno fa, ma non è vero se viene eseguito un attacco di forza bruta o dizionario, che è una tattica comune.

Un attacco di forza bruta si verifica quando vengono prese più pugnalate casuali per indovinare una password. In questo caso, sarebbe facile indovinare 12345, ma piuttosto difficile capire a caso l' altro. Un attacco dizionario è simile in quanto l'attaccante può provare ogni parola, numero o frase da un elenco di password comuni (e non così comuni) e 12345 è una di quelle comuni password.

Anche se le funzioni di hash crittografico producono checksum difficili o impossibili da indovinare, dovresti comunque utilizzare una password complessa per tutti i tuoi account utente online e locali.

Maggiori informazioni sulle funzioni hash crittografiche

Può sembrare che le funzioni hash crittografiche siano correlate alla crittografia, ma le due funzionano in modi diversi.

La crittografia è un processo a due vie in cui qualcosa viene crittografato per diventare illeggibile e quindi decrittografato in seguito per essere riutilizzato normalmente. Puoi crittografare i file che hai archiviato in modo che chiunque vi acceda non sia in grado di usarli, oppure puoi utilizzare la crittografia del trasferimento di file per crittografare i file che si spostano su una rete, come quelli che carichi o scarichi online.

Le funzioni hash crittografiche funzionano in modo diverso, in quanto i checksum non devono essere annullati con una password di dehashing speciale. L'unico scopo che servono i CHF è confrontare due dati, ad esempio quando si scaricano file, si memorizzano le password e si estraggono dati da un database.

È possibile che una funzione di hash crittografica produca lo stesso checksum per diversi dati. Quando ciò accade, si parla di collisione, che è un grosso problema considerando che l'intero punto della funzione è creare checksum univoci per ogni dato immesso al suo interno.

Le collisioni possono verificarsi perché ogni CHF produce un valore di una lunghezza fissa indipendentemente dai dati di input. Ad esempio, la funzione hash crittografica MD5 genera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 e e10adc3949ba59abbe56e057f20f883e per tre blocchi di dati completamente diversi.

Il primo checksum è da 12345. Il secondo è stato generato da oltre 700 lettere e numeri, e il terzo è da 123456. Tutti e tre gli input sono di lunghezza diversa, ma i risultati sono sempre lunghi solo 32 caratteri, poiché è stato utilizzato il checksum MD5.

Non c'è limite al numero di checksum che possono essere creati perché ogni piccola modifica nell'input dovrebbe produrre un checksum completamente diverso. Poiché esiste un limite al numero di checksum che un CHF può produrre, c'è sempre la possibilità di incontrare una collisione.

Questo è il motivo per cui sono state create altre funzioni hash crittografiche. Mentre MD5 genera un valore di 32 caratteri, SHA-1 genera 40 caratteri e SHA-2 (512) ne genera 128. Maggiore è il numero di caratteri del checksum, minore è la probabilità che si verifichi una collisione.

Consigliato: