0Pricing
Cryptology Academy · Lezione

Concetti sui MAC e attacchi di estensione della lunghezza

Spieghi perché aggiungere dati dopo un prefisso segreto non è sicuro contro gli attacchi di estensione della lunghezza.

Concetti sui MAC e attacchi di estensione della lunghezza è 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.

Introduzione

I Message Authentication Code (MAC) garantiscono integrità e autenticità tramite una chiave segreta condivisa. In questo argomento analizzeremo i MAC, le loro proprietà e una vulnerabilità critica degli hash con chiave ingenui.

Che cos'è un MAC?

Un MAC è un breve codice di autenticazione calcolato a partire da un messaggio e da una chiave segreta. Il destinatario, usando la stessa chiave, ricalcola il MAC e lo verifica. In questo modo si impediscono le falsificazioni senza la chiave.

MAC, hash e firma a confronto

Hash: nessuna chiave, pubblico, garantisce solo l'integrità. MAC: segreto condiviso, simmetrico, garantisce integrità e autenticità. Firma digitale: chiave privata, asimmetrica, aggiunge il non ripudio. Solo le firme garantiscono il non ripudio.

Impossibilità di falsificazione

Un MAC sicuro deve essere esistenzialmente non falsificabile sotto attacco a messaggi scelti (EUF-CMA): un attaccante che può interrogare il MAC per qualsiasi messaggio non può creare un MAC valido per un nuovo messaggio che non sia stato precedentemente sottoposto a interrogazione.

Hash con chiave ingenuo: MAC con prefisso

Tentativo ingenuo: MAC(K, M) = H(K || M). Sembra sicuro, ma è vulnerabile agli attacchi di estensione della lunghezza per le funzioni hash Merkle-Damgård (SHA-256, SHA-512, MD5).

Attacco di estensione della lunghezza

Lo stato di SHA-256 dopo l'hashing di M è semplicemente H(M). Dato H(K || M), un attaccante può calcolare H(K || M || padding || extra) per qualsiasi «extra» senza conoscere K. In questo modo estende il messaggio aggiungendo nuovi dati.

Impatto pratico dell'attacco

Flickr (2009): l'API usava H(K || params). Gli attaccanti aggiungevano &api_sig=forgery alle richieste autenticate. Di conseguenza, chiamate API non autorizzate risultavano valide. Era un puro exploit di estensione della lunghezza.

Anche il MAC con suffisso non funziona

MAC(K, M) = H(M || K): vulnerabile agli attacchi offline. L'attaccante calcola H(message) senza K, quindi usa un attacco del compleanno per trovare M' con lo stesso hash. La chiave viene aggiunta dopo la collisione.

Perché HMAC risolve il problema

HMAC applica due volte l'hash usando pad diversi per la chiave: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) L'hash interno produce H(ipad_key || M). L'hash esterno lo racchiude con opad_key. L'estensione della lunghezza non funziona perché l'attaccante non può impostare lo stato iniziale dell'hash esterno.

SHA-3 ed estensione della lunghezza

SHA-3 usa la costruzione sponge, che è intrinsecamente immune agli attacchi di estensione della lunghezza. H_SHA3(K || M) è una costruzione MAC semplice valida. SHA-2 non lo è: usi sempre HMAC con SHA-2.

Attacchi temporali sulla verifica dei MAC

Il confronto dei MAC con uscita anticipata (==) perde informazioni sui tempi di esecuzione. Un primo byte «corretto» richiede leggermente più tempo di un primo byte «errato». Dopo 256 query: trovato il byte 1. Dopo altre 256: trovato il byte 2. Il MAC completo viene recuperato in 16×256 query.

Verifica rapida

Perché MAC(K, M) = SHA256(K || M) non è sicuro?

Riepilogo

Gli attacchi di estensione della lunghezza mostrano perché gli hash con chiave ingenui non funzionano. Nel prossimo argomento studieremo la costruzione di HMAC e la sua dimostrazione di sicurezza.

Domande Frequenti

La lezione «Concetti sui MAC e attacchi di estensione della lunghezza» è gratuita?

Sì — il testo completo di «Concetti sui MAC e attacchi di estensione della lunghezza» è 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 «Concetti sui MAC e attacchi di estensione della lunghezza»?

Spieghi perché aggiungere dati dopo un prefisso segreto non è sicuro contro gli attacchi di estensione della lunghezza. 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 «Concetti sui MAC e attacchi di estensione della lunghezza»?

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. Concetti sui MAC e attacchi di estensione della lunghezza
  2. Costruzione e dimostrazione di sicurezza di HMAC
  3. HMAC nelle API: firma delle richieste
  4. CMAC e Poly1305: MAC basati su cifrari a blocchi
← Torna a Cryptology Academy