Funzioni hash crittografiche spiegate

Funzioni hash crittografiche spiegate

Che cosa sono le funzioni hash crittografiche?

Una funzione hash crittografica (cryptographic hash function) è una formula matematica che trasforma un’informazione (ad esempio un testo, un file o una password) in una breve “impronta digitale” di lunghezza fissa. Questa impronta è chiamata valore hash.

Un valore hash appare di solito come una lunga sequenza di numeri e lettere. Ad esempio, se inserisci la parola "Ciao" nella funzione hash SHA-256 (una funzione hash molto conosciuta utilizzata da Bitcoin), otterrai:

185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Non importa quante volte o su quale computer lo esegui: finché l’input è “Ciao”, il valore hash sarà sempre esattamente lo stesso. L’hash è quindi collegato a un’informazione specifica. Questo lo rende un metodo affidabile per verificare se i dati sono stati modificati.


In breve

  • Le funzioni hash creano un’impronta digitale dei dati: lo stesso input produce sempre lo stesso hash, ma piccoli cambiamenti generano un risultato completamente diverso.

  • Gli hash non sono reversibili: a partire dall’hash non si possono ricostruire i dati originali, il che li rende adatti alla sicurezza e alle blockchain.

  • Le applicazioni sono ampie: archiviazione sicura delle password, controllo di integrità, firme digitali e transazioni su blockchain.

  • La sicurezza varia a seconda dell’algoritmo: MD5 e SHA-1 sono compromessi e insicuri, mentre SHA-2 e SHA-3 sono ancora considerati sicuri.

  • Nelle blockchain gli hash sono fondamentali: collegano i blocchi tra loro, proteggono le transazioni e rendono possibile il mining tramite Proof of Work.


Applicazioni di una funzione hash

Un valore hash viene spesso utilizzato nella sicurezza digitale di dati, comunicazioni e sistemi. Li troviamo, tra l’altro, in:

  • Archiviazione delle password: invece di memorizzare le password in chiaro, un sistema salva solo il valore hash.
  • Controllo di integrità: nei download o negli aggiornamenti software viene fornito un hash in modo che gli utenti possano verificare che il file non sia stato modificato.
  • Firme e certificati digitali: le funzioni hash garantiscono che un documento firmato non possa essere modificato senza che venga rilevato.
  • Blockchain: ogni transazione e ogni blocco sono protetti tramite hashing, garantendo l’immutabilità della catena.

Proprietà di una funzione hash

Le proprietà più importanti di una funzione hash sono:

  • Stesso input, stesso output
    Se inserisci gli stessi dati, otterrai sempre esattamente lo stesso hash. Esempio: una password. Il sistema memorizza solo l’hash della tua password. Quando provi ad accedere nuovamente, il sistema controlla se il nuovo hash corrisponde a quello salvato. Solo in questo modo si ottiene l’accesso.

  • Non reversibile
    Un hash non può essere invertito per ottenere l’input originale. Questo lo rende particolarmente adatto a una blockchain. Ogni blocco nella blockchain contiene un hash unico (e talvolta più di uno) con all’interno le transazioni. Contiene anche l’hash del blocco precedente. Se qualcuno prova a manipolare una transazione, l’hash cambia immediatamente. Poiché questo hash si trova anche nel blocco successivo, l’intera catena cambia. Ciò viene immediatamente rilevato dai validatori o dai miner. Un attaccante dovrebbe ricalcolare tutti i blocchi successivi, il che è praticamente impossibile. Questo rende impossibile la manipolazione.

  • Sensibile a piccoli cambiamenti
    Se modifichi anche solo una lettera o un bit, l’hash risultante sarà completamente diverso. Esempio: "Mondo" ha un hash completamente diverso da "Mondp", anche se le parole si somigliano molto.

  • Evitare collisioni
    Una collisione significa che due input diversi producono lo stesso hash. Questo è teoricamente possibile, ma nella pratica con funzioni hash sicure è quasi impossibile. Esempio: con SHA-256 servirebbero miliardi di anni per generare abbastanza hash fino a trovarne due uguali per caso. Le varianti più vecchie come MD5 e SHA-1 sono vulnerabili e per questo motivo non vengono più utilizzate.

Come funzionano le funzioni hash?

Il processo eseguito dalle funzioni hash si chiama hashing. Una funzione hash è l’algoritmo che esegue il calcolo, mentre l’hashing è il processo di applicazione di quella funzione ai dati.

Elaborazione dell’input

I dati (testo, file, password, ecc.) vengono suddivisi in blocchi di dimensione fissa.
Esempio: “Ciao” viene suddiviso in blocchi da, ad esempio, 512 bit. Poiché è più corto, viene aggiunto un padding supplementare.

Trasformazioni matematiche

Ogni blocco passa attraverso operazioni come spostamenti di bit, permutazioni e addizioni modulari.
Esempio: “Ciao” produce, dopo SHA-256, il seguente risultato:

185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Combinazione (compressione o sponge)

I risultati vengono combinati in uno stato interno.

  • In SHA-2 tramite una funzione di compressione
  • In SHA-3 tramite una costruzione sponge

Output

Dopo l’ultimo calcolo rimane un valore hash.
Esempio:
“Ciao” → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
“Ciao!” → 334d74c95ed3ceec833219cd94ef7a8320b9c9d98c14b622d0535fbe7bb3f3a4

Che cos’è l’effetto Avalanche?

L’effetto avalanche garantisce che sia impossibile dedurre relazioni tra due hash, poiché anche piccole differenze nell’input portano a un valore hash completamente diverso. Anche se gli input sembrano molto simili, il risultato è una sequenza di numeri e lettere totalmente diversa. Questo rende impossibile dedurre dai valori hash come fossero i dati originali o quanto due input siano simili.

Quali funzioni hash esistono?

Negli anni sono state sviluppate o migliorate diverse funzioni hash crittografiche. Tra le più conosciute troviamo:

  • MD5
    Sviluppato negli anni ’90 come successore di precedenti algoritmi MD. Questo algoritmo produce un hash a 128 bit ed è stato utilizzato per anni per la verifica dei file e i certificati digitali. Oggi MD5 è considerato insicuro, poiché dal 2004 sono stati registrati casi in cui due input diversi hanno generato lo stesso valore hash. Questo fenomeno si chiama collisione. Per questo motivo MD5 è oggi usato solo per applicazioni semplici, ma non più per la sicurezza.

  • SHA-1
    SHA-1 è stato a lungo lo standard per le firme digitali e i certificati SSL. È un algoritmo con un output a 160 bit. Nel 2017 Google e il CWI di Amsterdam hanno dimostrato una collisione: hanno creato due file PDF diversi con esattamente lo stesso hash SHA-1. Questo ha dimostrato che era possibile falsificare un hash nella pratica. Da allora SHA-1 è considerato compromesso e insicuro. I principali browser e le autorità di certificazione non lo supportano più.

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
    Il successore di SHA-1 è SHA-2. Questo algoritmo utilizza blocchi da 512 o 1024 bit e produce output da 224, 256, 384 o 512 bit. Un sistema SHA-2 molto conosciuto è SHA-256, utilizzato per proteggere la blockchain di Bitcoin. SHA-512 è più efficiente nei sistemi a 64 bit. Finora non sono stati registrati attacchi riusciti che mettano a rischio la sicurezza di SHA-2, che rimane una delle funzioni hash crittografiche più utilizzate.

  • SHA-3 (Keccak)
    Sviluppato nel 2007 da Guido Bertoni, Joan Daemen, Michaël Peeters e Gilles Van Assche, l’algoritmo Keccak è stato adottato nel 2015 dal NIST come nuovo standard di hash con il nome SHA-3. È stato introdotto come alternativa a SHA-2, nel caso in cui in futuro venissero scoperte vulnerabilità in quest’ultimo. SHA-3 non è ancora molto utilizzato nella pratica, poiché SHA-2 è ancora sicuro, ampiamente supportato dall’hardware e profondamente integrato nei protocolli come TLS e certificati SSL.

Funzioni hash nelle criptovalute e nella blockchain

Le funzioni hash svolgono un ruolo cruciale nelle blockchain. L’hashing viene utilizzato per proteggere le transazioni, collegare i blocchi e costituisce il nucleo delle blockchain che validano le transazioni tramite il mining. Le blockchain che utilizzano il Proof of Work meccanismo di consenso sfruttano la potenza di calcolo dei computer per risolvere puzzle hash.

Alcuni esempi di progetti popolari:

  • Bitcoin → SHA-256 (per mining e hashing dei blocchi).
  • Litecoin → scrypt (più veloce e meno sensibile agli ASIC rispetto a SHA-256).
  • Zcash → Equihash (intensivo in memoria, progettato per un mining più equo).
  • Dogecoin → scrypt (lo stesso algoritmo di Litecoin, con merge-mining).
  • Ripple (XRP Ledger) → SHA-512/256 (una variante ridotta di SHA-512).
  • Algorand → SHA-512/256 (per generazione di chiavi e firme digitali).

In conclusione

Le funzioni hash crittografiche sono un elemento essenziale del mondo digitale. Offrono un modo affidabile per proteggere i dati, garantire l’integrità e rendere possibili sistemi complessi come le blockchain. Sebbene algoritmi più vecchi come MD5 e SHA-1 non siano più sicuri a causa di vulnerabilità comprovate, le varianti moderne come SHA-2 e SHA-3 restano robuste ed essenziali per le applicazioni odierne.

La forza delle funzioni hash risiede nella loro semplicità ed efficacia: funzioni unidirezionali che trasformano piccole differenze nell’input in risultati completamente diversi, senza che i dati originali possano essere recuperati. Questo le rende cruciali non solo per la sicurezza delle password e le firme digitali, ma anche per il funzionamento delle criptovalute e di internet in generale.

Le funzioni hash continueranno a svolgere un ruolo chiave in futuro, sia nelle applicazioni esistenti sia nelle nuove innovazioni nei settori della blockchain, della sicurezza digitale e della crittografia.

Chi è Finst

Finst è uno dei principali fornitori di criptovalute nei Paesi Bassi e offre una piattaforma di investimento di alto livello insieme a standard di sicurezza di livello istituzionale e commissioni di trading ultra basse. Finst è guidata dall'ex team principale di DEGIRO ed è autorizzata come prestatore di servizi per le cripto-attività dall'Autorità olandese per i mercati finanziari (AFM). Finst offre un set completo di servizi per le cripto-attività, inclusi trading, custodia, on/off ramp fiat e staking sia per investitori retail che istituzionali.

La piattaforma cripto che amerai

Siamo qui per darti strumenti, ispirazione e supporto per diventare un investitore migliore.