POLITECNICO DI BARI I FACOLTA’ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA (N.O.) Indirizzo S.E.M.A. (Sistemi Elettronici per la Medicina e l’Ambiente) DISPENSE DEL CORSO DI INFORMATICA MEDICA Docente: Prof. Giuseppe Mastronardi ANNO ACCADEMICO
Informatica medica Cap. 7 PROTEZIONE DEL DATO SENSIBILE Schemi crittografici per smart card
I dati sensibili Dati personali idonei a rivelare l’origine razziale ed etnica, le convinzioni religiose, filosofiche o di altro genere, le opinioni politiche, l’adesione a partiti, sindacati, associazioni o organizzazioni a carattere religioso, filosofico, politico o sindacale, nonché i dati personali idonei a rilevare lo stato di salute e la vita sessuale.
La crittografia È innegabile che le smart card stanno entrando sempre più nell’uso comune. Oltre alle ben note SIM card presenti nei telefonini, al giorno d’oggi le smart card vengono utilizzate principalmente come contenitori sicuri di dati (carta d’identità elettronica), come strumenti per l’accesso a risorse (canali TV criptati) e come moduli per la cifratura e la firma digitale. In tutti questi casi la crittografia gioca un ruolo essenziale. Gli obiettivi della crittografia sono: Confidenzialità Integrità Autenticità Non ripudiabilità Gli strumenti adoperati dalla crittografia sono i crittosistemi, le primitive crittografiche e i protocolli crittografici.
I crittosistemi Per definire un crittosistema specifichiamone le componenti. Sia PT lo spazio dei cosidettì testi in chiaro (plaintext), CT lo spazio dei testi cifrati (ciphertext) e K lo spazio delle chiavi. Tali spazi coincidono con l’insieme {0,1} * di tutte le possibili sequenze di 0 e 1 di lunghezza finita. Un algoritmo di cifratura calcola una funzione E(PT,K) = CT, ovvero associa ad un testo in chiaro pt che appartiene a PT e ad una chiave k che appartiene a K il corrispondente testo cifrato ct=E(pt,k) che appartiene a CT. In maniera duale si può ottenere un algoritmo di decifratura [D(CT,K)=PT]. I requisiti fondamentali per un crittosistema sono: il processo di decifratura è l’inverso di quello di cifratura se utilizziamo lo stesso testo in chiaro e la stessa chiave. Sia estremamente difficile scoprire pt dalla sola conoscenza di ct=E(pt,k) Sia estremamente difficile scoprire k dalla sola conoscenza di ct=E(pt,k)
I crittosistemi Due ulteriori requisiti che ha senso considerare solamente nell’ambito delle smart card sono invece : Freedom from noise: in tal caso il tempo di esecuzione degli algoritmi non dovrebbe dipendere da ct, pt, k Consumo di energia uniforme Entrambi i requisiti sono utili a prevenire eventuali attachi mirati all’implementazione degli algoritmi, specie per i cosidetti timing attacs e per la differential power analysis. Una prima suddivisione tra crittosistemi può essere eseguita tra: Sistemi simmetrici: la chiave utilizzata per cifrare è la stessa per decifrare. Essi si suddividono ulteriormente in sistemi a blocchi o a flusso. Sistemi asimmetrici o a chiave pubblica
I crittosistemi simmetrici Nell’ambito delle smart card sono utilizzati i crittosistemi a blocchi, quali ad esempio il DES e l’AES. Tali sistemi sono stati concepiti sfruttando due principi dovuti a C. Shannon: Confusione: modifiche di pt e/o di k implicano variazioni “imprevedibili” di ct, che non danno informazioni all’avversario sul testo in chiaro e sulla chiave utilizzati. Diffusione: la modifica di un solo bit di pt o della chiave causa la modifica di almeno la metà dei bit di ct. A tali principi si aggiungono strategie innovative quali la wide trail strategy, che fornisce una resistenza ottimale nei confronti della crittoanalisi lineare e differenziale. Esiste inoltre una versione modificata del DES, il 3DES (triple DES), che consiste nel cifrare i dati con una chiave (tramite DES), decifrare con una seconda chiave, ed infine cifrare con la prima chiave. In questo modo si raddoppiano le lunghezze delle chiavi, ottimizzando i criteri di sicurezza.
I crittosistemi asimmetrici I più noti sono essenzialmente due: RSA: La sua sicurezza si basa sulla (presunta) intrattabilità del problema della fattorizzazione, consistente nel trovare i fattori primi di un numero intero. ElGamal: la sua sicurezza si basa sulla (presunta) intrattabilità del problema del logaritmo discreto, ovvero del calcolo dei logaritmi di Galois. Tale crittosistema viene utilizzato soprattutto in concomitanza con le curve ellittiche e iperellittiche. Il prinicipale vantaggio di tale sistema è l’immunità agli attacchi tradizionali utilizzati negli altri casi. Essi infatti garantiscono lo stesso grado di sicurezza con chiavi più corte, riducendo i tempi di calcolo. Il problema è che la teoria delle curve ellittiche non è ancora sviluppata ad un punto tale da poter prevenire tutti gli attacchi.
Confronto tra crittosistemi Una differenza fondamentale rispetto a quelli simmetrici, è che è sufficiente conoscere la chiave per cifrare i dati da inviare all’altro soggetto; per come sono generate le chiavi solo il ricevente legittimo sarà in grado di decifrare il messaggio ricevuto. In quelli simmetrici invece entrambe le unità comunicanti devono essere a conoscenza della chiave per comunicare su un canale sicuro. C’è da dire che quelli asimmetrici sono anche poco affidabili a causa del fatto che la loro sicurezza si basa su ipotesi non dimostrate riguardo la fattorizzazione dei numeri interi e il calcolo dei logaritmi discreti. Nei sistemi asimmetrici inoltre bisognerebbe determinare l’autenticità della chiave pubblica che ci viene fornita da chi desidera comunicare con noi. Una soluzione a ciò è l’uso delle PKI (Public Key Infrastructures), piuttosto onerose. A causa della loro lentezza i crittosistemi a chiave pubblica vengono utilizzati proprio per accordarsi su una chiave segreta (che, essendo corta, non richiede molti calcoli per cifratura e decifratura), da utilizzare in seguito con un crittosistema simmetrico a scelta.
Primitive e protocolli crittografici Sempre all’interno dell’ambito delle smart card, tramite l’utilizzo di primitive crittografiche è possibile realizzare protocolli crittografici. La distinzione tra i due è molto sottile: si parla di primitive crittografiche quando si utilizza una certa costruzione (tipicamente matematica) come un mattoncino elementare per realizzare una funzionalità più complessa. Si parla di protocollo invece quando esiste un algoritmo da eseguire tra due o più entità, in modo da raggiungere un fine prestabilito. È allora evidente che si può considerare un certo protocollo come una primitiva che consente di implementare un protocollo più sofisticato. Un esempio di ciò che si può ottenere è un protocollo che dia la possibilità di giocare a poker al telefono. Mentre alcuni schemi come funzioni di hashing e generatori di numeri pseudocasuali sono primitive, firme digitali, protocolli di autenti- ficazione, scambio di chiavi, condivisione di segreti, ecc. possono essere considerati sia primitive che protocolli.
Generatori di numeri pseudocasuali Il PRNG è un algoritmo che calcola una funzione G: {0,1} n = {0,1} p(n) con p(n)>n per ogni n naturale. In pratica G è una funzione che allunga una sequenza casuale di n zeri e uni, facendola diventare una sequenza di p(n zeri e uni). Ovviamente ci sono dei requisiti tecnici da soddisfare che rendono la sequenza così ottenuta molto difficile da distinguere da una sequenza veramente casuale. In alternativa ai PRNG software si possono implementare PNRG fisici basati su circuiti elettrici instabili. In realtà oltre alle difficolta tecnologiche, essi sarebbero influenzati da variazioni di temperatura, di campi magnetici, ecc. La soluzione ideale sembra quella di realizzare una combinazione tra i due, elaborando cioè tramite un opportuno algoritmo un valore pseudocasuale fornito da un PNRG fisico. Un altro problema da affrontare è quello dell’inizializzazione delle smart card. Infatti la conoscenza del prossimo numero pseudocasuale può essere un vantaggio per l’avversario.
Generatori di numeri pseudocasuali Tale conoscenza ammonta alla conoscenza del seme casuale di partenza e della procedura utilizzata per generare il prossimo numero pseudocasuale. Il seme non può essere sempre lo stesso, altrimenti il generatore produrrebbe la medesima sequenza di numeri pseudocasuali. Pertanto, ad ogni sessione occorre memorizzare nella EEPROM della carta il seme da usare nella prossima sessione. In tal caso ci sono due possibili attacchi: Eliminare l’alimentazione alla carta prima che essa memorizzi il seme. Per prevenirlo occorre salvare spesso la sessione Eseguire un elevato numero di sessioni in modo che la EEPROM si guasti e non memorizzi più il seme. In tal caso basterà bloccare la carta (bruciando le connessioni con una sovralimentazione) quando questa non riesca più a memorizzare il seme.
Hashing crittografico È una funzione one-way H: {0,1} * = {0,1} n con n fissato, che gode delle seguenti proprietà: per ogni x appartenente a {0,1} * è estremamente difficile trovare un x ’ appartenenete a {0,1} n tale che H(x)=H(x’). Quando tale proprietà si verifica si dice che H è collision free. Inoltre, il fatto di essere one- way significa che è facile calcolare H(x) a partire da x, ma molto difficile il viceversa. Possiamo dire che è la funzione inversa al generatore di numeri pseudocasuali, poichè data una sequenza di lunghezza casuale essa ne produce una di lunghezza fissata. Tale funzione è utilizzata nelle firme digitali e per generare MAC (Message Autentication Code), ovvero dei codici che consentono di verificare l’integrità dei dati ricevuti.
Firme digitali Uno schema di firme digitali è una coppia di algoritmi (sign, verify) tali che: Sign usa un informazione segreta key per produrre una firma digitale σ= sign(M,key) del documento M Verify usa un’informazione pubblica p per controllare se σ è una firma valida per M; in particolare verify(σ,M,p)=TRUE se e solo se sign(M,key)=σ A differenza delle firme autografate, la firma σ dipende dal documento M da firmare. Una importante proprietà delle firme digitali è la non ripudiabilità, in quanto l’unico autorizzato a firmare è colui che conosce la chiave. Per ragioni di sicurezza non si firma tutto il documento, ma solo l’hash di M. Il ruolo delle smart card nel firmare un documento M è almeno quello di memorizzare l’informazione segreta Key e di calcolare sign(H(M),key) (ovvero di decifrare H(M)). Solitamente il calcolo di H(M) viene fatto dal lettore. L’ideale sarebbe che la carta facesse tutto, in tal modo basterebbe cambiare la carta per cambiare lo schema di firma.
Protocolli per l’autenticazione Ogni volta che una carta venga inserita in un lettore è importante che questi si riconoscano a vicenda come autentici. Subentrano quindi i protocolli per l’autenticazione, che come i crittosistemi che utilizzano, possono essere simmetrici o antisimettrici. L’autentificazione inoltre si dice unilaterale se viene riconosciuto solo uno dei partecipanti, mutua se vengono riconosciuti entrambi. Inoltre l’autenticazione può essere statica o dinamica, a seconda che i dati utilizzati per l’autenticazione siano fissi o variabili da una sessione all’altra. I protocolli d’autenticazione solitamente utilizzati con le smart card sono del tipo sfida-risposta, ad esempio: Il terminale genera un numero casuale rand e lo invia alla carta La carta calcola c= E(rand,key), dove key è una chiave comune segreta, e lo invia al terminale Il terminale decifra il valore di c ricevuto e lo confronta con rand. Si nota che tale protocollo è simmetrico unilaterale e dinamico.