1 Crittografia simmetrica e asimmetrica

La crittografia è la scienza che si occupa di proteggere delle informazioni rendendole incomprensibili a chi le dovesse intercettare, in modo che possano essere lette e capite solo dal destinatario75. Il messaggio da proteggere viene detto testo in chiaro, mentre quello ``trasformato'' in modo da essere incomprensibile viene detto testo cifrato; la trasformazione da testo in chiaro a testo cifrato si dice cifratura, mentre la trasformazione inversa si dice decifratura. La trasformazione crittografica è detta algoritmo di cifratura, e specifica la procedura che trasforma il testo in chiaro in quello cifrato. Questa trasformazione è parametrica, e il parametro è detto chiave: questo significa che la trasformazione in sé è soltanto un procedimento, che però per essere attuato ha bisogno di un'informazione ulteriore, da cui dipende il risultato. Per decifrare il messaggio non basta conoscere l'algoritmo di cifratura utilizzato, ma è necessario conoscere anche la chiave. In genere nello studio degli algoritmi crittografici e della loro sicurezza si ipotizza che l'algoritmo sia noto a tutti e che ciò che non è noto sia esclusivamente la chiave: questo perché oggi si considera inaffidabile un sistema crittografico la cui sicurezza si basi sulla segretezza dell'algoritmo. La crittografia tradizionale si basa sul meccanismo descritto in figura A.1, per cui cifratura e decifratura sono effettuate utilizzando la stessa chiave: per questo si parla di crittografia simmetrica, o anche, dato che tale chiave deve essere nota solo ai due interlocutori, di crittografia a chiave segreta. Un noto algoritmo di questo tipo è il DES (Data Encryption Standard).

Figura A.1: Crittografia simmetrica.
\includegraphics{immagini/critt_simm.eps}

Il grosso problema di questo approccio è però la distribuzione delle chiavi: se due interlocutori vogliono usare un algoritmo di questo tipo per comunicare in modo sicuro devono prima accordarsi in qualche modo sulla chiave, per esempio vedendosi di persona. Dato che il canale che usano per la trasmissione dei messaggi non è sicuro (altrimenti non avrebbero bisogno di cifrarli), non possono infatti utilizzarlo per trasmettere la chiave. Il problema è stato risolto in tempi relativamente recenti (anni Settanta) con l'invenzione della crittografia a chiave pubblica. Con algoritmi di questo tipo ognuno ha due chiavi: una pubblica da distribuire a tutti quelli con cui vuole comunicare, e una privata da tenere segreta. Ciò che viene cifrato con la chiave pubblica (operazione che può essere fatta da chiunque) può essere decifrato solo con la chiave privata corrispondente (operazione che può essere fatta solo dal proprietario della chiave): in questo modo non c'è più il problema di comunicare segretamente la chiave, perché questa è nota a tutti; per comunicare in modo sicuro con una persona basta cifrare il messaggio con la sua chiave pubblica, come illustrato in figura A.2. Gli algoritmi di questo tipo sono detti a chiave asimmetrica, e il più noto tra essi è probabilmente RSA (si veda l'appendice A.4).

Figura A.2: Crittografia asimmetrica.
\includegraphics{immagini/critt_asimm.eps}

Una delle grosse innovazioni permesse dalla crittografia asimmetrica è la firma digitale: il mittente di un messaggio può infatti firmarlo grazie alla sua chiave privata (che solo lui possiede), ma tutti sono in grado di verificare l'autenticità della firma grazie alla chiave pubblica (che è globalmente nota). La firma può poi essere abbinata alla normale cifratura, ottenendo messaggi firmati e cifrati, nel modo seguente (figura A.3). Si ipotizzi che Bob voglia mandare un messaggio ad Alice: per prima cosa lo cifrerà con la propria chiave privata (firma) e poi con quella pubblica di Alice (cifratura), infine spedirà il messaggio. Quando Alice lo riceverà, prima lo decifrerà con la propria chiave privata (operazione che solo lei può fare, per cui è garantita la confidenzialità) e poi con quella pubblica di Bob: se l'operazione va a buon fine Alice ha la certezza che il mittente è davvero Bob, perché solo lui può aver cifrato il messaggio con la propria chiave privata. In realtà il modo in cui si realizza la firma digitale non è proprio questo, ma è leggermente più complicato. Ciò che il mittente cifra con la propria chiave privata per garantire l'autenticità non è l'intero messaggio, ma una sua ``impronta'' (detta digest) ottenuta mediante una particolare funzione (funzione di hash, si veda l'appendice A.5); il digest cifrato viene poi allegato al messaggio e ne costituisce la firma. Il destinatario calcola il digest del messaggio ricevuto (la funzione di hash è pubblica) e lo confronta con quello che ottiene decifrando con la chiave pubblica del mittente la firma allegata: se coincidono la firma è autentica.

Figura A.3: Cifratura e firma digitale.
\includegraphics{immagini/firma.eps}

Si potrebbe pensare che dopo l'invenzione della crittografia a chiave pubblica quella a chiave segreta abbia perso interesse, ma le cose non stanno così. Gli algoritmi asimmetrici sono infatti computazionalmente molto più onerosi di quelli simmetrici, per cui il loro uso risulta molto più pesante. Una soluzione comunemente adottata è l'uso della crittografia asimmetrica per concordare una chiave segreta da utilizzare poi per scambiarsi i messaggi tramite un algoritmo a chiave simmetrica: in questo modo il ``pesante'' algoritmo a chiave pubblica viene usato solo per trasmettere una piccola quantità di dati (la chiave segreta), mentre per il resto si usa il più leggero algoritmo a chiave segreta.

Footnotes

... destinatario75
Non bisogna confondere i sistemi crittografici, in cui il messaggio è identificabile ma incomprensibile, con quelli atti a nascondere l'informazione in modo che non ci si accorga della sua presenza (ad esempio scrivere un messaggio con inchiostro simpatico). La scienza che si occupa di queste ultime tecniche è detta steganografia.
©2001 Davide Cerri