Ultimo aggiornamento: 31/03/2023

L’hashing è diventato insostituibile nella sicurezza informatica. Il testo semplice, come le password e i dati personali, può essere convertito in un codice utilizzando una funzione di hashing. A differenza del metodo di crittografia, il codice non può essere riconvertito nei dati originali. In questo modo, tutti i dati degli utenti sono al sicuro dagli attacchi degli hacker.

Questo articolo ti dice tutto quello che devi sapere sull’hashing. Ti spiegheremo esattamente cos’è l’hashing, come funziona e di cosa devi essere consapevole. Imparerai anche a conoscere importanti aree di applicazione.




Sommario

  • Le funzioni di hash sono utilizzate per convertire i dati in codici.
  • Poiché l’hashing è un “processo a senso unico”, questi codici non possono essere riconvertiti nei dati originali. Questo significa che i dati non possono essere visualizzati e sono protetti dagli attacchi.
  • Gli hash possono essere ulteriormente protetti con Sale e Pepe.

Informazioni di base: Cosa dovresti sapere sull’hashing

Di seguito risponderemo alle domande più importanti sull’hashing. Imparerai cos’è l’hashing, come funziona e in quali aree viene utilizzato. Spiegheremo anche quali metodi proteggono ulteriormente gli hashish.

Cos’è l’hashing?

Nell’hashing, un input di dati viene inserito in una funzione di hash in modo da ottenere un output di dati. La quantità di dati in entrata può essere maggiore della quantità di dati in uscita.

La quantità in ingresso può essere di diverse lunghezze, la quantità di destinazione ha sempre la stessa lunghezza. Solo diverse funzioni hash generano insiemi di destinazione di lunghezze diverse.

Oltre alle funzioni hash convenzionali, esistono anche funzioni hash crittografiche. Le funzioni hash crittografiche costituiscono il nucleo delle criptovalute, come i Bitcoin. Entrambi i tipi di funzioni hanno in comune il fatto che producono sempre lo stesso output con lo stesso input.

Le funzioni di hash sono utilizzate per generare codici dai dati. A causa della funzione unidirezionale, i codici non possono essere riconvertiti e i dati rimangono segreti. (Fonte immagine: Jae Rue / Pixabay)

Gli algoritmi utilizzati nell’hashing assicurano che sia molto difficile indovinare quale sia la quantità di input in base alla quantità di destinazione. D’altra parte, è molto facile ottenere l’insieme target dall’insieme di input. Gli algoritmi di hash hanno quindi una funzione unidirezionale. Questo li distingue dalla crittografia convenzionale(1). Si possono rompere più facilmente(2).

Ora c’è ancora la questione di cosa sia effettivamente necessario per l’hashing. È utilizzato nella sicurezza informatica, per esempio. Qui viene utilizzato per memorizzare le password in modo sicuro. Memorizzare le password come testo semplice o solo leggermente criptato sarebbe troppo insicuro, perché potrebbero essere facilmente decifrate e gli account associati violati(2).

Come funziona una funzione hash?

Come già spiegato, l’input, cioè l’insieme di input, di una funzione hash può essere di diverse lunghezze. L’output, cioè l’insieme di obiettivi, rimane sempre lo stesso. Tuttavia, la lunghezza dell’insieme di destinazione varia a seconda della funzione hash utilizzata.

Vogliamo mostrarti questo con un esempio pratico. Inseriamo i termini “finance”, “finance” e “financial” una volta nell’algoritmo SHA-256 e una volta nell’algoritmo SHA-1 e confrontiamo i risultati(3). SHA sta per Secure Hash Algorithm.

Set di ingresso nell’algoritmo SHA-256 set di destinazione
Finance b696d75511dc16f2b52563e3113a498311a79866f4672862197aa9a8c5c0da12
finance eab762a03fd979a04cc4706e6536d382bc89d2d1356afcd054a16b2235ecd471
financial fed0e4820af42571c936e28300ccb88026f72e075232358cd1fae4e802fe902b

Come puoi vedere, semplicemente cambiando da una lettera maiuscola ad una minuscola nell’insieme di input cambia l’intero insieme di destinazione. Puoi anche vedere chiaramente che un set di input può variare in lunghezza. Tuttavia, la dimensione del set di obiettivi rimane sempre la stessa. L’algoritmo SHA-256 genera set di destinazione con 256 bit (64 caratteri).

Set di ingresso nell’algoritmo SHA-1 set di destinazione
Finance 1b48d3f014245f7c149ce9b77cd815abb0f1994b
finance a1cf62af599e2c2403cd6542a3bbe8f828511be8
financial 43d4991437f61db19aa26b581bd2d4f06d46b104

Ancora una volta, guarda attentamente i set di input e target nella tabella. Puoi vedere di nuovo che il cambiamento da un grande F ad un piccolo f nell’insieme di input è sufficiente per cambiare l’insieme di destinazione. Puoi anche vedere di nuovo che la lunghezza dell’insieme di input è diversa, ma quella dell’insieme di destinazione rimane la stessa.

Se confronti i diversi target set delle tabelle, puoi vedere che l’algoritmo SHA-1 ha un target set più piccolo dell’algoritmo SHA-256. Il suo output è di 160 bit (40 caratteri).

Altre funzioni hash che sono attualmente considerate sicure e possono quindi essere utilizzate per memorizzare le password sono: Argon2, Bcrypt, Scrypt, PBKDF2(2). Argon2 ha attualmente l’algoritmo più sicuro(4).

Funzioni hash crittografiche

La crittografia si occupa della crittografia delle informazioni utilizzando teorie matematiche(5). Abbiamo già menzionato che esistono funzioni hash crittografiche oltre alle funzioni hash convenzionali. Devono soddisfare queste tre proprietà per essere considerati tali(6)

  • Sicurezza in caso di collisione
  • Funzione a senso unico
  • Secondo modello di resistenza

Cosa significano queste proprietà in dettaglio è spiegato nelle sezioni seguenti.

Sicurezza di collisione

E’ teoricamente possibile che diverse quantità in ingresso portino allo stesso valore di hash in uscita. Se esiste un caso del genere, si chiama collisione. Una funzione hash è considerata una funzione hash crittografica se si può escludere che si verifichi una collisione nel caso di due diverse quantità di input.

La sicurezza della collisione è data se si può escludere che due insiemi di input diversi abbiano lo stesso output.

Gli algoritmi SHA SHA-2 e SHA-3 sono attualmente considerati a prova di collisione. Tuttavia, sono state trovate delle collisioni con le funzioni SHA-0 e SHA-1. Pertanto non sono più considerati sicuri.

Funzione unidirezionale

Con le funzioni hash crittografiche, non deve essere possibile determinare l’insieme di ingresso se l’insieme di destinazione è noto. Questa proprietà è anche chiamata resistenza alla preimpressione o resistenza alla preimpressione.

La resistenza del modello è molto importante nella sicurezza informatica, poiché permette, per esempio, di memorizzare le password senza notazione in chiaro. L’hash prova la correttezza del contenuto senza rivelare il contenuto. In questo modo, i dati possono essere memorizzati in modo protetto.

Seconda resistenza di preimmagine

Un secondo attacco di resistenza di preimmagine significa cercare un altro set di input che produce lo stesso set di destinazione di un set di input già conosciuto.

Invece di cercare due insiemi di input casuali che producono lo stesso set di destinazione, uno è già noto e si cerca un secondo con lo stesso output. Il secondo resistore di preimmagine impedisce quindi di trovare una collisione con un ingresso già noto.

Quali sono le possibili applicazioni?

Quantità di dati molto grandi possono essere ridotte a pochi caratteri con le funzioni hash. Grazie alla già spiegata resistenza alla collisione, si può creare una sorta di impronta digitale elettronica. Le funzioni hash sono quindi utilizzate nelle seguenti aree(6)

  • Checksum
  • Firma digitale
  • Memorizzazione delle password
  • Hashing dei dati

Nel seguito, entreremo più in dettaglio sulle varie applicazioni possibili. Le possibilità di applicazione delle funzioni hash sono molto ampie. La nostra lista dovrebbe darti un’idea delle possibilità di applicazione.

Checksum

Le funzioni di hash possono essere utilizzate per rilevare manipolazioni durante i download. Per esempio, se vuoi scaricare un programma, vuoi essere sicuro che sia l’originale e che non ci siano state manipolazioni durante il processo di download.

Per evitare questo, puoi calcolare un valore di hash del programma prima di scaricarlo. Questo serve poi come impronta digitale. Dopo il download, calcola nuovamente il valore di hash con la stessa funzione. Se entrambi i valori sono uguali, è l’originale.

Firma digitale

Una firma digitale ha lo scopo di confermare l’integrità di un messaggio. Il mittente di un messaggio digitale può convertirlo in un valore di hash utilizzando una funzione di hash. Poi cripta questo valore con una chiave privata. Poi invia sia il messaggio che il valore criptato al destinatario.

Il destinatario può confrontare entrambi i codici per confermare l’integrità di un messaggio.

Il destinatario può ora fare quanto segue per assicurarsi che il messaggio che sta leggendo non sia stato manomesso quando è stato inviato. Può decifrare il valore criptato con una chiave ufficiale, ottenendo così il valore di hash precedentemente calcolato del messaggio. Poi può calcolare il messaggio stesso con la stessa funzione hash che ha usato il mittente.

Ora il destinatario può confrontare entrambi i valori. Se il valore che ottiene dal suo calcolo corrisponde al valore che ottiene dalla decrittazione del valore inviato con il messaggio, è il messaggio originale.

Memorizzare le password

Il fatto che le funzioni hash siano utilizzate per memorizzare le password è già stato menzionato in vari luoghi. Se le password fossero memorizzate come testo semplice, potrebbero essere lette in caso di un attacco. Questo non può accadere se le password sono convertite in un valore hash utilizzando una funzione hash e solo questo valore viene memorizzato.

Se un utente vuole accedere al sistema, inserisce la sua password. Un valore di hash viene creato dalla password inserita utilizzando la stessa funzione di prima. L’utente è autenticato se questo valore appena determinato e il valore memorizzato corrispondono.

Data hashing

Il data hashing può essere utilizzato nei negozi online, per esempio. Tutti i dati personali, come il nome o l’indirizzo e-mail dell’utente, sono in hashish. Invece del testo in chiaro, viene memorizzato solo l’hash.

In questo modo, l’utente del negozio online può rimanere anonimo, mentre i suoi dati, come le preferenze, possono essere utilizzati. Queste informazioni possono essere utilizzate per un targeting ancora più specifico, mentre la protezione dei dati è ancora garantita(7).

Cosa c’entrano il sale e il pepe con l’hashing?

Per proteggere i database e i loro contenuti, per esempio le password, dagli attacchi degli hacker, possono essere prese altre misure di sicurezza oltre all’hashing.

Una di queste misure di sicurezza è l’uso dei sali. I sali sono numeri generati casualmente, uno dei quali viene assegnato ad ogni utente o password. Ogni sale è unico.

La password viene combinata con il sale e poi trasformata in un hash dalla funzione hash. Questo evita le collisioni e due password non possono mai generare lo stesso hash. Rende anche più difficile per gli hacker craccare le password degli utenti(8).

I sali sono combinazioni uniche generate casualmente che rendono gli hash ancora più sicuri. Per fissare i sali, può essere utilizzato anche il metodo Pepper. (Fonte immagine: Darwin Laganzon / Pixabay)

Ci sono alcune cose da tenere a mente con i sali in modo che possano proteggere in modo sicuro da un attacco di hacking. Ogni sale deve essere unico. Se un utente viene aggiunto o se un utente cambia la sua password, deve essere assegnato un nuovo sale.

Ogni sale deve essere generato casualmente. I sali devono avere almeno la stessa lunghezza dell’insieme di destinazione della funzione hash utilizzata. Per i sali dovrebbe essere utilizzato un metodo di allungamento della chiave. Questo rende gli hash più intensivi dal punto di vista computazionale e i software di cracking impiegano più tempo per calcolare gli hash(8).

Oltre ai sali, le password possono essere protette anche da Pepper. Pepper è una stringa generata casualmente di 32 caratteri. A differenza del sale, il pepe è lo stesso per tutte le password. L’obiettivo del Pepper è quello di prevenire il caso in cui un hacker riesca a craccare il database. Senza il Pepper, gli hash delle password non possono ancora essere decifrati.

Funzioni di hash e mining

Anche le funzioni di hash giocano un ruolo importante nel mining dei Bitcoin. L’estrazione dei blocchi è effettuata da algoritmi. Un minatore deve generare un hash che ha un certo numero di zeri all’inizio. Questo è l’unico modo per convalidare un blocco.

Questi blocchi sono ancora memorizzati nelle blockchain. Anche qui viene utilizzato l’hashing. In un blocco, i dati sono memorizzati in una sequenza che non può essere cambiata di nuovo. Infine, un blocco viene memorizzato come hash e questo hash viene messo davanti ad un nuovo blocco.

Finché anche questo è memorizzato come un hash e così via. In questo modo, viene creata una blockchain e una quantità infinita di dati può essere memorizzata(9).

Conclusione

Hashing è un processo in cui un insieme di dati, un insieme in entrata, viene convertito da una funzione in un codice, l’insieme di destinazione. Non importa quanto sia grande l’insieme di input, l’insieme di destinazione è sempre della stessa dimensione.

Solo l’uso di una funzione diversa cambia la dimensione dell’insieme di destinazione. In questo modo, una grande quantità di dati può essere memorizzata in modo da risparmiare spazio. Inoltre, non viene memorizzato nessun testo in chiaro, ma un codice che protegge tutti i dati.

L’hashing è usato principalmente nella sicurezza informatica, per esempio per memorizzare in modo sicuro le password degli utenti. Dato che le funzioni hash hanno sempre delle vulnerabilità di sicurezza, ci sono vari modi per rendere gli hash ancora più sicuri. Questi includono, per esempio, i metodi Sale e Pepe.

Fonte dell’immagine: Taylor Vick/ Unsplash.com

Riferimenti (9)

1. Secure Insider. Was ist ein Hash? Abgerufen am 29.03.2021.
Fonte

2. Computerwoche. Was ist Hashing? Abgerufen am 29.03.2021.
Fonte

3. Online Tools. Abgerufen am 30.03.2021.
Fonte

4. Golem. Hashfunktion Argon2 gewinnt Wettbewerb. Abgerufen am 29.03.2021.
Fonte

5. Binance Academy. Cryptography. Abgerufen am 30.03.2021.
Fonte

6. Dr. Datenschutz. Hashwerte und Hasfunktionen einfach erklärt. Abgerufen am 29.03.2021.
Fonte

7. Adzine. What the hack is...Data -Hashing? Abgerufen am 30.03.2021.
Fonte

8. Code Bude. Grundlagen: Sicheres Passwort Hashing mit Salts. Abgerufen am 30.03.2021.
Fonte

9. Adesso. Wie funktioniert eine Blockchain. Abgerufen am 30.03.2021.
Fonte

Secure Insider. Was ist ein Hash? Abgerufen am 29.03.2021.
Vai alla fonte
Computerwoche. Was ist Hashing? Abgerufen am 29.03.2021.
Vai alla fonte
Online Tools. Abgerufen am 30.03.2021.
Vai alla fonte
Golem. Hashfunktion Argon2 gewinnt Wettbewerb. Abgerufen am 29.03.2021.
Vai alla fonte
Binance Academy. Cryptography. Abgerufen am 30.03.2021.
Vai alla fonte
Dr. Datenschutz. Hashwerte und Hasfunktionen einfach erklärt. Abgerufen am 29.03.2021.
Vai alla fonte
Adzine. What the hack is...Data -Hashing? Abgerufen am 30.03.2021.
Vai alla fonte
Code Bude. Grundlagen: Sicheres Passwort Hashing mit Salts. Abgerufen am 30.03.2021.
Vai alla fonte
Adesso. Wie funktioniert eine Blockchain. Abgerufen am 30.03.2021.
Vai alla fonte
Recensioni