Crittografia Classica

Cifrario di Cesare

Il cifrario di Cesare è uno dei primi esempi di crittografia, utilizzato da Giulio Cesare per proteggere i messaggi. Il sistema prevede lo spostamento delle lettere dell'alfabeto di un numero prefissato. Ad esempio, se si stabilisce che il numero è 3, allora tutte le lettere del messaggio sono spostate di tre lettere, ovvero al posto della 'A' si scrive 'D', al posto di 'B' la lettera 'E', ecc.

In questo sistema si può pensare che la chiave sia il numero di lettere n. La funzione di cifratura e di decifratura è:
E(x) = (x+n) mod 26
D(x) = (x-n) mod 26

Esempio:
nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura
qho phccr gho fdpplq gl qrvwud ylwd pl ulwurydl shu xqd vhoyd rvfxud

Questo sistema è debole su due tipi di attacchi: il primo è il tipo di attacco a forza bruta, dove l'attaccante può iniziare a decifrare le prime parole del messaggio provando tutte le 26 possibilità. Il secondo tipo di attacco è l'Analisi delle frequenze, dove si analizza la frequenza statistica delle lettere in una certa lingua per trovare corrispondenze con la frequenza dei simboli utilizzati nel messaggio cifrato.

Cifrari mono alfabetici

I cifrari monoalfabetici effettuano una sostituzione delle lettere. Ad ogni lettera nel testo in chiaro viene sostituita un'altra lettera casuale. Gli attacchi a forza bruta non sono possibili, poiché la chiave è una delle 26! = 4x1026 permutazioni possibili dell'alfabeto. Tuttavia resta possibile l'attacco con l'analisi delle frequenze.

Esempio: utilizzando la seguente permutazione: likbjancfmdeghopzyqrstxuvw, dove la lettera "a" corrisponde alla "l" e così via, si ha:
nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura
hje gjwwo bje klggfh bf hoqryl tfrl gf yfryotlf pjy shl qjetl oqksyl

Cifrari di sostituzione omofonici

Cifrari polialfabetici

I cifrari polialfabetici utilizzano diverse permutazioni per ogni lettera. Ogni permutazione corrisponde ad un alfabeto spostato di un certo numero di caselle. La chiave indica gli alfabeti da utilizzare.
Uno dei cifrari polialfabetici più famosi è il cifrario di Vigenère. Esso utilizza una tavola, dove nella prima riga sono riportate le 26 lettere dell'alfabeto. Nella riga successiva sono riportate le lettere dell'alfabeto spostate di una lettera. La tavola completa è costituita da 26 colonne e 26 righe.

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
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 A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z 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

La chiave è costituita da una o più parole. Ogni lettera della chiave determina l'alfabeto da utilizzare.

Esempio: supponiamo che la chiave sia "evento" e il testo in chiaro sia "nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura". Si scrive la chiave, eventualmente ripetuta, sotto al testo in chiaro:

nelmezzodelcammindinostravitamiritrovaiperunaselvaoscura
eventoeventoeventoeventoeventoeventoeventoeventoeventoev

La prima lettera è una n, quindi si sceglie la colonna relativa alla n. Siccome la lettera della chiave in corrispondenza della prima lettera del testo in chiaro "n" è la "e", allora si sceglie la riga che inizia per "e". L'incrocio tra la colonna e la riga determina la lettera del testo cifrato.

nelmezzodelcammindinostravitamiritrovaiperunaselvaoscura
eventoeventoeventoeventoeventoeventoeventoeventoeventoev
rzpzxndjhreqehqvgrmisfmfeqmgtammmgkczvmcxfyiefxzzvsfvivv

In questo modo la frequenza statistica del testo in chiaro viene camuffata dalle trasposizioni. Ad ogni lettera uguale del testo in chiaro infatti non corrisponde in genere la stessa lettera del testo cifrato, tranne quando corrisponde anche la lettera della chiave.

Cifrario Vernam

Il cifrario di Verman è una generalizzazione dei cifrari polialfabetici precedenti, e prevede l'impiego di una chiave lunga quanto il testo in chiaro. In questo modo si possono eliminare le ripetizioni della chiave, che essendo regolari, possono facilitare la crittanalisi del testo cifrato.

One Time Pad

Il sistema crittografico One Time Pad deriva direttamente da quello inventato da Vernam. E' l'unico sistema crittografico perfettamente sicuro: se sono rispettate alcune condizioni è impossibile decifrarlo. La dimostrazione matematica della sua sicurezza è stata pubblicata da Claude Shannon nel 1949.

Questo tipo di chiave deve essere utilizzata una volta sola e deve essere casuale. Questi vincoli ne limitano l'impiego pratico. La combinazione tra testo in chiaro e testo cifrato è data dall'operazione di XOR. La stessa operazione di XOR si applica tra il testo cifrato e la chiave.

Esempio: supponiamo che il testo in chiaro sia "messaggio". In codifica ASCII (binario), il messaggio diventa:
01101101 01100101 01110011 01110011 01100001 01100111 01100111 01101001 01101111

Come chiave si impiega la seguente sequenza casuale di numeri binari:
237 197 118 60 86 211 67 56 153
che in binario è:
11101101 11000101 01110110 00111100 01010110 11010011 01000011 00111000 10011001

messaggio cifrato:
01101101 01100101 01110011 01110011 01100001 01100111 01100111 01101001 01101111 xor
11101101 11000101 01110110 00111100 01010110 11010011 01000011 00111000 10011001
-----------------
10000000 10100000 00000101 01001111 00110111 10110100 00100100 01010001 11110110

Il messaggio cifrato è la sequenza di numeri: 128 160 5 79 55 180 36 81 246

Un generatore perfettamente casuale di numeri è disponibile all'indirizzo http://www.random.org/

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License