Funzioni hash: SHA-256 e oltre
Esplorate le proprietà degli hash crittografici: resistenza alle collisioni, resistenza alle preimmagini e applicazioni.
Funzioni hash: SHA-256 e oltre è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Che cos'è una funzione di hash crittografica
Una funzione di hash crittografica prende un input di lunghezza arbitraria e produce un output di lunghezza fissa (digest). Deve essere: deterministica, veloce da calcolare, resistente alle preimmagini (non è possibile risalire all'input), resistente alle collisioni (non è possibile trovare due input con lo stesso hash) e sensibile all'effetto valanga (una piccola modifica → un hash completamente diverso).
Famiglia SHA-2
La famiglia SHA-2 (progettata da NSA e standardizzata da NIST) include:
- SHA-256 — output a 256 bit, ampiamente usato
- SHA-384 — output a 384 bit
- SHA-512 — output a 512 bit, più veloce sulle CPU a 64 bit
SHA-256 viene usato in Bitcoin, nei certificati TLS e negli identificativi dei commit Git.
Famiglia SHA-3
SHA-3 usa una progettazione completamente diversa da SHA-2 (la costruzione a spugna Keccak). È stato standardizzato come alternativa nel caso in cui venissero scoperte vulnerabilità in SHA-2. SHA-3 non è ampiamente adottato, ma viene usato in alcuni protocolli e dispositivi hardware crittografici.
MD5 e SHA-1: compromessi
Non usi mai MD5 o SHA-1 per scopi di sicurezza:
- MD5: collisioni individuabili in pochi secondi con hardware comune
- SHA-1: la prima collisione pratica è stata dimostrata nel 2017 (SHAttered)
Restano utili per checksum non legati alla sicurezza (deduplicazione dei file), ma non per garantire l'integrità.
Usi dell'hash: integrità dei file
Verifica dei download:
sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodifiedUsi dell'hash: firme digitali
Quando firmiamo documenti, non cifriamo l'intero documento con la chiave privata (sarebbe troppo lento). Invece:
- Calcoliamo l'hash del documento (operazione rapida)
- Cifriamo l'hash con la chiave privata (è piccolo e rapido)
- Il destinatario decifra con la chiave pubblica e confronta il risultato con l'hash calcolato autonomamente
HMAC: hash con chiave per l'integrità
HMAC (Hash-based Message Authentication Code) combina una funzione di hash con una chiave segreta per produrre un tag di autenticazione. Serve a verificare sia l'integrità sia l'autenticità dei dati. Viene usato nei JWT, nell'autenticazione delle API e in TLS.
import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()Attacchi di estensione della lunghezza dell'hash
SHA-2 (costruzione Merkle-Damgård) è vulnerabile agli attacchi di estensione della lunghezza: se conosce H(secret+message), può calcolare H(secret+message+extension) senza conoscere il segreto. HMAC previene questo attacco. SHA-3 non è vulnerabile.
Tabelle arcobaleno e salting
Una tabella arcobaleno precalcola le corrispondenze hash → input per una ricerca rapida. Il salting previene questo problema: aggiungere un valore casuale univoco per ogni input rende ogni hash univoco, rendendo necessario un attacco completo a forza bruta per ogni voce anziché una ricerca.
Alberi di Merkle
Un albero di Merkle è un albero di hash in cui ogni nodo padre contiene l'hash dei propri figli. Viene usato nella blockchain di Bitcoin, in Git e nei registri di trasparenza dei certificati per verificare in modo efficiente grandi insiemi di dati senza dover scaricare tutto.
Scelta dell'hash corretto
Guida alla scelta:
- Integrità generale/checksum: SHA-256
- Archiviazione delle password: Argon2id, bcrypt (NON SHA-256 direttamente)
- Autenticazione dei messaggi: HMAC-SHA-256
- Firme digitali: SHA-256 o SHA-384 come hash sottostante
- Da evitare: MD5 e SHA-1 nelle applicazioni di sicurezza
Verifica rapida: funzioni di hash
Quale costruzione previene gli attacchi di estensione della lunghezza e richiede anche una chiave segreta?
Riepilogo della lezione
Le funzioni di hash producono digest di lunghezza fissa a partire da input arbitrari. SHA-256 e SHA-512 sono gli standard attuali. MD5 e SHA-1 sono compromessi per gli usi di sicurezza. HMAC aggiunge una chiave segreta per garantire l'integrità autenticata. Usi Argon2 o bcrypt per le password. Gli alberi di Merkle estendono il calcolo degli hash per verificare in modo efficiente grandi insiemi di dati.
Domande Frequenti
La lezione «Funzioni hash: SHA-256 e oltre» è gratuita?
Sì — il testo completo di «Funzioni hash: SHA-256 e oltre» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Funzioni hash: SHA-256 e oltre»?
Esplorate le proprietà degli hash crittografici: resistenza alle collisioni, resistenza alle preimmagini e applicazioni. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Funzioni hash: SHA-256 e oltre»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Crittografia simmetrica: AES e cifrari a flusso
- Crittografia asimmetrica: RSA e curve ellittiche
- Funzioni hash: SHA-256 e oltre
- Firme digitali e certificati