Come proteggere i messaggi segreti: la crittografia

Con questo articolo ho voluto approfondire un argomento affascinante che è stato già affrontato in almeno tre articoli di ELETTRONICA OPEN SOURCE (La crittografia asimmetrica rende più sicura la vostra auto,
CODICE CRITTOGRAFICO BERCODE. Dalla genetica alla sicurezza informatica e [Bluetooth, la guida definitiva] – Concetti avanzati): la crittografia, ossia l'insieme di tutte quelle tecniche volte a rendere comprensibile un messaggio unicamente al suo destinatario. Vedremo quando è nata, come si è evoluta nel corso della storia e quali sono le sue principali applicazioni; illustreremo inoltre alcuni dei principali algoritmi crittografici. Infine, mostreremo come creare con MATLAB dei semplici programmi crittografici utilizzabili da chiunque (o quasi).

1 Introduzione

La crittologia, come indica il nome stesso che deriva dal greco e significa "discorso nascosto", è la disciplina che si occupa delle comunicazioni segrete. Essa studia le tecniche atte a garantire lo scambio di informazioni riservate su un canale di comunicazione pubblico in maniera sicura, ossia in modo tale che il messaggio inviato da un dato mittente possa raggiungere il destinatario senza il rischio che venga intercettato da terzi.

La crittologia si divide principalmente in tre parti:

  • crittografia
  • steganografia
  • crittoanalisi

La crittografia tratta dei metodi con cui è possibile trasformare un messaggio in modo tale da renderlo incomprensibile a tutti coloro che non sono autorizzati a recepirlo. Il crittografo opera sul messaggio originale, detto anche testo in chiaro, trasformandolo in quello che si chiama testo cifrato o crittogramma; questa trasformazione prende il nome di cifratura ed è caratterizzata da un parametro segreto, che ne garantisce la sicurezza, detto chiave. Una volta individuata la chiave di un sistema di cifratura, è possibile, partendo dal crittogramma, risalire all'informazione originale, ovvero è possibile effettuare la trasformazione inversa: la decifratura.

Esistono due modi di operare sul messaggio originale per poter effettuare la trasformazione crittografica:

  1. suddividere il messaggio originale in blocchi di caratteri ed applicare a ciascuno di essi la trasformazione (cifratura a blocchi);
  2. trasformare ciascun carattere singolarmente (cifratura a stringa).

Vediamo ora un semplice metodo crittografico detto cifrario di Cesare. Consideriamo i seguenti due alfabeti:

  1. quello tradizionale (a, b, c, d, ..., x, y, z);
  2. quello ottenuto dal precedente sostituendo a ciascuna lettera in posizione i-esima quella in posizione i+2-esima (c, d, e, f, ..., z, a, b).

Dato un messaggio scritto con il 1° alfabeto, ad esempio "vado a scuola", è possibile ottenere il corrispondente crittogramma, "xcfq c uewqnc", semplicemente riscrivendo il messaggio con il 2° alfabeto.

In questo caso, la chiave è l’ampiezza dello scalamento del 2° alfabeto rispetto al 1°; infatti, se avessimo scelto di sostituire ad ogni lettera in posizione i-esima quella in posizione i+4-esima, anziché i+2-esima, il metodo per ottenere il crittogramma sarebbe rimasto invariato (semplice sostituzione di lettere), ma ovviamente il risultato sarebbe stato diverso. La chiave, pertanto, può assumere 26 valori (da 1 a 26), ovvero tanti quante sono le lettere dell’alfabeto.

Con il termine steganografia, che deriva dai vocaboli greci stèganos (nascosto) e gràfein (scrivere), si indica invece l'insieme delle tecniche che consentono di nascondere messaggi confidenziali inserendoli all’interno di un contesto (un messaggio, un'immagine, un disegno), che funge da contenitore, in grado di occultarne non solo il contenuto ma anche l'esistenza. Pertanto, mentre l'obiettivo della crittografia è quello di nascondere il contenuto di un messaggio, quello della steganografia è nascondere l'esistenza stessa del messaggio.

Il fine della crittoanalisi invece è esattamente l'opposto di quello della crittografia. Il crittoanalista è colui che, intercettando di nascosto, sul canale di comunicazione, il crittogramma inviato da un mittente ad un destinatario, tenta di forzare il sistema di cifratura per risalire al messaggio originale.

2 Cenni storici

La crittografia ha origini antichissime; infatti, praticamente da sempre gli uomini hanno avvertito la necessità di realizzare crittogrammi, ad esempio per motivi di ordine bellico (rendere i messaggi strategici incomprensibili ai propri nemici).

Il più antico esempio di utilizzo della crittografia è stato rinvenuto in alcuni geroglifici egiziani risalenti a più di 4500 anni fa. Su alcune tavolette di argilla mesopotamiche sono state trovate incisioni cifrate, palesemente fatte con l'intento di proteggere le informazioni riportate in esse. Altri esempi di metodi crittografici antichi sono i cifrari monoalfabetici ebraici del VI secolo a.C., come il cifrario Atbash, usato anche per cifrare alcuni nomi nella Bibbia. Anche gli antichi Greci e gli spartani sembra avessero conoscenze di crittografia, come dimostrerebbe il loro utilizzo della scitala. Per quanto riguarda invece i Romani, si ha la certezza che conoscessero la crittografia: l'esempio più noto è il cifrario di Cesare, di cui abbiamo già parlato.

La crittografia moderna inizia con la pubblicazione del trattato De Cifris di Leon Battista Alberti, intorno al 1467, nel quale egli descrisse anche la sua invenzione: il disco cifrante, che rappresenta il primo sistema di cifratura polialfabetica. In seguito, si occuparono di cifratura polialfabetica anche il tedesco Johann Heidenberg, l'italiano Giovan Battista Bellaso e il francese Blaise de Vigenère. Il sistema crittografico di quest'ultimo, il cifrario di Vigenère, venne considerato indecifrabile per tre secoli, finché, nel 1863, il colonnello prussiano Friedrich Kasiski non pubblicò un metodo crittoanalitico per decifrarlo: il metodo Kasiski.

Tra il 19° e il 20° secolo, l'invenzione del telegrafo, del telefono e della radio diede un impulso allo sviluppo della crittografia. Infatti, essendo le comunicazioni via radio e telefoniche esposte all'intercettazione da parte del "nemico", occorre cifrare tutti i messaggi riservati trasmessi per radio e per telefono.

Nel 1883, venne pubblicato il saggio Cryptographie Militaire di Auguste Kerckhoffs, nel quale egli espone i principi che costituiscono ancora oggi un punto di riferimento dei crittografi. Uno di questi è il famoso principio di Kerckhoffs: «La sicurezza di un crittosistema non deve dipendere dal tener celato il crittoalgoritmo. La sicurezza dipenderà solo dal tener celata la chiave.». In altre parole, il sistema deve rimanere sicuro anche nell'ipotesi in cui venga scoperto l'algoritmo di crittazione, che quindi può anche essere di pubblico dominio; l'importante è che rimanga segreta la chiave. Il principio è stato riformulato (o forse indipendentemente formulato) da Claude Shannon (padre della teoria dell'informazione) nel seguente modo: «Un sistema dovrebbe essere progettato sotto l'assunzione che il nemico guadagnerà immediatamente familiarità con esso.» (massima di Shannon).

Nel 1918, Gilbert Vernam perfezionò il metodo di Vigenère proponendo l'idea di usare chiavi segrete casuali lunghe almeno quanto il messaggio. Successivamente, nel 1949, Claude Shannon, nel suo articolo La teoria della comunicazione nei sistemi crittografici, dimostrò matematicamente che questo è l'unico metodo crittografico totalmente sicuro.

Nella prima metà del 20° secolo, iniziarono a diffondersi macchine cifranti a rotori realizzate sul modello del cilindro di Jefferson. La più famosa di esse è Enigma, inventata nel 1918 dal tedesco Arthur Scherbius e successivamente perfezionata. Per la facilità d'uso e la presunta indecifrabilità, fu ampiamente utilizzata dalle forze armate tedesche, dal 1925 fino alla fine della seconda guerra mondiale. Furono molti gli esperti che a lungo si prodigarono per violarla, e, nonostante fosse ritenuta indecifrabile, alcuni ci riuscirono; i matematici polacchi Marian Rejewski, Jerzy Różycki e Henryk Zygalski furono i primi a riuscirci, nel 1932.

Nella seconda metà del 20° secolo, l'invenzione del computer cambiò in modo radicale lo scenario: tutti i vecchi sistemi crittografici diventarono repentinamente obsoleti e inefficaci, a causa della facilità con cui possono essere forzati grazie ad esso. Inoltre, la necessità di comunicare informazioni in modo riservato, e quindi di cifrare i messaggi, si è estesa ben al di là dell'ambito diplomatico-militare. Oggi, tutti noi, senza rendercene conto, usufruiamo di tecniche crittografiche, ad esempio quando:

  • preleviamo denaro con il bancomat,
  • effettuiamo acquisti su internet con la carta di credito,
  • telefoniamo con il cellulare.

È inevitabile, in questo contesto, la nascita di cifrari completamente nuovi, come il DES della IBM e l'RSA, capostipite dei cifrari a chiave pubblica.

3 Crittografia simmetrica e asimmetrica

La crittografia simmetrica, o crittografia a chiave privata, è caratterizzata dall'utilizzo di una stessa chiave condivisa sia per l'operazione di cifratura che per quella di decifratura; in altri termini, mittente e destinatario dei messaggi segreti devono preventivamente concordare la chiave, oltre naturalmente al metodo crittografico. La necessità di comunicarsi la chiave segreta è il punto debole di questo tipo di crittografia: o ci si incontra di persona in un luogo riservato, o si deve utilizzare un canale di comunicazione assolutamente sicuro (ma, se si disponesse di un simile canale, la crittografia non servirebbe).

Alcuni esempi di cifratura simmetrica sono: il cifrario di Cesare, il cifrario di Vigénère, il DES e l'AES. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3345 parole ed è riservato agli abbonati PRO. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PRO inoltre potrai fare il download (PDF) dell'EOS-Book e di FIRMWARE del mese. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

13 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 10 dicembre 2015
    • Fabio Musicco Fabio Musicco 10 dicembre 2015
  2. Emanuele Paiano Emanuele Paiano 3 gennaio 2016
  3. Emanuele Paiano Emanuele Paiano 6 gennaio 2016
  4. Emanuele Bonanni Emanuele 6 gennaio 2016
  5. Emanuele Paiano Emanuele Paiano 6 gennaio 2016
    • Maurizio Di Paolo Emilio Maurizio 6 gennaio 2016
      • Emanuele Paiano Emanuele Paiano 7 gennaio 2016
        • Maurizio Di Paolo Emilio Maurizio 7 gennaio 2016
  6. Emanuele Paiano Emanuele Paiano 8 gennaio 2016

Scrivi un commento