0Pricing
Cryptology Academy · Lezione

Cosa rende efficace una funzione hash

Esplori la resistenza alla preimmagine, alle collisioni e l'effetto valanga.

Cosa rende efficace una funzione hash è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 1 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 Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

Una funzione hash crittografica trasforma qualsiasi input in un digest di lunghezza fissa. In questa lezione studieremo le proprietà che rendono una funzione hash sicura dal punto di vista crittografico.

Output deterministico

Hash(M) produce sempre lo stesso output per lo stesso input. SHA-256('hello') è sempre aabb..., indipendentemente da dove o quando lo si calcola.

Lunghezza dell'output fissa

SHA-256 produce sempre 256 bit (32 byte = 64 caratteri esadecimali). SHA-512 produce sempre 512 bit. L'input può essere di 0 byte o di 10 GB: la dimensione dell'output non cambia mai.

Resistenza alla preimmagine

Dato un hash h, deve essere computazionalmente impraticabile trovare un messaggio M tale che Hash(M) = h. È una proprietà unidirezionale: non è possibile invertire un hash.

Resistenza alla seconda preimmagine

Dato M1, deve essere impraticabile trovare M2 ≠ M1 tale che Hash(M1) = Hash(M2). Impedisce a un attaccante di sostituire un messaggio con uno diverso avente lo stesso hash.

Resistenza alle collisioni

Deve essere impraticabile trovare QUALSIASI coppia di messaggi M1 ≠ M2 per cui Hash(M1) = Hash(M2). È più difficile della seconda preimmagine, ma meno forte di quanto sembri: il principio dei cassetti garantisce che le collisioni esistano.

Effetto valanga

L'inversione di un singolo bit nell'input dovrebbe modificare circa il 50% dei bit dell'output. SHA-256('hello') e SHA-256('hellp') differiscono per circa 128 bit. Questa sensibilità impedisce gli attacchi di ricerca incrementale.

Costruzione di Merkle-Damgård

MD5, SHA-1 e SHA-2 usano la costruzione di Merkle-Damgård: dividono l'input in blocchi e concatenano una funzione di compressione. Il valore finale della catena è l'hash. Questo schema è vulnerabile agli attacchi di estensione della lunghezza.

Costruzione a spugna

SHA-3 (Keccak) usa una costruzione a spugna: assorbe l'input in uno stato, quindi produce l'output. Le costruzioni a spugna resistono agli attacchi di estensione della lunghezza e sono più versatili di Merkle-Damgård.

Limite del compleanno

L'attacco del compleanno trova collisioni in 2^(n/2) operazioni, non in 2^n. SHA-256 ha un output di 256 bit, quindi la resistenza alle collisioni è di circa 2^128. SHA-1 (160 bit) ha una resistenza di circa 2^80 ed è ormai compromesso nella pratica.

Hash, MAC e firma

Hash: nessuna chiave, garantisce solo l'integrità. MAC (HMAC): hash con chiave, garantisce integrità e autenticità. Firma digitale: chiave asimmetrica, garantisce integrità, autenticità e non ripudio.

Verifica rapida

Quale proprietà garantisce che sia impraticabile trovare un input qualsiasi che produca un determinato output hash?

Riepilogo

Ora comprende le proprietà di sicurezza delle funzioni hash. Nel prossimo argomento studieremo MD5, un tempo lo standard e oggi completamente compromesso.

Domande Frequenti

La lezione «Cosa rende efficace una funzione hash» è gratuita?

Sì — il testo completo di «Cosa rende efficace una funzione hash» è 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 Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Cosa rende efficace una funzione hash»?

Esplori la resistenza alla preimmagine, alle collisioni e l'effetto valanga. Eserciti Cryptology 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 Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology 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 1 di 4.

Quanto tempo richiede la lezione «Cosa rende efficace una funzione hash»?

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 Cryptology Academy?

Sì. Ogni lezione Cryptology 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

  1. Cosa rende efficace una funzione hash
  2. MD5: storia, utilizzi e motivi della sua insicurezza
  3. La famiglia SHA-1 e SHA-2
  4. Applicazioni degli hash: checksum, HMAC e Git
← Torna a Cryptology Academy