Diversi standard sono emersi per proteggere la segretezza delle chiavi e per facilitare lo scambio di queste chiavi su un canale insicuro in sicurezza. L’algoritmo di scambio Diffie-Hellman implementa lo scambio delle chiavi senza che sul canale insicuro vengano realmente scambiate le chiavi. Questo algoritmo è molto usato per stabilire una sessione adatta a cifrare i dati.
L’algoritmo Diffie-Hellman (RFC 2631) offre un modo sicuro per due utenti, Alice e Bob, di stabilire una chiave segreta condivisa che solamente loro conoscono. La chiave segreta condivisa può essere stabilita anche se gli utenti Alice e Bob stanno comunicando su un canale insicuro. Questa chiave segreta è usata poi per cifrare i dati usando l’algoritmo di cifratura della chiave segreta selezionato da Alice e Bob. I Due pari generano dei numeri primi Alice p e Bob q, composti da 200 o 300 cifre almeno (lunghezza stabilita in base al Gruppo D-H di appartenenza) e vengono condivisi e scambiati sul canale insicuro. Con questi numeri ogni pari (Alice e Bob) generano un numero “g”, un numero minore di “p” e “q”, con alcune restrizioni. A questo punto Alice e Bob generano ognuno un grande numero casuale che viene tenuto segreto, chiamato “XA” e “XB”. Con questo numero casuale viene generato dai pari una chiave pubblica YA e YB. Il risultato YA e YB vengono scambiati tra i pari sul canale insicuro. A questo punto viene generato un segreto condiviso in funzione di YA e YB (chiave ZZ). L’algoritmo di scambio Diffie-Hellman che permette di condividere un segreto (la chiave ZZ) senza scambiarlo realmente sul canale insicuro ora è realizzato (figura1).
È importante notare che Alice e Bob non hanno un metodo per determinare l’un l’altro l’identità. Lo scambio è vulnerabile ad un attacco man-in-the-middle. L’algoritmo Diffie-Hellman provvede a fornire la riservatezza ma non provvede a fornire l’autenticazione. L’autenticazione viene realizzata dall’uso di firme digitali nello scambio dei messaggi Diffie-Hellman. Attualmente sono definiti 10 gruppi. La RFC 2409 definisce i gruppi da 1 a 4. La RFC 3526, definisce il gruppo 5 e i gruppi da 14 a 18. Più si sale di gruppo maggiore è la forza crittografica delle chiavi ricavate. La forza crittografica di ogni chiave così generata dipende, in parte, dalla forza del gruppo Diffie-Hellmann sulla quale i numeri primi sono basati. La scelta di un gruppo Diffie-Hellman molto grande può aumentare di molto il tempo di processamento dei pacchetti.
Scambio delle chiavi pubbliche
Quando vengono scambiate le chiavi pubbliche come fanno gli utenti ad avere la certezza che la chiave pubblica ricevuta sia autentica? Cioè, che appartenga veramente all’entità con cui si vuole comunicare? È infatti possibile per un pirata informatico impersonare un utente legittimo (BOB) (attacco man-in-the-middle) ed inviare ad Alice una falsa chiave pubblica, così da decifrare i messaggi che Alice cifra con tale chiave. È importante essere certi dell’identità del soggetto possessore della chiave pubblica. Con il semplice scambio delle chiavi pubbliche è possibile che non si stia comunicando con chi crediamo di comunicare. È necessario quindi che per risolvere questo problema, ci sia una parte terza agli utenti gerarchicamente superiore che garantisca sulla corrispondenza tra un utente e la sua coppia di chiavi asimmetriche PKI (Public Key Infrastructure). Una Certification Authority (CA) è una “parte terza” agli utenti (Alice e Bob). Questa particolare entità viene riconosciuta dagli utenti come una parte “fidata” a loro gerarchicamente superiore. La CA offre un servizio utile a creare e garantire “fiducia” fra gli utenti. La CA crea, assegna, rilascia, sospende e revoca “certificati digitali”.
I Certificati digitali
I certificati digitali sono degli oggetti informatici conformi allo standard ITU-T X.509v3 RFC 2510 e 3280 che garantiscono valore legale alle firme digitali, attraverso l’assicurazione della corrispondenza tra un determinato paio di chiavi asimmetriche e un particolare utente o apparecchiatura. Il certificato digitale è strettamente associato alla coppia di chiavi Pubblica/Privata e all’entità a cui si riferisce (Alice/Bob) o all’apparecchiatura e contiene una serie di dati identificativi dell’utente o dell’apparecchiatura, come il nome, il numero seriale, o l’indirizzo IP e della chiave pubblica più una serie di campi opzionali. La CA rilascia il certificato digitale dopo un processo chiamato “procedura di certificazione” che serve a dare garanzie sulla autenticità, sulla corrispondenza fra le chiavi e il suo possessore. L’utente o l’apparecchiatura, in questo caso Alice dopo avere generato la sua coppia di chiavi Pubblica/Privata chiede alla CA di certificare la sua chiave pubblica. La CA o per lei la RA (Registration Autority) che è una emanazione amministrativa della CA realizzata per alleggerirne il lavoro. Esegue una “procedura di identificazione” e identificando Alice come la proprietaria di una coppia di chiavi asimmetriche ne verifica la corrispondenza. A questo punto la RA chiede alla CA di generare un certificato digitale per Alice e la sua chiave pubblica. Il certificato dell’utente Alice viene firmato dalla CA con un suo certificato digitale chiamato “Root CA” che è auto–certificato (self–signed). La CA con il suo proprio certificato digitale, che è un certificato particolarmente robusto, firma i certificati digitali degli utenti autenticandoli e garantendo per la loro corrispondenza ad una particolare identità. La CA pubblicherà su un particolare server pubblico chiamato “Certificate Server” liberamente accessibile, una lista dei certificati in corso di validità o con l’indicazione se questi certificati sono revocati o sospesi. In realtà le liste pubblicate sul Certificate Server sono di tre tipi e i certificati revocati e sospesi sono rispettivamente pubblicati nelle liste CRL (Certificate Revocation List) e CSL (Certificate Suspension List). L’utente Alice a questo punto riceve dalla CA un proprio certificato digitale firmato+il certificato digitale “Root” (self-signed) della CA. La struttura di un certificato digitale X.509 v3 mostrata in figura 2 è formata dai principali attributi ed estensioni:
Attributi del certificato digitale:
» versione
» serial number
» firma
» validità
Estensioni
» CRLD Distibution Point
» Key Usage
» Digital Signature
» Difratura digitale
Problematiche per il Web
Vari sono gli aspetti di sicurezza da considerare quando si utilizza internet. Va infatti subito precisato che se, da un lato, internet garantisce un’ampia connettività grazie all’utilizzo di un protocollo aperto come il TCP/IP, dall’altro il fatto che si utilizzi quest’ultimo è di per sé la principale causa di insicurezza, trattandosi di un protocollo intrinsecamente insicuro. Per quanto concerne confidenzialità e integrità dei dati, aspetti di sicurezza particolarmente sentiti quando si utilizza il Web per effettuare transizioni, due sono i protocolli di sicurezza di maggiore impiego:
» SSL (Secure Socket Layer): messo a punto da Netscape nel 1994, si pone come strato intermedio tra il transport layer (TCS/IP) e l’application layer (FTP, telnet, http, SMTP) del protocollo TCP/IP garantendo un canale di comunicazione sicuro.
» S-http (Secure http): lavora a livello applicativo e in particolare estende il protocollo http mediante la definizione di attributi di sicurezza.
Entrambi i protocolli, pur lavorando in modo diverso, realizzano in filtro che crittografa tutto ciò che passa sulla Rete. Il protocollo SSL, Secure Socket Layer è un protocollo aperto, non proprietario (cioè interamente disponibile), sviluppato da Netscape nel 1994 per la comunicazione sicura via Web. Il protocollo opera tra il livello di trasporto (TCP) dello stack TCP-IP e i protocolli per le applicazioni quali HTTP (Hyper Text Transfer Protocol) per le trasmissioni Web, NTTP (Network News Transfer Protocol) per le News Usenet, e SMTP (Simple Mail Transfer Protocol) per l’invio e la ricezione delle mail. Tramite SSL vengono forniti i seguenti servizi:
» autenticazione del server, mediante certificati digitali; con la possibilità a richiesta di effettuare anche l’autenticazione del client (browser);
» trasmissione sicura mediante cifratura delle informazioni;
» controllo di integrità dei dati.
SSL utilizza un sistema di crittografia a chiave pubblica, per le fasi di autenticazione del server e del client, ed una chiave simmetrica, che deve essere concordata ad ogni connessione tra il server ed il client, per la cifratura delle informazioni trasmesse. Gli algoritmi usati in SSL sono i seguenti:
» RSA come algoritmo a chiave asimmetrica e certificati X.509 per l’autenticazione del server e del client;
» DES, TRIPLE-DES, RC4 come algoritmi a chiave simmetrica per cifratura della informazioni;
» MD5, SHA per la generazione del message digest dei mesaggi inviati.
La combinazione di algoritmi usati in una sessione SSL viene chiamata suite. Il consorzio per il WWW, inoltre, ha pensato di scegliere come ulteriore standard di base per l’autenticazione e la crittografia l’ SHTTP (Secure HyperText Transfer Protocol), che è un estensione dell’ HyperText Transfer Protocol (HTTP), protocollo di base del World Wide Web. L’SHTTP è stato progettato da E. Rescorla e A. Schiffman della EIT (Enterprise Integrated Technologic Inc.). Il protocollo fornisce capacità simmetriche al client e al server (stesso trattamento in richiesta e risposta) mentre mantiene il modello di implementazione dell’http.
Grazie, è arrivato adesso.