Copyright © 1997 Universita'
di Firenze. All rights reserved.
Free license available.
La Sicurezza
a cura di Edoardo Sperindè e Enrico Lecchini
Revisori: Claudio Bizzarri, Franco Pirri
La Crittografia
 
Slide 1/3
Esistono due principali tecniche di crittografia:
- Algoritmi a chiave segreta: questo sistema si basa su un'unica chiave usata sia in fase di codifica che in fase di decodifica; questo pressuppone l'esistenza di un canale sicuro per l'interscambio di tale password tra i due interlocutori in quanto chi è in possesso di tale chiave può decodificare ogni messaggio.
Gli algoritmi più noti sono:
- DES è un algoritmo sviluppato negli anni 70.
Fu standardizzato dal governo USA ed è stato anche adottato
da molti altri governi. E' molto usato, specialmente nel mondo
della finanza. DES è un cifratore a blocchi con dimensione
di 64 bit (ciò significa che prendono un blocco di dati di dimensione fissata, di solito 64 bit, e lo trasformano in un altro blocco di 64 bit). Usa chiavi di 56 bit e ciò lo rende vulnerabile
data l'attuale potenza di calcolo disponibile: può scoraggiare
hackers individuali, ma può essere facilmente eluso da
associazioni, governi o istituzioni militari con adeguate risorse
hardware disponibili. Sta quindi diventando troppo debole e non
sarà incluso nei nuovi progetti di sicurezza. Una sua variante,
3DES è basata sull'uso ripetuto 3 volte di DES.
Per maggiori informazioni sull'algoritmo DES consultare il documento: http://www.securityserver.com/cgi-local/ssis.pl/category/@des.htm.
- IDEA (International Data Encryption Algorithm) è
un algoritmo sviluppato alla ETH Zurich in Svizzera. Usa una chiave
di 128 bit ed è generalmente considerato molto sicuro.
E' attualmente uno degli algoritmi più conosciuti. E' abbastanza
recente (1990) ma da quando è stato realizzato non si ha
notizia di attacchi che siano riusciti a renderlo vano. Per maggiori informazioni sull'algoritmo IDEA consultare il sito: http://www.ascom.ch/Web/systec/security/idea.htm.
- RC4 è un algoritmo realizzato da RSA Data Security Inc. Era rimasto protetto dal segreto commerciale finchè
qualcuno spedì il codice sorgente di un algoritmo "equivalente"
a RC4 nelle Usenet News. L'algoritmo è molto veloce e forzare
la sicurezza sembra non banale dato che può accettare
chiavi di lunghezza arbitraria. RC4 è essenzialmente un
generatore di numeri pseudo casuali, la cui uscita è usata
per fare lo XOR con il flusso di dati.
- Algoritmi a chiave pubblica: questo sistema utilizza due chiavi distinte, pubblica e privata, rispettivamente per la codifica e per la decodifica. Queste vengono generate in modo tale che non sia possibile risalire dalla chiave pubblica a quella privata.
Dovendosi scambiare solo la chiave pubblica, si può instaurare una comunicazione codificata tra due interlocutori senza aver bisogno di un canale sicuro su cui scambiarsi la chiave.
L'efficacia di questo sistema risiede nella larga diffusione della chiave pubblica in quanto ciò permette una facile verifica della effettiva validità della chiave scoraggiando così eventuali manomissioni.
Gli algoritmi più usati per la codifica a chiave pubblica sono:
- RSA (Rivest-Shamir-Adelman) è il più
comune algoritmo a chiave pubblica. Può essere usato sia
per cifrare sia per la firma digitale. E' considerato sicuro se
sono usate chiavi abbastanza lunghe: con 512 bit è insicuro, con 768 bit moderatamente
sicuro e con 1024 è considerato buono. La sua sicurezza si basa infatti
sulla difficoltà di fattorizzare numeri interi molto grandi:
efficienti algoritmi in tal senso diminuirebbero la sicurezza
dell'RSA. Per maggiori informazioni sull'algoritmo RSA consultare il documento: http://ei.cs.vt.edu/~cs5204/protection/rsa.html.
- Diffie-Hellman è generalmente considerato sicuro
se usato con chiavi sufficientemente lunghe; la sua sicurezza
si basa sulla difficoltà dei problemi logaritmici, ritenuta
computazionalmente equivalente a quella del problema della fattorizzazione
dei grandi numeri interi. Per ulteriori informazioni consultare il documento: http://www.ts.umu.se/~balp/rpcunix/diffie-hellman_encryption.HTML.
- DSS (Digital Signature Standard). E' un mezzo per la
sola firma elaborato dal Governo USA. Il suo progetto non è
stato reso pubblico e molta gente ha avuto problemi con esso.
Non c'è ragione di preferirlo a molti altri algoritmi sicuramente
più affidabili. Per maggiori informazioni consultare il documento: http://bilbo.isu.edu/security/isl/dss_fact.html.
- PGP (Pretty Good Privacy). E' un pacchetto freeware
che realizza la crittografia a chiave pubblica; permette l'interscambio
di documenti elettronici realizzando segretezza, autenticità,
integrità dei dati su un canale insicuro. Per ulteriori chiarimenti si consiglia di consultare direttamente il manuale del PGP: http://www.pegasus.esprit.ec.org/people/arne/pgpdoc1/pgpdoc1.html.
 
Slide 2/3
Il PGP è probabilmente, oggi come oggi, il programma più diffuso di crittografia. Adotta in congiunzione alcuni degli algoritmi visti precedentemente per ottenere un pacchetto che utilizza le metodologie a chiave pubblica. Le principali caratteristiche del PGP sono:
- Gestione delle chiavi: le chiavi pubbliche e private vengono salvate separatamente in due file chiamati pubring.pgp e secring.pgp.
- Chiavi di lunghezza variabile.
- Certificazione delle chiavi: l'utente può certificare le chiavi altrui per autenticarne l'effettiva provenienza. Esistono inoltre specifici siti (key servers) in cui gli utenti possono depositare le proprie chiavi e prelevare quelle di interesse. E' possibile trovare un Key Server all'indirizzo: http://math-www.uni-paderborn.de/pgp/.
- Autentificazione dei messaggi: attraverso la firma della propria chiave privata un utente può certificare la provenienza di un messaggio senza codificarlo.
Per ulteriori chiarimenti si consiglia di consultare direttamente il manuale del PGP: http://www.pegasus.esprit.ec.org/people/arne/pgpdoc1/pgpdoc1.html.
 
Slide 3/3
Esempio di chiave pubblica generata dal PGP. Questa chiave può essere liberamente diffusa in modo che chiunque possa utilizzarla per crittografare un messaggio al possessore (indicato nel campo User ID). Come si può vedere la chiave ha una lunghezza di 1044 bit che gli conferisce un valido livello di sicurezza. Data l'attuale capacità di calcolo dei processori si sconsiglia di generare ed utilizzare chiavi di lunghezza inferiore ai 512 bit che potrebbero facilmente essere attaccate. Per maggiori informazioni sulle metodologie di attacco al PGP e agli algoritmi più famosi è possibile consultare il documento: http://axion.physics.ubc.ca/pgp-attack.html.