Monday, September 07, 2009

Il Cifrario di Vernam

In un precedente post ho riportato per intero il capitolo "Parole a caso" tratto da Un Matematico Impertinete di Piergiorgio Odifreddi; in quelle pagine si faceva un breve riferimento al metodo di cifratura Vernam.
In termini semplici possiamo dire che si tratta di un sistema crittografico caratterizzato dall'avere la chiave di cifratura lunga esattamente quanto il testo (un'altra caratteristica, meno ovvia di quanto potrebbe sembrare, è che la chiave deve essere utilizzata una sola volta, pena la perdita di sicurezza del metodo).

Nella sua forma più semplice si utilizza una chiave con la stessa forma del testo da criptare; nella fase di cifratura si procede associando a ciascuna lettera (sia del testo che della chiave) un numero corrispondente: per esempio A = 0, B = 1, C = 2, ..., Z = 25; sommando i numeri del testo in chiaro con quelli della chiave si ottiene il testo cifrato; a tal proposito è importante sottolineare che le somme devono essere modulari (o circolari): di fatto, una volta superato il 25 si ritorna a zero (per sempio Z + D= 25 + 3 = 28 = 2 = C).

Supponiamo di voler cifrare la parola "padania" usando la chiave "termiti". Si ottiene:

p = 15
a = 0
d = 3
a = 0
n = 13
i = 8
a = 0

t = 19
e = 4
r = 17
m = 12
i = 8
t = 19
i = 8

Sommano le cifre omologhe si trova la parola cifrata "ieumvbi".

15 + 19 = 34 = 8 = i
0 + 4 = 4 = e
3 + 17 = 20 = u
0 + 12 = 12 = m
13 + 8 = 21 = v
8 + 19 = 27 = 1 = b
0 + 8 = 8 = i

Da "ieumvbi", conoscendo la chiave e il sistema di codifica (il modo in cui lettere e numeri sono associati tra loro), si procede per differenza (il messaggio cifrato meno la chiave) sino a ottenere il messaggio in chiaro (anche in questo caso la differenza deve comportarsi in modo modulare):

8 - 19 = -11 = 15 = p
4 - 4 = 0 = a
20 - 17 = 3 = d
12 - 12 = 0 = a
21 - 8 = 13 = n
27 - 19 = 8 = i
8 - 8 = 0 = a