Crittografia: un po' di storia
Metodi crittografici storici
Metodi crittografici usati nell'antichità.
La scitala lacedemonica, usata in Grecia fin dal 400 a.C., non era altro che un bastone (idealmente un cilindro), attorno al quale veniva avvolto a spirale una striscia di tessuto sul quale veniva scritto il messaggio (in direzione longitudinale al bastone). Una volta srotolato il tessuto, solo con un bastone dallo stesso diametro sarebbe stato possibile leggere correttamente il messaggio.
Il disco di Enea consisteva in una superficie sulla quale venivano praticati 24 fori, ciascuno etichettato con una delle lettere dell'alfabeto greco, più uno centrale. Per scrivere il messaggio veniva preso un filo, fatto partire dal foro centrale e poi, fatto passare per ciascun foro corrispondente ad ogni lettera del testo del messaggio. Per decifrare il messaggio, non restava che srotolare il filo, prendendo nota di tutti i fori (lettere) passati, nell'ordine, e poi leggere il risultato al contrario.
Il cifrario Atbash, usato dagli ebrei; la prima lettera dell'alfabeto viene sostituita con l'ultima, la seconda con la penultima, e così via... Applicato al nostro alfabeto diventerebbe:
A B C D E F G H I J K L M Z Y X W V U T S R Q P O N Simile al precedente è l'Albam, in cui l'alfabeto viene diviso a metà e ogni lettera corrisponde a quella nella stessa posizione dell'altro gruppo (il risultato coincide con il rot-13, vedi dopo).
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Infine, l'Atbah, che è un'ulteriore variante dei precedenti: prima l'alfabeto viene suddiviso in tre gruppi, poi a ciascuno di questi viene applicato l'analogo del codice Atbash, ristretto al sottogruppo. Il risultato, con il nostro alfabeto, è il seguente:
A B C D E J K L M N S T U V I H G F E R Q P O N Z Y X W N.B.: il risultato sarebbe nettamente migliore se le lettere fossero 24 (come nell'alfabeto greco) ottenendo così tre gruppi di otto lettere. Con l'alfabeto inglese di 26 lettere, invece, si ottengono gruppi di lettere dispari (rispettivamente 9, 9 e 8) con l'inconveniente che alcune lettere (E e N) rimangono immutate. Personalmente, adotterei la seguente variante, scegliendo tre gruppi rispettivamente di 8, 8 e 10 lettere:
A B C D I J K L Q R S T U H G F E P O N M Z Y X W V Nel cifrario di Polibio ogni lettera viene sostituita con una coppia di numeri: l'indice di riga e di colonna della casella contenente la lettera nella tabella che segue. N.B.: L'alfabeto greco ha 24 lettere, per cui con una tabella 5x5 avanza una combinazione (che poteva essere usata, ad es. come segnale di fine messaggio); con l'alfabeto inglese di 26 lettere, invece, si rende necessario accoppiare due lettere, ad esempio k e q che hanno lo stesso suono (oppure ampliare la tabella a 6x6 e includere, eventualmente, altri caratteri).
1 2 3 4 5 1 A B C D E 2 F G H I J 3 KQ L M N O 4 P R S T U 5 V W X Y Z Il cifrario di Cesare consisteva nel sostituire ciascuna lettera con quella che la seguiva di tre posizioni nell'alfabeto latino. Applicato all'alfabeto inglese si ottiene:
La generalizzazione di questo cifrario, consiste nel traslare le lettere dell'alfabeto di un numero n arbitrario di posizioni; questo cifrario viene indicato come rot-n, dove a n viene sostituito un numero opportuno (che, in pratica, è la chiave necessaria per poter decifrare il messaggio). Il cifrario di Cesare corrispondeva al rot-3. Da notare che ci sono 25 cifrari possibili, di questo tipo, in quanto traslando di 0 o di 26 posizioni, si ottiene che il testo rimane invariato.
- sviluppi medievali (nulle, omofoni)
- Leon Battista Alberti
Il cifrario di Beale venne impiegato da Thomas Jefferson Beale, nel 1822 per nascondere le indicazioni di un fantomatico tesoro sepolto da qualche parte nella Contea di Bedford, in Virginia (USA). Solo il secondo dei tre messaggi è stato decriptato, per cui la questione rimane tuttora un mistero irrisolto, anche se buona parte dei ricercatori propendono per uno scherzo (ovvero gli altri due testi potrebbero essere veramente casuali e non contenere alcun messaggio di senso compiuto!), considerando anche che la stessa esistenza di Beale è alquanto dubbia e che la descrizione della vicenda non deriva da testimonianze dirette ma da testi scritti successivamente.
In ogni caso, il metodo (molto ingegnoso) per crittografare almeno il secondo messaggio, è stato il seguente: ad ogni lettera del testo in chiaro venne associato un numero corrispondente alla posizione di una parola, iniziante per quella lettera, ma appartenente ad un altro testo (in quel caso, la Dichiarazione d'Indipendenza degli Stati Uniti). La particolarità di questo metodo è che a ogni lettera, possono corrispondere diversi numeri, per cui per la decriptazione non funziona il classico metodo delle ripetizioni. Senza conoscere il testo usato come chiave, risulta praticamente impossibile risalire al messaggio originale.
- seconda guerra mondiale: Enigma, Purple
Metodi crittografici odierni
Metodi odierni (matematica avanzata). Crittografia a chiave simmetrica:
"Se un sistema è veramente sicuro, lo è anche quando i dettagli divengono pubblici."
(Bruce Schneier)
Il cifrario di Vernam (One-Time-Pad)
Metodi semplici ma ancora validi Codice di Vernam.
Le reti di Feistel
Algoritmi simmetrici
Rete di Feistel.
- IDEA
- DES
- Sviluppato dall'IBM nel lontano 1970, è divenuto lo standard mondiale per la protezione delle comunicazioni commerciali (informazioni e standard sul DES: NIST -- FIPS PUB 46-1, 46-2, 81). È stato craccato la prima volta nel 1998 mediante un elaboratore parallelo, il Deep Crack, in grado di generare a forza bruta tutte le possibili chiavi del DES, in un tempo massimo di 56 ore.
- 3DES
- Rappresenta l'evoluzione del DES, e consiste nell'utilizzo ripetuto di 3 cifrari DES, con una chiave di 112 bit.
- RC2
- MARS
- TwoFish
- Blowfish
- Algoritmo sviluppato nel 1993 da Bruce Schneier. È una sorta di DES rivisto, più veloce e semplice da implementare, con chiavi di dimensioni variabili, fino a 448 bit. Attualmente, non si conoscono attacchi efficaci verso questo algoritmo che, non essendo coperto da brevetti, viene utilizzato in molti sistemi operativi e programmi open-source.
- Rijndael (AES)
- Sviluppato da Joan Daemen e Vincent Rijmen, è l'algoritmo vincitore, nel 2000, della gara indetta dal NIST (National Institute of Standards and Technology) per la ricerca di un nuovo standard in crittografia (NIST -- AES FIPS 197). Utilizza chiavi di lunghezza variabile, a 128, 192 o 256 bit (o comunque multipli vari di 32 bit).
Algoritmi asimmetrici
Crittografia asimmetrica (chiave pubblica e privata). Ad esempio l'algoritmo RSA (Rivest, Shamir, Adleman, 1978, MIT).
Bibliografia
Articoli
- Enrico Zimuel, Le basi della crittografia OpenSource e gli algoritmi simmetrici, Linux & C. n. 27 (2002), pp. 50-54.
- Pierluigi Perri, Storia della crittografia, Hackers & C. n. 1 (2003) pp. 36-38 e Hackers & C. n. 2 (2003) pp. 44-47.
Libri
- Bruce Schneier, Sicurezza Digitale, Tecniche Nuove, 2001.
- Bruce Schneier, Applied Cryptography -- 2nd edition, John Wiley & Sons Inc., 1996.