La crittografia è il processo di trasformazione dei dati in una forma illeggibile per la protezione delle informazioni durante la loro trasmissione o archiviazione. Il suo scopo principale è garantire la confidenzialità dei dati, impedendo a persone non autorizzate di accedere o comprendere le informazioni crittografate.
Alla base delle principali tecniche di crittografia c’è un cifrario: in un cifrario ogni carattere del testo da cifrare viene trasformato in un altro carattere attraverso un procedimento matematico detto algoritmo di crittografia.
Esistono anche tecniche di crittografia alla cui base c’è un codice anziché un cifrario: in un codice ogni carattere (o gruppo di caratteri) rappresenta un concetto, un informazione legata a quella specifica trasmissione; ad esempio la X potrebbe voler dire “risiedo in Italia” e la Y “risiedo all’estero”.
Concetti Chiave della Crittografia
Per cifrare un testo, occorrono essenzialmente due cose, ossia l’algoritmo di cifratura (pubblico) ed una chiave (segreta).
Inoltre possiamo definire anche:
- Plaintext (Testo in Chiaro): Il messaggio originale o i dati prima che siano crittografati. Questo è il testo leggibile che si desidera proteggere.
- Ciphertext (Testo Cifrato): Il messaggio o i dati dopo essere stati crittografati. Questo testo non può essere facilmente compreso senza la chiave appropriata per decifrarlo.
- Chiave di Crittografia: Una stringa di caratteri che controlla la trasformazione dei dati. La chiave è utilizzata sia per crittografare che per decrittografare i dati.
- Algoritmo di Crittografia (Cifra): Un insieme di regole matematiche che definisce come i dati vengono trasformati da testo in chiaro a testo cifrato e viceversa.
Va notato che è solo la chiave a dover essere segreta o, almeno, molto difficile da individuare in tempi brevi.
Tipi di Crittografia
Esistono principalmente due tipi di crittografia:
- Crittografia Simmetrica (A Chiave Simmetrica):
- Descrizione: Utilizza una singola chiave per la crittografia e la decrittografia dei dati. La chiave deve essere mantenuta segreta e condivisa tra le parti autorizzate.
- Vantaggi: È generalmente più veloce ed efficiente in termini di risorse computazionali rispetto alla crittografia asimmetrica.
- Svantaggi: La necessità di una chiave segreta condivisa rende complesso il processo di distribuzione sicura delle chiavi, specialmente in reti di grandi dimensioni.
- Algoritmi Comuni: AES (Advanced Encryption Standard), DES (Data Encryption Standard), 3DES (Triple DES), Blowfish.
- Crittografia Asimmetrica (A Chiave Asimmetrica):
- Descrizione: Utilizza due chiavi distinte ma matematicamente correlate: una chiave pubblica (per crittografare i dati) e una chiave privata (per decrittarli). La chiave pubblica è condivisa liberamente, mentre la chiave privata è mantenuta segreta.
- Vantaggi: Risolve il problema della distribuzione delle chiavi, poiché non è necessario condividere la chiave privata. Inoltre, consente l’autenticazione e la verifica dell’identità.
- Svantaggi: È generalmente più lenta e computazionalmente intensiva rispetto alla crittografia simmetrica.
- Algoritmi Comuni: RSA (Rivest-Shamir-Adleman), ECC (Elliptic Curve Cryptography), Diffie-Hellman.
Crittografia Ibrida
I sistemi crittografici ibridi uniscono i vantaggi dei sistemi a chiave segreta e dei sistemi a chiave pubblica.
- La crittografia a chiave segreta è rapida ed efficiente. E’ usata principalmente per crittografare testi in chiaro molto lunghi. Tuttavia, sia il mittente che il destinatario devono essere in possesso della chiave segreta prima della spedizione del messaggio criptato. Il che non è sempre possibile.
- La crittografia a chiave pubblica permette di inviare messaggi criptati senza dover precedentemente distribuire una chiave segreta ai destinatari. Tuttavia, è molto lenta ed è generalmente usata per crittografare piccole quantità di dati.
Qual è il vantaggio della crittografia ibrida?
La crittografia ibrida permette di usare la crittografia a chiave segreta anche quando il destinatario non è in possesso della chiave segreta. Il sistema crittografico ibrido funziona in questo modo:
Il mittente usa un sistema crittografico a chiave segreta per criptare un messaggio anche molto lungo. Poi usa un sistema crittografico a chiave pubblica per criptare e inviare la chiave segreta al destinatario che la riceve e la decripta tramite la chiave pubblica. Infine, il mittente invia il messaggio criptato con chiave segreta al destinatario.
Quando il destinatario riceve il messaggio criptato, può decriptarlo usando la chiave segreta ricevuta precedentemente tramite il sistema crittografico a chiave pubblica. In questo modo la spedizione del messaggio è rapida ed efficiente come in un sistema a chiave segreta ma non occorre distribuire in precedenza la chiave segreta al destinatario.
Funzioni di Hash
Oltre ai due tipi principali di crittografia, esistono anche le funzioni di hash. Queste non sono esattamente un tipo di crittografia, ma sono fondamentali per garantire l’integrità e la protezione dei dati:
- Funzione di Hash: Una funzione matematica che prende un input (o “messaggio”) e restituisce una stringa di lunghezza fissa, chiamata “hash”. Qualsiasi cambiamento nei dati originali produrrà un hash completamente diverso, rendendolo utile per verificare che i dati non siano stati modificati.
- Algoritmi Comuni: SHA-256 (Secure Hash Algorithm), MD5 (Message Digest Algorithm 5).
Le funzioni di hash sono ampiamente utilizzate nelle firme digitali, nella verifica dell’integrità dei file, e nelle password.
Applicazioni della Crittografia
La crittografia il cui scopo principale è quello della protezione dei dati, viene utilizzata in molti campi, tra cui:
- Sicurezza delle Comunicazioni:
- HTTPS (Hypertext Transfer Protocol Secure): Protegge la comunicazione tra browser web e server utilizzando SSL/TLS, che combina crittografia simmetrica e asimmetrica.
- VPN (Virtual Private Network): Utilizza crittografia per creare un “tunnel” sicuro attraverso il quale i dati possono viaggiare su Internet.
- Protezione dei Dati:
- Crittografia dei Dati a Riposo: Protegge i dati archiviati su dispositivi di archiviazione, come hard disk o SSD, utilizzando algoritmi come AES.
- Crittografia dei Dati in Transito: Protegge i dati mentre vengono trasferiti attraverso reti non sicure.
- Autenticazione e Identificazione:
- Firme Digitali: Utilizzano la crittografia asimmetrica per garantire l’autenticità e l’integrità di un messaggio o documento.
- Certificati Digitali: Utilizzati per verificare l’identità dei siti web e delle entità.
- Protezione delle Password:
- Le password sono spesso memorizzate come hash crittografici, quindi anche se un database di password viene compromesso, le password effettive non possono essere facilmente recuperate.
Algoritmi di Crittografia Comuni
Ecco una panoramica dei principali algoritmi di crittografia:
- AES (Advanced Encryption Standard): Algoritmo simmetrico molto utilizzato, considerato lo standard di crittografia più sicuro attualmente.
- RSA: Algoritmo asimmetrico ampiamente utilizzato per la crittografia di chiavi, firme digitali e distribuzione sicura delle chiavi.
- ECC (Elliptic Curve Cryptography): Algoritmo asimmetrico che offre la stessa sicurezza di RSA con chiavi più piccole, rendendolo più efficiente.
- Blowfish/Twofish: Algoritmi simmetrici veloci e sicuri, spesso usati per crittografare dati di archiviazione.
- SHA-256: Funzione di hash crittografica utilizzata per garantire l’integrità dei dati e nelle applicazioni di sicurezza, come le criptovalute.
Sfide della Crittografia
- Gestione delle Chiavi: Distribuire, archiviare e gestire in modo sicuro le chiavi di crittografia è una delle sfide principali.
- Prestazioni: Gli algoritmi di crittografia asimmetrica possono essere lenti e consumare molte risorse computazionali, il che può essere problematico per dispositivi con risorse limitate.
- Attacchi Crittografici: Nuove vulnerabilità e tecniche di attacco (come attacchi a forza bruta, attacchi a canali laterali, e attacchi quantistici) possono compromettere la sicurezza degli algoritmi crittografici esistenti.
Conclusione
La crittografia è un elemento cruciale della sicurezza informatica moderna, garantendo la riservatezza, l’integrità e la protezione dei dati. Con l’evoluzione delle tecnologie e delle minacce, è essenziale rimanere aggiornati sui nuovi algoritmi, protocolli e pratiche di crittografia per garantire una protezione efficace delle informazioni.