Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt
Comprenda la motivazione crittografica per combinare cifratura e autenticazione nell’ordine corretto.
Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt è 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.
Tre ordini di composizione
Quando si combinano cifratura e MAC, esistono tre ordini: Encrypt-then-MAC (EtM), MAC-then-Encrypt (MtE) ed Encrypt-and-MAC (E&M). Ciascuno presenta proprietà di sicurezza fondamentalmente diverse e solo uno è dimostrabilmente sicuro in tutte le configurazioni.
Definizione di Encrypt-then-MAC
In Encrypt-then-MAC, il testo in chiaro viene prima cifrato per produrre il testo cifrato, quindi il MAC viene calcolato su quest'ultimo. Il destinatario può verificare il MAC prima di tentare la decrittografia, quindi un messaggio manomesso viene rifiutato immediatamente senza divulgare informazioni.
Definizione di MAC-then-Encrypt
In MAC-then-Encrypt, il MAC viene calcolato sul testo in chiaro, quindi il testo in chiaro e il MAC vengono cifrati insieme. Il destinatario deve decrittografare il messaggio prima di poter verificare il MAC, aprendo la strada ad attacchi padding oracle e decryption oracle.
Difetto di SSL 3.0 e TLS 1.0
SSL 3.0 e TLS 1.0 usavano l'ordine MAC-then-Encrypt per i cifrari a blocchi in modalità CBC. Questo difetto di progettazione è stato sfruttato dall'attacco BEAST nel 2011 e dall'attacco POODLE nel 2014, che sfruttavano entrambi l'oracolo presente quando la decrittografia avviene prima della verifica del MAC.
Dimostrazione di Bellare-Namprempre
Nel 2000, Bellare e Namprempre hanno dimostrato formalmente che, tra i tre ordini di composizione, solo Encrypt-then-MAC raggiunge la sicurezza IND-CCA2 (sicurezza contro i testi cifrati scelti) per tutte le combinazioni di primitive di cifratura e MAC sicure. MtE ed E&M possono fallire in alcune composizioni.
Encrypt-and-MAC in SSH
SSH usa Encrypt-and-MAC: il MAC viene calcolato sul testo in chiaro e inviato insieme al testo cifrato in forma non cifrata. Sebbene SSH non abbia subito gli stessi exploit di MtE in SSL/TLS, anche questa composizione è teoricamente difettosa, poiché può divulgare informazioni sul testo in chiaro attraverso il MAC non cifrato.
AEAD: l'astrazione sicura
Authenticated Encryption with Associated Data (AEAD) è l'astrazione moderna che risolve per progettazione il problema della composizione. AEAD integra cifratura e autenticazione in un'unica primitiva, assicurando che siano sempre combinate correttamente senza richiedere allo sviluppatore di scegliere un ordine di composizione.
AES-GCM: lo standard AEAD
AES-GCM (Galois/Counter Mode) è la suite di cifratura AEAD più utilizzata. Fornisce cifratura autenticata attraverso una combinazione di cifratura in modalità CTR e autenticazione GHASH, ed è accelerato dall'hardware tramite le istruzioni AES-NI e CLMUL sulle CPU moderne.
TLS 1.3 impone esclusivamente AEAD
TLS 1.3 ha segnato una netta rottura con il passato rimuovendo tutte le suite di cifratura non AEAD. Ogni suite di cifratura TLS 1.3 usa AEAD, eliminando intere classi di vulnerabilità causate dalla composizione manuale e impropria delle primitive di cifratura e MAC, che affliggevano le versioni precedenti di TLS.
Non componga manualmente le primitive
La lezione fondamentale derivata da decenni di attacchi crittografici è che la composizione manuale delle primitive di cifratura e MAC è soggetta a errori, anche per gli esperti. Le librerie crittografiche moderne espongono interfacce AEAD proprio per impedire agli sviluppatori di commettere errori di composizione che portano a vulnerabilità concrete.
Indicazioni pratiche
Quando costruisce sistemi oggi, ricorra sempre a una primitiva AEAD come AES-GCM o ChaCha20-Poly1305. Se deve interoperare con sistemi legacy che usano MAC e cifratura separati, si assicuri di usare l'ordine Encrypt-then-MAC e mai MtE o E&M.
Verifica EtM vs MtE
Quale affermazione descrive correttamente la differenza di sicurezza tra Encrypt-then-MAC e MAC-then-Encrypt?
Riepilogo della lezione: l'ordine di composizione è importante
EtM è l'unico ordine di composizione dimostrabilmente sicuro per primitive di cifratura e MAC separate. TLS 1.3 elimina completamente il problema imponendo suite di cifratura esclusivamente AEAD. In caso di dubbio, usi una primitiva AEAD come AES-GCM o ChaCha20-Poly1305 e lasci che la libreria gestisca correttamente la composizione.
Impara Cryptology Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 67
- Lezioni
- 261
Domande Frequenti
La lezione «Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt» è gratuita?
Sì — il testo completo di «Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt» è 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 «Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt»?
Comprenda la motivazione crittografica per combinare cifratura e autenticazione nell’ordine corretto. 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 «Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt»?
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
- Perché Encrypt-Then-MAC è migliore di MAC-Then-Encrypt
- Modalità SIV: AEAD resistente all’uso improprio dei nonce
- AEGIS: cifratura autenticata ad alta velocità
- Selezionare AEAD per i sistemi di produzione