CMAC e Poly1305: MAC basati su cifrari a blocchi
Confronti CMAC e Poly1305 come alternative ai MAC basati su hash.
CMAC e Poly1305: MAC basati su cifrari a blocchi è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Che cos'è un MAC?
Un Message Authentication Code (MAC) riceve una chiave e un messaggio e produce un tag. Il tag dimostra che il messaggio non è stato manomesso e che è stato prodotto da qualcuno in possesso della chiave.
HMAC e MAC basati su cifrari a blocchi
HMAC utilizza una funzione hash come primitiva. CMAC e Poly1305 utilizzano invece cifrari a blocchi o aritmetica polinomiale. I MAC basati su cifrari a blocchi evitano la dipendenza dalle funzioni hash e si integrano naturalmente con l'hardware AES.
Costruzione di CMAC
CMAC (Cipher-based MAC) è definito nella norma NIST SP 800-38B. Applica il padding al messaggio fino a raggiungere un limite di blocco, deriva due sottochiavi K1/K2 dal cifrario, esegue lo XOR con il blocco finale, quindi esegue la modalità CBC senza memorizzare il testo cifrato intermedio.
Derivazione delle sottochiavi CMAC
K1 = AES_K(0^128) spostato a sinistra di 1 bit, con XOR con una costante se l'MSB era 1. K2 = K1 spostato analogamente. Queste sottochiavi proteggono il blocco parziale finale dall'estensione della lunghezza.
Panoramica di Poly1305
Poly1305 è un autenticatore monouso progettato da Daniel Bernstein. Valuta un polinomio sul primo 2^130-5, trattando il messaggio come una serie di coefficienti polinomiali e utilizzando una coppia di chiavi monouso (r, s).
Matematica di Poly1305
Tag = (somma di (m_i * r^i) mod 2^130-5) + s mod 2^128. La chiave r è sottoposta a clamping su 22 bit specifici per prevenire gli attacchi temporali. s è una maschera additiva monouso di 16 byte.
ChaCha20-Poly1305
Poly1305 viene quasi sempre associato a ChaCha20. ChaCha20 genera (r, s) monouso dal keystream del cifrario a flusso, rendendo lo schema AEAD combinato sicuro secondo dimostrazione formale ed estremamente veloce sulle CPU ARM e mobili.
AES-GCM e AES-CMAC
AES-GCM esegue l'autenticazione utilizzando GHASH, un MAC polinomiale su GF(2^128). AES-CMAC è più semplice e viene utilizzato in IEEE 802.11i (WPA2) e nelle suite di cifratura TLS 1.2. GCM fornisce sia la cifratura sia l'autenticazione in un'unica passata.
Confronto delle prestazioni
Poly1305 su ARM Cortex-A raggiunge circa 1 ciclo per byte utilizzando le intrinsic NEON. AES-CMAC richiede un'operazione AES su un blocco per ogni blocco di 16 byte. Per i dati di grandi dimensioni, Poly1305 supera CMAC sull'hardware privo di AES-NI.
Proprietà di sicurezza
CMAC è non falsificabile esistenzialmente sotto attacco con messaggi scelti, assumendo che AES sia una permutazione pseudocasuale. Poly1305 è sicuro dal punto di vista informativo data una chiave monouso veramente casuale: la probabilità di falsificazione è al massimo 8*ceil(L/16)/2^106.
Casi d'uso
CMAC: WPA2, S/MIME, integrità dei file system. Poly1305: TLS 1.3 tramite ChaCha20-Poly1305, VPN WireGuard, Signal Protocol, Noise Protocol Framework. Entrambi sono ampiamente utilizzati nei moderni sistemi ad alta sicurezza.
Verifica rapida
Quale MAC viene utilizzato in ChaCha20-Poly1305 AEAD?
Riepilogo
Ha appreso la costruzione di CMAC basata su CBC e l'aritmetica polinomiale di Poly1305. Entrambi sono MAC sicuri a tempo costante, utilizzati in protocolli reali. Prossimo argomento: TLS/HTTPS e la composizione di tutte queste primitive.
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 «CMAC e Poly1305: MAC basati su cifrari a blocchi» è gratuita?
Sì — il testo completo di «CMAC e Poly1305: MAC basati su cifrari a blocchi» è 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 «CMAC e Poly1305: MAC basati su cifrari a blocchi»?
Confronti CMAC e Poly1305 come alternative ai MAC basati su hash. 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 4 di 4.
Quanto tempo richiede la lezione «CMAC e Poly1305: MAC basati su cifrari a blocchi»?
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
- Concetti sui MAC e attacchi di estensione della lunghezza
- Costruzione e dimostrazione di sicurezza di HMAC
- HMAC nelle API: firma delle richieste
- CMAC e Poly1305: MAC basati su cifrari a blocchi