Sicurezza dei Sistemi Informatici L.S. in Ingegneria Informatica Docente: Prof. Giuseppe Mastronardi CRITTOGRAFIA E CRITTOANALISI ATTACCHI AI SISTEMI DI CALCOLO
La crittoanalisi si può definire come la scienza che si occupa di decrittare codici segreti, violare schemi di autenticazione e, in generale, “rompere” protocolli di crittografia. Generalmente un crittoanalista entra in gioco nella fase di progettazione di un algoritmo di crittografia, con il compito di scovare all’interno di quest’ultimo eventuali punti deboli. In quest’ottica gli algoritmi considerati più sicuri sono quelli il cui codice è pubblico, perché per vari anni sono stati oggetto di analisi e tentativi di rottura. Altri algoritmi di crittografia, invece, associano il proprio grado di sicurezza alla segretezza degli algoritmi stessi, ma proprio per questo non vengono considerati sicuri al pari di quelli resi pubblici: il codice può infatti nascondere bug, la cui scoperta rende inefficace l’algoritmo. Tipi di attacchi da crittoanalisi
PRINCIPIO DI KERCHOFF La sicurezza del sistema deve basarsi sull’ipotesi che il nemico possa avere piena conoscenza dei dettagli di progetto. La sola informazione di cui il nemico non può disporre è una sequenza di numeri casuali, generati da una chiave segreta, senza la quale non è possibile ricostruire il messaggio nascosto.
Gli attacchi che possono essere perpetrati da parte di un crittoanalista sono solitamente di sei tipi, classificati in ordine crescente di qualità dell'informazione in possesso del crittoanalista: 1.Attacco ciphertext-only: in questo caso il crittoanalista è in possesso del solo testo cifrato ottenibile facilmente analizzando i pacchetti in transito sulla rete. La possibilità di successo di questo tipo di attacco è molto remota e necessita di un’enorme quantità di dati cifrati. 2.Attacco known-plaintext: il crittoanalista è in possesso del testo cifrato e del corrispondente testo in chiaro. Grazie a questo tipo di informazione è possibile risalire alla chiave segreta. 3.Attacco chosen-plaintext: partendo dalla scelta di un eventuale testo in chiaro, il crittoanalista calcola il testo cifrato con l’intenzione di ottenere la stessa sequenza di dati cifrati in suo possesso. Tipi di attacchi da crittoanalisi
4.Attacco adaptive-chosen-plaintext: è una variante dell’attacco di tipo chosen-plaintext che modifica la scelta del testo in chiaro sulla base del risultato dall’analisi effettuata in precedenza. 5.Attacco chosen-ciphertext: al contrario dell' attacco chosen- plaintext, in questo caso il crittoanalista sceglie il testo cifrato con l’intenzione di decriptarlo ottenendo il testo in chiaro in suo possesso. Questo tipo di attacco è generalmente applicato in sistemi a chiave pubblica. 6.Attacco adaptive-chosen-ciphertext: partendo sempre dal testo cifrato, la scelta di quest’ultimo viene modificata in base ai risultati dell’analisi precedente. Tipi di attacchi da crittoanalisi
Tecniche crittografiche fondamentali In prima approssimazione, i sistemi di crittografia possono essere divisi in tre grandi gruppi: a repertorio; algebrici; letterali.
I sistemi a repertorio prevedono la sostituzione delle parole del testo in chiaro con un codice equivalente ottenuto consultando un dizionario. È’ quindi necessario che tale dizionario preveda la codifica di qualunque frase. Naturalmente la sicurezza di questi sistemi si basa principalmente sulla segretezza del repertorio che permette la traduzione del testo in chiaro a partire dal testo cifrato. I sistemi algebrici sono quelli che trasformano il messaggio in una sequenza di numeri e, sfruttando una base matematica, eseguono operazioni su tali numeri; in tal modo il messaggio codificato non sarà più composto da lettere ma da cifre. A questa categoria appartengono i moderni sistemi di crittografia che prevedono l’utilizzo, oltre che della chiave segreta, anche di una chiave pubblica. I sistemi letterali operano invece sul messaggio con operazioni di sostituzione, trasposizione e sovrapposizione. Hanno solo un’importanza storica. Tecniche crittografiche fondamentali
Crittografia a chiave segreta Mittente A Destinatario B Attacker Cifratura Canale insicuro Decifratura Messaggio cifrato Messaggio non cifrato M MM M ? K: Chiave segreta
Attualmente gli algoritmi a chiave simmetrica più diffusi sono: DES (utilizzato sin dalla fine degli anni Settanta dal Governo degli Stati Uniti [DES77] e violato durante una sfida su Internet), Triple DES, IDEA, RC2, RC4 (utilizzati in browser come Netscape Navigator e Microsoft Internet Explorer). Alcuni di questi algoritmi sono stati pubblicati e verificati da famosi crittoanalisti; altri, proprietari, non sono resi pubblici e potenzialmente potrebbero contenere nel loro codice bug o backdoor che permettono di violarli. Tecniche crittografiche fondamentali
Crittografia a chiave pubblica M Algoritmo di crittografia Messaggio non cifrato M Chiave pubblica del destinatario Algoritmo di crittografia Chiave privata del mittente Algoritmo di decrittografia Messaggio non cifrato M Chiave privata del destinatario Algoritmo di decrittografia Chiave pubblica del mittente a) Messaggio cifrato ai fini dell’autenticazione del mittente M b) Messaggio cifrato ai fini della segretezza del contenuto Scambio chiave pubblica
I due scenari di impiego della crittografia a chiave pubblica sono i seguenti: il mittente cripta il messaggio con la propria chiave privata (key1); il destinatario, che conosce l’identità di chi gli invia il messaggio, lo decripta utilizzando la chiave pubblica (key2) del mittente. In questo contesto si garantiscono l’autenticazione del mittente e l’integrità del messaggio. Non è invece garantita la confidenzialità poichè la chiave pubblica del mittente è a disposizione di tutti, quindi tutti possono decrittografare il messaggio; il mittente cripta il messaggio con la chiave pubblica del destinatario, che è nota a tutti; il destinatario riconosce che il messaggio è per lui e lo decripta con la propria chiave privata nota solo a lui. Solo il destinatario, che conosce la chiave segreta corrispondente alla chiave pubblica utilizzata dal mittente, sarà in grado di leggere il messaggio. Così si garantisce la confidenzialità. Questi due passaggi possono essere eseguiti sullo stesso messaggio in modo combinato, ottenendo in tal modo autenticazione, integrità e confidenzialità. Tra gli algoritmi a chiave pubblica vi sono gli algoritmi RSA e Diffie-Hellman. Crittografia a chiave pubblica
Utilizza algoritmi in grado di cifrare, in maniera reversibile, un documento, rendendolo inintellegibile a chiunque non disponga delle informazioni necessarie a condurre a termine il processo di decifrazione. In generale: la trasformazione avviene in funzione di una variabile detta chiave. le operazioni di cifratura e decifratura sono relativamente semplici nel caso in cui si conosca la chiave; in caso contrario risultano laboriose al punto da risultare praticamente (non teoricamente) inattuabili. risulta egualmente laborioso dedurre la chiave con cui è stato cifrato un documento confrontandolo con la sua versione in chiaro (cioè non cifrata). vengono in genere distinti algoritmi: Simmetrici (a chiave segreta), Asimmetrici (a chiave pubblica/privata). LA CRITTOGRAFIA
Utilizza una “unica” chiave, detta “segreta”, per cifrare e decifrare. ES.: DES (Data Encryption Standard), nelle sue versioni normale e triplo, con chiavi a 56 e 112 bit, usa funzioni di hashing, eventualmente mappabili in HW. Vantaggi: non è particolarmente costoso, in termini di tempo di calcolo Svantaggi: Essendo un algoritmo simmetrico, richiede che il mittente di un documento cifrato comunichi in modo sicuro al destinatario la chiave segreta Occorre una chiave “privata” per ogni coppia di soggetti Crittografia simmetrica
Di concezione recente, utilizza due chiavi distinte per cifrare e decifrare (Es. Diffie-Hellman e RSA). Proprietà fondamentali: -Un documento cifrato con una chiave può essere decifrato con un’altra e viceversa. -Le chiavi vengono generate in coppia da una algoritmo; è di fatto impossibile ottenere una chiave a partire dall’altra. -Una delle due chiavi viene detta pubblica, e può essere distribuita. L’altra, detta privata, deve essere mantenuta segreta. Crittografia asimmetrica (1/5)
RSA (Rivest, Shamir e Adleman) è attualmente considerato come standard per la crittografia a chiave pubblica. basa la sua robustezza sulla complessità algoritmica della scomposizione in fattori primi, operazione per la quale non è attualmente noto un algoritmo efficiente. esistono varie realizzazioni che variano in funzione della dimensione in bit delle chiavi e, quindi, del grado di sicurezza offerto. Chiavi di 512 bit sono un buon compromesso fra sicurezza e prestazioni. Crittografia asimmetrica (2/5)
L’algoritmo RSA: -Scegliere due numeri primi molto grandi (> ) P,Q -Calcolare N = P * Q e Z = (P-1) * (Q-1) -Scegliere un numero D che sia primo rispetto a Z -Determinare E tale che E * D = 1 mod Z -Suddividere il testo (visto come stringa di bit) in chiaro in blocchi di P bit, 0 ≤ P < N -Cifrare il testo calcolando C = P E (mod N) -Decifrare il testo calcolando P = C D (mod N) Riassumendo: per cifrare è necessaria una coppia (E,N) per decifrare è necessaria una coppia (D,N) Il metodo si basa sulla difficoltà di fattorizzare numeri grandi Fattorizzare un numero di 1000 cifre può richiedere tempi macchina di svariate centinaia d’anni Crittografia asimmetrica (3/5)
Esempio (in piccolo): P = 3, Q = 5 N = 15, Z = 8 D = 7 (primo rispetto a Z) E = 7 -1 mod 8 = 7 Testo da cifrare = 123 C1 = 1 7 mod 15 = 1 C2 = 2 7 mod 15 = 8 C3 = 3 7 mod 15 = 12 Decifrazione: T1 = 1 7 mod 15 = 1 T2 = 8 7 mod 15 = 2 T3 = 12 7 mod 15 = 3 Crittografia asimmetrica (4/5)
A causa della complessità algoritmica, le implementazioni di RSA sono generalmente troppo lente per cifrare direttamente i documenti RSA spesso usato in congiunzione con: -DES, per applicazioni che richiedano riservatezza -SHA, per applicazioni di autenticazione -Per inviare un documento di grandi dimensioni in modo riservato, il mittente genera una password casuale cifra il documento con DES utilizzando la password casuale cifra la password stessa con RSA invia il tutto (documento e password entrambi cifrati) al destinatario. Crittografia asimmetrica (5/5)
Messaggio criptato Testo in chiaro Testo in chiaro Chiave K2 Decifratura Chiave K1 Cifratura Crittografia a chiave pubblica
Crittografia con digest Permette di creare, a partire da un testo T, una sequenza di bit, il “digest”, strettamente collegata a T e di lunghezza fissa SHA (Secure Hash Algorithm) Utilizzato spesso per verifiche di integrità: -Confrontando digest ottenuti da uno stesso documento a distanza di tempo, è possibile verificare facilmente se il documento ha subito alterazioni. In congiunzione con RSA per verifica di firma digitale Per firmare: estrarre un digest SHA dal documento da firmare cifrare con RSA il digest con la chiave privata del firmatario Per verificare : decifrare la firma con la chiave pubblica del firmatario generare a parte un digest SHA del documento firmato confrontare il digest ottenuto dalla firma con quello ottenuto dal documento.
trasmissione Digest Testo in chiaro Calcolo del Digest Testo in chiaro digest Testo in chiaro digest Calcolo del Digest Uguali?
Testo in chiaro Calcolo del Digest digest Chiave privata del mittente Cifratura asimmetrica firma digitale Generazione della firma digitale
testo in chiaro firma digitale uguali? Digest calcolato Calcolo del digest Digest inverso decifratura asimmetrica Chiave pubblica del mittente Verifica della firma digitale
Servizi di crittografia Standard ISO Certificati standard X509 Utilizzo combinato degli algoritmi RSA, DES e SHA