Passa ai contenuti principali

SHA-256: l’impronta digitale dei dati

 



Quando sentiamo parlare di sicurezza informatica incontriamo spesso parole come crittografia, hash, checksum o sigle apparentemente misteriose come SHA-256.

Il nome può sembrare complicato, ma l’idea che c’è dietro è molto più semplice di quanto sembri.

SHA-256 è un algoritmo che permette di prendere un’informazione digitale — una parola, una password, un documento, una fotografia o persino un intero programma — e trasformarla in una sorta di impronta digitale.

Questa impronta viene chiamata hash.

La cosa interessante è che, indipendentemente dalla dimensione del contenuto originale, SHA-256 produce sempre un risultato della stessa lunghezza: 256 bit, che normalmente vengono rappresentati come una sequenza di 64 caratteri esadecimali.

Per esempio, potremmo avere qualcosa del genere:

b133a0c0e9bee3be20163d2ad31d6248db292aa6dcb1ee087a2aa50e0fc75ae2

A prima vista sembra soltanto una lunga sequenza incomprensibile di lettere e numeri. In realtà contiene una caratteristica molto importante: identifica, con altissima probabilità, esattamente i dati da cui è stata generata.

Da dove viene il nome SHA-256?

SHA significa Secure Hash Algorithm, cioè “algoritmo sicuro di hash”.

SHA-256 appartiene alla famiglia di algoritmi chiamata SHA-2 ed è stato progettato per produrre hash di 256 bit.

È importante chiarire subito una cosa: SHA-256 non cifra i dati nel senso tradizionale del termine.

Quando cifriamo un messaggio, normalmente esiste un procedimento che permette, possedendo la chiave corretta, di recuperare il contenuto originale.

Con un hash il funzionamento è diverso.

SHA-256 prende un contenuto e genera la sua impronta, ma non è progettato per permettere di compiere il percorso inverso.

Possiamo quindi pensarlo come una macchina:

dato originale → SHA-256 → impronta digitale

ma non come:

impronta digitale → dato originale

Questa caratteristica prende il nome di funzione a senso unico.

Un esempio semplicissimo

Proviamo con una parola molto breve:

ciao

Applicando SHA-256 alla parola “ciao”, scritta esattamente in questo modo e codificata in UTF-8, otteniamo:

b133a0c0e9bee3be20163d2ad31d6248db292aa6dcb1ee087a2aa50e0fc75ae2

Ora cambiamo una sola lettera e scriviamo:

Ciao

con la C maiuscola.

L’hash diventa:

25c73520e69f4bf229811e8e46ffe7d80471544b9bee15ed25044b86be4115ad

I due testi sono quasi identici per noi: è cambiata soltanto una lettera maiuscola.

Per SHA-256, invece, il risultato è completamente diverso.

Ed è proprio questo uno degli aspetti più interessanti delle funzioni hash: anche una modifica piccolissima nei dati originali provoca un cambiamento molto grande nel risultato finale.

Questo comportamento viene spesso chiamato effetto valanga.

Una lettera diversa, uno spazio aggiunto, un carattere cancellato o persino una modifica quasi invisibile all’interno di un file producono un hash differente.

SHA-256 non “riassume” il contenuto

A questo punto potrebbe nascere un equivoco.

Se SHA-256 trasforma un file enorme in soli 256 bit, significa che dentro quell’hash sono contenute tutte le informazioni del file?

No.

L’hash non è una compressione e non contiene una versione ridotta del documento originale.

È piuttosto un’identificazione matematica del contenuto.

Immaginiamo un libro di mille pagine.

SHA-256 potrebbe generare la sua impronta digitale. Se cambiamo una sola parola alla pagina 537 e calcoliamo nuovamente l’hash, otterremo un valore completamente diverso.

Non potremo però utilizzare l’hash per ricostruire le mille pagine del libro.

È un po’ come osservare un’impronta digitale umana: può aiutarci a verificare l’identità di una persona, ma dall’impronta non possiamo ricostruire la persona stessa.

Un secondo esempio: verificare che un file non sia stato modificato

Uno degli utilizzi più pratici di SHA-256 riguarda la verifica dell’integrità dei file.

Immaginiamo di scaricare da Internet un programma chiamato:

programma.zip

Il produttore potrebbe pubblicare sul proprio sito anche il valore SHA-256 ufficiale del file, per esempio:

A7F9...

La sequenza reale sarebbe naturalmente molto più lunga.

Dopo aver scaricato il file possiamo chiedere al nostro computer di calcolare il suo SHA-256.

A questo punto confrontiamo i due valori.

Se l’hash del file scaricato è identico all’hash pubblicato dal produttore, possiamo avere un’elevata sicurezza che il file ricevuto sia esattamente quello previsto e che non sia stato modificato accidentalmente durante il trasferimento.

Se invece anche un solo bit del file fosse diverso, l’hash risultante cambierebbe.

Il controllo potrebbe quindi essere rappresentato così:

Hash pubblicato dal produttore

ABC123...

Hash calcolato sul nostro file

ABC123...

I valori coincidono: il contenuto è lo stesso.

Se invece ottenessimo:

87DF45...

sapremmo che qualcosa è cambiato.

Questo non significa automaticamente che il file contenga un virus: potrebbe essere una versione differente, un download corrotto oppure un file modificato. Significa però che non è esattamente lo stesso file identificato dall’hash originale.

Naturalmente questo controllo è davvero affidabile solo se anche l’hash di riferimento proviene da una fonte autentica e affidabile.

Perché l’hash ha sempre la stessa lunghezza?

Una delle caratteristiche curiose di SHA-256 è proprio questa.

Possiamo inserire:

“ciao”

oppure un documento di 500 pagine,

oppure un video di diversi gigabyte.

Il risultato sarà sempre un hash di 256 bit.

Quando lo visualizziamo in forma esadecimale vediamo normalmente 64 caratteri perché ogni cifra esadecimale rappresenta 4 bit:

256 ÷ 4 = 64

Ecco spiegata quella lunga sequenza di 64 caratteri formata dai numeri da 0 a 9 e dalle lettere dalla A alla F.

Due file diversi possono avere lo stesso hash?

Dal punto di vista matematico sì.

Il numero dei possibili dati che possiamo elaborare è praticamente illimitato, mentre il numero dei possibili risultati SHA-256, pur essendo enorme, è finito.

Quando due contenuti differenti producono lo stesso hash si parla di collisione.

Con SHA-256 esistono teoricamente collisioni, ma trovarne deliberatamente una è considerato computazionalmente impraticabile con le tecnologie attuali.

I possibili hash SHA-256 sono infatti:

2²⁵⁶

un numero gigantesco, circa 10⁷⁷.

Per avere un’idea delle dimensioni, stiamo parlando di una quantità talmente grande che, nelle applicazioni normali, possiamo considerare estremamente improbabile che due file differenti generino casualmente la stessa impronta.

Dove viene utilizzato SHA-256?

Le funzioni hash sono presenti in moltissimi settori dell’informatica.

SHA-256 può essere utilizzato per controllare l’integrità dei file, verificare dati digitali, creare firme digitali e certificati, identificare informazioni all’interno di diversi sistemi informatici e partecipare ai meccanismi utilizzati da alcune blockchain, come Bitcoin.

Qui è importante fare una precisazione.

Dire che SHA-256 viene utilizzato in alcuni sistemi di gestione delle password non significa che sia una buona idea salvare semplicemente una password usando SHA-256 puro.

Le password richiedono tecniche specifiche, come salt e algoritmi progettati appositamente per rallentare i tentativi di attacco, come Argon2, scrypt, bcrypt o PBKDF2.

SHA-256 è estremamente veloce, caratteristica utilissima in molti contesti ma non ideale quando vogliamo rendere costoso provare milioni o miliardi di password.

Hash e crittografia non sono la stessa cosa

È facile confondere i due concetti.

La cifratura serve generalmente a nascondere un’informazione permettendo successivamente a chi possiede la chiave corretta di recuperarla.

L’hash, invece, viene utilizzato soprattutto per creare un’impronta dei dati.

Possiamo semplificare così:

Cifratura

messaggio → cifratura → messaggio illeggibile → decifratura → messaggio originale

Hash

messaggio → SHA-256 → impronta

Il secondo percorso non prevede una normale operazione di “de-hash” che permetta di ritornare al messaggio iniziale.

Ma allora perché online esistono siti che “decifrano” gli hash?

Questa è una domanda molto interessante.

In alcuni siti possiamo inserire un hash e apparentemente ottenere la parola da cui deriva.

Il sito, però, normalmente non ha invertito matematicamente SHA-256.

Ha semplicemente confrontato quell’hash con enormi database di valori già calcolati.

Per esempio qualcuno potrebbe aver precedentemente calcolato:

password123 → ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f

Se un database contiene già questa associazione, quando inseriamo lo stesso hash il sito può rispondere:

“Questo valore corrisponde a password123.”

Non ha decifrato SHA-256.

Ha riconosciuto un risultato già conosciuto.

È una differenza fondamentale.

Una piccola macchina per creare impronte digitali

Possiamo quindi immaginare SHA-256 come una macchina molto particolare.

Inseriamo un’informazione.

La macchina la elabora.

Dall’altra parte esce una sequenza di 256 bit che funziona come impronta digitale del contenuto.

Se cambiamo qualcosa nell’originale, anche pochissimo, l’impronta cambia completamente.

Ed è proprio questa combinazione di caratteristiche — risultato di dimensione fissa, sensibilità alle modifiche, difficoltà nel risalire al contenuto originale e bassissima probabilità pratica di collisione — che rende SHA-256 così utile nell’informatica moderna.

Dietro quella fila apparentemente incomprensibile di lettere e numeri non c’è quindi un messaggio segreto da decifrare.

C’è qualcosa di diverso e, per certi versi, ancora più interessante:

l’impronta matematica di un dato digitale.


Piccolo vocabolario SHA-256

Algoritmo
Una sequenza di regole e operazioni utilizzata da un computer per risolvere un problema o trasformare dei dati.

Bit
La più piccola unità di informazione digitale. Può assumere normalmente uno dei due valori: 0 oppure 1.

Cifratura
Tecnica utilizzata per rendere un’informazione illeggibile a chi non possiede la chiave necessaria per decifrarla.

Collisione
Situazione in cui due dati differenti producono lo stesso valore hash.

Effetto valanga
Caratteristica per cui una piccolissima modifica nei dati di partenza provoca una grande modifica nel risultato dell’hash.

Esadecimale
Sistema numerico basato su 16 simboli: le cifre da 0 a 9 e le lettere da A a F. Viene spesso utilizzato per rappresentare in modo più compatto valori binari.

Funzione hash
Procedimento matematico che trasforma un insieme di dati in un valore di lunghezza fissa chiamato hash.

Hash
L’impronta digitale prodotta da una funzione hash a partire da un dato, un testo o un file.

Integrità dei dati
Proprietà che indica che un contenuto non è stato alterato o modificato rispetto all’originale.

SHA
Acronimo di Secure Hash Algorithm, famiglia di algoritmi progettati per generare hash.

SHA-2
Famiglia di funzioni hash crittografiche alla quale appartiene SHA-256.

SHA-256
Funzione hash della famiglia SHA-2 che produce un risultato di 256 bit, normalmente rappresentato mediante 64 caratteri esadecimali.

Salt
Valore casuale aggiunto a una password prima di elaborarla con un algoritmo per rendere più difficili gli attacchi basati su valori già calcolati.

UTF-8
Uno dei sistemi più diffusi per rappresentare i caratteri di un testo sotto forma di byte. È importante specificarlo negli esempi perché SHA-256 lavora sui byte effettivi, non sul significato umano delle parole.

Le immagini e i testi presenti sono il risultato di una cooperazione consapevole tra intelligenza umana e artificiale.

Seguimi anche sul canale WhatsApp per non perderti nessuna novità!

Commenti

Post popolari in questo blog

Email: MAIUSCOLO o minuscolo?

Falso mito: le maiuscole nelle email contano? Scopriamolo passo passo! Spesso capita di sentir dire: "Attento, l'email va scritta tutta minuscola altrimenti non arriva!" Ma è vero? Spoiler: NO . Vediamo insieme perché questo è un falso mito e cosa dice davvero la tecnologia. 💡 Passo 1: Come è strutturato un indirizzo email? Un indirizzo email ha due parti principali: - La parte locale : prima della @ (es. nome.cognome) - Il dominio : dopo la @ (es. gmail.com, outlook.it, ecc.) Esempio: nome.cognome@gmail.com   🔹 Passo 2: Le maiuscole hanno valore? - Nella maggior parte dei casi NO. - I server email non distinguono tra maiuscole e minuscole . - Quindi scrivere Mario.Rossi@gmail.com o mario.rossi@gmail.com è esattamente la stessa cosa. ⚡ Eccezioni rare ma possibili Tecnicamente, secondo le specifiche ufficiali, la parte locale (prima della @) potrebbe essere case-sensitive . Questo significa che, in teoria, Pippo@dominio.com potrebbe essere diverso da pippo@dominio.com....

Come spostare un paragrafo in Word velocemente: metodi e scorciatoie

 Come spostare paragrafi in Word in un Attimo: Metodi e Scorciatoie Se lavori spesso con Microsoft Word, sai quanto può essere frustrante spostare i paragrafi manualmente. Il classico metodo taglia (Ctrl + X) e incolla (Ctrl + V) è lento e scomodo, soprattutto nei documenti lunghi. Ma c’è un modo più veloce! Word offre funzioni integrate e scorciatoie da tastiera per spostare interi paragrafi in pochi secondi, senza dover usare il copia-incolla. In questa guida vedremo i metodi più rapidi ed efficienti per riorganizzare il testo senza perdere tempo. Scopri subito come fare!     🖱️ Metodo 1: Spostare un Paragrafo con il Mouse Uno dei metodi più rapidi per spostare un paragrafo in Microsoft Word è utilizzare il trascinamento con il mouse, senza bisogno di tagliare e incollare manualmente. ✅ Come fare: Seleziona il paragrafo che vuoi spostare: clicca all’inizio e trascina il cursore su tutto il testo. Tieni premuto il tasto Maiusc (Shift). Clicca e trascina il paragraf...

Il viaggio del simbolo @ fino ai tempi moderni

Da Wikipedia: Il simbolo @ utilizzato come lettera capitale della parola "Amin" (Amen) nella Cronaca di Manasse, 1345. Il simbolo @, comunemente noto come "chiocciola" in italiano, ha una storia affascinante che si intreccia con l'evoluzione della comunicazione scritta. Questo carattere distintivo, che oggi associamo principalmente con gli indirizzi email, ha origini che risalgono ben oltre l'era digitale. La chiocciola ha avuto molteplici significati nel corso dei secoli. Inizialmente, si pensava che derivasse dalla contrazione della preposizione latina "ad", utilizzata dai monaci medievali per indicare un luogo o un indirizzo. Tuttavia, ricerche più recenti suggeriscono che il simbolo @ potrebbe aver rappresentato l'unità di misura "anfora", usata nell'antica Grecia e a Roma per indicare capacità e peso. Il passaggio del simbolo @ nel mondo della tecnologia avviene nel 1971, quando il programmatore statunitense Ray Tomlinson lo ...