2001/02 Lezione N. 21 Sicurezza in Internet Tecnologie per la

Transcript

2001/02 Lezione N. 21 Sicurezza in Internet Tecnologie per la
2001/02
Lezione N. 21
Sicurezza in Internet
Problemi di sicurezza in Internet. Internet è intrinsecamente insicura poiché i messaggi scambiati tra due utenti
attraversano un numero elevato di nodi prima di giungere a destinazione. La commutazione di pacchetto prevede
che ogni nodo memorizzi il pacchetto e quindi lo rispedisca nella direzione del destinatario appena possibile. La
necessità di memorizzare i pacchetti nei file system di computer sconosciuti rende il canale virtuale estremamente
vulnerabile, poiché ad ogni passaggio il pacchetto potrebbe essere letto o manipolato. Ne consegue che:
• il canale di comunicazione non è riservato,
• le informazioni scambiate non sono attendibili,
• l’identità del mittente e del destinatario non è garantita.
Documenti sicuri. La Legge Bassanini (Art. 5, Legge 59 del 15/3/1997, Regolamento del 13/3/1998) indica quattro
caratteristiche fondamentali che un documento deve avere per poter essere considerato sicuro e avere valore
legale:
• riservatezza, deve essere possibile limitare l’accesso al documento alle sole persone autorizzate
• integrità, non deve essere possibile manipolare il documento
• autenticazione, l’identità dell’autore deve essere garantita,
• non ripudiabilità, l’autore non può negare di averlo scritto e il destinatario non può negare di averlo ricevuto.
La natura di Internet, unitamente alla facilità di riproduzione di informazioni codificate in forma digitale, non
garantisce nessuna delle quattro caratteristiche.
Tecnologie per la sicurezza in Internet
Parole chiave. L’uso di una parola chiave (password) serve sostanzialmente a restringere l’accesso a servizi o
informazioni. Se tutti gli utenti di uno stesso servizio condividono la stessa password non è possibile identificarli né
scoraggiare la divulgazione della parola chiave. Viceversa, se la parola chiave è personale (ed associata
univocamente ad un nome utente, o username) serve anche all’identificazione. (Es: Bancomat, Password per
l’accesso a banche dati). La sicurezza di una password è legata alla difficoltà di indovinarla e a quella di verificarne
n
la correttezza. La difficoltà di indovinarla cresce con il numero di possibili password, pari a s dove n è il numero di
caratteri e s è il numero di simboli. La difficoltà di verificare la correttezza di una password può essere misurata in
termini di tempo T richiesto per la procedura d’accesso. Il tempo totale necessario a violare la password è
n
proporzionale al prodotto di s per T. Nella pratica, la difficoltà di memorizzazione spinge ad utilizzare password
semplici o a scriverle in luoghi facilmente accessibili, aumentando il rischio di violazione. In ogni caso, le password
non risolvono tutti i problemi di sicurezza in Internet.
Codifici segreti - crittografia. L’uso di codici segreti è il mezzo più comune per trasmettere informazioni riservate
su un canale intrinsecamente insicuro. Si presuppone che mittente e destinatario siano d’accordo sull’uso di un
codice riservato. Il mittente codifica il messaggio prima di trasmetterlo, il destimatario lo riceve e lo decodifica per
poterlo leggere. Chiunque intercetti il messaggio senza conoscere il codice non può decifrarlo né manipolarlo,
poiché ogni manipolazione rischia di violare il codice rendendo il messaggio non più decodificabile dal destinatario.
Es: Sostituzione monoalfabetica: ogni carattere viene sostituito da un simbolo privo di significato o da un carattere
diverso. Shift di un carattere: ogni carattere di un testo è sostituito con quello che lo segue in un ordinamento
prestabilito, quale quello alfabetico. Lo shift è un particolare tipo di sostituzione monoalfabetica.
La codifica e la decodifica possono essere visti come protocolli di trasmissione e ricezione che creano un canale
virtuale sicuro utilizzando un canale reale insicuro. La sicurezza offerta da un codice segreto è legata alla sua
complessità. Il principale inconveniente dei codici segreti è la necessità di un accordo preventivo tra gli
interlocutori. Se gli interlocutori utilizzano un mezzo di comunicazione insicuro per prendere l’accordo si espongono
al rischio di violazione del codice. Se gli interlocutori sono più di due la diffusione della regola di codifica ne riduce
la sicurezza e riduce la riservatezza delle comunicazioni. L’uso di codici diversi per ogni coppia di interlocutori è
estremamente laborioso e poco pratico.
Chiave crittografica. Esistono algoritmi di codifica e decodifica parametrizzati, il cui risultato è condizionato al
valore di una chiave K. L’algoritmo non è segreto, la chiave sì. La conoscenza dell’algoritmo non consente la
decodifica se non si conosce la chiave (Es: shift di K posizioni).
Se la stessa chiave è utilizzata sia per la codifica che per la decodifica si parla di crittografia a chiave privata, o
simmetrica (Es: shift di K posizioni avanti e indietro). Il problema nell’uso di algoritmi di crittografia a chiave
simmetrica è la necessità di un accordo preventivo tra gli interlocutori sulla chiave da utilizzare. Questo da un lato
rende vulnerabile la codifica se l’accordo è sancito utilizzando un canale di comunicazione insicuro. Dall’altro
implica la diffusione della chiave tra tutti coloro che devono accedere all’informazione.
Se la chiave di decodifica è diversa da quella di codifica si parla di crittografia a chiave asimmetrica (Es: shift
circolare di K posizioni in codifica, shift circolare di N-K posizioni in decodifica, dove N è il numero totale di
caratteri).
Crittografia a chiave pubblica. Gli algoritmi di crittografia a chiave pubblica utilizzano una coppia di chiavi
asimmetriche, che indichiamo con Kpriv e Kpub, tali che:
• La conoscenza dell’una non consente di risalire all’altra
• L’una decodifica ciò che l’altra codifica
Chiamiamo privata una delle due chiavi (Kpriv) pubblica l’altra (Kpub). Un solo soggetto possiede la chiave privata,
tutti possiedono quella pubblica. La chiave pubblica può essere distribuita senza mettere a rischio la riservatezza di
quella privata. I messaggi decodificabili da Kpub sono stati codificati con Kpriv, quindi provengono dal soggetto a
cui la chiave privata appartiene. I messaggi codificati con Kpub possono essere decodificati solo da Kpriv, quindi
sono destinati al soggetto a cui la chiave privata appartiene e non sono accessibili ad altri.
Sicurezza degli algoritmi di crittografia a chiave pubblica. Assumendo che la conoscenza della chiave
pubblica e di messaggi in codice non fornisca alcuna informazione utile all’identificazione della chiave privata, la
sicurezza offerta dagli algoritmi di crittografia a chiave pubblica risulta proporzionale al numero di possibili chiavi e
al tempo necessario a sperimentare ciascuna di esse. Il tempo richiesto per ogni tentativo dipende dalla
complessità dell’algoritmo di decodifica, mentre il numero di chiavi dipende dalla lunghezza delle chiavi (n) e dal
n
numero di simboli dell’alfabeto (s) secondo la relazione s . In pratica, quindi, un messaggio in codice è sicuro per
un intervallo di tempo finito pari al tempo necessario a violarlo. Trascorso questo tempo il messaggio potrebbe
essere decodificato da qualche crittoanalista che avesse impiegato tutto il tempo a cercare di violarlo, e pertanto
non può più essere ritenuto sicuro. Aumentando i valori di n ed s è comunque possibile, in teoria, portare il tempo
di violazione oltre valori umanamente concepibili, quale il tempo stimato di vita dell’universo.
Ogni messaggio in codice conserva in realtà alcune proprietà statistiche del messaggio originale. L’individuazione
di tali proprietà facilita il compito dei crittoanalisti, riducendo il tempo di violazione ben al di sotto del limite teorico
della violazione a tentativi casuali. (Es: la sostituzione monoalfabetica altera i caratteri, ma non ne modifica la
frequenza relativa, caratteristica di ogni lingua. Calcolando la frequenza con cui compaiono i simboli in un
messaggio cifrato si può tentare di capire a quali lettere sono stati sostituiti. Ad esempio, in Italiano la A e la E sono
molto più frequenti della Z e della Q. Se in un messaggio in codice la lettera più frequente è la Q, è probabile che
questa sia stata utilizzata al posto della A o della E. Del resto, non appena siano note alcune lettere, diventa
relativamente semplice dedurre le restanti dal contesto.) Quindi, ogni volta che si usa una chiave la si rende di fatto
un po’ meno sicura.
RSA (Rivest-Shamir-Adelman). L’algoritmo di crittografia a chiave pubblica utilizzato in Internet è l’RSA, basato
sulla difficoltà di scomporre in fattori primi numeri interi molto grandi. Il tempo medio di violazione è esponenziale
nella lunghezza della chiave, mentre il tempo di codifica e decodifica è proporzionale alla lunghezza del messaggio
e dipende anch’esso dalla lunghezza della chiave. Chiavi a 1024 o 2048 bit richiedono tempi di violazione stimati
superiori alla vita dell’universo, mentre il tempo di decodifica di un messaggio codificato con chiave a 1024 bit è
dell’ordine del tempo di lettura.
L’algoritmo è stato sviluppato nel 1977 al MIT con fondi governativi e protetto da brevetto per controllarne la
diffusione (il brevetto scade il 20 settembre 2000). Gli algoritmi di fattorizzazione sono considerati segreti militari.
Gli algoritmi utilizzati in Internet devono essere di dominio pubblico. Gli Stati Uniti impongono un limite di 128 bit
alla lunghezza delle chiavi utilizzate per codificare messaggi da e per l’estero, in modo da evitarne l’indecifrabilità.
Certificati digitali. File che associano la chiave pubblica all’identità del titolare. L’attendibilità del certificato (e
quindi l’identità del titolare) deve essere garantita da una terza parte, detta autorità di certificazione (Certification
Authority, CA). L’autorità di certificazione rilascia un certificato digitale solo dopo aver fatto accertamenti
sull’identità del richiedente. Tutti i certificati digitali rilasciati da un’autorità di certificazione sono criptati utilizzando
la chiave privata della CA. Chi vuole prendere visione di un certificato digitale deve decriptarlo utilizzando la chiave
pubblica della CA. In tal modo ha garanzia del fatto che sia stato rilasciato proprio dalla CA. Il processo di
certificazione è il seguente:
• Il soggetto richiede il certificato alla CA
• La CA accerta l’identità del richiedente
• Il richiedente genera una coppia di chiavi e invia la chiave pubblica alla CA
• La CA genera il certificato associando l’identità del richiedente alla chiave pubblica
• La CA “firma” il certificato criptandolo con la propria chiave privata
• La CA invia il certificato al richiedente e lo pubblica nei propri archivi
• Il richiedente installa il certificato sul proprio calcolatore
Es: Verisign (www.verisign.com) è una CA autorizzata dal governo USA ad utilizzare chiavi da 128 bit. Certifica
domini e utenti privati, rilasciando certificati digitali riconosciuti automaticamente da tutti i browser.
Uso di crittografia a chiave pubblica e certificati digitali per la sicurezza in Internet
Identità del destinatario
• Il destinatario di un messaggio possiede un certificato digitale
• La chiave pubblica del destinatario è utilizzata per codificare il messaggio
• Effetto: riservatezza della comunicazione
Identità del mittente
• Il mittente possiede un certificato digitale
• La chiave privata del mittente è utilizzata per codificare il messaggio
• Effetto: autenticazione del mittente
Identità di mittente e destinatario
• Sia il mittente che il destinatario possiedono certificati digitali
• La chiave privata del mittente è utilizzata per codificare il messaggio una prima volta
• La chiave pubblica del destinatario è utilizzata per codificare il messaggio una seconda volta prima di spedirlo
• Effetto: autenticazione di destinatario e mittente e riservatezza della comunicazione
Sicurezza del canale
• Secure Socket Layer (SSL): protocollo per la comunicazione sicura in Internet
• Crittografia a chiave pubblica utilizzata per decidere una chiave simmetrica segreta da utilizzare per la codifica
dei dati, detta chiave di sessione
• Identificazione basata su RSA
• Integrità basata su controlli a chiave
• L’uso di SSL è trasparente ai livelli applicativi
• Nota: utilizzando la chiave privata asimmetrica solo per scambiare chiavi di sessione se ne limita l’esposizione
al rischio di violazione. Del resto la chiave simmetrica di sessione cambia di volta in volta, rendendo anche in
questo caso difficile la violazione.
Firma digitale
• Il mittente possiede un certificato digitale
• La chiave privata del mittente non è utilizzata per codificare il messaggio
• Viene generata una firma, cioè una stringa dipendente dal contenuto del messaggio e dal momento in cui
viene generata
• Cambiando il messaggio o la data dovrebbe cambia la firma
• La firma viene codificata con la chiave privata del mittente
• Chi riceve il messaggio decodifica la firma con la chiave pubblica del mittente e ne verifica la consistenza con il
contenuto e la data del messaggio
• Effetto: identità del mittente, integrità del messaggio, non ripudiabilità
• Nota: utilizzare la chiave privata solo per codificare la firma, anzichè per codificare l’intero messaggio, rende
più efficiente il sistema e meno esposta la chiave.
Sicurezza di un sito Web
• Il dominio è certificato
• Chi si collega al sito sa a chi appartiene e può vederne il certificato
• Le informazioni scambiate tra cliente e server utilizzano il SSL
• I browser Web segnalano i siti certificati mostrando un simbolo (chiave o lucchetto) nella barra di stato.
Clickando sul simbolo è possibile visualizzare il certificato del sito.
• Se il simbolo è un lucchetto aperto (o una chiave rotta) il certificato non è ritenuto attendibile dal browser.
Questo vuol dire che non dà garanzie sull’identità del titolare del sito, ma consente comunque di usare il SSL
per lo scambio di informazioni.
• Gli indirizzi di pagine Web sicure cominciano per https:// anzichè per http://