Introduzione Crittografia: definizione, obiettivi, funzioni e strumenti Crittografia e sicurezza, contesti applicativi 1 Che cosa è la crittografia èLetteralmente: ðuna tecnica che consente di nascondere il significato di un messaggio Che cosa è la crittografia èNella accezione corrente: ðuna tecnica di protezione dell’informazione basata su trasformazioni logiche che, direttamente o indirettamente, fanno uso di informazioni segrete 2 Cosa ci possiamo aspettare dalla crittografia èLa crittografia è una forma di protezione logica: ðConsente di restringere e confinare le aree in cui è necessario ricorrere a metodi di protezione fisica dei dati; ðNon consente di eliminare la necessità di tecniche di protezione fisica dei dati; ðConsente di verificare l’autenticità e l’integrità dei dati; ðNon consente di impedire attacchi alla disponibilità dei dati. Crittografia e obiettivi della sicurezza dell’informazione èLa crittografia è un strumento utile a conseguire alcuni degli obiettivi della sicurezza informatica: ðConfidenzialità ðIntegrità ðAutenticità ðNon ripudiabilità ðDisponibilità 3 Funzioni della crittografia èLa crittografia consente di assolvere alle funzioni di: ðCifratura ðAutenticazione dei messaggi e la verifica dell’integrità dei dati ðIdentificazione e autenticazione delle entità ðFirma numerica Strumenti della crittografia èGli strumenti che la crittografia mette a disposizione sono: ðCifrari a sequenza (stream cipher) ðCifrari a blocchi (block cipher) ðCifrari a chiave pubblica ðFunzioni di impronta a una via (hash) ðCodici per l’autenticazione dei messaggi ðSchemi di firma 4 Tecniche ed infrastrutture èLa realizzazione di sistemi basati sulla crittografia presuppone l’esistenza di: ðProtocolli di generazione delle chiavi ðProtocolli di installazione e gestione delle chiavi ðNormative crittografiche Attacchi alla sicurezza dell’informazione Osservazioni ed esempi 5 Attacchi attivi e passivi èPassivi: l’attaccante può solamente osservare il comportamento del sistema èAttivi: l’attaccante può intervenire sul comportamento del sistema. Ad esempio: ðinducendo l’esecuzione di determinate azioni; ðprendendo possesso di una parte di sistema e tentandone la forzatura; ðinducendo l’uso di un sistema o un sottosistema di cui detiene il controllo. Attacchi: i bersagli ðgli algoritmi: si usano tecniche crittanalitiche per “invertire” gli algoritmi; ði protocolli e le modalità operative: si attacca il modo in cui gli algoritmi crittografici vengono utilizzati; ði sistemi: viene attaccato l’ambiente e le condizioni in cui operano algoritmi e protocolli (attacchi fisici a dispositivi, manomissione del SW, ecc.). Osservazione: Osservazione:la larobustezza robustezzadegli deglialgoritmi algoritmicrittografici crittograficièèsolo soloun unaspetto aspetto della sicurezza dei sistemi. della sicurezza dei sistemi. 6 Attacchi: riconoscimento delle occorrenze Scenario: Scenario:ililmessaggio messaggiopresenta presentafrequenti frequentiripetizioni ripetizionidegli deglistessi stessiblocchi blocchiee ililcifrario opera per semplice sostituzione cifrario opera per semplice sostituzione L’attaccante può ricavare informazioni (ad es. mediante analisi statistica, analisi basate sulla conoscenza della struttura del messaggio, riconoscimento di immagini, ecc.) dal fatto che a blocchi uguali nel cifrato derivano blocchi uguali nel messaggio in chiaro Contromisure: aleatorizzazione e concatenazione del messaggio cifrato Attacchi: riconoscimento delle occorrenze, un esempio 7 Attacchi: sostituzione parziale di messaggio Scenario: Scenario:l’attaccante l’attaccanteconosce conoscela lastruttura strutturadel delmessaggio messaggioin inchiaro chiaroeeilil cifrario opera per semplice sostituzione cifrario opera per semplice sostituzione èL’attaccante modifica alcune parti del messaggio cifrato senza conoscere necessariamente il contenuto in chiaro delle parti sostituite. Contromisure: Contromisure:concatenazione concatenazioneeeautenticazione autenticazionedel delmessaggio messaggio Attacchi: attacco con messaggio registrato Scenario: Scenario:l’attaccante l’attaccantedispone disponedella dellaregistrazione registrazionedi diuno unooopiù piùmessaggi messaggi cifrati di cui, in qualche misura, conosce il significato cifrati di cui, in qualche misura, conosce il significato èL’attaccante riutilizza, totalmente o parzialmente, i messaggi registrati in un contesto a lui favorevole. Contromisure: Contromisure:marcatura marcaturatemporale, temporale,concatenazione concatenazioneeeautenticazione autenticazionedel del messaggio messaggio 8 Attacchi: impersonificazione Scenario: Scenario:una unaentità entitànon nonèèiningrado gradodidiaccertare accertarel’identità l’identitàdidiun’altra un’altraentità entità del sistema del sistema èL’attaccante assume l’identità di un’altra entità del sistema Contromisure: Contromisure:protocolli protocollidi diidentificazione, identificazione,terze terzeparti partifidate fidate Attacchi: interposizione Scenario: Scenario:l’attaccante l’attaccantepuò puòintercettare intercettaremodificare modificareeeritrasmettere ritrasmetterei i messaggi scambiati tra due entità A e B messaggi scambiati tra due entità A e B èL’attaccante si interpone tra A e B, e si fa identificare da A come B e da B come A. Contromisure: Contromisure:protocolli protocollidi diidentificazione, identificazione,terze terzeparti partifidate fidate 9 Attacchi: ricerca esaustiva del messaggio Scenario: Scenario:un’entità un’entitàcifra cifracon conuna unachiave chiavepubblica pubblicaun unmessaggio messaggioche chefa fa parte di un insieme abbastanza limitato di messaggi possibili parte di un insieme abbastanza limitato di messaggi possibili èL’attaccante prova a cifrare i possibili messaggi con la stessa chiave pubblica fino a trovare il messaggio che da luogo allo stesso cifrato Contromisure: Contromisure:aggiunta aggiuntadi diuna unaquantità quantitàaleatoria aleatoriadi diriempimento riempimento (padding) al messaggio da cifrare (padding) al messaggio da cifrare Attacchi: attacco ai metodi di generazione delle chiavi Scenario: Scenario:la laprocedura proceduradi digenerazione generazionedelle dellechiavi chiavinon nonèècorretta corretta èL’attaccante sfrutta informazioni relative alle procedure di generazione delle chiavi per semplificare la ricerca delle chiavi stesse Contromisure: Contromisure:uso usodi disistemi sistemidi digenerazione generazionerealmente realmentealeatori aleatori 10 Attacchi: attacco alle parole di accesso Scenario: Scenario:gli gliutenti utentiusano usanoparole paroledi diaccesso accessofacilmente facilmenteintuibili intuibili èL’attaccante usa la conoscenza di dati dell’utente e/o un dizionario di parole probabili per effettuare la ricerca delle parole di accesso Contromisure: Contromisure:metodi metodiper perla lagenerazione generazionedi diparole paroledi diaccesso accesso“difficili” “difficili” Attacchi: analisi del traffico Scenario: Scenario:l’attaccante l’attaccantepuò puòosservare osservareililtraffico trafficogenerato generatoda dauna unaoopiù più entità entità èL’attaccante registra gli andamenti del traffico e cerca eventuali correlazioni con eventi noti (precedenti o successivi). Contromisure: Contromisure:protezione protezionedel deltraffico trafficooogenerazione generazionedi ditraffico trafficofittizio fittizio 11 Algoritmi crittografici Classificazione, concetti generali ed esempi Che cosa è un algoritmo crittografico Funzioni k xx Fk(x) yy Consente di effettuare una trasformazione che fa uso di una informazione segreta (chiave) Proprietà xx xx yy ii yy La trasformazione x -> y “non può” essere eseguita senza la conoscenza della chiave k La chiave k “non può” essere ottenuta dalla conoscenza di un qualsiasi numero di elementi x e y e di tutte le informazioni note (pubbliche) sull’algoritmo e sulle (eventuali) proprietà della chiave 12 Che cosa è un algoritmo cifrante (cifrario) Un Unalgoritmo algoritmodi dicifratura cifratura(cifrario) (cifrario)èèun unalgoritmo algoritmocrittografico crittograficodotato dotatodidi una funzione inversa: una funzione inversa: kE xx FkE(x) kD yy yy FkD(x) xx Consente Consentedidieffettuare effettuareuna unatrasformazione trasformazioneeelalasua sua inversa mediante due chiavi inversa mediante due chiaviKKEEeeKKDDeventualmente eventualmente non noncoincidenti coincidenti Cosa intendiamo per algoritmo “robusto” èScenario: una entità A opera mediante un algoritmo crittografico F e una chiave segreta KA . Un avversario E conosce l’algoritmo F ma non la chiave KA . èL’algoritmo può definirsi robusto se: ðE non è in grado di effettuare le operazioni che A effettua grazie alla conoscenza della chiave segreta; ðE non può ricavare la chiave KA dall’osservazione delle operazioni eseguite da A (che eventualmente possono essere indotte da E). 13 Un algoritmo crittografico ben progettato dovrebbe presentare una complessità di cifratura polinomiale e una complessità di forzatura esponenziale Osservazione: l’aumento delle capacità di calcolo gioca a favore (e in modo definitivo) della robustezza complessità di calcolo Cosa intendiamo per algoritmo “robusto” (2) forzatura cifratura lunghezza chiave Comprendere le crescite esponenziali Ma Maggnniitudo tudo Se Seco connddi i in in uunn anno anno -- 3*10^7 3*10^7 se seccon onddi i ddal allala cre creaz azio ionnee ddelel ssist isteema ma so sol lare are (an (annni)i) -- 2*10^17 2*10^17 Ci Ciclcli i ddi i clcloc ockk/ /an anno no ppeerr uunn ccom omppuute terr ddaa 110000MHz MHz -- 33,2*10^15 ,2*10^15 NNuumer meri i bbin inaariri ddaa 12 1288 bbitit -- 33,4*10^38 ,4*10^38 NNuumer meri i ppririmmi i ddaa 7755 cif cifrere ddec eci immaalili -- 55,2*10^72 ,2*10^72 Ele Elettttron roni i nneellll’’ununive ivers rsoo -- 88,37*10^77 ,37*10^77 14 Comprendere le crescite esponenziali (2) Se un foglio di carta (circa 0,1 mm di spessore) potesse essere piegato su se stesso per 10 volte, il suo spessore arriverebbe a circa 1m, dopo 30 volte, a circa 100km e, dopo 42 volte, supererebbe la distanza tra la terra e la luna ˜ 439.804 Km (42 ripiegature) ˜ 0,1 mm 1 10 100 1000 10000 (bin) Da cosa dipende la robustezza di un algoritmo crittografico ðDifficoltà di trovare la chiave mediante ricerca esaustiva ðDifficoltà di trovare la chiave mediante inversione dell’algoritmo ðDifficoltà di invertire l’algoritmo senza conoscere la chiave 15 Valutazione della robustezza crittografica di un algoritmo (1) èLa robustezza di un algoritmo è quasi sempre indimostrabile. èL’adozione di un algoritmo viene effettuata dopo un attento esame suffragato dai seguenti fatti e valutazioni: Valutazione della robustezza crittografica di un algoritmo (2) ðLa dimensione della chiave ne impedisce la ricerca esaustiva; ðL’algoritmo resiste agli attacchi crittanalitici conosciuti; ðIl miglior metodo di inversione (se esiste) presenta complessità esponenziale; William Wolfowicz 16 Valutazione della robustezza crittografica di un algoritmo (4) ðSi stima che non verranno trovati metodi di inversione sostanzialmente più efficienti in quanto: àil problema è riconducibile a un problema equivalente del quale è possibile “provare” la complessità; àil problema è riconducibile a un problema ben studiato (es. la fattorizzazione) per il quale si ritiene che non si verificheranno progressi sostanziali; àil problema non si presenta adatto ad essere affrontato con nessuna delle metodologie conosciute (generalmente questo accade perché l’algoritmo è stato progettato a questo scopo). Classificazione funzionale degli algoritmi cifranti a sequenza simmetrici (a chiave segreta) a blocchi asimmetrici (a chiave pubblica) 17 L’operatore binario XOR 0 x y x x 1 x x x Cifrari a sequenza ( stream ciphers) K K Generatore di sequenza L ei +1 , ei , ei −1 ,L L mi +1 , mi , mi −1 ,L Generatore di sequenza L ei +1 , ei , ei −1 ,L L c i+1 , ci , ci −1 ,L L mi +1 , mi , mi −1 ,L 18 Cifrari a blocchi (block ciphers) KE LMi L Cifratura EK E (Mi ) = Ci KD LCi L Decifratura DK D (C i ) = M i L Mi L Crittografia a chiave simmetrica (segreta) In un algoritmo crittografico simmetrico la chiave di cifratura e quella di decifratura coincidono o sono immediatamente ricavabili una dall’altra. Le due chiavi devono essere mantenute segrete. 19 Crittografia a chiave asimmetrica (pubblica) In un algoritmo crittografico asimmetrico la chiave di cifratura e quella di decifratura non coincidono e non possono essere ricavate una dall’altra senza la conoscenza di una informazione segreta. Una delle due chiavi può essere resa pubblica. Modalità di impiego degli algoritmi asimmetrici A M cifratura B EB(M) EB DB(EB(M))=M decifratura DB modalità cifratura A M cifratura DA B DA(M) EA(DA(M))=M decifratura EA modalità autenticazione (firma) EX chiave pubblica di X DX chiave segreta di X M documento in chiaro 20 Alcune pietre miliari nella crittografia moderna ðprimi anni 70: Feistel (IBM) introduce una tecnica che permette di costruire una funzione invertibile a partire da una qualsiasi funzione non invertibile. Con questa tecnica vengono costruiti numerosi algoritmi a blocchi tra cui il ben noto Data Encryption Standard (DES) del 1977. ð1976: Diffie ed Hellman in un articolo pubblicato su New direction in Cryptography introducono il concetto di crittografia a chiave pubblica ð1978: Rivest, Shamir e Adleman trovano il primo metodo di cifratura e firma a chiave pubblica (RSA) Cifrari a blocchi a schema di Feistel diretta/inversa MH k 1 k2 f1 k2 f2 f2 ML Cifratura MH k1 f1 ML diretta/inversa Decifratura 21 L’algoritmo RSA èOrigini USA (1977) èBrevettato fino al 2000 èDiffusissimo èBasato sulla complessità della fattorizzazione • Generazione delle chiavi: ricerca di grandi numeri primi • Cifratura e decifratura: esponenziazioni modulari L’algoritmo RSA: generazione delle chiavi èOgni èOgni utente: utente: ð ðgenera generadue duegrandi grandinumeri numeriprimi primippeeqq casuali casualieesegreti segreti ð ðcalcola calcolaililmodulo moduloRSA: RSA:NN==pp×× qq ð ðcalcola calcolaΦΦ(N) (N)==(p(p --1)(q 1)(q--1)1) (funzione (funzionedidiEulero) Eulero) ð genera l’esponente pubblico 1<e < Φ (N) primo ð genera l’esponente pubblico 1<e < Φ (N) primorispetto rispettoaaΦΦ(N) (N) ð genera l’esponente privato d tale che e × d =1 mod Φ (N) ð genera l’esponente privato d tale che e × d =1 mod Φ (N) d (N, e) Chiave pubblica Chiave privata Mantenere Manteneresegreti: segreti:p, p,q, q,ΦΦ(N) (N)eedd 22 L’algoritmo RSA: un cenno ai principi è Gli esponenti e e d sono scelti in modo tale che: è e × d = 1 mod Φ(N) , è ossia esiste un numero intero k tale che: è e × d = 1 + k × Φ(N) . è D’altra parte il teorema di Eulero si ha che per ogni k e per ogni X minore di N: èX 1 + k × Φ(N) mod N = X . è Quindi in definitiva: è (X e ) d mod N = X ed mod N = X 1 + k × Φ(N) mod N = X . è Analogamente: è (X d ) e mod N = X . L’algoritmo RSA: osservazioni sulla generazione delle chiavi è èIlIl ruolo ruolo di di esponente esponente pubblico pubblico ee privato privato può può essere essere assegnato assegnato arbitrariamente: arbitrariamente: la la sola sola condizione condizione che che gli gli esponenti esponenti devono devono rispettare rispettare èè che che sia: sia: è è ee ××dd =1 =1 mod mod ΦΦ(N). (N). è Quindi si può indifferentemente: è Quindi si può indifferentemente: -1 àgenerare àgenerareee eericavare ricavaredd==ee -1mod modΦ(N) Φ(N) -1-1 mod Φ(N) àgenerare d e ricavare e = d àgenerare d e ricavare e = d mod Φ(N) I Idue dueesponenti esponentinon nondevono devononecessariamente necessariamenteavere averelalastessa stessalunghezza lunghezzadel delmodulo moduloN: N: l’esponente l’esponenteche cheviene vienegenerato generatoper perprimo primopuò puòavere avereuna unalunghezza lunghezzaprefissata prefissata(l’altro (l’altrorisulterà risulterà generalmente generalmentedella dellastessa stessalunghezza lunghezzadidiΦΦ(N)). (N)). Nella Nellapratica, pratica,esponenti esponentipubblici pubblicicorti cortivengono vengonoutilizzati utilizzatifrequentemente. frequentemente.L’uso L’usodidiesponenti esponenti privati corti è invece sconsigliabile a causa privati corti è invece sconsigliabile a causadell’esistenza dell’esistenzadidialgoritmi algoritmiche chene nepossono possono consentire consentirelalaforzatura. forzatura. 23 L’algoritmo RSA:trasformazioni dirette e inverse è è La Latrasformazione trasformazioneRSA RSAconsiste consistein inuna unaoperazione operazionedi diesponenziazione esponenziazione modulare modularenella nellaquale qualel’esponente l’esponentepubblico pubblicoeequello quelloprivato privatoconsentono consentonodi di ottenere reciprocamente dall’uno la funzione inversa ottenuta ottenere reciprocamente dall’uno la funzione inversa ottenutamediante mediante l’altro l’altro X X {e, d} mod N ed Y {e, d} mod N Y X de ed de Infatti InfattiXX ==XX per percui cuil’algoritmo l’algoritmopuò puòessere essereusato usatoin: in: e d e d ed d e d e de •modalità •modalitàcifratura: cifratura: d e d ed XX emod modNN→ → YY;; YY mod modNN== (X (X )) == XX ==XX •modalità •modalitàfirma: firma: e d e de XX dmod modNN→ →YY;; YY mod modNN== (X (X )) == XX ==XX Robustezza della cifratura RSA èSe si fattorizza il modulo di un utente, è possibile calcolare la chiave privata di questo a partire dalla chiave pubblica corrispondente. èLa complessità dell’operazione di fattorizzazione dipende dalla dimensione del modulo. èSi stima che attualmente la fattorizzazione di un modulo di 1024 bit richiederebbe circa 300 miliardi di anni (con potenza di calcolo disponibile pari a 10^6 istruzioni/sec) 24 Modalità operative degli algoritmi a blocchi: Electronic Codebook (ECB) Xi Ci E E -1 Xi Proprietà: Proprietà:La Lacifratura cifraturaavviene avvieneblocco bloccoaablocco blocco(senza (senzaconcatenazione). concatenazione).AAblocchi blocchiuguali ugualidel del messaggio messaggioininchiaro chiarocorrispondono corrispondonoblocchi blocchiuguali ugualinel nelcifrato. cifrato. Modalità operative degli algoritmi a blocchi: Cipherblock Chaining (CBC) Xi ⊕ Xi ⊕ Ci - 1 Ci E ? Ci - 1 Xi ⊕ Ci - 1 E -1 ⊕ Xi ? Ci - 1 Proprietà: Proprietà:I Iblocchi blocchidel delcifrato cifratosono sonoconcatenati. concatenati.IlIlcifrato cifratodipende dipendedallo dallostato statoiniziale inizialeCC00 (lo (lo stesso stessomessaggio messaggiodà dàluogo luogoaamessaggi messaggidiversi diversiaaseconda secondadello dellostato statoiniziale). iniziale).La Ladimensione dimensione del delblocco bloccoèèlalastessa stessadel delcifrario cifrarioEE utilizzato. utilizzato. 25 ? r bit shift r bit shift Modalità operative degli algoritmi a blocchi: Cipher Feedback (CFB) E n ? E n n n r r ⊕ r r ⊕ r Proprietà: Proprietà:Concatenazione Concatenazioneeedipendenza dipendenzadallo dallostato statoiniziale inizialecome comenel nelmodo modoCBC. CBC.La La dimensione dimensionedel delblocco bloccoèèrr==nn(n (ndimensione dimensionedel delblocco bloccodel delcifrario cifrarioE). E). 26