Crittografia
La crittografia è una disciplina informatica-matematica che studia le tecniche per realizzare comunicazioni riservate tra due parti. E' la scienza di cifrare e decifrare messaggi.
Il termine "criptare" deriva dal greco "kryptos", che significa "nascosto" o "segreto".
La crittografia è suddivisa in due discipline:
- Crittologia
L'obiettivo della crittologia è creare metodi di cifratura dei messaggi. - Crittoanalisi
L'obiettivo della crittoanalisi è cercare i punti deboli dei metodi di cifratura e decifrarli senza avere la chiave.
La crittologia e la crittoanalisi sono due facce della stessa moneta, lavorano insieme e si influenzano a vicenda. La crittoanalisi spinge la crittologia a creare nuovi metodi di cifratura più complicati e sicuri.
La differenza tra crittografia e steganografia
La crittografia nasconde il significato del messaggio ma non il messaggio.
Esempio. Un messaggio cifrato tramite un codice può leggerlo chiunque ne entra in possesso ma solo chi conosce il cifrario (codice) riesce a decifrarlo e a capirne il significato.
La steganografia, invece, nasconde il messaggio ma non il significato.
Esempio. Un messaggio nascosto dentro una penna biro. In questo caso chiunque conosce l'esistenza del messaggio nella penna, o lo scopre per caso, può leggere e comprendere il significato. E' solo un esempio banale ma rende bene l'idea.
Un esempio di cifratura
Un esempio classico di crittografia è il cifrario di Cesare (o Caesar).
Per cifrare i suoi messaggi Giulio Cesare sostituiva le lettere di un messaggio in chiaro con quelle maiuscole che si trovano tre posti in avanti nell'alfabeto.
Ad esempio, usando uno spostamento di tre posizioni, la lettera "a" viene sostituita con la lettera "d".
Ecco il cifrario usato da Cesare.
Nota. La regola per trasformare il messaggio in chiaro in un messaggio cifrato è detta cifrario. Ecco un esempio pratico di messaggio cifrato con il cifrario di Cesare.
In questo modo Giulio Cesare riusciva a nascondere il significato dei suoi messaggi a chi ne entrasse in possesso.
Solo chi era a conoscenza del cifrario, ossia il destinatario, poteva decifrare e comprendere il messaggio.
Se adatto il cifrario di Cesare all'attuale alfabeto della lingua inglese (e italiana) ottengo un cifrario simile con 26 caratteri anziché 21
Volendo posso anche cambiare traslazione.
Ad esempio, invece di spostare le lettere di tre posizioni potrei spostarle di quattro, cinque o altro.
In questa tabella ho rappresentato tutte le traslazioni possibili.
La quarta riga della tabella (chiave 3) è quella usata da Cesare.
Nota. Ovviamente, il cifrario di Cesare era molto semplice. E' soltanto un semplice esempio per spiegare cos'è un cifrario. Sarebbe ingenuo utilizzarlo ai nostri giorni perché se il testo è sufficientemente lungo si decifra facilmente. Ad esempio, nella lingua italiana le vocali "a", "e", "i", "o" si ripetono spesso, occupano in media circa il 45% del testo.
Inoltre, nella lingua italiana le vocali compaiono spesso alla fine. Quindi le ultime lettere dei blocchi sono quasi sicuramente vocali.
Per evitare di far individuare subito le lettere finali delle parole, potrei eliminare gli spazi tra le parole. Tuttavia, resterebbe sempre il problema che nella lingua italiana le vocali si presentano con molta più frequenza rispetto alle altre lettere.
Inoltre, le consonanti spesso si presentano in sequenza. Pertanto, se una lettera compare due volte di seguito potrebbe essere una consonante.
Come funziona un sistema crittografico
In generale un sistema crittografico di base funziona in questo modo.
- Il mittente scrive un messaggio. Ad esempio un testo in chiaro.
- Il mittente trasforma il messaggio in un messaggio codificato tramite una chiave. Ad esempio, trasforma il testo in chiaro in un testo cifrato.
Nota. Nella forma cifrata il messaggio è incomprensibile a chiunque non possieda la chiave pubblica.
- Il mittente invia il testo cifrato al destinatario. Se il messaggio fosse intercettato nel tragitto, o cadesse in mani sbagliate, chi riesce a ottenerlo non può comunque leggerlo perché appare come un testo privo di significato.
- Il destinatario riceve il messaggio e lo decodifica usando la chiave pubblica in suo possesso. In questo modo converte il testo codificato in un testo in chiaro, riuscendo a leggerlo.
Le chiavi sono alla base del sistema crittografico. Sono usate per crittografare e decrittografare le informazioni.
Le tecniche usate da chi intercetta il messaggio per tentare di decifrare il messaggio sono dette crittoanalisi (cryptanalysis).
Uno dei principali scopi della crittoanalisi è l'individuazione della chiave.
Nota. Del resto ...se chi intercetta fosse già in possesso della chiave per decifrare il testo cifrato, non avrebbe bisogno di fare altro per leggere e comprendere il messaggio decrittografato.
Quante più sono le chiavi del sistema crittografico, tanto più tempo ci vuole per decriptare il testo cifreato.
Uno dei primi sistemi crittografici si basa sull'esistenza di una chiave segreta nota sia al mittente che al destinatario,
In questi casi si parla di sistema crittografico a chiave segreta ( secret-key cryptography ).
Tuttavia, questo richiede che entrambe le parti, mittente e destinatario, siano in possesso della chiave segreta in anticipo, prima che avvenga lo scambio delle informazioni. E questo non è sempre possibile.
Spesso le le parti sono molto lontane o non possono condividere una chiave segreta.
In questi casi si ricorre a un sistema crittografico a chiave pubblica ( public-key cryptosystem ).
Cifrari simmetrici e non simmetrici
In base alla chiave per cifrare o decifrare i messaggi, i cifrari sono classificati in due categorie
- Cifrari simmetrici (a una via)
I cifrari simmetrici utilizzano la stessa chiave per cifrare e decifrare i messaggi. E' necessario che entrambe le parti conoscano e mantengano segreta questa chiave.Ad esempio, nei cifrari classici la chiave di cifratura (Ck) usata per cifrare il messaggio permette di calcolare la chiave di decifratura (Dk) per decifrarlo. In altre parole, se conosco la chiave di cifratura posso facilmente calcolare la chiave di decifratura. Per questa ragione sono detti "simmetrici". Di conseguenza, in questi sistemi è necessaria la segretezza di entrambe le chiavi.
- Cifrari asimmetrici (a due vie)
I cifrari asimmetrici, invece, usano una coppia di chiavi, una pubblica per cifrare i messaggi e una privata per decifrarli, permettendo la diffusione della chiave pubblica senza compromettere la sicurezza della chiave privata.Ad esempio, nei cifrari a chiave pubblica la chiave pubblica (Ck) può essere diffusa liberamente ed è usata per cifrare il messaggio. Chiunque può utilizzarla per cifrare un messaggio destinato al proprietario della chiave. La chiave privata (Dk), invece, è mantenuta segreta dal proprietario ed è usata per decifrare i messaggi cifrati con la sua corrispondente chiave pubblica. In questo caso la chiave pubblica è nota a tutti e non si può facilmente calcolare la chiave privata a partire da questa. Questo è dovuto a processi computazionali che rendono estramemente difficile invertire la cifratura a partire dalla chiave pubblica, senza conoscere la chiave privata. Quindi, la diffusione della chiave pubblica non compromette la segretezza della chiave privata. Per questa ragione sono detti sistemi "asimmetrici" o "a due vie".
Pertanto, la differenza chiave tra i sistemi simmetrici e asimmetrici dipende da come vengono gestite e protette le chiavi.
Nei cifrari simmetrici, entrambe le chiavi devono rimanere segrete, mentre nei cifrari asimmetrici la chiave pubblica può essere diffusa liberamente, mantenendo segreta solo la chiave privata.
Questa caratteristica rende i cifrari a chiave pubblica particolarmente utili per la comunicazione sicura su internet, dove garantire la segretezza di una chiave condivisa tra le parti è poco praticabile.
E così via.