Sono due le principali tecniche di cifratura dei dati: la crittografia simmetrica e la crittografia asimmetrica.
Ogni giorno quando usate il browser web, rispondete alle email, inviate moduli compilati da una pagina web ed effettuate altre attività avvengono processi di crittografia simmetrica e asimmetrica, a volte a vostra insaputa.
È importante capire le differenze tra la crittografia simmetrica e asimmetrica e come questi processi aiutano a rendere sicure le comunicazioni.
La crittografia simmetrica
La crittografia simmetrica è una tecnica di cifratura dei dati ampiamente utilizzata: essa prevede che i dati vengano crittografati e decifrati utilizzando una singola chiave segreta.
È una delle tecniche di crittografia più usate e anche una delle più antiche, risalente ai tempi dell’Impero Romano. Il cifrario di Cesare, che prende il nome proprio dal console e dittatore Giulio Cesare, che lo usava per proteggere la corrispondenza militare è un famoso esempio storico.
La crittografia simmetrica è utilizzata quotidianamente in molte industrie importanti nel settore della difesa, dell’aerospaziale, della finanza, dell’assistenza sanitaria e in molteplici frangenti in cui proteggere i dati sensibili di una persona, un’azienda o un’organizzazione riveste massima importanza.
Viene utilizzato un cifrario a flusso (stream cipher) o un algoritmo di cifratura a blocchi (block cipher): il primo converte il testo in chiaro in testo cifrato un byte alla volta mentre il secondo trasforma intere unità o blocchi di testo in chiaro usando una lunghezza di chiave predeterminata (ad esempio da 128, 192 o 256 bit).
I mittenti e i destinatari che usano la crittografia simmetrica per trasferirsi dei dati reciprocamente devono conoscere la chiave segreta per codificare e decodificare le informazioni. La chiave utilizzata da entrambi gli interlocutori è sempre la stessa e può essere utilizzata anche da parte di altri soggetti per avere accesso ai dati.
Nel caso della crittografia simmetrica è vitale sottrarre alla vista e al possesso di utenti non autorizzati la chiave segreta.
Esempi di cifratura simmetrica sono gli algoritmi Data Encryption Standard (DES), Triple Data Encryption Standard (Triple DES), Advanced Encryption Standard (AES), International Data Encryption Algorithm (IDEA) oltre ai protocolli TLS/SSL (questi ultimi usano però anche la cifratura asimmetrica come vedremo più avanti).
La crittografia AES, che utilizza cifrari a blocchi di 128, 192 o 256 bit per criptare e decriptare i dati, è una delle tecniche di crittografia simmetrica più note ed efficaci in uso oggi. La “forza” di AES rende ne rende l’utilizzo uno standard per la protezione di informazioni sensibili. È più sicuro rispetto a DES, Triple DES e IDEA.
La crittografia DES è ormai considerata dal National Institute of Standards and Technology (NIST) come un algoritmo di crittografia simmetrica obsoleto perché si è dimostrato inefficace nel salvaguardare le informazioni rispetto ad attacchi brute-force.
Il NIST ha dichiarato DES definitivamente superato e uguale sarà il destino del “fratello maggiore” Triple DES. Sebbene sia ancora in uso oggi, la crittografia Triple DES è stata ritirata e disconosciuta dal NIST a causa di crescenti problemi di sicurezza.
La crittografia IDEA è stata sviluppata come un sostituto per DES negli anni ’90 ma AES si è dimostrato più sicuro. IDEA è ora un algoritmo di cifratura a blocchi libero e aperto: chiunque può quindi usarlo ma è considerato anch’esso ormai obsoleto e inefficace nel proteggere adeguatamente dati personali e informazioni sensibili.
Transport Layer Security (TLS) così come il suo predecessore Secure Sockets Layer (SSL) utilizzano (anche) la crittografia simmetrica.
Quando un client si collega con un server vengono generate delle chiavi simmetriche uniche chiamate chiavi di sessione. Queste chiavi di sessione sono utilizzate per criptare e decriptare i dati condivisi tra il client e il server in quella specifica sessione client-server e in quel preciso momento. Una nuova sessione client-server genera nuove e uniche chiavi di sessione.
TLS/SSL utilizza, come osservato in precedenza, non solo la crittografia simmetrica ma anche quella asimmetrica.
La crittografia simmetrica permette di gestire grandi quantità di dati velocemente ed è facile da implementare. È semplice da usare ed AES rappresenta una delle forme più sicure per proteggere i dati attualmente disponibili.
Vantaggi della crittografia simmetrica
- Sicurezza: dati codificati usando un algoritmo a crittografia simmetrica come AES possono richiedere anche miliardi di anni per essere decifrati con attacchi brute-force rendendo di fatto impossibile accedervi da parte di soggetti non autorizzati. E ciò nonostante le enormi risorse computazionali derivanti dall’uso di batterie di GPU e infrastrutture di elaborazione basate sul cloud.
- Velocità: la crittografia simmetrica, a causa di chiave chiavi più corte e della relativa semplicità rispetto alla crittografia asimmetrica, è molto più veloce da gestire.
- Adozione e accettazione da parte dell’industria: un algoritmo di crittografia simmetrica come AES è diventato lo standard approvato dall’intera industria per i suoi benefici in termini di sicurezza e velocità.
Svantaggi della crittografia simmetrica
- Utilizzo di un’unica chiave segreta: se la chiave segreta è memorizzata in un supporto non sicuro o annotata da qualche parte un eventuale aggressore può accedere senza alcun problema ai dati crittografati e riportarli in chiaro.
- Impossibilità di trasmetterla attraverso lo stesso canale usato per trasferire i dati cifrati: la chiave crittografica non può ovviamente essere trasferita insieme con i dati crittografati attraverso lo stesso canale potenzialmente insicuro. Ecco perché quando si utilizza la cifratura simmetrica è bene far viaggiare i dati attraverso un canale e trasferire la chiave segreta attraverso un altro canale (meglio se spezzata in più parti e inviata usando canali differenti).
È quindi fondamentale garantire la sicurezza della chiave segreta sia “a riposo” che “in transito”.
La crittografia asimmetrica
A differenza della crittografia simmetrica che usa la stessa chiave segreta per criptare e decriptare i dati, la crittografia asimmetrica, nota anche come crittografia a chiave pubblica usa coppie di chiavi pubbliche e private collegate matematicamente. Esse vengono utilizzate per proteggere le informazioni e renderle accessibili da mittenti e destinatari autorizzati.
Se due soggetti, Alice e Bob, vogliono scambiarsi reciprocamente dati riservati usando un mezzo di comunicazione intrinsecamente insicuro qual è la rete Internet con la crittografia asimmetrica inviano l’uno all’altro le rispettive chiavi pubblica.
Ciascuna chiave è pubblica perché disponibile da parte di chiunque, anche di eventuali aggressori, ma è unica (non c’è nessun altro utente che usa la stessa chiave pubblica).
Alice userà quindi la chiave pubblica di Bob per criptare il file dato che è destinato solo a Bob e gli invierà i dati in forma crittografata.
Alla ricezione del file Bob userà la sua chiave privata (nessun altro la conosce, soltanto Bob e lui soltanto) per decifrare il file e accedere al contenuto inviato da Alice.
Lo stesso processo si applica quando Bob vuole rispondere ad Alice inviandole materiale crittografato e protetto dagli sguardi di terzi. Bob “legherà” il file da trasmettere alla chiave pubblica di Alice e Alice, alla ricezione dei dati, utilizzerà la sua chiave privata per decodificare le informazioni. La chiave privata di Alice sarà nota soltanto a lei stessa.
Si tratta ovviamente di una semplificazione classica che però rende bene l’idea di come funzionano gli algoritmi crittografici di tipo asimmetrico.
Una ragione per cui la crittografia asimmetrica è spesso considerata più sicura della crittografia simmetrica è che la prima, a differenza della sua controparte, non richiede lo scambio della stessa chiave di cifratura-decifratura tra due o più parti.
Le chiavi pubbliche vengono scambiate ma gli utenti che condividono i dati da proteggere usando un sistema di crittografia asimmetrica hanno coppie uniche di chiavi pubbliche e private: è sufficiente custodire gelosamente queste ultime perché il contenuto dei file riservati non possano essere decodificati da eventuali aggressori.
La crittografia asimmetrica viene utilizzata anche per l’apposizione della firma digitale e l’autenticazione degli utenti usando questo strumento.
Ciò comporta l’utilizzo di chiavi private per firmare digitalmente messaggi o file; le loro corrispondenti chiavi pubbliche sono utilizzate per confermare che i dati provengono dal mittente corretto e verificato. In un altro articolo abbiamo visto come funziona, come ottenere e usare la firma digitale.
Esempi di algoritmi a crittografia asimmetrica sono Rivest Shamir Adleman (RSA), Digital Signature Standard (DSS, che integra Digital Signature Algorithm o DSA), Elliptical Curve Cryptography (ECC), il metodo di scambio delle chiavi Diffie-Hellman e i protocolli TLS/SSL che come abbiamo visto si avvalgono anche della cifratura simmetrica.
Pubblicato nel 1977 nella sua implementazione iniziale, RSA è uno dei più vecchi esempi di algoritmi a crittografia asimmetrica. Sviluppato da Ron Rivest, Adi Shamir e Leonard Adleman, RSA genera una chiave pubblica moltiplicando due grandi numeri primi generati in modo pseudocasuale e usando questi stessi numeri primi viene derivata una chiave privata.
Con DSS, che incorpora l’algoritmo di firma digitale (DSA), la chiave privata del un mittente è usata per firmare digitalmente un messaggio o un file; il destinatario usa la chiave pubblica del mittente per confermare che la firma proviene dal mittente corretto e non da una fonte non autorizzata.
ECC è un’alternativa a RSA che usa chiavi di dimensioni più piccole e curve matematiche ellittiche per eseguire l’operazione crittografica. È spesso usata per firmare digitalmente le transazioni effettuate con le criptovalute (Bitcoin usa ECC o meglio ECDSA per firmare digitalmente le transazioni e garantire che i fondi siano spesi solo da utenti autorizzati).
ECC è molto più veloce di RSA in termini di generazione di chiavi e firme: è il nuovo standard per il web e le criptovalute oltre che per un’infinità di altre applicazioni.
Diffie-Hellman è un metodo di scambio sicuro di chiavi che due parti mai incontratesi prima possono usare per trasferire coppie di chiavi pubbliche e private su canali di comunicazione pubblici e insicuri. Prima di Diffie-Hellman due parti che cercavano di criptare le loro comunicazioni dovevano fisicamente pre-scambiare le chiavi in modo che entrambe le parti potessero decifrare i messaggi crittografati dell’altro. Diffie-Hellman ha fatto in modo che queste chiavi potessero essere scambiate in modo sicuro su canali di comunicazione pubblici.
TLS/SSL usa la crittografia asimmetrica per stabilire una sessione sicura client-server mentre il client e il server generano chiavi di crittografia simmetriche (procedura di handshake).
Dopo che l’handshake viene completato le chiavi di sessione client-server sono usate per crittografare le informazioni scambiate in quella stessa sessione.
Vantaggi della crittografia asimmetrica
- La distribuzione delle chiavi non è necessaria: rendere più sicuri i canali di distribuzione delle chiavi è stato a lungo un problema. La crittografia asimmetrica elimina completamente la distribuzione delle chiavi. Le chiavi pubbliche necessarie sono scambiate attraverso server a chiave pubblica e la divulgazione delle chiavi pubbliche non danneggia in alcun modo la sicurezza del contenuto dei messaggi. Dalle chiavi pubbliche è infatti impossibile derivare le chiavi private.
- Scambio di chiavi private non necessario: con la crittografia asimmetrica le chiavi private rimangono sempre conservate in un luogo sicuro. Le chiavi necessarie per codificare e decodificare le informazioni sensibili non sono mai (e non devono esserlo) trasmesse su un canale di comunicazione potenzialmente compromesso.
- Firma digitale/autenticazione del messaggio: con la crittografia asimmetrica i mittenti possono usare le loro chiavi private per firmare digitalmente e verificare che un messaggio o un file provenga da loro e non da una terza parte non fidata.
Svantaggi della crittografia asimmetrica
- Performance inferiori: la crittografia asimmetrica è più lenta rispetto alla controparte simmetrica a causa della maggiore lunghezza delle chiavi per non parlare del fatto che i calcoli da svolgere tendono ad essere molto più complessi.
La lunghezza straordinariamente lunga delle chiavi rende di fatto impossibile derivare chiavi private da chiavi pubbliche che comunque sono matematicamente collegate.
In un altro articolo abbiamo spiegato in breve come funziona la crittografia, perché è essenziale usarla e perché le richieste di alcuni governi che desiderano avere un accesso preferenziale per “rompere” gli algoritmi end-to-end sono irricevibili.