0Pricing
Cryptology Academy · Lezione

Fondamenti dei cifrari a blocchi e padding

Comprenda la dimensione dei blocchi, il padding PKCS7 e la struttura dei cifrari.

Fondamenti dei cifrari a blocchi e padding è 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

I cifrari a blocchi crittografano blocchi di dimensione fissa. Quando il testo in chiaro non riempie un blocco, è necessario aggiungere del padding. In questa lezione imparerà a fondo la struttura dei cifrari a blocchi, gli schemi di padding e la loro importanza.

Ripasso della dimensione dei blocchi

AES utilizza blocchi da 128 bit (16 byte). DES utilizzava blocchi da 64 bit (8 byte). Se il testo in chiaro è esattamente di 16 byte, costituisce un blocco. 17 byte richiedono due blocchi.

Perché è necessario il padding

Se il testo in chiaro è di 20 byte, il secondo blocco contiene solo 4 byte. Il cifrario richiede un blocco completo di 16 byte. Aggiungiamo i 12 byte mancanti con uno schema deterministico e reversibile.

Padding PKCS#7

PKCS#7 aggiunge N byte, ognuno con valore N: - Servono 3 byte → aggiungere: 03 03 03 - Servono 12 byte → aggiungere: 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C - Non servono byte → aggiungere un blocco completo di 16: 10×16

Aggiungere sempre un blocco completo

Se il testo in chiaro è esattamente di 16 byte, PKCS#7 aggiunge un blocco completo aggiuntivo di 0x10×16. In questo modo il destinatario sa sempre dove termina il padding: il valore dell'ultimo byte indica quanti byte rimuovere.

PKCS#7 in Python

def pkcs7_pad(data: bytes, block_size: int = 16) -> bytes: n = block_size - (len(data) % block_size) return data + bytes([n] * n) def pkcs7_unpad(data: bytes) -> bytes: n = data[-1] return data[:-n]

Attacchi padding oracle

Se un server rivela se il padding è valido dopo la decrittografia, tramite un messaggio di errore o i tempi di risposta, un attaccante può decifrare il testo cifrato byte per byte senza conoscere la chiave. Questo ha compromesso ViewState di ASP.NET nel 2010.

Padding a zeri e ANSI X.923

Padding a zeri: aggiunge byte 0x00 (ambiguo: i dati originali potrebbero terminare con degli zeri). ANSI X.923: aggiunge zeri e imposta l'ultimo byte sul numero di byte aggiunti. ISO 7816-4: il primo byte di padding è 0x80, i successivi sono 0x00. PKCS#7 non è ambiguo ed è la scelta preferita.

Padding bitwise (CTS)

Ciphertext Stealing (CTS) evita completamente il padding: riorganizza gli ultimi due blocchi per gestire un input di dimensione parziale. Viene utilizzato nella cifratura dei dischi (Kerberos e alcune implementazioni di AES).

Impatto della dimensione dei blocchi sulla sicurezza

Con blocchi da 64 bit (DES, 3DES, Blowfish), si verifica una collisione del compleanno dopo 2^32 blocchi (circa 32 GB). I browser hanno disabilitato 3DES in TLS dopo che l'attacco SWEET32 lo ha dimostrato nel 2016. I blocchi da 128 bit di AES richiedono 2^64 blocchi e sono sicuri nella pratica.

Modalità senza padding

AES-CTR e AES-GCM non richiedono padding: usano il cifrario a blocchi come generatore di keystream ed eseguono l'operazione XOR su input di lunghezza arbitraria. Il limite del blocco è un dettaglio interno dell'implementazione.

Verifica rapida

Utilizzando PKCS#7 con blocchi da 16 byte, quale padding viene aggiunto a un messaggio di 13 byte?

Riepilogo

Ora conosce il padding dei cifrari a blocchi. Prossimamente confronteremo le modalità ECB e CBC, iniziando dal famoso attacco del pinguino ECB.

Domande Frequenti

La lezione «Fondamenti dei cifrari a blocchi e padding» è gratuita?

Sì — il testo completo di «Fondamenti dei cifrari a blocchi e padding» è 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 «Fondamenti dei cifrari a blocchi e padding»?

Comprenda la dimensione dei blocchi, il padding PKCS7 e la struttura dei cifrari. 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 «Fondamenti dei cifrari a blocchi e padding»?

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. Fondamenti dei cifrari a blocchi e padding
  2. ECB e CBC: pattern e IV
  3. Modalità CTR e comportamento dei cifrari a flusso
  4. GCM e cifratura autenticata
← Torna a Cryptology Academy