MokaByte
Numero 31 - Giugno 1999
|
|||
|
|
delle informazioni sulla rete |
|
|
Ugo Chirico |
|
|
Una utile panoramica sui concetti di base e sulle tecniche di crittografazione utilizzabili in internet. |
IntroduzioneIl crescente utilizzo di internet come mezzo per lo scambio rapido di informazioni, ha enfatizzato la necessità di comunicazioni sicure, private, protette da sguardi indiscreti.Sfortunatamente la rete, così come è stata concepita, non supporta un buon livello di sicurezza e di privacy. Le informazioni viaggianti sono trasmesse in chiaro e potrebbero essere intercettate e lette da qualsiasi individuo. Pertanto, è stato necessario creare dei metodi che, rendano le informazioni indecifrabili in modo che solo il mittente e il destinatario possano leggerle, che ne assicurino l’integrità e che consentano l'autenticazione degli interlocutori. La crittografia si propone di ricercare algoritmi capaci di proteggere, con un considerevole grado di sicurezza, le informazioni ad alto valore contro possibili attacchi da parte di criminali, della concorrenza o di chiunque possa usarle per arrecare danno. Comprende tutti gli aspetti relativi alla sicurezza dei messaggi, all'autenticazione degli interlocutori, alla verifica dell’integrità. Sistemi crittografici sono presenti un pò dovunque nella storia anche se, finora, sono stati usati principalmente in ambito militare. Già Giulio Cesare, quando inviava un messaggio riservato, non fidandosi del messaggero, sostituiva ad ogni A una D, ad ogni B una E e così via per le altre lettere. Solo chi conosceva la regola "Sposta di tre" poteva decifrare il messaggio. Inoltre, durante la seconda guerra mondiale alcuni successi alleati sono riconducibili alla scoperta della regola di cifratura usata dai tedeschi per nascondere i loro messaggi. Attualmente la crittografia non è più circoscritta all'ambito strettamente militare. Si sta cercando di sfuttarne tutti i vantaggi per creare una rete sicura a disposizione della società moderna che richiede, ogni giorno, algoritmi sempre piu potenti e sicuri per la protezione delle informazioni e per l'autenticazione degli utenti. Terminologia Per meglio familiarizzare con i concetti nell'ambito della crittografia diamo alcune definizioni:
La CrittografiaLa crittografia fornisce una serie di algoritmi e di metodi per rendere il messaggio indecifrabile. Alcuni di essi sono molto potenti ed hanno resistito ai più svariati attacchi, altri meno sicuri ma altrettanto importanti.L'obiettivo di ogni algoritmo di cifratura è quello di rendere il più complicato possibile la decifratura di un messaggio senza la conoscenza della chiave. Se l'algoritmo di cifratura è buono, l'unica possibilità per decifrare il messaggio è di provare, una per volta, tutte le possibili chiavi fino a trovare quella giusta, ma tale numero cresce esponenzialmente con la lunghezza della chiave. Quindi, se la chiave è lunga soltanto 40 bit saranno necessari al più 240 differenti tentativi. Se ne deduce che l'operazione più delicata in un sistema crittografico è proprio la generazione della chiave. Affinchè esso sia effettivamente sicuro, deve prevedere chiavi di considerevole lunghezza; inoltre, le chiavi devono essere generate in maniera realmente casuale e dunque assolutamente imprevedibile per un ipotetico decifratore. Per tale motivo vengono scartati i generatori di numeri pseudo-casuali forniti dal computer, di solito adottati per giochi e simulazioni, e si preferisce adottare sistemi più complessi che sfruttano il rumore di fondo del mondo fisico che non può in nessun modo essere predetto. Buone sorgenti di numeri casuali risultano essere i processi di decadimento radioattivo, il rumore di fondo in un semiconduttore, o gli intervalli di tempo che intercorrono tra le azioni dell'operatore sulla tastiera. La sorgente più comunemente utilizzata sfrutta il movimento del mouse o la misura in millisecondi del tempo di battitura dell'operatore. Risulta tuttavia
molto difficile determinare la bontà di un algoritmo. Talvolta algoritmi
che sembravano molto promettenti si sono rivelati estremamante semplici
da violare lanciando l'opportuno attacco. E' comunque preferibile affidarsi
a quegli algoritmi che sembrano resistere da più tempo.
Algoritmi a chiave privataGli algoritmi a chiave privata, o algoritmi simmetrici sono i più comunemente utilizzati. Essi usano la stessa chiave per cifratura e decifratura. Entrambi gli interlocutori conoscono la chiave usata per la cifratura, detta chiave privata, o chiave simmetrica, e soltanto loro possono cifrare e decifrare il messaggio (Figura 1).
Sulla base del tipo di computazione si individuano due tipi di cifratura:
Tra i primi menzioniamo:
Algoritmi a chiave pubblicaGli algoritmi a chiave pubblica usano due chiavi complementari, dette chiave pubblica e chiave privata, create in modo che la chiave privata non può assolutamente essere ricavata dalla chiave pubblica.Il paradigma di comunicazione è il seguente: i due interlocutori A e B hanno entrambi una coppia di chiavi. A richiede a B la sua chiave pubblica con la quale cifra il messggio e spedisce il risultante messaggio cifrato a B. Il messaggio cifrato con una chiave pubblica può essere decifrato solo con la corrispondente chiave privata. Pertanto B, mediante la sua chiave privata, può decifrare il messaggio e leggerlo in tutta sicurezza. Con questo metodo solo la chiave privata deve essere tenuta segreta mentre la chiave pubblica può essere distribuita a chiunque voglia spedire un messaggio al possessore della chiave. Qualora finisse nelle mani di un pirata, egli non potrà fare altro che cifrare messaggi senza poterli poi decifrare (Figura 2).
La crittografia
a chiave pubblica si basa su algoritmi molto astuti facilmente calcolabili
in un senso ma estremamente complicati da risolvere in senso inverso. L'algoritmo
di Diffie-Hellman [He80], ad esempio, si basa sul principio dei logaritmi.
I due interlocutori A e B hanno ciascuno un numero segreto, rispettivamente
x e y ed entrambi conoscono un numero pubblico g. A calcola gx ed invia
il risultato a B che può calcolare il valore (gx)y . Tale numero
è comune ad entrambi (allo stesso modo A può calcolare (gy)x)
e diventa pertanto la loro comune chiave segreta di cifratura. Qualcuno
potrebbe obbiettare e dire che intercettando gx e gy e conoscendo g è
possibile risalire a (gx)y , allora, per scoraggiare anche la più
astuta delle spie, A usa la funzione modulo e invia a B il valore gx mod
p, poichè, come la matematica suggerisce, è quasi impossibile
ricavare x da gx mod p anche conoscendo g e p [He79] [He80]. Successivamente,
l'algoritmo di Diffie-Hellman è stato perfezionato con ulteriori
integrazioni metematiche dando origine ai sistemi crittografici moderni
basati su di una coppia di chiavi complementari, una privata, il valore
di x, e una pubblica composta da g, p, e dal valore di gx mod p [He80]
[Re94].
La tecnica adottata nella praticaGli algoritmi a chiave pubblica sono considerevolmente più' lenti di quelli a chiave privata, in particolare nella cifratura di grosse moli di dati. Pertanto, nei sistemi crittografici si preferisce adottare algoritmi simmetrici per la cifratura dei messaggi e algoritmi a chiave pubblica per la cifratura delle chiavi simmetriche.Il mittente genera una chiave simmetrica, cifra il messaggio, cifra la chiave generata con la chiave pubblica del destinatario e invia insieme il messaggio e la chiave generata. Il destinatario decifra la chiave simmetrica con la propria chiave privata ed infine decifra il messaggio. La firma digitaleGrazie alla complementarità' delle chiavi pubblica e privata, una stringa cifrata con una chiave può essere decifrata solo mediante l'altra chiave. Pertanto, la decifratura di un testo mediante una chiave assicura che esso è stato cifrato con la chiave complementare.Gli algoritmi di firma digitale sfruttano questa caratteristica per verificare la reale provenienza del messaggio (autenticazione del mittente). La firma digitale è una stringa ricavata dal messaggio applicando un particolare algoritmo, cifrata mediante la chiave privata del mittente e spedita insieme al messaggio. La decifratura della firma mediante la chiave pubblica prova che è stata cifrata dal mittente o da qualcuno in possesso della sua chiave privata. Inoltre, il confronto della stringa decifrata con una stringa ricavata ex-novo dal messagio applicando lo stesso algoritmo, consente di verificare l’integrità: se le due stringhe coincidono il messaggio è integro. Il paradigma
è il seguente: il mittente, unico possessore della chiave privata,
produce un’impronta del messaggio, detta hash o message-digest, e la cifra
con la sua chiave privata. L'hash cifrato rappresenta la firma digitale.
Gli algoritmi di hashingGli algoritmi di firma digitale si affidano principalmente sulla potenza degli algoritmi di hashing. Essi sono algoritmi one-way che producono, a partire da una stringa a lunghezza variabile, una stringa a lunghezza fissa (tipicamente tra 64 e 255 bit) che è caratteristica della stringa data.La loro potenza è dovuta alle seguenti peculiarità: data una stringa di hash è computazionalmente impossibile ricavare il messaggio dal quale è stata generata; è computazionalmente impossibile determinare due messaggi che producono la stessa stringa di hash; qualsiasi messaggio, sottoposto allo stesso algoritmo qualsivoglia numero di volte produce sempre lo stesso valore di hash. Gli algoritmi più diffusi sono: - MD5 (Message Digest Algorithm 5), sviluppato da RSA Data Security inc. [RSA], è il successore di MD2, e MD4, algoritmi ormai in disuso. Produce hash di 128 bit da stringhe di lunghezza arbitraria, è largamente usato ed è considerato ragionevolmente sicuro [Sc94]. - SHA (Secure Hash Algorithm), sviluppato dal NIST (National Institute of Standards and Technology) e dal NSA (National Security Agency), è usato dal governo USA e produce stringhe di hash a 160 bit da stringhe di lunghezza arbitraria. E' considerato abbastanza sicuro. Usato solitamente insieme al DSS. La CertificazioneI certificati digitali svolgono una funzione essenziale nella crittografia a chiave pubblica. Il loro obiettivo è di autenticare un individuo certificando che la chiave pubblica, in esso contenuta, appartiene realmente al soggetto per il quale è stato rilasciato. Assume pertanto un ruolo determinante nello scambio della chiave pubblica.Un certificato è, a tutti gli effetti, un documento di identità digitale. Come un documento reale, esso contiene un insieme di attributi che identificano il possessore del certificato ed è rilasciato da un’organismo ufficiale, detto Autorità di Certificazione, ufficialmente riconosciuto dalla società, che garantisce l'autenticità delle informazioni in esso contenute. Solitamente, oltre alle informazioni relative al soggetto, contiene la sua chiave pubblica, alcune informazioni relative all’autorità di certificazione che lo ha rilasciato, la firma digitale apposta dall’autorità di certificazione ed il periodo di validità. Il paradigma è il seguente: un’individuo compila una richiesta di certificazione con i suoi dati e la sua chiave pubblica e la invia ad una autorità di certificazione. Quest’ultima verifica l’autenticità dei dati e, se il responso è positivo, produce un certificato e lo rilascia al richiedente firmandolo con la propria chiave privata. Il richiedente può ora inviare il proprio certificato ad un altro individuo per farsi autenticare e per consegnargli la propria chiave pubblica. La verifica dell’identità dell’individuo avviene mediante il controllo della firma apposta sul certificato dall'autorità di certificazione che, pertanto, mette a disposizione di tutti la propria chiave pubblica. In realtà mette a disposizione il proprio certificato auto-firmato, o firmato da un'altra autorità di certificazione. ConclusioniAttualmente la crittografia sta ricevendo grande attenzione da parte del mondo scientifico dovuta al grande sviluppo dell'e-commerce. Grazie ad essa sono stati sviluppati protocolli per la navigazione sicura sul WEB, come il protocollo https basato su SSL (Secure Socket Layer), protocolli per la riservatezza della posta elettronica, come S/MIME e server di posta che supportano i protocolli SMTP, POP3 o IMAP attraverso un canale reso sicuro mediante SSL.Inoltre, stanno riscuotendo grande successo le tecniche di firma digitale. Il comune di Bologna è stato il primo in Italia ad adottare questa nuova tecnologia ed ha aperto degli sportelli virtuali sul web mediante i quali i cittadini, con il proprio certificato digitale e la propria chiave privata, possono richiedere il rilascio di documenti e altri certificati. La coppia certificato-chiave privata, detta talvolta PSE (Personal Security Environment) [PKCS#12], reppresenterà la nostra futura carta d'identità. Bibliografia
[He80] Hellman, M.E., Merkle R. C., Public Key Cryptographic Apparatus and Method. US Patent 4,218,582, 1980 [PKCS#12] Public Key Cryptography Standard, RSA Data Security Inc., http://www.rsa.com [Re94] Man Young Rhee, Cryptography and Secure Data Communications. Mc Graw-Hill, 1994 [RSA] RSA Data Security Inc, http://www.rsa.com [Sc94] Schneire B., Applied Cryptography. John Wiley & Sons, 1994
|
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|