La crittografia
La crittografia è il processo di codifica dei dati in un formato illeggibile per proteggere le informazioni da accessi non autorizzati.
La parola crittografia deriva da una parola di origine greca che significa <scrittura segreta>.
Principi della crittografia
Al messaggio in chiaro del mittente si applica un algoritmo di cifratura combinato con una chiave segreta e si ottiene così il messaggio cifrato. Per recuperare il messaggio in chiaro il destinatario applica un algoritmo di decifrazione usando una chiave segreta.
La chiave segreta consiste in una serie di parametri in input che combinati con il testo in chiaro forniscono il testo codificato, e viceversa. La chiave per la cifratura e quella di decifrazione possono essere uguali (chiave simmetrica) o diverse (chiave asimmetrica). Dalla segretezza delle chiavi dipende la sicurezza del sistema. Ciascuna chiave è composta da n bit, con 2n possibili combinazioni, aumentando la lunghezza n delle chiavi, ne aumenta quindi la sicurezza.
Tipi di crittografia
Crittografia simmetrica
La crittografia a chiave simmetrica utilizza una sola chiave sia per il processo di crittografia che per il processo di decodifica. Mittente e destinatario devono avere accesso alla stessa chiave privata, che deve quindi essere condivisa attraverso un canale di comunicazione sicuro precedentemente stabilito.
K: chiave segreta
CK: algoritmo di cifratura
DK: algoritmo di decodifica
m: messaggio in chiaro
c: messaggio cifrato
c = CK(m)
m = DK(c)
Servizio di armadietti
Un esempio che permette di capire meglio il funzionamento della crittografia a chiave simmetrica è quello di un servizio di armadietti.
Una persona ripone i suoi effetti personali in un armadietto e lo chiude con una chiave. Solo con la stessa chiave potrà aprire l’armadietto e recuperare i suoi oggetti.
Tipi di algoritmi a chiave simmetrica
- Cifratura a blocchi: l’algoritmo funziona su un blocco di dati di dimensioni fisse richiamando ripetutamente la funzione di cifratura di basso livello
- Cifratura a flusso: l’algoritmo non funziona a blocchi, ma converte un bit (o un byte) di dati alla volta
Esempi di crittografia simmetrica
- Data Encryption Standard: sviluppato da IBM all’inizio degli anni 1970, la sua architettura rimane altamente influente nel campo della crittografia moderna.
- Triple DES: costruito sulla base del DES originale, aggiunge ulteriori livelli di sicurezza che non possono essere violati dalle macchine moderne.
- Blowfish: codice a blocchi veloce, gratuito e pubblicamente disponibile, progettato da Bruce Schneer nel 1993.
- Advanced Encryption Standard: primo e unico cifrario accessibile pubblicamente approvato dalla US National Security Agency per le più importanti informazioni top secret.
Pro e contro
Pro: semplicità e velocità
Contro: difficile trasmissione sicura della chiave segreta
La crittografia a chiave simmetrica è semplice ed efficiente per comunicazioni tra un numero ristretto di persone e a brevi distanze, mentre è meno ideale per situazioni che coinvolgono molti utenti o comunicazioni remote.
Crittografia asimmetrica
A differenza della crittografia simmetrica, che impiega una chiave sia per la crittografia che per la decodifica, la crittografia asimmetrica utilizza due chiavi. Una chiave per la crittografia (pubblica) e una diversa per la decrittografia (privata).
Queste due chiavi sono create e legate da funzioni matematiche avanzate complesse.
Chi vuole ricevere messaggi criptati fornisce all’interlocutore la propria chiave pubblica. Il mittente codifica il messaggio con quella chiave e lo invia. Il destinatario, ricevuto il messaggio, lo decodifica con la sua chiave privata, che nessun altro conosce.
K: chiave di cifratura
CK: algoritmo di cifratura
J: chiave di decodifica
DJ: algoritmo di decodifica
m: messaggio in chiaro
c: messaggio cifrato
c = CK(m)
m = DJ(c)
Cassetta della posta
Un esempio che permette di capire meglio il funzionamento della crittografia a chiave asimmetrica è quello della cassetta della posta.
Chiunque può inserire una lettera nella cassetta postale (chiave pubblica), ma solo la persona con la chiave specifica può sbloccarla per recuperare le lettere (chiave privata).
Esempi di crittografia asimmetrica
- RSA: chiamato così nel 1977 in onore dei suoi fondatori, Rivest, Shamier e Adleman, è uno dei più antichi sistemi crittografici a chiave pubblica ampiamente utilizzati.
- ECC: la crittografia della curva ellittica è una forma avanzata di crittografia asimmetrica che utilizza le strutture algebriche delle curve ellittiche per creare chiavi crittografiche robuste.
Pro e contro
Pro: sicurezza della chiave privata che rimane al sicuro senza la necessità di essere trasmessa
Contro: complessità e lentezza calcoli per la generazione della chiave e la trasformazione dei dati
La crittografia asimmetrica permette di risolvere il problema della comunicazione della chiave ed è quindi adatta alla comunicazione tra molti utenti e anche a distanze remote, nonostante una maggiore lentezza per la maggiore complessità dei calcoli.
Hashing
L’hashing è un processo unico di trasformazione di qualsiasi dato – indipendentemente dalle dimensioni – in un risultato unico di lunghezza fissa, noto come valore di hash o digest.
La funzione hash è irreversibile. Ciò significa che, dato un digest, non è possibile trovare i dati che lo produce.
Per questi motivi, gli algoritmi hash sono sistemi crittografici efficaci, perché crittografano direttamente i dati senza la necessità di chiavi diverse. In sostanza, il testo in chiaro è la sua stessa chiave.
Codice libro ISBN
Un esempio che permette di capire meglio il funzionamento dell’hashing è quello del sistema di identificazione dei libri con codice ISBN.
Indipendentemente dalla lunghezza o dal contenuto dello scritto, ogni libro è dotato di un ISBN unico per identificarlo facilmente. Quando si cerca un libro online utilizzando il suo ISBN, il sistema utilizza un algoritmo di hashing per individuare e recuperare rapidamente le informazioni.
Pro e contro
Pro: natura unidirezionale, non permette di recuperare dati in input garantendo massima sicurezza dei dati.
Contro: possibili collisioni di hash quando input unici danno risultato uguale.
Negli attuali sistemi, i due tipi di crittografia sono usati in maniera combinata: la crittografia a chiave simmetrica è utilizzata per inviare i dati veri e propri, mentre quella a chiave asimmetrica invia in modo sicuro la chiave privata.