Soluzioni per la sicurezza del Telelavoro

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:

  • la prima si occupa di codificare le informazioni;
  • la seconda svolge l’operazione di decodifica;

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:

  1. Sistema a chiave privata o simmetrica, in cui le operazioni di cifratura e decifratura vengono svolte con la stessa chiave;
  2. Sistema a chiave pubblica o asimmetrica, in cui vengono utilizzate due chiavi differenti per cifrare e decifrare.

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:

  1. RSA (Rivest Shamir Adelman)

    Il più conosciuto ed utilizzato. Può essere utilizzato sia per cifrare che per firmare le informazioni. E’ considerato particolarmente sicuro quando utilizza chiavi lunghe (512 bit = poco sicuro, 1024 bit = sicuro, 2048 bit =molto sicuro). La sicurezza di RSA si basa sulla difficoltà di fattorizzare grandi numeri interi. E’ brevettato negli USA fino al 20 settembre 2000, mentre è free altrove.

  2. DSS/DIFFIE-HELLMANN

    E’ una versione modificata dell’algoritmo introdotto inizialmente da Diffie-Hellmann, sviluppata da Taher Elgamal. La sicurezza dell’algoritmo si basa sulla difficoltà di calcolare un logaritmo discreto in un campo finito. Il brevetto negli USA è scaduto il 29/4/1997. Viene utilizzato all’interno di PGP.



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:

  1. separa dal messaggio la firma digitale che si trova in fondo allo stesso;
  2. applica alla firma digitale la chiave pubblica di Michele decodificando il digest;
  3. ricalcola il message digest del messaggio rimanente e lo confronta con quello decodificato;
  4. se i due coincidono Arianna ha la garanzia che il messaggio non ha subito modifiche durante il trasporto in rete e che il messaggio sia inequivocabilmente quello del mittente.

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:

  1. MD5

    E’ una funzione hash realizzata da Ron Rivest. MD è l’acronimo di message digest; l’algoritmo, che si basa sulla manipolazione di blocchi di dati composti di 512 bit a sua volta suddivisi in sottoblocchi da 32 bit l’uno, produce un valore hash lungo 128 bit, rendendo sono disponibili 2128 valori differenti. La sicurezza dell’algoritmo si basa essenzialmente sulla difficoltà di determinare due messaggi che portino allo stesso valore hash. L’attacco più efficiente a questo algoritmo è quello basato su "forza bruta".

  2. SHA Secure Hash Algorithm

    Algoritmo ideato dal National Institute of Standards and Technology (NIST www.nist.org) e dalla National Security Agency (NSA www.nsa.org) per essere utilizzato con l’algoritmo Digital Signature Algorithm, DSA, produce un message digest di 160 bit a partire da un input di lunghezza inferiore a 264 bit. Il message digest viene poi dato in input al DSA che produce la firma del messaggio (vedi par. succ). Viene considerato sicuro per la dimensione del digest prodotto.



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:

  • il nome dell’utente e ogni informazione che lo identifica univocamente;
  • la chiave pubblica dell’utente e la modalità d’uso della chiave (solo cifratura, solo firma o entrambe le funzioni);
  • il periodo di validità del certificato (la data inizio e di fine).

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:

  • la dimensione della chiave;
  • la difficoltà di invertire l’algoritmo di codifica.

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.

CHIAVE PRIVATA

 

CHIAVE PUBBLICA

56 bit

Corrisponde a

384 bit

64 bit

"

512 bit

80 bit

"

768 bit

112 bit

"

1792 bit

128 bit

"

230 bit



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.

ICT (Internet and Communication Technologies) e Sicurezza nel Telelavoro: problemi di sicurezza Ritorno all'Home page ICT (Internet and Communication Technologies) e Sicurezza nel Telelavoro: strumenti disponibili per il telelavoro sicuro