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 lattenzione su Internet) si possono sintetizzare in:
La crittografia gioca un ruolo importante nellimplementazione 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.
Lalgoritmo 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 lalgoritmo.
Un messaggio cifrato con la chiave privata può essere decifrato esclusivamente con la chiave pubblica, e viceversa.
I problemi di questo protocollo sono: