1. Introduzione: Crittografia a chiave pubblica.

 

La sicurezza è uno dei problemi fondamentali del nostro tempo e la mancanza di sicurezza nella maggior parte delle reti ha contribuito alla ricerca di soluzioni che hanno aiutato molti utenti a mantenere segrete le loro comunicazioni. I fattori che hanno contribuito alla mancanza di sicurezza delle reti (puntiamo l’attenzione su Internet) si possono sintetizzare in:

La crittografia gioca un ruolo importante nell’implementazione di un sistema sicuro.

E’ usata per nascondere informazioni private che sono esposte in parti del sistema, come canali di comunicazione fisici, che sono vulnerabili ad attacchi come “eavesdropping” e “messagge tampering”. In questo modo tali informazioni possono essere decifrate solo dal proprietario della chiave di cifratura.

E’ usata come supporto al meccanismo di autenticazione tra coppie di utenti. Un utente che decifra un messaggio usando una “chiave inversa” può assumere che il messaggio è autentico se contiene determinati valori attesi. E’ improbabile pensare di decifrare il messaggio con un'altra chiave, e il ricevente può inferire che il mandante del messaggio sia il possessore della chiave di cifratura. Se la chiave è mantenuta segreta, o, nel caso di chiavi pubbliche, se una delle coppie di chiavi è mantenuta segreta, una successiva decifratura autentica il messaggio cifrato come derivante da un particolare sender.

E’ usata per implementare un meccanismo conosciuto come “digital signature”, che simula il ruolo della firma convenzionale e verifica che una copia non è stata alterata.

 

L’algoritmo più semplice è quello a chiave segreta o simmetrica: due utenti che vogliano comunicare devono condividere una chiave segreta che permette solo a loro di cifrare e decifrare il messaggio.

E’ evidente come il numero di chiavi da distribuire sia elevato: se si assume che per ogni coppia di interlocutori sia richiesta una chiave distinta, una rete di n utenti utilizza n(n-1)/2 chiavi.

La crittografia a chiave pubblica evita questa necessità.

Il protocollo di comunicazione si basa sulla disponibilità di solo due chiavi per ogni utente: una privata conosciuta solo dal proprietario e che viene mantenuta segreta, ed una pubblica che deve essere facilmente reperibile da tutti gli altri utenti.

Chiave pubblica e privata sono funzione di numeri primi grandi; la fattorizzazione di numeri “grandi” è un problema computazionalmente complesso e su questo fonda la sua sicurezza l’algoritmo.

Un messaggio cifrato con la chiave privata può essere decifrato esclusivamente con la chiave pubblica, e viceversa.

I problemi di questo protocollo sono: