• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Fabrizio TedeschiFebbraio 20, 2025 4 min di lettura

Hashing e sicurezza informatica

Cybersecurity
facebooktwitterlinkedinreddit

Il furto di dati è uno degli attacchi informatici più diffusi, diventa sempre quindi più importante curare i livelli di protezione ed accesso ai dati sia durante il loro transito fra dispositivi sia nei luoghi di salvataggio.

Si pensi per esempio all’insieme delle password di tutti gli utenti iscritti ad un sito web, in caso di accesso illecito al database e furto di tali password, l’insieme degli utenti risulta vulnerabile a futuri furti di account. Infatti, è pratica estremamente diffusa fra gli utenti l’utilizzo della stessa password per account differenti (pratica molto rischiosa).

Recommended article
Marzo 18, 2025

Scrivere codice sicuro: la guida essenziale per gli sviluppatori Java – Parte 3

peduz91

peduz91

Cybersecurity

Si rende quindi necessaria una maggiore protezione dei dati sensibili degli utenti. Una possibile soluzione al furto di password è data dall’utilizzo di tecniche di crittografia di hashing.

Indice
  1. Hashing in teoria
  2. Utilizzo dell'hashing per la sicurezza delle password
  3. Password dimenticata?
  4. Salt & Pepper
  5. Le password salvate in chiaro sono ancora molte!

Hashing in teoria

L’hashing è un metodo di crittografia che permette di trasformare un segnale di input (nel nostro caso una stringa di caratteri, la password) in un segnale di output con dimensione fissata. La trasformazione avviene attraverso una funzione di hash che opera attraverso uno specifico algoritmo e che possiede le seguenti proprietà:

  • La funzione è deterministica: dato lo stesso input produce sempre lo stesso output
  • La funzione non è invertibile: dato un output non è possibile risalire all’input
  • Dati due input essi possono produrre lo stesso output (collisione)

Sono proprio le suddette proprietà che permettono all’hashing di trovare una concreta applicazione nella cybersecurity infatti esse garantiscono rispettivamente che:

  • A partire dalla stessa password si ottenga sempre la stessa stringa di hash
  • Data una stringa di hash non è possibile risalire alla password di input

La terza “proprietà” potrebbe essere causa di malfunzionamenti, tuttavia la probabilità di collisioni non può essere eliminata ma è estremamente limitata per quanto riguarda le funzioni di hash.

Vediamo un esempio:

  • La stringa “HelloWorld35” produce (e produrrà sempre con lo stesso algoritmo) una stringa di hash del tipo “74ea9223ac”
  • La stringa “HelloPass36!” produce (e produrrà sempre con lo stesso algoritmo) una stringa di hash del tipo “4677e13e83”
  • La stringa “123MyKeyWord” produce (e produrrà sempre con lo stesso algoritmo) una stringa di hash del tipo “74ea9223ac” questo è un caso di collisione

Utilizzo dell’hashing per la sicurezza delle password

L’utilizzo di hashing sulle password, quindi, permette di non dover salvare direttamente le password degli utenti nei database ma solamente il loro corrispondente valore hashato.

In questo modo quando l’utente crea una nuova password (o la inserisce per loggarsi) non viene trasmessa la stringa inserita bensì la stringa di hash corrispondente esponendo al rischio di furto solamente dati criptati!

Vediamo cosa accade durante una tipica operazioni di registrazione e login che utilizza l’hashing come tecnica di sicurezza:

  1. L’utente crea e ricorda la propria password
  2. La password viene hashata e spedita al server
  3. Il server registra la stringa hashata come password dell’utente
  4. L’utente inserisce la password per un successivo login
  5. La password viene hashata e spedita al server
  6. Il server esegue il confronto fra le due stringhe hashate, se sono uguali la password inserita è corretta

Quando i malintenzionati compiono il furto di dati essi ottengono solamente stringhe di hash che non sono in grado di invertire. Le password degli utenti, conseguentemente, sono al sicuro.

Password dimenticata?

La conoscenza delle tecniche di hash e della loro applicazione permette di spiegare anche il motivo per cui quando un utente dimentica la password è costretto a crearne una nuova. Il server non possiede le password degli utenti ma solo le corrispondenti stringhe di hash, perciò non può comunicare all’utente la password dimenticata ma può solo abilitarlo a crearne una nuova.

Questo procedimento, che a volte risulta lungo e stressante per alcuni utenti è in realtà spesso sinonimo di sicurezza. Sempre meglio diffidare dai siti/server che alla domanda “password dimenticata?” rispondono inviando la password in chiaro, significa che la hanno salvata sul database ed è esposta a potenziali furti!

Salt & Pepper

Per garantire ulteriori livelli di sicurezza sono spesso applicate modifiche agli input prima dell’utilizzo di funzioni di hashing. Questi ulteriori livelli di sicurezza consistono nell’aggiungere una stringa di caratteri alla password prima che questa venga sottoposta ad hashing. Ovviamente, in assenza di tale stringa il risultato della funzione di hashing sarà errato.

  • Salt: stringa di caratteri generata casualmente associata ad ogni utente, e diversa per ciascuno di essi, aggiunta agli input prima dell’hashing
  • Pepper: stringa di caratteri segreta gestita dal server o dal codice sorgente aggiunta agli input prima dell’hashing

Vediamo un esempio con stringa di pepper = “myPepper”:

UserPasswordSaltPassword + Salt + Pepper
User_AHelloWordl35ABE090HelloWordl35+ABE090+myPepper
User_BHelloPass36!8A76CDHelloPass36!+8A76CD+myPepper

Le password salvate in chiaro sono ancora molte!

Il salvataggio di password tramite hashing è una pratica di sicurezza che dovrebbe sempre essere adottata, tuttavia molte aziende ancora non adempiono a questo compito.

Ne è un esempio un recente caso avviato nel 2019 e concluso nel 2024 riguardante una società irlandese di Meta. La società aveva, infatti, salvato in chiaro le password di numerosi utenti lasciandole accessibili ai dipendenti e a possibili malintenzionati senza, fra l’altro, adempiere alla normativa europea GDPR in materia di sicurezza dei dati personali.

Per approfondire l’argomento è possibile consultare il comunicato della Irish Data Protection Commission.

Codemotion Collection Background
Dalla community
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection Dalla community dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit

Tagged as:Hashing

Fabrizio Tedeschi
Studente di Ingegneria Informatica e docente di informatica presso istituiti di istruzione secondaria di 2^ grado. Credo che la divulgazione e l'informazione abbiano un ruolo fondamentale nel comprendere al meglio gli sviluppi ed i progressi della tecnologia e dell'informatica.
I Big Data: ascesa senza limiti ed i suoi effetti nel panorama IT odierno
Previous Post
Quarkus: guida pratica per esporre i metadati dei microservizi
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions