Tecnologia di Internet
 
Sicurezza in Internet, intranet ed extranet
Crittografia a chiave singola
Il metodo con il quale per secoli sono stati trasmessi messaggi segreti è detto crittografia a chiave singola (o a chiave segreta, per distinguerlo dal metodo a chiave pubblica). Quando A vuole spedire a B un messaggio crittografato, queste sono le azioni da compiere
  • B spedisce a A una copia della chiave di codifica
  • A codifica il messaggio con tale chiave e lo spedisce a B
  • B decodifica il messaggio con la stessa chiave
Crittografia a chiave singola
Questo metodo ha qualche problema. Innanzitutto B deve trovare un modo sicuro per trasmettere la chiave ad A: se viene intercettata la comunicazione è compromessa. Poi, B deve fidarsi di A. Se A è un agente segreto che fa il doppio gioco, può passare la chiave di B al nemico; oppure può leggere gli altri messaggi provati di B; o, in modo più sottile, può fingere di essere B. Infine, in un organismo che necessita di scambiare messaggi segreti, o si hanno numerose chiavi da controllare, o bisogna usarne un piccolo numero, il che può portare a compromessi.

Il più diffuso sistema di cifratura a chiavi segrete è DES (Data Encryption System), ed è ad esempio utilizzato per la cifratura delle password di utente nei sistemi Unix. Su questo metodo di cifratura sono basati sistemi di autenticazione per reti locali, come ad esempio il sistema Kerberos, che viene installato dal gestore della rete, e provvede, tramite un archivio riservato di chiavi segrete, ad autenticare l’identità di chiunque usi la rete. Ad esempio, se una persona vuole accedere tramite la rete ad un proprio account, egli deve fornire la propria chiave segreta, che viene confrontata con quella conservata nell’archivio.

Crittografia a chiave pubblica
Ad ognuna delle persone coinvolte in una transazione vengono assegnate due chiavi, una chiave pubblica e una chiave privata. Ogni informazioni codificata con la chiave privata può essere decodificata solo con la chiave pubblica. Inversamente, ogni informazioni codificata con la chiave pubblica può essere decodificata solo con la chiave privata. Se A deve mandare un messaggio segreto a B:
  • A cerca in un elenco (pubblico) la chiave pubblica di B
  • A codifica il messaggio con tale chiave e lo spedisce a B
  • B decodifica il messaggio con la sua chiave privata
Crittografia a chiave pubblica
Questa tecnica evita molti degli svantaggi della chiave singola. B non deve preoccuparsi di spedire in modo sicuro la propria chiave ad A: la chiave è pubblica per definizione, e può servire solo per spedire messaggi a B, non per decodificarli. B non deve proccuparsi se A è un agente segreto che fa il doppio gioco. A non può decifrare messaggi mandati a B, né può fingere di essere B. I grandi organismi non hanno problemi. Chiunque voglia trasmettere un messaggio a B può farlo usando la chiave pubblica. Tuttavia, uno svantaggio di questo metodo è la necessità di usare chiavi molto lunghe e quindi la lentezza dei processi di codifica e decodifica.

Il più noto sistema a chiave pubblica è RSA sviluppato da Rivest, Shamir, e Adleman all’inizio degli anni 80.

Su di esso è sostanzialmente basato un programma denominato PGP (Pretty Good Privacy), che è attualmente il più usato mezzo di autenticazione per comunicazioni E-mail su Internet. Tramite questo programma è possibile non solo criptare un intero messaggio, ma anche accludere ad un messaggio “in chiaro” una firma digitale (digital signature), ricavata dalla propria chiave privata, tramite la quale chi riceve il messaggio può verificare l’autenticità o meno dello stesso. Le chiavi pubbliche PGP sono reperibili via E-mail presso vari public key server, ossia server addetti alla memorizzazione e alla distribuzione delle chiavi pubbliche; essi possono essere controllati mediante comandi inseriti nel corpo del messaggio e spediti all'indirizzo pgp-public-keys@keys.pgp.net.

Ogni volta che un utente installa per la prima volta il programma, dovrà provvedere a generare le proprie chiavi (quella pubblica e quella privata) e a spedire quella pubblica al server. Quest’ultima operazione non è obbligatoria, ma permette a chiunque voglia comunicarvi di avere la vostra chiave.

Risorse su Internet
http://www.rsa.com/rsalabs/newfaq/q3.html

Firma digitale
Con la crittografia a chiave pubblica, un messaggio può essere firmato. In altre parole è possibile usare una tecnica per cui se A spedisce un messaggio a B, B può essere sicuro che a spedirglielo è stato proprio A e non qualcuno che finge di essere A.

Poiché A è l’unico a possedere la propria chiave privata (con cui decodifica i messaggi cifrati che gli arrivano), A può codificare con la propria chiave privata i messaggi che spedisce e poi lo codifica con la chiave pubblica di B. B lo riceve, lo decodifica con la propria chiave privata e successivamente con la chiave pubblica di A. Se legge il messaggio è sicuro che è stato A (l’unico che poteva codificare con la chiave privata di A) a mandarglielo.

Algoritmi di codifica
Quando un browser SSL e un server SSL comunicano tra di loro, si accordano su un algorimo di cifratura che entrambi supportano. Alcuni dei più comuni algoritmi sono:
  • DES. Data Encryption Standard, algoritmo standard usato dal governo USA
  • DSA. Digital Signature Algorithm, parte del DES
  • KEA. Key Exchange Algorithm, usato dal governo USA per lo scambio di chiavi
  • MD5. Algoritmo di Message Digest sviluppato da Rivest.
  • RC2 and RC4. Algoritmi di Rivest sviluppati per RSA Data Security.
  • RSA. Algoritmo a chiave pubblica per codifica e autenticazione. Sviluppato da Rivest, Shamir, and Adleman.
  • RSA key exchange. Un algoritmo per lo scambio di chiavi per SSL basato su RSA.
  • SHA-1. Secure Hash Algorithm, funzione hash usata dal governo USA
  • SKIPJACK. Algoritmo a chiave simmetrica implementato in hardware usato dal governo USA
  • Triple-DES. DES applicato tre volte.

Per vedere quale sistema di cifratura usa un server https ci si può collegare con http://www.netcraft.com/sslwhats/

Certificati digitali
L’elenco delle chiavi pubbliche potrebbe essere falsificato. In crittografia a chiave pubblica, se A vuole spedire un messaggio a B deve assicurarsi di avere la chiave pubblica che realmente appartiene a B. I certificati servono a risolvere questo problema. Un certificato è un documento elettronico che collega un chiave pubblica con una particolare persona o organismo. I certificati, e quindi le chiavi pubbliche, sono rilasciati da una Certification Authority, che (a pagamento) provvede ad una serie di autenticazioni per assicurarsi che B è chi dice di essere e che la chiave pubblica nel certificato è realmente quella di B.

L’elenco pubblico dei certificatori italiani è mantenuto dall’AIPA (Autorità Informatica Pubblica Amministrazione). Attualmente ne fanno parte:

  • la Società Interbancaria per l'Automazione - Cedborsa (SIA S.p.a.),
  • la S.S.B. S.p.a.
  • la BNL Multiservizi S.p.a.
  • la Società Consortile di Informatica delle Camere di Commercio p.A. (Infocamere),
  • la Finanziaria Italiana S.p.a. (Finital)
  • la Saritel S.p.a.
  • Postecom S.p.a.

Una certification authority italiana: http://ca.alinet.it/

I certificati digitali vengono rilasciati per applicazioni di

  • posta elettronica,
  • browser
  • server web
Sicurezza tra browser e server
Nel caso della comunicazione web, le due parti in causa sono un utente finale che usa un browser e il sito di commercio elettronico che usa un server. Il server ha una sua chiave pubblica che viene attestata da un certificato digitale, detto anche Sicure Server ID. Il certificato digitale di un server contiene queste informazioni
  • Nome dell’organizzazione (per esempio www.boscarol.com)
  • Altre informazioni di indirizzo (per esempio indirizzo IP)
  • Chiave pubblica
  • Data di scadenza della chiave pubblica
  • Nome della certification authority che ha emesso il certificato
  • Numero di serie
  • Firma digitale della Certification Authority
  • I certificati digitali sono supportatu soltanto dai browser più recenti:
  • Microsoft Internet Explorer 3.1 e superiori
  • Netscape Navigator 3.0 e superiori
  • Eudora 3.0 e superiori con plugin s/mime per certificati digitali
  • Microsoft Outlook Express

SSL e certificato digitale
Il certificato digitale lavora in connessione con SSL. Una volta installato e configurato SSL, i client possono collegarsi usando un URL che comincia con https invece che con http. Dietro le scene, il browser si collega con la porta corretta (443) e inizia una negoziazione. In questa fase, il browser spedisce un messaggio indicando quali cifrature riconosce e il server sceglie la più sicura. Il server manda il suo certificato (che prova chi è lui) e lo usa per creare la propria chiave crittografica pubblica.

Il browser codifica i dati che trasmette al server e decifra i dati che riceve dal server.

Brevetti e limiti all’esportazione
I server commerciali come Netscape basano la loro implementazione su algoritmi alcuni dei quali sono sviluppati e brevettati in USA. L’uso di questa tecnologia richiede il pagamento di una licenza all’interno degli USA. Al di fuori degli USA non è richiesto il pagamento di una licenza se il brevetto non è stato registrato. Quindi in Italia, per esempio, si può usare Apache SSL gratuitamente.

Inoltre, fino a poco tempo fa, il governo USA probiva l’esportazione di software che utilizzasse algoritmi di cifratura con chiave più lunga di 40 bit. Successivamente il limite è passato a 56. Attualmente questa limitazione è stata rimossa, e quindi anche in Italia è possibile usare il software, per esempio Netscape Navigator, nella versione con chiave a 128 bit.

Risorse su Internet
Introduzione ai firewalls

Glossario di termini relativi alla sicurezza

   
Home | Commenti a Mauro Boscarol | Ultimo aggiornamento 22 dicembre 2000