La crittografia che significa letteralmente “scrittura nascosta” (dal greco) è un particolare insieme di tecniche che si occupa di nascondere il contenuto di un messaggio a tutti tranne che al legittimo destinatario: queste tecniche sono fondamentali, anche spesso non sufficienti nel campo della sicurezza informatica.
Bisogna fare attenzione a non confondere la crittografia con la steganografia che, invece, si occupa di nascondere il messaggio a tutti tranne che al legittimo destinatario.
Ovviamente le due tecniche possono anche essere usate insieme (ad esempio posso nascondere un messaggio criptato all’interno di un’immagine in modo che, se anche venisse scoperto, non sarebbe possibile leggerlo).
Concentriamoci comunque sulla crittografia e iniziamo classificandola in base al metodo che viene utilizzato per rendere illeggibile il messaggio:
Criptazione per sostituzione e per trasposizione
In parole povere, criptare per sostituzione significa sostituire le lettere del messaggio con altre lettere utilizzando una chiave di criptazione e decriptazione ben precisa, vediamo un esempio semplicissimo per chiarirci le idee:
Messaggio in chiaro: “CIAO MONDO”.
Se cambio ogni lettera con quella successiva (chiave = 1) ottengo
“DLBP NPOEP”
Ovviamente un qualsiasi crittografo alle prime armi sarà in grado di decifrare il messaggio in questione: si tratta solo di un esempio per rendere l’idea di cosa significhi criptare per sostituzione (approfondisci)
Vediamo ora, invece la criptazione per trasposizione, in questo caso le lettere del messaggio rimangono le stesse, viene però cambiato il loro ordine, vediamo anche qui un esempio usando lo stesso messaggio in chiaro di prima (approfondisci):
C M O
I O
A N
O D
Potrebbe essere cifrato come “CMO IOA NOD”.
Anche questo è ovviamente un esempio esemplificativo, in ogni caso è possibile anche utilizzare i due metodi insieme, l’importante è che in ogni caso sia il mittente del messaggio che il destinatario siano in grado di mettere in qualche modo in comune la chiave di criptazione e di decrittazione.
Questa ultima considerazione ci porta a classificare la crittografia anche in base al tipo di chiave che viene usata, e in questo caso parliamo di crittografica a chiave simmetrica e asimmetrica; vediamole nel dettaglio
Crittografia a chiave simmetrica
In questo caso, si utilizza la medesima chiave sia per criptare che per decriptare.
Questo comporta però un problema da non sottovalutare: il problema della distribuzione delle chiavi.
Infatti, se Marco e Anna volessero mandarsi un messaggio criptato utilizzando questo sistema, dovrebbero per forza incontrarsi di persona o spedirsi in qualche modo la chiave (che anche se fosse criptata, dovrebbe darebbe il medesimo problema) o incontrarsi di persona.
Ovviamente tutto questo non è possibile quando parliamo di comunicazioni via rete: pensa un po’ a cosa succederebbe se dovessi ogni volta incontrare il tuo interlocutore dall’altra parte del mondo per scambiarti la chiave del messaggio; tanto varrebbe scambiarsi il messaggio di persona!
Questo non significa che la crittografia simmetrica non sia utile o non venga utilizzata: per esempio il governo USA per criptare i documenti top secret utilizza appunto una crittografia di questo tipo con algoritmo AES a 256 bit.
Crittografia a chiave asimmetrica
In questo caso, si utilizzano come chiavi delle particolari funzioni matematiche dette “complementari”, ovvero se uso una per criptare potrò decriptare solo con l’altra e viceversa.
Questo comporta che, un utente possiederà una coppia di chiavi: una che terrà per se (chiave privata) e una che renderà disponibile al destinatario (chiave pubblica).
Utilizzando questo sistema possiamo soddisfare tre diverse esigenze: garantire l’identità del mittente, garantire la confidenzialità del messaggio, garantire entrambi.
Vediamole una per una:
Garantire l’identità del mittente
in questo caso, Marco cripterà il messaggio in chiaro con la sua chiave privata e lo spedirà ad Anna; Anna, decriptandolo con la chiave pubblica di Marco, sarà sicura che il messaggio è stato mandato proprio da lui in quanto solo la chiave pubblica di Marco potrà decriptare un messaggio criptato con la sua chiave privata.
Ovviamente però chiunque altro potrà decriptare il messaggio, e quindi non ne viene garantita la confidenzialità.
Garantire la confidenzialità del messaggio
In questo caso, Marco cripterà il messaggio in chiaro con la chiave pubblica di Anna; solo Anna lo potrà decriptare con la sua chiave privata e avrà quindi la garanzia che nessun’altro avrà letto il messaggio.
E’ chiaro però che Anna non avrà garanzia sul fatto che il messaggio sia stato mandato da Marco: chiunque infatti avrebbe potuto sostituirlo.
Garantire la confidenzialità, l’identità del mittente e l’integrità del messaggio
Marco cripta il messaggio in chiaro prima con la sua chiave privata, e poi lo cripta di nuovo con la chiave pubblica di Anna.
Anna ricevuto il messaggio criptato, svolge l’operazione inversa: prima lo decripta con la sua chiave privata, e poi lo decripta con la chiave pubblica di Marco.
In questo caso Anna, sarà certa sia dell’identità del mittente (Marco) sia della confidenzialità del messaggio.
Questo comporta anche che, essendo certo il mittente e segreto il messaggio, quest’ultimo non è stato modificato da nessuno e quindi è garantita l’integrità del messaggio.
Altre considerazioni sulla crittografia asimmetrica
Per quanto riguarda la crittografia asimmetrica possiamo fare ancora alcune considerazioni un paio di considerazioni:
La prima è dovuta alla complessità dei calcoli che vengono eseguiti per criptare e decriptare un testo; la procedura rischia di essere piuttosto lenta; ecco perchè la soluzione trovata è quella di criptare il testo con un algoritmo simmetrico come AES e poi criptare la sola chiave con un algoritmo asimmetrico come RSA.
La seconda considerazione è dovuta dal fatto che un utente malintenzionato potrebbe pubblicare una chiave pubblica a nome di un altro sostituendosi a lui (ad esempio Andrea, potrebbe pubblicare una chiave pubblica a nome di Marco e mandare un messaggio ad Anna fingendosi, appunto Marco).
Questo problema si risolve ricorrendo alle Certification Authority, ovvero delle particolari organizzazioni al di sopra di ogni sospetto che garantiscono integrità ed autenticità dell’elenco delle chiavi pubbliche.