Quando si tratta di crittografia, si dice che l’ultima versione uscita non sia necessariamente la migliore a cui affidarsi. Sarebbe infatti più indicato, per garantire maggiore sicurezza, utilizzare sempre un algoritmo a crittografia già ampiamente analizzata e testata pubblicamente (aspetto che non può essere garantito nel caso di un nuovo algoritmo). Non solo: il paesaggio della crittografia è in continua evoluzione e per rimanere al passo con gli ultimi sviluppi, gli esperti del settore raccomandano di seguire le notizie e le raccomandazioni ufficiali come quelle rilasciate dal National Institute of Standards and Technology. Vediamo quindi quali sono i principali algoritmi di crittografia e a cosa servono.
Indice degli argomenti
Algoritmi con crittografia a chiave simmetrica: definizione e utilizzo
Per la maggior parte delle persone, “crittografia” significa prendere un testo in chiaro e convertirlo in uno cifrato, utilizzando la stessa chiave per crittografarlo e decifrarlo. Questa è la cifratura simmetrica ed è relativamente veloce rispetto ad altri tipi di cifratura (come quella asimmetrica). L’algoritmo più diffuso utilizzato in crittografia a chiave simmetrica è AES (Advanced Encryption Standard).
La cifratura simmetrica si compone di tre algoritmi di cifrature a blocchi, AES-128, AES-192 e AES-256, ognuno dei quali è ritenuto sufficiente a proteggere informazioni governative classificate fino al livello “secret”, mentre le informazioni cosiddette “top secret” richiedono chiavi con lunghezza 192 o 256 bit. Altri algoritmi comuni di crittografia simmetrica includono Blowfish, Twofish, Data Encryption Standard (DES), 3DES e RC4, anche se recenti attacchi hanno rivelato carenze in quest’ultimo. Mentre alcuni algoritmi di crittografia simmetrica (come AES) utilizzano cifrari a blocchi, altri (come RC4) utilizzano cifrari a flusso.
I tipi di crittografia simmetrica (o cifratura simmetrica) come 3DES e AES sono spesso sfruttati dai prodotti VPN. Lo svantaggio principale di crittografia a chiave simmetrica è che tutte le parti coinvolte devono scambiarsi la chiave utilizzata per crittografare i dati prima di poterli decifrare. Questa esigenza di distribuire e gestire un elevato numero di chiavi in modo sicuro, per la maggior parte dei servizi crittografici implica la necessità di fare uso anche di altri tipi di algoritmi di cifratura. La S/MIME (Secure/Multipurpose Internet Mail Extensions), per esempio, utilizza un algoritmo asimmetrico – algoritmo a chiave privata e pubblica – per la non-repudiation e un algoritmo simmetrico per la privacy e la protezione dei dati.
Algoritmi con crittografia a chiave asimmetrica: definizione e utilizzo
Gli algoritmi di cifratura asimmetrici utilizzano due chiavi interdipendenti, uno per crittografare i dati, e l’altro per decodificarli. Questa interdipendenza fornisce numerose diverse funzioni: in questo caso, le più importanti probabilmente sono le firme digitali che vengono utilizzate per garantire che un messaggio sia stato creato da una particolare entità o per autenticare sistemi o utenti remoti.
Uno degli algoritmi crittografici più comuni di crittografia asimmetrica è la scambio di chiavi Diffie-Hellman, che permette a due parti di scambiarsi chiavi di crittografia in modo sicuro a prescindere dal fatto che il canale di comunicazione sia pubblico o privato. L’RSA (Rivest, Shamir e Adleman) è un altro esempio di algoritmo a crittografia asimmetrica ampiamente utilizzato: è spesso usato nei protocolli del commercio elettronico come SSL ed è ritenuto sicuro per via delle chiavi sufficientemente lunghe e dell’uso di implementazioni aggiornate.
Poiché RSA è molto più lento rispetto alla crittografia simmetrica, in genere i dati sono cifrati con un algoritmo simmetrico e poi la chiave simmetrica, relativamente breve, è crittografata mediante RSA. Questo permette di inviare in modo sicuro ad altre parti la chiave necessaria per decodificare i dati, insieme ai dati simmetricamente crittografati.
La Funzione crittografica di hash
Una funzione crittografica di hash ha un ruolo un po’ diverso rispetto agli altri algoritmi crittografici: viene utilizzato per restituire un valore basato, per esempio, su una certa quantità dati (come un file o un messaggio). Qualsiasi modifica accidentale o intenzionale ai dati cambierà questo valore.
Un buon hash è unidirezionale e deve risultare quindi estremamente difficile da invertire (non permettendo così di risalire al valore originario). MD5 e SHA-1 erano algoritmi di hash ampiamente utilizzati, ma sono ormai considerati deboli e vengono sostituiti da SHA-224, SHA-256, SHA-384 o SHA-512, a volte indicate collettivamente come SHA-2. Microsoft, Google e Mozilla hanno annunciato di voler rimuovere il supporto SHA-1 dai prodotti dei loro browser. Anche se sulle varianti SHA-2 non è stato riportato ancora nessun attacco, queste sono algoritmicamente simili alla SHA-1 e così nei prossimi anni sarà selezionato un nuovo standard hash, SHA-3 (in modo simile a AES).