Sicurezza delle informazioni • Quando vengono mandati pacchetti di informazioni sui mezzi promiscui (ad es. rete Ethernet) chiunque ha la possibilità di leggere i pacchetti inviati e ricomporre il messaggio originale: – Le informazioni non sono riservate – E’ possibile che un utente sottragga le informazioni anche se non ne è il destinatario – Un utente potrebbe modificare il messaggio (sia il contenuto che l’identità del mittente) • Pacchetti invati in internet hanno bisogno di un link fisico o software (cavallo di troia) col mittente o con il destinatario. Una volta che esso sia stabilito, ci sono gli stessi rischi che su una rete promiscua DEI - Univ. Padova (Italia) Crittografia: servizi richiesti • SEGRETEZZA: evitare che i dati inviati da un soggetto A a un soggetto B vengano intercettati da un terzo soggetto C. • AUTENTICAZIONE: verificare l’identità di chi manda o riceve i dati (evitare che un intruso si spacci per chi non è). • INTEGRITA’: essere sicuri che i dati ricevuti siano uguali a quelli inviati (evitare cioè che un intruso o un evento accidentale alterino i dati durante la trasmissione). • NON RIPUDIO: evitare che chi manda dei dati possa in futuro negare di averli mandati (firma digitale). DEI - Univ. Padova (Italia) Sicurezza: man in the middle A B Presunta comunicazione Canale di comunicazione Effettiva comunicazione con messaggio intercettato C DEI - Univ. Padova (Italia) Sicurezza: man in the middle • A e B vogliono scambiarsi dei messaggi e pensano che le loro comunicazioni siano sicure, corrette e che il mittente sia autentico. • C riesce ad intercettare i messaggi in arrivo ed in uscita da A, leggendoli e modificandoli • Per i messaggi che si scambiano A e B non è garantita l’autenticità né la segretezza in quanto C (l’uomo in mezzo, “man in the middle”) può alterare il flusso di comunicazione DEI - Univ. Padova (Italia) Cifratura del messaggio B A Cifratura con una chiave Ka Cifratura con una chiave Ka Comunicazione cifrata Canale di comunicazione Effettiva comunicazione con messaggio intercettato ? DEI - Univ. Padova (Italia) C Sicurezza: cifratura • A e B vogliono scambiarsi dei messaggi e utilizzano un algoritmo di crittografia per modificare il messaggio in modo che sia inintelleggibile per chi eventualmente intercetti il messaggio • A e B devon essersi accordati sulla cifratura e devono essere in possesso delle chiavi di decifrazione • C riesce ad intercettare i messaggi in arrivo ed in uscita da A, ma non riesce ad interpretarne il contenuto DEI - Univ. Padova (Italia) Algoritmi a chiave segreta • Cifrario di Cesare ogni lettera è sostituita da quella che la segue di k posizioni nell’alfabeto. Es: k è la chiave Se k=3, a è sostituito con d, b con e ecc. • Cifrario di sostituzione mono-alfabetico: generalizzazione del cifrario di Cesare ogni lettera è sostituita da un’altra, secondo uno schema “libero” DEI - Univ. Padova (Italia) Algoritmi a chiave segreta • Cifrari di trasposizione le lettere sono trasposte in altre posizioni, secondo una chiave di trasposizione ad esempio, la prima lettera è sostituita con la quarta, la seconda con la terza ecc. • One-Time Pad: il testo è codificato in binario e viene effettuata un’operazione di OR esclusivo con una chiave binaria della stessa lunghezza: l’algoritmo inattaccabile, ma c’è bisogno di chiavi di lunghezza uguale al messaggio • Algoritmi moderni: chiavi piccole, utilizzo di più operazioni (di trasposizione, sostituzione, di XOR), in cascata, secondo logiche complesse DEI - Univ. Padova (Italia) Algoritmi a chiave segreta (1) “Questo è un messaggio” 1] Algoritmo di Cesare k=4: “Uwixys i yr qixxekkms” 2] Cifrario di sostituzione mono-alfabetico con chiave M n b v c x z a s d f g h j k l p o i u y t r e w q: “Pyciuk c yj hciimzzsk” • Abcdefghi jklmnopqrstuvxywz • Mnbvcxzasdfghj k lpo iuytrewq DEI - Univ. Padova (Italia) Algoritmi a chiave segreta: one time pad Messaggio originario Chiave di codifica/ decodifica Codifica binaria Risultato dello XOR Messaggio codificato XOR q u e s t o è u n m e s s a g g i o DEI - Univ. Padova (Italia) 01110001 01110101 01100101 01110011 01110100 01101111 00100000 11101000 00100000 01110101 01101110 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100111 01101001 01101111 11110011 10001111 00011110 00101011 00001011 01100101 00101100 11111111 10100100 10001111 01001000 10111011 00010110 00111111 10111110 10100110 01001000 00010010 10011111 00001001 11000010 10000010 11111010 01111011 01011000 01111111 00001010 00001100 00010111 10000100 11111010 00100110 10011011 01111011 01011010 11001101 11010101 00101001 01110101 11111000 01100000 10101101 ú { X • ú & { Z Í Õ ) u ø ` Algoritmi a chiave segreta: one time pad Messaggio cifrato Chiave di codifica/ decodifica Codifica binaria Risultato dello XOR Messaggio decodificato XOR ú { X • ú & { Z Í Õ ) u ø ` DEI - Univ. Padova (Italia) 10000010 11111010 01111011 01011000 01111111 00001010 00001100 00010111 10000100 11111010 00100110 10011011 01111011 01011010 11001101 11010101 00101001 01110101 11111000 01100000 10101101 11110011 10001111 00011110 00101011 00001011 01100101 00101100 11111111 10100100 10001111 01001000 10111011 00010110 00111111 10111110 10100110 01001000 00010010 10011111 00001001 11000010 01110001 01110101 01100101 01110011 01110100 01101111 00100000 11101000 00100000 01110101 01101110 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100111 01101001 01101111 Q u e s t o è u n m e s s a g g i o Algoritmi a chiave segreta • Gli algoritmi visti finora sono simmetrici, in quanto, data la funzione di codifica/decodifica f(messaggio, chiave) si utilizza la stessa chiave K per codificare e decodificare il messaggio M: f(M,K) messaggio cifrato M=f(f(M,K),K) ricostruzione del messaggio originale DEI - Univ. Padova (Italia) Sicurezza della chiave • E’ necessario che mittente e destinatario si scambino la chiave in qualche modo sicuro • E’ necessario avere una chiave per ogni coppia mittente/destinatario DEI - Univ. Padova (Italia) Algoritmi a doppia chiave • Chiave Pubblica/Privata: Ogni soggetto A ha una propria chiave pubblica Kpub(A), nota a chiunque ed una propria chiave privata Kpriv(A) nota solo a lui stesso. • I requisiti che un algoritmo a chiave pubblica deve soddisfare sono: – i dati codificati con una delle chiavi possono essere decodificati solo con l’altra – la chiave privata non deve mai essere trasmessa in rete – deve essere molto difficile ricavare una chiave dall’altra (soprattutto la chiave privata da quella pubblica nota a tutti) DEI - Univ. Padova (Italia) Cifratura del messaggio Procedura per garantire la autenticità del mittente e la integrità dei dati: Il mittente codifica il messaggio con la sua chiave privata Kpriv(mitt), che solo lui conosce, ed il destinatario decodifica il messaggio con la chiave pubblica relativa Kpub(mitt). B A decifratura con la chiave pubblica Kpub(A) Cifratura con la chiave privataKpriv(A) Comunicazione cifrata Canale di comunicazione DEI - Univ. Padova (Italia) Cifratura del messaggio Procedura per garantire la segretezza dei dati: Il mittente codifica il messaggio con la sua chiave pubblica del destinatario Kpub(dest). Il messaggio può essere decodificato solo utilizzando la chiave privata Kpriv(dest) del destinatario, che solo lui conosce. B A decifratura con la chiave privata Kpriv(B) Cifratura con la chiave pubblicaKpub(B) Comunicazione cifrata Canale di comunicazione DEI - Univ. Padova (Italia) Cifratura del messaggio Per garantire contemporaneamente la autenticità, la integrità e la segretezza, è necessario procedere ad una doppia codifica: A B Cifratura con la chiave privataKpriv(A) Cifratura con la chiave pubblicaKpub(A) Cifratura con la chiave pubblicaKpub(B) Cifratura con la chiave privataKpriv(B) Comunicazione cifrata DEI - Univ. Padova (Italia) Canale di comunicazione Algoritmi a chiave segreta e a chiave pubblica • Vantaggi degli algoritmi a chiave segreta Un vantaggio importante: questi algoritmi sono più veloci di ordini di grandezza rispetto agli algoritmi a chiave pubblica • Vantaggi degli algoritmi a chiave pubblica E’ eliminato il problema dello scambio della chiave segreta Le chiavi pubbliche sono diffuse e accessibili da tutti • Uso congiunto dei due tipi di algoritmo Spesso si usa un algoritmo a chiave pubblica per scambiare la chiave segreta “di sessione” con cui poi crittografare i dati da trasmettere DEI - Univ. Padova (Italia) Algoritmo a chiave pubblica: RSA RSA (Rivest-Shamir-Adleman) RSA sfrutta le proprietà dei numeri primi ed il fatto che è molto difficile fattorizzare (cioè trovare i divisori) numeri molto grandi: più è grande il numero, più è difficile e lungo trovarne i divisori Questo rende molto complesso ( di fatto impossibile in tempo per essere utile ) ricavare la chiave privata da quella pubblica . Il miglio algoritmo finora per decomporre un 1 / 3 2 / 3 numero binario di b cifre ha un comportamento asintotico: O(e DEI - Univ. Padova (Italia) 64 ( b) 9 log(b ) ) Robustezza di RSA Dato che l’algoritmo si basa sulla fattorizzazione di numeri, la sua sicurezza deriva dalla difficoltà di tale compito. Il miglior algoritmo finora per decomporre un numero binario di b cifre ha un comportamento asintotico: O(e 64 1 / 3 2/3 ( b ) log(b ) 9 ) Per un numero binario di 512 bit, si otterrebbe un numero di calcoli asintotici dell’ordine di 1022… 100000 anni con una frequenza di calcolo di 4GHz!! DEI - Univ. Padova (Italia)