# Cos'è veramente SHA-256

> Cuadernos Lacre · Concetto · 19 maggio 2026
> https://solo2.net/it/quaderni/articulos/cos-e-veramente-sha-256.html

Un'impronta matematica che sta in sessantaquattro caratteri e che cambia completamente se si sposta anche solo una virgola del testo originale. Perché lo chiamiamo sigillo di ceralacca digitale.

---

## L'idea semplice dietro il nome tecnico

Immagina che esista una macchina con una sola fessura e un solo schermo. Attraverso la fessura inserisci un testo: una parola, una frase, un intero romanzo. Sullo schermo appare, pochi istanti dopo, una sequenza di esattamente sessantaquattro caratteri. Questa sequenza, per il lettore professionista, è chiamata *hash* o *riassunto crittografico*; per il lettore comune, possiamo chiamarla per ora un'impronta matematica del testo, proprio come l'impronta digitale lo è per una persona.

Se inserisci lo stesso testo due volte, la macchina mostra la stessa impronta entrambe le volte. Se inserisci un testo leggermente diverso —una virgola spostata, una maiuscola che diventa minuscola— la macchina mostra un'impronta completamente diversa dalla prima. Non simile: diversa. Queste due proprietà insieme —il determinismo e la sensibilità— sono l'idea semplice. Tutto il resto di SHA-256 è l'ingranaggio che le fa funzionare correttamente.

Vale la pena dire fin dall'inizio cosa la macchina non fa. Non cifra il testo. Non lo nasconde. Non lo salva. La macchina guarda il testo, calcola l'impronta e dimentica il testo. L'impronta non permette di ricostruire il testo che l'ha prodotta; permette solo, dato un testo candidato, di verificare se coincide o meno con l'originale. Per questo diciamo che è un riassunto *unidirezionale*: si va, non si torna indietro.

## Un hash non è la stessa cosa della cifratura

La confusione è frequente ed è opportuno chiarirla: cifrare e fare l'hash sono operazioni diverse. Cifrare consiste nel trasformare un testo in modo che solo il possessore della chiave possa riportarlo alla sua forma originale. Fare l'hash consiste nel produrre un'impronta del testo dalla quale il testo originale non può mai essere recuperato, né con la chiave né senza. La prima è reversibile per progettazione; la seconda è irreversibile per progettazione.

La conseguenza pratica è importante. Quando un'applicazione dice «salviamo la tua password cifrata», c'è qualcuno che ha la chiave per decifrarla — l'applicazione stessa, in ogni caso. Quando un'applicazione dice «salviamo la tua password hashata», l'applicazione stessa non può leggere la password originale anche se volesse; può solo verificare se quella che scrivi produce nuovamente la stessa impronta. Il secondo modello, se fatto bene, è decisamente preferibile al primo per memorizzare le password. Vedremo più avanti perché «fatto bene» richiede qualcosa di più del solo SHA-256.

## Le quattro proprietà che rendono utile un hash crittografico

Una funzione hash che merita l'aggettivo *crittografico* soddisfa quattro proprietà:

1. Determinismo. Lo stesso input produce sempre la stessa impronta.
2. Effetto valanga. Un piccolo cambiamento nell'input produce un'impronta completamente diversa, senza alcuna somiglianza visibile con la precedente.
3. Resistenza all'inversione. Data un'impronta, non è computazionalmente fattibile trovare il testo che l'ha prodotta.
4. Resistenza alle collisioni. Non è computazionalmente fattibile trovare due testi diversi che producano la stessa impronta.

«Non è computazionalmente fattibile» non significa «è matematicamente impossibile». Significa che il costo in termini di tempo, energia e denaro per riuscirci supera di ordini di grandezza la somma di tutta la capacità di calcolo ragionevolmente disponibile. Per SHA-256, questo limite si misura in migliaia di miliardi di anni anche per gli approcci più ottimistici con hardware specializzato. Il che, per gli scopi pratici del lettore, equivale a «non si può fare».

## SHA-256, nello specifico

Il nome dice tutto. SHA sta per *Secure Hash Algorithm*: algoritmo di hash sicuro. Il numero 256 indica la dimensione dell'impronta in bit: duecentocinquantasei bit, ovvero trentadue byte, che visualizzati in esadecimale sono i sessantaquattro caratteri che il lettore già riconosce. Lo standard è stato pubblicato dal NIST statunitense, l'organismo che normalizza questo tipo di funzioni, nel 2001 come parte della famiglia SHA-2; la versione attuale dello standard, FIPS 180-4, risale al 2015.

Le dimensioni meritano un momento di riflessione. Duecentocinquantasei bit permettono due elevato alla duecentocinquantaseiesima valori diversi: un numero con settantotto cifre decimali, diversi ordini di grandezza superiore al numero stimato di atomi nell'universo osservabile. Ogni testo al mondo —ogni libro, ogni email, ogni messaggio— ricade su uno di questi valori. La probabilità che due testi diversi coincidano per caso è, ai fini pratici, indistinguibile dallo zero.

## Come appare nel codice

## Perché lo chiamiamo sigillo di ceralacca

Nella corrispondenza europea tra il XV e il XIX secolo, la ceralacca chiudeva la lettera. Una goccia di cera fusa, un sigillo premuto sopra, e la lettera rimaneva segnata in modo irripetibile. Non proteggeva il contenuto dal curioso deciso —la carta poteva essere letta in controluce, la ceralacca poteva essere rotta— ma lo rendeva evidente. Qualsiasi alterazione della chiusura era visibile al destinatario prima ancora di aprire la carta. La ceralacca non impediva il danno; lo dichiarava.

Lo SHA-256 del corpo di ogni Cuaderno svolge la stessa funzione nella sua versione digitale. Se una sola parola dell'articolo cambiasse tra il momento in cui è stato pubblicato e il momento in cui lo leggi, il sigillo esadecimale in fondo al testo non coinciderebbe più con lo SHA-256 del testo che hai davanti. Qualsiasi lettore con cinque righe di codice potrebbe verificarlo. La pubblicazione non può riscrivere la sua storia senza che il sigillo la tradisca. Non protegge dal danno; lo rende verificabile.

## Cosa un hash non è

A SHA-256 vengono a volte richiesti quattro usi che non gli competono:

1. Cifratura. Un hash riassume; non nasconde. Se vuoi che il testo non sia leggibile, devi cifrarlo, non farne l'hash.
2. Autenticazione dell'autore. Un hash non dice chi ha scritto il testo, ma solo quale testo è stato hashato. Per associare la paternità è necessaria una firma crittografica sopra l'hash, non l'hash da solo.
3. Memorizzazione delle password. Qui c'è una trappola che conviene capire. SHA-256 è progettato per essere molto veloce —il che è positivo per molte cose, ma negativo per questa. Un attaccante con hardware specializzato può provare miliardi di password al secondo contro un hash SHA-256 fino a trovare la tua. Per salvare le password bisogna usare funzioni di derivazione della chiave deliberatamente lente come Argon2, scrypt o bcrypt, combinate con un *sale* (un dato casuale unico per utente, che impedisce a due persone con la stessa password di avere lo stesso hash).
4. Leggere l'hash come identificatore dell'autore. Non lo è. Un hash identifica il contenuto. Se due persone fanno l'hash della parola *ciao* con SHA-256, entrambe ottengono lo stesso riassunto — e questa è la proprietà centrale, non un difetto: se fossero riassunti diversi, non potremmo verificare la corrispondenza tra quanto pubblicato e quanto ricevuto.

## Dove appare SHA-256 nella tua vita quotidiana

Anche se non lo vedi, SHA-256 sostiene buona parte di ciò che usi quotidianamente su internet. La blockchain di Bitcoin si costruisce concatenando lo SHA-256 di ogni blocco a quello successivo; alterare un blocco passato costringe a ricalcolare l'intera catena successiva. Git, il sistema con cui viene versionato il codice di mezzo mondo, identifica ogni commit tramite lo SHA-256 (nelle versioni recenti) o il suo predecessore SHA-1 (nelle versioni più vecchie) del suo contenuto completo. I certificati HTTPS che verificano l'identità di un sito web quando vi accedi hanno un'impronta SHA-256 associata. I download di software sono spesso accompagnati da uno SHA-256 pubblicato dallo sviluppatore affinché tu possa verificare che il file non sia stato alterato durante il percorso. E, come abbiamo detto, in fondo a ogni Cuaderno Lacre.

## Per il lettore professionista

Quattro promemoria operativi per chi decide o audita sistemi:

1. Hash non è cifratura. Se un fornitore confonde i due termini nella sua documentazione tecnica, è opportuno chiedere cosa intenda esattamente.
2. Per memorizzare le password non si deve mai usare SHA-256 da solo. SHA-256 è troppo veloce per questo compito (vedi punto 3 di *Cosa un hash non è*). Lo standard attuale è Argon2id: lento per progettazione, configurabile in base alla capacità del server, combinato con un *sale* casuale diverso per ogni utente.
3. Per l'integrità dei documenti —contratti, fascicoli, archivi— SHA-256 rimane lo standard di riferimento. È quello utilizzato dai marcatori temporali qualificati nell'UE.
4. Per la conservazione a lungo termine (decenni) è opportuno calcolare e archiviare anche un SHA-3 o un SHA-512 insieme a SHA-256; la prudenza crittografica raccomanda di non affidarsi a una singola funzione per archivi secolari.

Immagina di aver montato il circuito di domino più elaborato del mondo: migliaia di tessere (fichas), decine di biforcazioni, ponti meccanici e rampe che attraversano l'intera stanza, posizionate con cura pezzo dopo pezzo.

Se dai un tocco alla prima tessera, la catena cade in una sequenza precisa e ripetibile. Stesso montaggio, stesso tocco iniziale → identico schema finale di tessere cadute, volta dopo volta.

Ecco la cosa interessante: sposta una sola tessera di mezzo centimetro da un lato prima di iniziare e tocca di nuovo. Una rampa che doveva attivarsi rimane inerte, un ponte non cade, scatta una biforcazione diversa. Lo schema finale delle tessere a terra è completamente irriconoscibile rispetto al primo.

Lo SHA-256 è matematicamente questo circuito. Il testo che scrivi è la posizione iniziale delle tessere. L'algoritmo è il tocco che libera la cascata. E il risultato finale — quello che chiamiamo *hash* — è la foto fissa del pavimento quando tutto si è fermato. Cambia una sola virgola del testo originale e la foto sarà radicalmente diversa. Così semplice, e così drastico.

---

*Se torni in fondo a questo articolo, vedrai un sigillo esadecimale di sessantaquattro caratteri. È lo SHA-256 del testo che hai appena letto, in questa lingua. Se traducessimo l'articolo, il sigillo sarebbe diverso; se cambiasse una parola della versione italiana, il sigillo italiano cambierebbe. Il sigillo non protegge il contenuto —per quello ci sono altri strumenti— ma lo identifica univocamente. E questo, per quanto modesto possa sembrare, basta affinché nessun passaggio della catena editoriale possa alterare quanto detto senza che si noti. Tutto il resto —cifrare, firmare, identificare— si costruisce sopra questa idea semplice.*

## Fonti e letture aggiuntive

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, agosto 2015. Specifica ufficiale della famiglia SHA-2, incluso SHA-256.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, maggio 2011. Versione normativa per gli implementatori.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). I capitoli 5 e 6 trattano le funzioni hash e i loro usi legittimi e illegittimi.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Esempio pratico dell'uso di SHA-256 per concatenare i blocchi in una struttura immutabile per costruzione.
- Regolamento (UE) 910/2014 (eIDAS) — quadro dei marcatori temporali qualificati. SHA-256 è la funzione di riferimento per le firme e i sigilli elettronici qualificati emessi nell'UE.
- Implementazione di riferimento in Zig: std.crypto.hash.sha2.Sha256 nel repository ufficiale del linguaggio (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). È la versione ottimizzata e auditata effettivamente utilizzata da Solo2. Utile per il confronto con l'implementazione didattica dell'appendice.

---

*Cuadernos Lacre · Una pubblicazione di Menzuri Gestión S.L. · scritta da R.Eugenio · a cura del team di Solo2.*
*https://solo2.net/it/quaderni/*
