Copyrigtht © 1986 Universita'
di Firenze. All rights reserved.
Free license available.
6. Appendice: algoritmi di crittografia.
Indice:
6.1 Algoritmi a chiave pubblica.
6.2 Crittografia Simmetrica.
6.3 Cifratori a Blocchi.
6.4 Hash Functions per la crittografia.
6.1 Algoritmi a chiave pubblica.
Questi algoritmi usano una chiave per la cifratura ed una, diversa,
per la decifratura, e la chiave per la decifratura non può,
in pratica, essere ricavata da quella per la cifratura. Sono dei
metodi importanti perché possono essere usati per trasmettere
dati cifrati anche quando le parti non hanno modo di concordare
una chiave segreta. Purtroppo tutti i metodi noti sono abbastanza
lenti e di solito non sono usati per cifrare le chiavi di sessione,
usualmente cifrate con crittografia simmetrica. (vedi seguito)
- 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 bits ˆ insicuro, con 768 bits moderatamente
sicuro e con 1024 è considerato OK. La sua sicurezza si basa infatti
sulla difficoltà di fattorizzare numeri interi molto grandi:
efficienti algoritmi in tal senso diminuirebbero la sicurezza
dell'RSA. L'algoritmo è free tranne negli USA. Per ulterori
informazioni consultare: Bruce Schneier: "Applied Cryptography."
John Wiley & Sons, 1994.
- Diffie-Hellman è una algoritmo comunemente usato
per lo scambio delle chiavi. E' 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. Questo algoritmo è patented negli
USA fino al 29/4/97.
- 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.
- 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. PGP è
principalmente pensato per lo scambio di documenti via Internet,
ma può essere usato su un qualsiasi canale insicuro; è
indubbiamente un prodotto di qualità, e non c'è
da dubitare dell'integrità morale del suo autore (che potrebbe
come sempre aver lasciato delle trap-door), Philip Zimmerman.
Egli infatti lo ha sviluppato con il chiaro intento di permettere
la privacy nell'interscambio di posta elettronica su Internet,
con un approccio fortemente critico verso la politica di NSA e
del Congresso Americano di progettare un monopolio dei sistemi
di crittografia; P. Zimmerman è stato sotto inchiesta per
due anni e mezzo, accusato di esportazione non autorizzata di
materiale crittografico, ed è di questi giorni la notizia
che le autorità federali statunitensi hanno deciso di non
perseguirlo penalmente.
6.2 Crittografia Simmetrica.
Anche detti algoritmi a chiave segreta, queste procedure usano
un'unica chiave sia per la cifratura che per la decifratura, o
comunque una chiave di decifratura facilmente ricavabile dalla
chiave di cifratura.
- 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. Usa chiavi di 56 bits 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.
- IDEA (International Data Encryption Algorithm) è
un algoritmo sviluppato alla ETH Zurich in Svizzera. Usa una chiave
di 128 bits 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. L'uso
non commerciale di IDEA è free, altrimenti si deve contattare
la Ascom-Tech: idea@ascom.ch.
- 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 triviale 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 ; per questo motivo
è necessario che la stessa chiave non sia usata per cifrare
due diversi flussi di dati. Il governo USA ha approvato l'esportazione
di RC4 con chiavi di 40 bits: chiavi cosi piccole possono essere
facilmente forzate da istituzioni come il governo, l'esercito
etc. E' interessante notare che SSL, versione export, che
usa RC4 con chiavi di 40, bits è stato recentemente forzato
da almeno due gruppi indipendenti in circa otto giorni di attività.
6.3 Cifratori a Blocchi
Molti algoritmi comuni di crittografia sono cifratori a blocchi,
ad es. IDEA, DES. Ciò significa che prendono un blocco
di dati di dimensione fissata, di solito 64 bits, e lo trasformano
in una altro blocco di 64 bits usando una funzione selezionata
dalla chiave. Se lo stesso blocco è cifrato con la stessa
chiave per due volte dà lo stesso risultato, e questo potrebbe
essere utile per un hacker. Quindi si cerca di evitarlo principalmente con
due metodi:
- CFB mode: un blocco cifrato è ottenuto cifrando
il precedente blocco cifrato e facendone lo XOR con il blocco
non cifrato.
- CBC mode: un blocco cifrato è ottenuto facendo
prima lo XOR del blocco non cifrato con il blocco precedentemente
cifrato e cifrando ciò che risulta.
Il blocco precedentemente cifrato in entrambi i casi è
memorizzato in un Initialization Vector (IV).
Ulteriori informazioni sui cipher modes possono essere trovate
in: Bruce Schneier: "Applied Cryptography", John Wiley
& Sons, 1994.
6.4 Hash Functions per la crittografia.
- MD5 (Message Digest Algorithm 5) è un algoritmo
hash sicuro sviluppato alla RSA Data Security, Inc. Può
essere usato con stringhe di arbitraria lunghezza rappresentabile
con 128 bits. MD5 è molto usato e considerato ragionevolmente
sicuro. MD5 è descritto in: Bruce Schneier: "Applied
Cryptography", John Wiley & Sons, 1994.
- MD2, MD4: sono versioni vecchie di algoritmi
della RSA Data Security. Il loro uso non è più consigliato.
- SHA (Secure Hash Algorithm, anche SHS, Secure
Hash Standard): è un algoritmo hash pubblicato dal governo
USA e produce un valore a 160 bit a partire da una stringa di
lunghezza arbitraria. E' comunemente considerato abbastanza sicuro
ed è relativamente nuovo.