Cosa sono gli hash?
Gli hash sono formule matematiche che accettano una stringa di dati di lunghezza variabile, generalmente sotto forma di testo, e li convertono in valori numerici di lunghezza fissa più brevi. Gli hash sono usati frequentemente nei database dei computer per rendere le ricerche più veloci ed efficienti. Vengono inoltre utilizzati nella crittografia per garantire che le password non vengano compromesse e per autenticare le firme digitali, tra gli altri usi. Gli hash vanno anche con il nome di funzioni hash e possono anche essere considerati algoritmi.
Gli hash svolgono un ruolo importante nel facilitare le ricerche nel database. In un database costituito da nomi, ad esempio, se un utente cerca "John Doe", il computer dovrebbe abbinare tutti i caratteri della ricerca a quelli di ogni voce del database. Ogni personaggio nel nome avrebbe 26 diverse possibilità - le lettere dell'alfabeto inglese - mentre la lunghezza variabile delle voci rallenterebbe anche la ricerca.
Al contrario, l'applicazione di una funzione hash renderebbe la vita del computer molto più semplice. Trasformare ogni stringa di testo in una serie di numeri semplificherebbe la ricerca, perché il computer avrebbe solo dieci possibilità di controllare ogni carattere: le cifre da "0" a "9." La lunghezza fissa della serie di numeri aiuta anche il computer a fare la sua lavoro più efficiente.
In un database con una funzione hash applicata, tutte le voci hanno un numero univoco corrispondente. Questa si chiama chiave hash. In questo caso, quando esegui una ricerca, il computer applica prima la funzione hash all'input che hai scritto, ad esempio "John Doe". Ciò si traduce in un valore numerico, ad esempio "456789". Il computer può quindi rapidamente abbina questo risultato alla chiave hash corrispondente alla voce corretta.
Gli hash funzionano anche come firme digitali. Ad esempio, un mittente, Robert, desidera inviare un documento a qualcuno e il destinatario, Mary, desidera assicurarsi che il documento non sia stato manomesso durante il percorso. Il mittente, Robert, deve solo eseguire il documento attraverso una funzione hash, che risulta in un valore numerico. Robert quindi crittografa la chiave hash e invia il documento insieme alla chiave crittografata.
Mary riceve entrambi gli oggetti e decodifica la chiave hash. Ora può vedere il valore numerico risultante dal documento prima che fosse inviato. Per verificare che il documento in mano sia esattamente lo stesso, esegue il documento tramite una funzione hash sul suo computer. Infine, confronta entrambe le chiavi. Se sono uguali, il documento non è stato modificato sulla strada per il destinatario.
Esistono molte funzioni hash diverse, ognuna con le proprie formule matematiche. Perché una funzione hash funzioni, deve ridurre al minimo qualsiasi collisione, che si verifica quando due voci del database hanno la stessa chiave hash. Le funzioni hash devono anche essere a senso unico. Ciò significa che è possibile produrre una chiave da una voce o un documento del database, ma non viceversa. In altre parole, non è possibile "decodificare" il documento originale dalla sua chiave hash.