La crittografia sin dai tempi più antichi è stata utilizzata dall’uomo per proteggere le informazioni e per evitare che le informazioni riservate cadessero in mani sbagliate.
Basti pensare che già Giulio Cesare utilizzava la crittografia per proteggere la corrispondenza che inviava alle sue truppe militari. In tempi più recenti, anche Totò Riina ha fatto uso della crittografia per proteggere i suoi famosi “pizzini“
Oggi la crittografia è un pilastro della sicurezza informatica.
La crittografia è una sicurezza attiva, infatti mentre la sicurezza passiva è volta a impedire che terzi possano accedere a particolari informazioni, la sicurezza attiva protegge il dato in sé.
La crittografia è basata su tecniche matematiche alquanto avanzate e studia prevalentemente la cifratura del testo, in altre parole la trasformazione di un testo in chiaro in testo cifrato ed è basata sull’utilizzo di chiavi di cifratura: solo le persone a conoscenza della chiave di cifratura sono in grado di decifrare il testo cifrato.
Le tecniche di crittografia sono oggi utilizzate nella pratica principalmente per i seguenti scopi:
- RISERVATEZZA: solamente chi ha la chiave di decifratura può risalire al testo in chiaro. Il contenuto del messaggio è protetto da accesso non autorizzato
- INTEGRITA’: certifica che un’informazione non è stata modificata durante la trasmissione
- NON-RIPUDIO: è possibile associare univocamente la provenienza di un documento ad un soggetto, così come avviene ad esempio con la firma digitale
Algoritmi crittografici
Un algoritmo crittografico è una sequenza di operazioni che trasformano un’informazione da una forma diretta ed immediatamente fruibile, ad una forma offuscata che non è immediatamente comprensibile.
I più recenti sistemi di cifratura si affidano ad algoritmi universalmente noti, che utilizzano chiavi segrete per il processo della cifratura e della decifratura. In questo modo, uno stesso algoritmo può essere utilizzato per cifrare informazioni in maniera differente: allo scopo è sufficiente utilizzare differenti chiavi di cifratura.
Comprendiamo, quindi, come il ruolo della chiave di cifratura diviene cruciale. Se l’algoritmo di cifratura è progettato ad arte, la indisponibilità della chiave di cifratura può rendere impossibile il recupero dell’informazione a partire dalla sua versione cifrata.
Gli algoritmi crittografici vengono divisi in tre grandi classi secondo le loro caratteristiche:
- gli algoritmi simmetrici
- gli algoritmi asimmetrici (o anche detti a chiave pubblica-privata)
- gli algoritmi di hash
Gli algoritmi simmetrici sono quelli in cui la chiave di cifratura e di decifratura coincidono o derivano l’una dall’altra.
Gli algoritmi asimmetrici sono quelli in cui le chiavi di cifratura o decifratura sono diverse.
Gli algoritmi di hash, a differenza degli altri due, in cui il testo può essere cifrato e decifrato, non sono invertibili in quanto una volta effettuata la trasformazione non è più possibile riottenere il testo in chiaro da quello cifrato, inoltre non utilizzano chiavi segrete.
Cifratura simmetrica
Gli algoritmi di crittografia a chiave simmetrica sono quelli usati nella crittografia classica e permettono al mittente ed al destinatario di usare la stessa chiave per cifrare e decifrare un messaggio. Tale tipologia di algoritmi è anche detta a chiave segreta o a chiave privata.
In termini matematici, la chiave è il parametro con cui viene invocata la funzione di crittografia; tale funzione è invertibile e la sua versione inversa consente il ripristino dell’informazione originaria, sempre a partire dall’unica chiave utilizzata anche per la cifratura.
Purtroppo, l’uso ripetuto della stessa chiave per differenti e ripetute comunicazioni può rappresentare un potenziale problema: quante più volte la chiave viene utilizzata, tanto più è facile per soggetti non autorizzati riuscire ad intercettarla.
C’è però anche un altro problema di natura più concettuale che mina alle fondamenta gli algoritmi basati su questa modalità di cifratura delle informazioni. Poiché per decifrare un messaggio è necessario conoscere la chiave che lo ha cifrato, è necessario trasferire anche la chiave insieme al messaggio cifrato. È evidente che nel caso in cui si riesca ad intercettare tali informazioni si riuscirebbe a conoscere anche la chiave di decifratura, rendendo completamente inutile il sistema crittografico.
Una soluzione a questo problema consiste nell’utilizzo di un canale sicuro, attraverso il quale si possa trasmettere la chiave senza pericoli di intercettazione (per es. telefono, posta ordinaria, ecc.). Ma se ho a disposizione un canale sicuro per lo scambio della chiave segreta, piuttosto che utilizzarlo per la trasmissione della chiave, potrei ricorrere ad esso direttamente per lo scambio del messaggio. A questo punto a cosa mi serve questa forma di crittografia?
Ridiamoci su. A causa di questo inconveniente, gli algoritmi a chiave simmetrica per applicazioni telematiche sono stati (in parte) accantonati.
Cifratura asimmetrica
Una metafora per la cifratura asimmetrica è quella della cassetta delle lettere chiusa a chiave utilizzata per depositare la posta ordinaria. La buca è esposta e pubblicamente accessibile. La sua localizzazione (l’indirizzo) è essenzialmente la sua chiave pubblica. Chiunque conosca l’indirizzo può raggiungere lo sportellino e imbucare un messaggio. Solo il possessore della chiave può però estrarre il messaggio e prenderne visione.
Oggi quasi tutte le applicazioni crittografiche dipendono in gran parte dalla crittografia asimmetrica.
Nella crittografia asimmetrica ci sono quindi due chiavi, una privata che deve essere segreta ed una pubblica, unicamente legata a quella privata, che deve essere di pubblico dominio.
La chiave privata viene tenuta segreta, ed è nota esclusivamente al suo possessore. La chiave pubblica, al contrario, deve essere pubblicamente distribuita.
La crittografia asimmetrica si basa su problemi matematici molto complessi in cui il calcolo della soluzione è molto “oneroso” dal punto di vista computazionale.
Spesso, per scavalcare questo problema si ricorre all’utilizzo combinato dei metodi di cifratura simmetrica e asimmetrica.
Ad esempio: un messaggio viene cifrato utilizzando un algoritmo a cifratura simmetrica. Successivamente si cifra la chiave segreta mediante la chiave pubblica del destinatario. A destinazione la chiave segreta può essere decifrata con la chiave privata in possesso del destinatario e, dunque, anche il messaggio cifrato ricevuto.
Algoritmi di hash
Gli algoritmi di hash sono utilizzati fondamentalmente per due scopi: garantire l’integrità e garantire l’autenticità dei dati.
Questa metodologia si rifà all’identificazione che facciamo tutti i giorni per riconoscere una persona da particolari caratteristiche fisiche, come il colore degli occhi, l’andatura, la forma del viso etc. Questa metodologia inoltre ci permette anche di riconoscere una persona anche a distanza di tempo.
La possibilità di fare la stessa cosa con un documento elettronico è rappresentata dagli algoritmi di hash.
Un algoritmo di hash infatti, da una stringa di caratteri di lunghezza arbitraria, genera una stringa di caratteri di lunghezza fissa che identifica in maniera univoca i dati originari.
Si dice che un algoritmo di hash produce un’impronta informatica dei dati originali chiamata anche hash o digest.
Il digest è un identificatore digitale peculiare di un certo testo; nessun altro testo di senso compiuto, anche solo minimamente differente (perfino con uno spazio in più o in meno) può produrre lo stesso digest a valle dell’applicazione dell’algoritmo di hash.
La crittografia hash è una tecnica mirata a trasformare un’informazione in una sequenza di caratteri di lunghezza fissa ed indipendente dalla lunghezza e dalla complessità del messaggio originario.
Vai al capitolo precedente: Capire Bitcoin – Introduzione
Vai al prossimo articolo: Capire Bitcoin: che cos’è un hash
Originally published at https://sergiocasizzone.altervista.org/ on October 11, 2020.