crittografia
Introduzione La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro. Nel caso di trasferimento di denaro o di scambio dati abbastanza segreti, c’è bisogno di una certa sicurezza per poter proteggere il tutto. Il più delle volte i malintenzionati possono spiare o corrompere i dati. I principali malintenzionati sono: studenti, ex-dipendenti, banchieri, spie, hacher, truffatore, terrorista… Problemi relativi alla sicurezza: Segretezza: i dati devono essere accessibili e leggibili solo a chi ne ha il diritto Autenticazione: l’utente deve accertarsi dell’autenticità di chi invia i dati Affidabilità: certezza che i dati siano originali
Crittografia Le misure di segretezza per difendere i propri dati sono la crittografia Cifratura: processo mediante il quale un messaggio viene trasformato; è l’algoritmo per trasformare un messaggio Il messaggio in chiave è detto cittografato o crittogramma La decifratura è detta anche decriptaggio Algoritmo di codifica MessaggioTesto cifrato Algoritmo di decodifica Testo cifrato messaggio
Chiave La chiave è il parametro di cifratura, cioè la posizione che il carattere deve prendere La chiave può essere di trasposizione se i caratteri di un codice vengono scambiati di posizione e lo schema è detto P-box; se la chiave è di sostituzione, i caratteri sono sostituiti e lo schema è detto S-bx. Se la chiave di cifratura coincide con quella di decifratura, lo schema crittografico si dice simmetrico altrimenti, è asimmetrico La chiave di cifratura è detta pubblica; la chiave di decifratura è detta privata Crittografia simmetrica Chiave pubblica = Chiave privata
Crittoanalisi L’algoritmo di cifratura è noto e standardizzato Un malintenzionato può impadronirsi dei nostri dati ma per decifrarli ha bisogno della chiave Principio di Kerckhoff s: la cifratura di un sistema deve dipendere solo dalla segretezza della chiave e non dalla segretezza dell’algoritmo usato Corollario di Shannon: il nemico conosce il sistema Shanon indicò due criteri per una cifratura ottimale: Principio di confusione, la relazione tra la chiave e testo cifrato è molto complessa Principio di diffusione, il rapporto tra testo in chiaro e testo cifrato è molto complesso I due principi si riassumono mediante il criterio valanga secondo il quale, la modifica di un singolo simbolo della chiave, altera tutto il testo cifrato e l’alterazione di un solo simbolo del testo in chiaro dovrebbe alterare tutto il testo cifrato Oggi esistono dei meccanismi che generano delle chiavi usa e getta; la chiave viene utilizzata una sola volta e viene generata da un dispositivo elettronico e poi viene rigenerata ogni volta. Il testo da cifrare è detto testo in chiaro o plaintext Il testo cifrato è detto ciphertext
Aritmetica della crittografia Alla base della crittografia c’è la matematica modulare e la teoria dei numeri primi L’aritmetica modulare è quella che si occupa del resto della divisione tra dividendo x e divisore y R=resto=x(mod y) TEOREMI: il resto di somma è la somma dei resti; il resto di un prodotti è il prodotto dei resti L’aritmetica modulare viene chiamata anche aritmetica dell’orologio
Aritmetica dell’orologio Es 16(mod 7)=2 Si disegna un orologio d 7 tacchette Si contano 12 step di lancetta e, il 12 mo step è il resto della divisione
I numeri primi I numeri primi sono quei numeri divisibili per se stessi e per uno Teoremi di Euclide sui numeri primi: I teorema di Euclide: Ogni intero si può scrivere in un unico modo come prodotto di numeri primi II teorema di Euclide: I numeri primi costituiscono una successione infinita. Eratostene inventò un metodo per conoscere i numeri primi, il suo metodo va sotto il nome di crivello di Eratostene. I numeri primi sono infiniti e non esiste una regola per sapere se un intero è primo
Algoritmo di Eratostene Si vuole sapere quali sono i numeri primi minori dell’intero n Si dividono tutti i numeri per 2 fino a n e si scartano quelli con resto diverso da zero I restanti numeri vengono divisi per 3 e si scartano quelli con resto uguale a zero; Tutti i numeri interi minori di n, vengono divisi via via per gli interi successivi e scartati quelli che danno resto zero Es sia n=30 Gli interi presi in considerazione sono: 1, 2, 3,4, 5, 6,……30 Si effettua una divisione per 2; Vengono riportati i numeri con resto diverso da zero: 3,5,7,9,11,13,15,17,19,21,23,25,27,29 Si divide per il numero più piccolo: 3 Si scrivono tutti i numeri con resto diverso da zero: 5,7,11,13,17,19,23,25,29 Si divide per 5 e restano: 7,11,13,17,,19,23,29… I numeri primi risultano: 2, 3, 5, 7, 11, 13, 17, 19,23,29
Crittografia simmetrica o chiave privata messaggio Algoritmo di cifratura Algoritmo di decifratura Testo crittato messaggio Chiave comune Le esigenze della crittografia sono: segretezza, identificazione utente, autenticazione del messaggio
Crittografia simmetrica: il cifrario DES Cifrario DES Data Encryption Standard, uno dei primi sistemi crittografici moderni per l’IBM nel 1976 diventato standard negli USA per la protezione dei dati sensibili DES è un algoritmo simmetrico a chiave segreta di 64 bit, 8 dei quali sono di controllo. Principali regole L’alfabeto su cui lavora la crittografia è al massimo di 128 caratteri. L’algoritmo è noto ma la chiave no Il testo in chiaro viene diviso in 8 byte che si codificano in ASCII Da ogni blocco si ottiene una stringa di 64 cifre binarie Si utilizzano diverse iterazioni: I iterazione: trasposizione iniziale I, II, III, IV…..XVI iterazione: sostituzione con chiave a 56 bit Ultima iterazione: trasposizione finale
Crittografia DES Testo in chiaro 64 bit Trasposizione iniziale 16 iterazioni: sostituzioni successive con chiave a 56 bit Trasposizione finale
Crittografia 3-DES Nel 1998 il DES fu violato e nel 1999 si utilizzò la chiave 3-DES fatta di tre iterazioni successive per un totale di 56X3=168 bit Le tre chiavi possono essere uguali o differenti encrypt dencrypt encrypt dencrypt encrypt codifica decodifica K1 K2K3 K2 K1
3-DES Nella crittografia 3-des, il passo centrale è una decifrazione ma con una chiave particolare così anche nella decifratura ma viene fatto all’incontrario Le tre chiavi possono avere queste caratteristiche: K1, K2, K3 sono tutte diverse e indipendenti K1=k3 K2 diversa K1=k2=k3
AES Advanced Encryption Standard, algoritmo che sostituisce il DES Nel 1997 il NIST National Institute of Standards and Technology organizzò un concorso per sostituire l’algoritmo DES. Le valutazioni da prendere in considerazione furono: Sicurezza Costo Caratteristiche dell’algoritmo Furono selezionati cinque progetti di cui si valutarono i seguenti aspetti: Sicurezza generale Implementazione software Ambienti con spazio limitato Agilità della chiave Versatilità e flessibilità
AES È un algoritmo a blocchi di 128 bit ma può avere chiavi anche più lunghe 192 o 256. Si effettuano le seguenti operazioni: a. Si prendono 16 caratteri del testo da cifrare e si trasformano in codice ASCII e poi in 128 bit b. Si dispongono in una griglia di 4x4 byte. Si operano 4 trasformazioni per dieci fasi c. Le quattro operazioni sono le seguenti: substitute bytes, shift rows, mix columns, add round key
AES a00a01a02a03 a10a11a12a13 a20a21a22a23 a30a31a32a33 b00b01b02b03 b10b11b12b13 b20b21b22b23 b30b31b32b33 sostituzione b00b01b02b03 b11b12b13b10 b22b23b20b21 b33b30b31b32 Shift righe: la prima riga è invariata; la seconda riga ogni cella si sposta di un posto; nella terza riga ogni cella si sposta di due posizioni e nella quarta riga ogni cella si sposta di tre posisioni b00b02b01b03 b11b13b12b10 b22b20b23b21 b33B31b30b32 Mix di colonne d00d02d01d03 d11d13d12d10 d22d20d23d21 d33d31d30d32 c00c01c02c03 c10c11c12c13 c20c21c22c23 c30c31c32c33 + =
Crittografia asimmetrica La chiave asimmetrica è caratterizzata da una chiave pubblica nota a tutti ed una chiave privata che conosce solo una persona. Il criptoanalista non deve conoscere la chiave privata perché potrebbe essere un malintenzionato Un algoritmo molto sicuro ed utilizzato è RSA. La procedura è la seguente: 1. Si selezionano due numeri primi p,q 2. Si calcola n=pxq e (n)=(p-1)(q-1) 3. I sceglie un numero d/ 1<d< e MCD(,d)=1 4. Calcolare un numero e /e*d=1(mod ) cioè e*d-1= k multiplo di
Utilizzo della chiave La chiave pubblica è la coppia [e,n] La chiave privata è la coppia [d,n] Cifratura di T C=T n mod n Decifratura T=C d mod n esempio Si selezionano due numeri primi p=5, q=19 n=p*q=95 =4*18=72 Si seleziona 1<d<72 d=17 Si seleziona e=(g+1)/d dove g deve essere un multiplo di .
Funzione di hash La chiave asimmetrica è lenta e per questo vengono criptati messaggi brevi. Rimane aperto il problema dell’integrità del messaggio La funzione di hash ha il compito di verificare l’integrità dei messaggi e, ogni volta che viene generata, non è invertibile. Per ogni messaggio c’è un codice univoco di hash a 16 byte. Per questo motivo la funzione è detta impronta. Se cambia il codice, cambia la funzione Questo metodo è veloce e garantisce l’integrità del codice. Naturalmente, non si può risalire al codice conoscendo solo la funzione di hash