Indice
1 Introduzione alla crittografia 7
1.1 Il ruolo della crittografia nella protezione delle informazioni . . . . . . 7
1.2 Crittografia come miglioramento, non come soluzione definitiva . . . . 7
2 Terminologia fondamentale 7
2.1 Crittologia, crittografia e crittoanalisi . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Crittologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Crittografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3 Crittoanalisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Minacce ai messaggi 8
3.1 Intercettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Interruzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Modifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4 Fabbricazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5 Vulnerabilità e controllo della minaccia . . . . . . . . . . . . . . . . . . . . 9
4 Schema crittografico di base 9
4.1 Plaintext, ciphertext, cifratura e decifratura . . . . . . . . . . . . . . . . . 9
4.2 Notazione formale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Crittografia in pratica 10
5.1 Comunicazione in ambiente ostile . . . . . . . . . . . . . . . . . . . . . . . 10
6 Crittosistemi con chiavi 10
6.1 Ruolo della chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.2 Algoritmo e chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 Classificazione dei crittosistemi rispetto alle chiavi 11
7.1 Crittosistemi senza chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.2 Crittosistemi simmetrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.3 Crittosistemi asimmetrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8 Obiettivi della crittoanalisi 12
8.1 Rompere un singolo messaggio . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.2 Riconoscere pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.3 Dedurre significati senza decifrare . . . . . . . . . . . . . . . . . . . . . . . 13
8.4 Dedurre la chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.5 Trovare vulnerabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 Informazioni disponibili al crittoanalista 13
9.1 Messaggi cifrati intercettati . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1 2
9.2 Algoritmo noto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.3 Plaintext noto o sospetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.4 Strumenti matematici e statistici . . . . . . . . . . . . . . . . . . . . . . . . 14
9.5 Proprietà del linguaggio naturale . . . . . . . . . . . . . . . . . . . . . . . . 14
10 Cifratura rompibile 14
10.1 Sicurezza teorica e sicurezza pratica . . . . . . . . . . . . . . . . . . . . . . 14
10.2 Forza bruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.3 Esempio con messaggio di 25 caratteri . . . . . . . . . . . . . . . . . . . . 14
10.4 Ruolo dell’intelligenza nell’attacco . . . . . . . . . . . . . . . . . . . . . . . 15
11 Requisiti dei protocolli crittografici 15
11.1 Consegna del messaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.2 Riservatezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.3 Autenticazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.4 Integrità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.5 Protezione dalla duplicazione . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.6 Non ripudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
12 Rappresentazione dei caratteri 15
12.1 Lettere come numeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
12.2 Operazioni modulo 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
13 Tipi fondamentali di cifrari 16
13.1 Cifrari a sostituzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
13.2 Cifrari a trasposizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
13.3 Product ciphers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
14 Cifrario di Cesare 17
14.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
14.2 Chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
14.3 Esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
14.4 Cifrario monoalfabetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
15 Attacco a un cifrario di sostituzione 18
15.1 Ricerca esaustiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
15.2 Analisi statistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
15.3 Unigrammi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
16 Attacco statistico al ciphertext “khoor zruog” 19
16.1 Calcolo delle frequenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
16.2 Correlazione con l’inglese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
16.3 Interpretazione dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3
17 Problema del cifrario di Cesare 20
17.1 Chiave troppo corta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
17.2 Frequenze non nascoste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
17.3 Soluzione: chiave più lunga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
18 Sostituzione polialfabetica 21
18.1 Idea generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
18.2 Effetto sulle frequenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
18.3 Esempio con due chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
19 Tavola di Vigenère 21
19.1 Struttura della tabula recta . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
19.2 Uso della chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
19.3 Esempio con chiave EXODUS . . . . . . . . . . . . . . . . . . . . . . . . . . 22
19.4 Decifratura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
20 Cifrari di trasposizione 23
20.1 Concetto generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
20.2 Trasposizione colonnare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
20.3 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
20.4 Rail-fence cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
21 Product ciphers 24
21.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
21.2 Obiettivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
21.3 Limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
22 Criteri per un buon cifrario 25
22.1 Dipendenza dall’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . 25
22.2 Sostituzione, trasposizione e diffusione . . . . . . . . . . . . . . . . . . . . 25
22.3 Principi di cifratura solida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
23 Stream cipher e block cipher 25
23.1 Distinzione generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
24 Stream cipher 25
24.1 Funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
24.2 Decifratura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
24.3 Vantaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
25 Problemi degli stream cipher 26
25.1 Perdita di sincronizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
25.2 Decifratura errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
25.3 Possibile recupero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4
26 Block cipher 27
26.1 Funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
26.2 Esempio con trasposizione colonnare . . . . . . . . . . . . . . . . . . . . . 28
26.3 Ritardo di decodifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
26.4 Weak-block e strong-block cipher . . . . . . . . . . . . . . . . . . . . . . . . 28
27 Confronto tra stream cipher e block cipher 28
27.1 Stream cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
27.2 Block cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28 Approcci di crittoanalisi 29
28.1 Ciphertext-only attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28.2 Known plaintext attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28.3 Probable plaintext attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28.4 Chosen plaintext attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28.5 Chosen ciphertext attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
29 Crittografia simmetrica 30
29.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
29.2 Distribuzione della chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
29.3 Autenticazione implicita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
30 Crittografia asimmetrica 31
30.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
30.2 Distribuzione della chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
30.3 Esempio concettuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
31 Crittografia simmetrica e concetti introduttivi 31
31.1 Significato generale della crittografia simmetrica . . . . . . . . . . . . . . 32
31.2 Cifrari a blocchi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
31.3 Product cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
32 DES: Data Encryption Standard 33
32.1 Origine storica del DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
32.2 Il problema della lunghezza della chiave . . . . . . . . . . . . . . . . . . . 33
32.3 Caratteristiche generali del DES . . . . . . . . . . . . . . . . . . . . . . . . 34
33 Struttura interna del DES e schema di Feistel 34
33.1 Divisione del blocco in due metà . . . . . . . . . . . . . . . . . . . . . . . . 34
33.2 Funzionamento generale del round Feistel . . . . . . . . . . . . . . . . . . 35
33.3 Perché la struttura Feistel è utile . . . . . . . . . . . . . . . . . . . . . . . . 35
33.4 Operazioni logiche elementari . . . . . . . . . . . . . . . . . . . . . . . . . . 36
34 Confusion 36
5
34.1 Definizione di confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
34.2 Ruolo delle S-box nella confusion . . . . . . . . . . . . . . . . . . . . . . . . 37
35 La funzione Feistel del DES 37
35.1 Ruolo della funzione f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
35.2 Fase 1: espansione da 32 bit a 48 bit . . . . . . . . . . . . . . . . . . . . . 38
35.3 Fase 2: XOR con la chiave di round . . . . . . . . . . . . . . . . . . . . . . 38
35.4 Fase 3: sostituzione tramite S-box . . . . . . . . . . . . . . . . . . . . . . . 38
35.5 Esempio di S-box DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
35.6 Fase 4: permutazione tramite P-box . . . . . . . . . . . . . . . . . . . . . . 39
36 Diffusion 40
36.1 Definizione di diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
36.2 Perché la diffusion è importante . . . . . . . . . . . . . . . . . . . . . . . . 40
36.3 Ruolo delle P-box nella diffusion . . . . . . . . . . . . . . . . . . . . . . . . 40
37 Generazione delle chiavi nel DES 41
37.1 Chiave principale e round keys . . . . . . . . . . . . . . . . . . . . . . . . . 41
37.2 Permuted Choice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
37.3 Rotazioni a sinistra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
37.4 Permuted Choice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
38 Implementazione hardware iterativa del DES 42
38.1 Idea generale dell’implementazione hardware . . . . . . . . . . . . . . . . 42
38.2 Registri e aggiornamento dei dati . . . . . . . . . . . . . . . . . . . . . . . . 43
38.3 Vantaggi e limiti dell’approccio iterativo . . . . . . . . . . . . . . . . . . . 43
39 Double DES 43
39.1 Idea del Double DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
39.2 Il problema del meet-in-the-middle . . . . . . . . . . . . . . . . . . . . . . . 44
40 Triple DES 44
40.1 Motivazione del Triple DES . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
40.2 Struttura EDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
40.3 Sicurezza effettiva di Triple DES . . . . . . . . . . . . . . . . . . . . . . . . 45
41 Evoluzione verso AES 45
41.1 Necessità di un nuovo standard . . . . . . . . . . . . . . . . . . . . . . . . . 45
41.2 Criteri richiesti per AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
41.3 Competizione AES e finalisti . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
42 AES: Advanced Encryption Standard 47
42.1 Caratteristiche generali di AES . . . . . . . . . . . . . . . . . . . . . . . . . 47
42.2 Numero di round in AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6
42.3 Operazioni fondamentali di un round AES . . . . . . . . . . . . . . . . . . 47
42.4 Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
42.5 ShiftRows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
42.6 MixColumns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
42.7 AddRoundKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
43 Confronto concettuale tra DES, Triple DES e AES 48
43.1 DES come algoritmo storico . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
43.2 Triple DES come soluzione intermedia . . . . . . . . . . . . . . . . . . . . 49
43.3 AES come standard moderno . . . . . . . . . . . . . . . . . . . . . . . . . . 49
44 Visione complessiva del percorso crittografico 49
44.1 Dal DES ad AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
44.2 Confusion e diffusion come principi comuni . . . . . . . . . . . . . . . . . 50
44.3 Importanza dell’implementazione hardware . . . . . . . . . . . . . . . . . 50
7
1 Introduzione alla crittografia
1.1 Il ruolo della crittografia nella protezione delle informazioni
La crittografia è uno degli strumenti fondamentali per proteggere le informazioni in un am-
biente digitale. Il suo scopo principale è trasformare un messaggio leggibile, chiamato plaintext
o cleartext, in una forma non immediatamente comprensibile, chiamata ciphertext. In questo
modo, anche se il messaggio viene intercettato, il suo contenuto non dovrebbe essere leggibile
da soggetti non autorizzati.
La crittografia non deve però essere interpretata come una soluzione assoluta a tutti i problemi
di sicurezza. Essa riduce il rischio, rende più difficile l’attacco e aumenta il costo per l’avversario,
ma non elimina completamente le minacce. Un sistema può infatti essere vulnerabile non solo
per debolezze matematiche, ma anche per errori di implementazione, cattiva gestione delle chiavi
o procedure operative scorrette.
L’idea di base è simile a quella di una serratura: il messaggio viene “chiuso” tramite un algoritmo
crittografico e può essere “riaperto” solo da chi possiede le informazioni corrette, tipicamente una
chiave. Questo concetto è centrale nella protezione di infrastrutture critiche, sistemi industriali,
reti informatiche, comunicazioni militari, dispositivi personali e applicazioni bancarie.
1.2 Crittografia come miglioramento, non come soluzione definitiva
La crittografia fornisce un miglioramento della sicurezza, ma non garantisce che un sistema sia
invulnerabile. Un messaggio cifrato può comunque essere intercettato, bloccato, alterato o usato
in modo improprio se mancano altri meccanismi di protezione.
Per esempio, la cifratura protegge la riservatezza, ma non garantisce automaticamente inte-
grità, autenticazione o disponibilità. Per questo motivo deve essere inserita in un protocollo
più ampio.
2 Terminologia fondamentale
2.1 Crittologia, crittografia e crittoanalisi
2.1.1 Crittologia
La crittologia è il campo generale che comprende sia la crittografia sia la crittoanalisi. Quindi,
essa studia sia i metodi per proteggere i messaggi sia quelli per attaccarli. 8
2.1.2 Crittografia
La crittografia è l’arte e la scienza di mantenere sicuri i messaggi. Si occupa di progettare
algoritmi e protocolli che trasformano dati leggibili in dati non leggibili da chi non possiede la
chiave o la conoscenza necessaria.
Il suo obiettivo principale è rendere il messaggio incomprensibile a soggetti non autorizzati,
mantenendo però la possibilità per il destinatario legittimo di recuperare il contenuto originale.
2.1.3 Crittoanalisi
La crittoanalisi è l’arte e la scienza di rompere un ciphertext, cioè di cercare di ricavare il mes-
saggio originale o la chiave senza autorizzazione. Il crittoanalista studia debolezze matematiche,
statistiche, operative o implementative.
Un esempio storico importante è Enigma durante la Seconda guerra mondiale. Questo caso
mostra che la sicurezza non dipende solo dalla complessità apparente di un sistema, ma anche da
come viene usato, dagli errori umani, dalle procedure operative e dalle informazioni disponibili
all’attaccante.
3 Minacce ai messaggi
3.1 Intercettazione
L’intercettazione avviene quando un soggetto non autorizzato accede al messaggio durante la
comunicazione. L’attaccante può semplicemente osservare o copiare il contenuto trasmesso.
-
Appunti hardware and embedded security (parte 3)
-
Appunti Hardware and embedded security (parte 2)
-
Appunti Hardware and embedded systems (parte 1)
-
Appunti parte pratica Embedded and real time systems – Sistemi tempo reale/schedulazione