# Cos’è una funzione di hash?

L’enorme aumento della quantità di dati elaborati in tutto il mondo e nelle reti dati locali solleva costantemente la seguente domanda: con che rapidità si può accedere a grandi quantità di dati e come si garantisce la sicurezza dello scambio di dati? Proprio qui scende in campo, assieme ad altre tecnologie di sicurezza, la funzione di hash. In questo articolo vi spieghiamo quali sono le sue caratteristiche e a cosa serve.

Il termine inglese “hash” significa “sminuzzare”. Tramite la funzione di hash, quindi, i dati vengono **“sminuzzati”** e portati a una **lunghezza uniforme**, indipendentemente dalla dimensione del valore di partenza. Questa funzione viene utilizzata in molti ambiti della tecnologia dell’informazione. Tra di essi troviamo, ad esempio:

- La comunicazione cifrata tra server web e browser, così come la creazione di [ID di sessione](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/che-cose-un-id-di-sessione/) per applicazioni Internet e cache di dati (caching)
- La protezione di dati sensibili come password, analisi web, metodi di pagamento
- La firma digitale dei messaggi di posta elettronica
- L’individualizzazione di set di dati uguali o simili tramite funzioni di ricerca

---

### Definizione

Funzione di hash: tramite la funzione di hash stringhe di lunghezza diversa vengono trasformate in stringhe della stessa lunghezza. Quindi, ad esempio, con la funzione di hash è possibile codificare le password in stringhe di caratteri autorizzati. Non è pero possibile riportare il valore di hash alla stringa originaria.

---

[![Immagine: Una panoramica della funzione di hash](https://www.ionos.it/digitalguide/fileadmin/_processed_/6/2/csm_una-panoramica-della-funzione-di-hash_eb917fe248.webp "Una panoramica della funzione di hash")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Schaubilder/una-panoramica-della-funzione-di-hash.png) Nell’esempio, tramite la funzione di hash, da ogni password di lunghezza diversa viene creato un valore di hash con la stessa lunghezza prestabilita e archiviato nel database. Questi valori di hash non possono essere riconvertiti per scoprire le password originali.       ##  Quali sono le proprietà di una funzione di hash?

Una funzione di hash deve soddisfare dei requisiti definiti, in modo tale da avere le seguenti **proprietà**:

### La funzione di hash è a senso unico

**Non** è possibile **tornare** al contenuto dei dati originario a partire dal valore di hash creato. Nell’esempio sopra rappresentato, non è quindi possibile risalire dal valore di hash creato “$P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3” alla password “susi\_562#alone”.

### I valori di hash sono a prova di collisione

Non può accadere che a dati di origine diversa venga attribuito lo stesso valore di hash. Ogni inserimento deve generare un nuovo valore di hash. Se questo viene garantito, si parla anche di una funzione di hash **crittografica**. Nell’immagine qui sopra non sussistono valori identici, quindi **nemmeno collisioni** (“incidenti”) tra i dati creati. Per evitare tali collisioni i programmatori fanno uso di tecnologie avanzate.

### La funzione di hash è estremamente veloce

Se la trasformazione dei dati immessi in un valore di hash richiedesse molto tempo, la procedura andrebbe considerata inadatta. La funzione di hash deve quindi funzionare in modo molto **rapido**. Nelle banche dati, i valori di hash vengono memorizzati nelle cosiddette [tabelle di hash](https://www.ionos.it/digitalguide/server/sicurezza/tabella-hash/ "Tabella hash") per garantire un accesso rapido.

## Cos’è il valore di hash creato?

Il valore di hash è la stringa a **lunghezza fissa** generata dalla funzione di hash. La quantità di caratteri del valore immesso è irrilevante, verrà **sempre emesso lo stesso numero di caratteri.** Il numero di caratteri consentito viene stabilito all’interno della funzione stessa.

[![Immagine: I valori di hash hanno sempre la stessa lunghezza](https://www.ionos.it/digitalguide/fileadmin/_processed_/7/8/csm_hash-values-are-a-fixed-length_6c4a5c7624.webp "I valori di hash hanno sempre la stessa lunghezza")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/hash-values-are-a-fixed-length.jpg) I valori di hash creati con la procedura “SHA256” sono formati da stringhe che presentano sempre la stessa lunghezza, indipendentemente dal tipo e dal numero dei caratteri inseriti.       Perciò il valore di hash è il risultato calcolato tramite la funzione di hash e un algoritmo di hash. Per indicare il valore di hash si utilizza anche il termine **“fingerprint”** a evidenziare l’unicità di ciascuno di questi, paragonabile a quella di un’impronta digitale. Utilizzando le lettere minuscole da “a” a “f” e i numeri da “0” a “9”, nel caso di un valore di hash della lunghezza di 64 caratteri, esistono **1.1579209e+77** **possibilità** di valori ottenibili, ciò equivale a 70 seguito da 24 zeri. Questo va a dimostrare che anche stringhe non molto lunghe creano un’impronta digitale fruibile.

I valori di hash mostrati nell’esempio qui sopra possono essere facilmente creati con poche righe di codice PHP.

```none
<?php
echo hash(‘sha256’, ‘apple’); 
?>
```

Qui si utilizza l’algoritmo di cifratura "SHA256" per calcolare il valore di ingresso "apple". Il corrispondente valore di hash o l’impronta digitale è sempre “3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102“.

## Funzione di hash e siti web

Nel trasferimento di dati [cifrato tramite SSL](https://www.ionos.it/digitalguide/siti-web/creare-siti/certificato-ssl/ "Certificato SSL"), durante la richiesta al server web, il certificato del server viene inviato al browser dell’utente. Successivamente, tramite funzione di hash viene creata una chiave di sessione che viene inviata al server, dove viene poi a sua volta decifrata e verificata. Quando il server conferma la chiave di sessione ricevuta, si avvia il traffico dati cifrato HTTP, ossia come [HTTPS](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/cose-https/ "Cos’è HTTPS?"). Anche i pacchetti dati scambiati sono cifrati, rendendo **quasi impossibile** l’accesso non autorizzato.

[![Immagine: Certificato del server con valori di hash (fingerprint)](https://www.ionos.it/digitalguide/fileadmin/_processed_/e/f/csm_server-certificate-with-hash-values_eff6a522a9.webp "Certificato del server con valori di hash (fingerprint)")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/server-certificate-with-hash-values.jpg) Un frammento del certificato del sito web dell’emittente televisiva tedesca Deutsche Welle mostra la chiave utilizzata dal server per entrare in comunicazione con il browser dell’utente.       Le chiavi di sessione (**Session ID**) vengono generate da dati variabili di una visita a un sito web, come indirizzo IP e la validazione temporale, e trasmesse tramite URL. Tali ID di sessione sono ad esempio necessari per identificare in modo univoco il carrello di un utente su un e-commerce. Al giorno d’oggi, gli ID di sessione vengono raramente trasmessi attraverso URL (vale a dire: www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695). È infatti molto più comune l’identificazione nell’header del sito Internet tramite **cookie**.

Anche l’archiviazione temporanea di informazioni nelle [cache](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/cose-una-cache/ "Cos’è una cache?") avviene tramite valori di hash cifrati. In questo modo gli utenti che non ne hanno i diritti, una volta visionata la cache, non possono risalire ai siti Internet visitati o estrarre i dati di accesso o pagamento.

La comunicazione tra **server FTP e client** funziona allo stesso modo quando si utilizza il [protocollo SFTP](https://www.ionos.it/digitalguide/server/know-how/sftp-ssh-file-transfer-protocol/ "SFTP (SSH File Transfer Protocol)").

## Protezione dei dati sensibili

I **dati di accesso** degli account web sono **bersagli** amati dagli hacker. L’obiettivo è quello di interrompere il funzionamento del sito web per ridurre, ad esempio, i guadagni derivanti dalla pubblicità basata sul traffico o per raggiungere le informazioni salvate relative ai metodi di pagamento.

[![Immagine: Chiavi di cifratura su WordPress](https://www.ionos.it/digitalguide/fileadmin/_processed_/1/e/csm_chiavi-di-cifratura-su-wordpress_f759a0be18.webp "Chiavi di cifratura su WordPress")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/chiavi-di-cifratura-su-wordpress.png) Il sistema di gestione di contenuti WordPress offre numerose funzioni di sicurezza per l’autenticazione degli utenti registrati sul sito web. Le chiavi indicate vengono create con diversi algoritmi di hash.       Dall’esempio della pagina di WordPress si deduce che una **password** è sempre **cifrata** prima di essere archiviata. In combinazione con le chiavi di sessione generate nel sistema si ottiene un elevato livello di sicurezza, importante soprattutto per **proteggersi** dai cosiddetti attacchi di [forza bruta](https://www.ionos.it/digitalguide/server/sicurezza/metodo-forza-bruta-definizione-e-misure-preventive/ "Metodo forza bruta: definizione e misure preventive")**, nei quali** un hacker prova varie combinazioni utilizzando una funzione di hash programmata autonomamente, fino a raggiungere una corrispondenza che permetta l’accesso. L’utilizzo di password lunghe con elevati standard di sicurezza rende il successo di questi attacchi meno probabile, poiché la potenza di calcolo richiesta è molto più elevata. Ancora un consiglio: **non utilizzate password semplici e siate sicuri di proteggere le vostre informazioni di accesso e dati di qualsiasi tipo contro l’accesso non autorizzato.**

## Firme digitali

Il **traffico di e-mail** avviene tramite server pensati appositamente per trasmettere questo tipo di messaggi. Le chiavi generate tramite funzione di hash sono anche utilizzate per [firmare i messaggi in modo digitale](https://www.ionos.it/digitalguide/e-mail/tecnica-e-mail/firma-digitale-di-una-e-mail/ "Firma digitale di una e-mail").

[![Immagine: Informazioni generali sulla firma digitale nelle e-mail](https://www.ionos.it/digitalguide/fileadmin/_processed_/3/c/csm_general-information-for-an-email-signature_7a034379f8.webp "Informazioni generali sulla firma digitale nelle e-mail")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/general-information-for-an-email-signature.jpg) La firma digitale di un’e-mail è comparabile con la firma autografa di una lettera: unica e univoca.       Di seguito come si svolge l’**invio di un messaggio** con **firma digitale**:

- Il mittente converte il suo messaggio in un valore di hash e lo codifica usando la sua chiave privata. Questo valore hash cifrato è la firma digitale.
- Il messaggio viene inviato al destinatario assieme al valore di hash cifrato.
- Il destinatario a sua volta genera un valore di hash del messaggio ricevuto usando **la stessa funzione di hash**. Inoltre, quest’ultimo decodifica il valore di hash ricevuto con la chiave pubblica e li confronta tra loro.
- Se i due valori **corrispondono**, il destinatario può dedurne che il messaggio **non è stato manipolato** durante il percorso.

Attenzione: una **firma digitale non determina la cifratura del messaggio**, bensì fornisce una dimostrazione dell’integrità del messaggio stesso. I contenuti sensibili devono essere ulteriormente cifrati.

## Come può aiutare la funzione di hash nelle funzioni di ricerca?

La ricerca tra **grandi quantità di dati** è una procedura che richiede l’impiego di molte risorse. Immaginate di avere una tabella che elenchi ogni abitante di una grande città, con molti campi diversi per ogni voce (nome, cognome, indirizzo, ecc.). Trovare un solo termine sarebbe molto dispendioso in termini di tempo e richiederebbe molta potenza di calcolo. Per semplificare questo processo, ogni voce della tabella può essere convertita in un unico valore di hash. Il termine di ricerca viene poi convertito anch’esso in un valore di hash. Questo limita il numero di lettere, cifre e simboli che devono essere confrontati, il che è molto più efficiente della ricerca in ogni campo che esiste nella tabella dei dati, ad esempio, di tutti i nomi che iniziano con “Ann”.

---

### In sintesi

Le funzioni di hash sono utilizzate per migliorare la sicurezza nelle comunicazioni elettroniche ove gli standard di sicurezza sono sempre più sofisticati. Tuttavia, gli hacker sono costantemente aggiornati e sviluppano tecniche di attacco sempre più complesse ed avanzate.

---


This is a markdown version of: [https://www.ionos.it/digitalguide/server/sicurezza/funzione-di-hash/](https://www.ionos.it/digitalguide/server/sicurezza/funzione-di-hash/) for AI/LLM consumption.