Dopo aver analizzato a quali minacce sia va incontro telelavorando con ognuno degli scenari presentati nel primo paragrafo vediamo come possiamo difenderci. La principale soluzione proposta è l’utilizzo di una delle più antiche e affascinanti teorie della matematica: la crittografia. Verranno presentati i sistemi classici, a chiave simmetrica, e quelli di recente invenzione, a chiave asimmetrica, detti anche a chiave pubblica, oltre ai concetti di message digest e firma digitale. Tali nozioni ci saranno utili per comprendere il funzionamento degli strumenti da noi proposti. L’utilizzo di antivirus e l’impostazione corretta del browser saranno gli altri suggerimenti dati nella presente sezione. Gli antivirus La miglior difesa contro i virus consiste nell’installazione sui calcolatori di ogni utente di un prodotto antivirus. Si tratta di un prodotto software che effettua un’analisi preventiva dei programmi che devono essere eseguiti su un calcolatore al fine di individuare all’interno degli stessi la presenza di virus ovviamente noti. Esistono oggi moltissimi prodotti antivirus in generale sufficientemente efficaci nel rilevare la presenza dei virus più diffusi. A tale proposito la NCSA (http://www.ncsa.com) ha individuato una serie di criteri che possono aiutare l’utente ad individuare il prodotto a lui più adatto. Va però tenuto presente che un prodotto antivirus è in grado di debellare solo i virus che erano noti alla data di rilascio. Esso quindi va quindi costantemente aggiornato al fine di mantenere l’efficacia: una ricerca effettuata a www.drsolomon.com stima che ogni mese vengono realizzati circa 200 nuovi virus. Un prodotto antivirus non aggiornato non è in grado di svolgere alcuna funzione utile. La Crittografia L’unico modo per evitare problematiche relative all’integrità e all’autenticità delle informazioni, in cui ci si può imbattere durante una connessione Internet, è quello di utilizzare servizi o applicazioni che operino trasformazioni crittografiche sui dati da inviare su un canale TCP/IP. Scopo della crittografia è quello di determinare algoritmi crittografici, detti anche protocolli, che permettono di trasformare un messaggio, in modo reversibile, in un formato che sia comprensibile solo a determinate persone. Un algoritmo crittografico è composto da due componenti principali:
Tramite l’utilizzo di un valore, detto chiave, la componente di codifica trasforma un testo in chiaro, detto plaintext, in un testo cifrato (ciphertext). Con la stessa chiave, o con una differente, la componente di decodifica svolge l’operazione inversa. L’utilizzo di una stessa chiave per cifrare e decifrare le informazioni o l’utilizzo di chiavi differenti per svolgere le due operazioni dipende dal sistema crittografico utilizzato. Sono infatti due i sistemi crittografici presenti in letteratura:
Con la crittografia a chiave privata due utenti A e B, per poter scambiare informazioni riservate, devono condividere un segreto: la chiave privata K. Questa chiave deve essere concordata tra i due utenti in modo sicuro, cioè deve essere scambiata senza che nessuno possa in alcun modo intercettarla. A scambio avvenuto, ogni volta che A vuole spedire un messaggio a B, utilizza la chiave K per cifrarlo. B, ricevuto il messaggio, lo decifra utilizzando la stessa chiave. I protocolli crittografici a chiave privata sono particolarmente efficienti quando implementati su un calcolatore, cioè le fasi di codifica/decodifica possono essere svolte in tempi brevi. La gestione delle chiavi, cioè lo scambio e la conservazione delle stesse, rappresenta il punto debole di questo sistema. L’intero sistema può infatti essere compromesso semplicemente manomettendo, anche accidentalmente, un singolo bit della chiave. Gli algoritmi a chiave simmetrica attualmente più in uso sono: DES (Data Encryption Standard) Nato nel 1970 è diventato grazie al suo ampio utilizzo uno standard del governo americano. L’algoritmo è progettato per cifrare e decifrare blocchi di dati, tramite una chiave di lunghezza 56 bit. Per la sua esigua lunghezza , la chiave è individuabile utilizzando adeguate risorse di calcolo. L’algoritmo implementato su un 486 a 66 Mhz è in grado di cifrare 43.000 blocchi, mentre su un Pentium a 166 Mhz i blocchi cifrati sono 46.250. Una variante del DES, il Triple-DES si basa sull’utilizzo di tre volte consecutive dell’algoritmo DES con tre chiavi differenti. RC4 Sviluppato da Ron Rivest presso RSA Data Security, il codice di questo algoritmo è rimasto segreto per 7 anni (dal 1987 al 1994) fino a quando qualcuno, anonimamente lo ha distribuito sulle Usenet News. RC4 viene utilizzato dal protocollo SSL. Nella crittografia a chiave pubblica ogni utente genera una coppia di chiavi: una chiave pubblica utilizzata in fase di codifica per cifrare un messaggio e una corrispondente chiave privata utilizzata in fase di decodifica. La chiave pubblica deve essere resa nota, da parte dell’utente che la ha generata, a tutti gli utenti che desiderano comunicare in modo confidenziale con lo stesso. E’ infatti tramite questa chiave che gli utenti cifrano i messaggi da indirizzare al proprietario della chiave pubblica. La chiave privata è l’unica chiave che è in grado di decifrare il messaggio cifrato con la corrispondente chiave pubblica e deve essere custodita segretamente, da parte del proprietario, in modo tale che solo lui sia in grado di decifrare i messaggi a lui indirizzati. Il principale vantaggio di questo sistema rispetto a quello simmetrico riguarda la gestione delle chiavi. Ogni utente avrà sul proprio computer (o in qualche altro supporto di memorizzazione) un archivio (solitamente chiamato keyring) contente le chiavi pubbliche di tutti gli utenti con cui desidera scambiare corrispondenza elettronica sicura. Non è importante proteggere questo archivio da accessi indesiderati in quanto contiene informazioni pubbliche. Invece l’utente dovrà prestare massima attenzione alla protezione del file contenente la sua chiave privata. Il furto di tale chiave comporta la compromissione del sistema. Uno degli aspetti negativi di tale sistema riguarda i tempi, estremamente elevati, impiegati dal protocollo per effettuare le operazioni di codifica/decodifica: con un Pentium a 90 Mhz vengono cifrati 7,4 Kbits/sec con chiavi lunghe 1024 bit e 1,7 Kbits/sec con chiavi di 2048 bit. Inoltre nella crittografia a chiave pubblica occorre verificare l’autenticità delle chiavi pubbliche che riceviamo. Nel paragrafo 4.2.4 verranno presentati due approcci differenti per risolvere il problema. I protocolli crittografici a chiave pubblica attualmente più utilizzati sono:
La firma digitale La crittografia a chiave pubblica può essere usata per apporre una firma digitale ad un documento. Per firma digitale si intende l'operazione di codifica di una stringa tra 128 e 512 bit, detta message digest, che identifica univocamente il messaggio. Il message digest viene ottenuto applicando una funzione, detta hash, ad un messaggio di qualunque dimensione. Nelle funzioni hash è sufficiente modificare anche un solo bit nel messaggio di ingresso per ottenere un digest diverso. Inoltre è praticamente impossibile risalire al messaggio dal suo digest. Consideriamo l'esempio illustrato in figura: Per verificare che il messaggio ricevuto sia proprio quello inviato dal mittente, e non da un impostore, occorre utilizzare la chiave pubblica del mittente e controllare la autenticità della firma. Un apposito programma di firma digitale, eseguito dal ricevente, che usa la chiave pubblica del mittente, svolge le seguenti operazioni:
La firma digitale è, quindi, un meccanismo che garantisce rispettivamente l’integrità e la non repudiabilità di un messaggio, quando è garantita l’autenticità della chiave pubblica del mittente. I principali algoritmi per la realizzazione di un message digest sono:
Fiducia della firma Come si può essere sicuri che un messaggio provenga realmente dal mittente e non da un soggetto che dissimuli la sua vera identità? Si può far apporre una firma digitale alla chiave pubblica da vari enti o persone delle quali entrambe le parti si fidano. Se le firme sono di persone di nostra fiducia, che sappiamo essere sicure della corrispondenza tra il proprietario e la chiave, esse ci garantiscono l'autenticità della chiave pubblica e quindi della firma digitale che abbiamo verificato. Continuando l'esempio, supponiamo che Ada e Giovanni si fidino entrambi di Paolo. Questi, dopo aver verificato che la chiave pubblica di Giovanni gli appartenga effettivamente, appone la propria firma, tramite la propria chiave privata, sulla chiave di Giovanni. Ada, quando riceverà la chiave pubblica di Giovanni, trovandovi anche la firma di Paolo, potrà essere certa che quella ricevuta sia la chiave pubblica di Giovanni. Un metodo alternativo per potersi fidare della validità dell’identità e della chiave pubblica della persona con cui interloquiamo è quello dell’utilizzo di una Certification Authority (CA) che si fa garante dell’identità dei proprietari delle chiavi e dell’autenticità di queste. La Certification Authority crea e distribuisce certificati digitali che associano il nome degli utenti alla loro chiave pubblica. Attraverso la creazione dei certificati le CA agiscono come agenti di fiducia. Se gli utenti si fidano della CA e della politica adottata dalla stessa per l’emissione e la gestione dei certificati, allora si fidano dei certificati emessi dalla CA. La CA emette i certificati per gli utenti firmando digitalmente con la propria chiave privata un insieme di dati che include le seguenti informazioni:
La firma della CA sul certificato garantisce che ogni piccola modifica apportata al certificato possa essere facilmente rilevata. Quindi se la firma è verificata corretta, allora il certificato è integro. Grazie al fatto che l’integrità del certificato può essere verificata semplicemente controllando la firma, i certificati sono sicuri e possono essere facilmente distribuiti attraversi un sistema di directory a pubblico accesso. Gli utenti che ricevono una chiave pubblica attraverso un certificato possono considerarla valida, cioè possono essere sicuri che la chiave appartenga effettivamente al nominativo specificato su certificato. Qualora l'utente smarrisca la propria chiave privata o qualora la stessa gli venga sottratta, questi è tenuto ad informare tempestivamente la CA perché la stessa provveda all'aggiornamento del suo database a pubblico accesso. Crittografia mista e crittanalisi Si è già avuto modo di sottolineare come i protocolli di crittografia simmetrici e asimmetrici si comportino in modo diametralmente opposto dal punto di vista delle prestazioni. In fase di codifica-decodifica sono sicuramente preferibili i protocolli simmetrici, perché molto più veloci. D’altro canto l’estrema facilità di gestione delle chiavi farebbe propendere verso un uso dei protocolli a chiave asimmetrica. Al fine di sfruttare al meglio le proprietà di entrambi gli approcci, i principali prodotti crittografici attualmente presenti sul mercato li combinano. Un meccanismo di crittografia a chiave pubblica viene utilizzato per la generazione da parte dell’utente di una propria coppia di chiavi, mentre un meccanismo di crittografia a chiave privata viene utilizzato per la cifratura di un messaggio, usando una chiave simmetrica di sessione per quella operazione specifica; la chiave simmetrica viene quindi cifrata con la chiave pubblica del destinatario ed allegata al messaggio cifrato. Parallelamente alla crittografia si è sviluppata un’altra disciplina il cui scopo è quello di individuare delle tecniche (attacchi) per scoprire il contenuto di messaggi cifrati senza conoscere la chiave di cifratura. Tale disciplina è nota come crittanalisi. La capacità di un protocollo crittografico di resistere agli attacchi viene definita "robustezza": più un protocollo è robusto, più sofisticati sono gli attacchi a cui deve essere sottoposto per essere compromesso. Due sono i parametri fondamentali che caratterizzano la robustezza di un protocollo crittografico:
Il primo attacco che viene considerato per valutare la robustezza di un protocollo crittografico è basato sulla ricerca esaustiva (o a "forza bruta") nello spazio delle chiavi. L'attacco viene portato a termine assumendo di conoscere l'algoritmo di codifica e di avere a disposizione un testo cifrato: si prova a decifrare il testo cifrato usando ad una ad una tutte le chiavi possibili fino a che si trova quella corretta. Questo tipo di attacco consente di rompere tutti i protocolli crittografici che usano chiavi la cui lunghezza è attorno ai 40 bit. In questo caso lo spazio delle chiavi contiene 1.099 miliardi di elementi diversi. Per esempio, l'algoritmo a chiave simmetrica DES è stato recentemente "rotto" pur non essendo state trovate debolezze nell’implementazione dell’algoritmo che permetterebbero di risalire al messaggio senza essere in possesso della chiave. L’attacco all’algoritmo eseguito dalla Cryptography Research (www.cryptography.com) è stato infatti del tipo forza bruta, cioè sono state provate tutte le possibili chiavi in sequenza fino a quando non si giunge ad un messaggio che possa essere considerato valido. Tutti gli algoritmi crittografici possono essere rotti con questo tipo di attacco; il mezzo per combatterlo è quello di aumentare la lunghezza della chiave (o chiavi) in modo da aumentare sensibilmente il numero delle combinazioni possibili. Come già detto in precedenza, l’algoritmo DES utilizza chiavi a 56 bit, cioè è possibile utilizzare esattamente 256 (circa 72 milioni di miliardi) chiavi differenti per poter cifrare un messaggio. All’inizio degli anni ’70 (il 1970 è l’anno di ideazione) tale valore sembrava più che sufficiente per ripararsi da possibili attacchi a forza bruta, grazie anche alle scarse e costosissime risorse di calcolo disponibili a quei tempi. Il continuo aumento della potenza di calcolo disponibile, ad un prezzo sempre più basso, ha permesso il finanziamento di alcuni progetti mirati a decifrare brani di messaggi cifrati con DES. L’ultimo, finanziato dalla Electronic Frontier Foundation (http://www.eff.org), ha portato alla costruzione di un sistema apposito chiamato Deep Crack. Il costo dell’investimento è stato di poco più di 200.000 dollari. Deep Crack è un chip specializzato che implementa in hardware l’algoritmo DES per cifrare e decifrare in rapida sequenza lo stesso blocco di 64 bit del messaggio con tutte le chiavi possibili. La frequenza del Deep Crack è di 40 Mhz che consente di esaminare 2.500.000 chiavi al secondo per ogni unità di elaborazione. Ogni chip contiene 24 unità di elaborazione, per una capacità di analisi di 60 milioni di chiavi al secondo. RSA basa la sua sicurezza contro l’attacco di un crittanalista sulla difficoltà di poter fattorizzare un numero sufficientemente grande. Il più grande fattorizzato fino ad oggi è composto da 129 cifre (circa 430 bit) utilizzando 1600 workstation per circa 8 mesi. In generale, i protocolli a chiave asimmetrica, devono operare con chiavi di larghezza superiore a quelli simmetrici per poter garantire la stessa robustezza. Nella tabella seguente vengono illustrate le dimensioni di chiavi simmetriche e asimmetriche che garantiscono lo stesso livello di robustezza.
Impostazione dei browser Nel paragrafo "Nuove aree di vulnerabilità" sono stati descritti i pericoli per la sicurezza che possono portare l'esecuzione di script ActiveX o Java e il rilascio di cookie all'interno del disco. L’approccio per potersi difendere da tali oggetti è differente. Nel caso di Java è necesssario disabilitare l’esecuzione degli Applet e degli script attraverso le opzioni del browser. Analogo discorso vale per i cookie. L’utente può impostare il proprio browser impedendo la registrazione automatica di cookie sul hard disk da parte dei siti visitati o per lo meno abilitare la richiesta di essere avvisati prima di farlo. Per quanto riguarda ActiveX , la difesa da codice maligno è lasciata ogni volta all’utente. I programmi ActiveX sono accompagnati da firme digitali, chiamate in questo caso Authenticode. Il browser, dopo aver verificato la firma digitale, visualizza il nome della persona che ha creato lo script e richiede l’autorizzazione all’esecuzione dello script. Ogni utente è libero di accettare lo script con il rischio che possa fare qualsiasi cosa oppure rifiutarlo. La sicurezza sta quindi nelle vostre mani.
|