PROGRAMMIAMO
File - Polialfabetici e cifrario di Vigenère
Cifrari polialfabetici

I cifrari polialfabetici si differenziano dai monoalfabetici (come il cifrario di Cesare e altri simili) in quanto un dato carattere del testo chiaro (p.es. la A) non viene cifrato sempre con lo stesso carattere, ma con caratteri diversi in base ad una qualche regola, in genere legata ad una parola segreta (chiave di cifratura) da concordare. In questo modo la sicurezza del codice aumenta in modo significativo; non è infatti non è più così semplice individuare le lettere del messaggio in base alla loro frequenza caratteristica in ogni lingua.

Cifrario di Vigenère

Il cifrario di Vigenère è uno degli esempi più noti di cifrari polialfabetici. Esso fu inventato da Blaise de Vigenère nel 1586.

Il metodo si può considerare una generalizzazione del cifrario di Cesare. Invece però di spostare sempre dello stesso numero di posti la lettera da cifrare, questa viene spostata di un numero di posti variabile, determinato in base ad una parola chiave, da concordarsi tra mittente e destinatario. Questa parola chiave è detta verme, per il motivo che, essendo in genere molto più corta del messaggio, deve essere ripetuta molte volte sotto questo. Il testo cifrato si ottiene spostando la lettera chiara di un numero fisso di caratteri, pari al numero ordinale della lettera corrispondente del verme.

Facciamo un esempio. Supponiamo di voler cifrare la frase "sopra la panca la capra campa" usando come parola chiave "goat". Per prima cosa dobbiamo scrivere la frase da cifrare e sotto a questa la chiave, ripetuta tante volte fino a coprire l'intera lunghezza della frase. In questo semplice esempio supponiamo di non cifrare i blank fra una parola e l'altra (per cifrare anche gli spazi basterebbe codificare ogni carattere col suo codice ASCII, come già accennato a proposito del cifrario di Cesare):

S O P R A   L A   P A N C A   L A   C A P R A   C A M P A
G O A T G   O A   T G O A T   G O   A T G O A   T G O A T

A questo punto codifichiamo ogni lettera della frase da cifrare e del verme con la sua posizione nell'ordine alfabetico come indicato nella tabella seguente:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
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

Otteniamo allora

19 15 16 18 1   12 1   16 1 14 3 1   12 1   3 1 16 18 1   3 1 13 16 1
7 15 1 20 7   15 1   20 7 15 1 20   7 15   1 20 7 15 1   20 7 15 1 20

A questo punto si traspone ogni carattere del messaggio in chiaro di tante posizioni quante indica la lettera corrispondente della chiave. Per fare questo sommiamo il numero della lettera nel testo in chiaro con quello della lettera della chiave sottostante e se il valore supera 26, prendiamo il resto (cioè ricominciamo l'alfabeto dall'inizio). Otteniamo dunque:

26 4 17 12 8   1 2   10 8 3 4 21   19 16   4 21 23 7 2   23 8 2 17 21
Z D Q L H   A B   J H C D U   S P   D U W G B   W H B Q U

Il messaggio cifrato sarà dunque:

ZDQLH AB JHCDU SP DUWGB WHBQU

Per decifrare il messaggio basterà fare l'operazione inversa, scrivendo sotto di esso la chiave (GOAT) e sottraendo da ogni lettera il valore della lettera corrispondente nella chiave (se il risultato della sottrazione è un numero negativo, occorre spostarsi un certo numero di posizioni all'indietro dalla fine dell'alfabeto).

 

Debolezza e decifrazione del cifrario di Vigenère

Il punto di forza del cifrario di Vigenère, rispetto ai cifrari monoalfabetici, è quello di usare una cifratura diversa per ogni lettera del messaggio in chiaro. Per esempio nella seguente frase (la prima riga è il messaggio in chiaro e la seconda è la chiave MARIO ripetuta più volte):

C

H

I

N

O

N

R

I

S

C

H

I

A

N

O

N

V

I

N

C

E

M

A

R

I

O

M

A

R

I

O

M

A

R

I

O

M

A

R

I

O

M

Si noti come la prima C del messaggio viene cifrata con la M di MARIO, mentre la seconda C viene cifrata con la O di MARIO. In questo modo a lettere uguali nel testo in chiaro, non corrispondono più caratteri cifrati uguali e non è possibile applicare al messaggio l'analisi delle frequenze per craccarlo.

Tuttavia, siccome la chiave usata è più breve del messaggio, essa viene ripetuta più volte per coprire l’intera lunghezza del messaggio stesso. Questo rappresenta una debolezza di questo metodo di cifratura. Infatti può accadere che la stessa parola, presente più volte nel messaggio, venga cifrata ripetutamente con la stessa chiave.

Si guardi per esempio la parola NON iniziale cifrata con IOM e la seconda ripetizione di NON cifrata essa pure con IOM. Si tratta naturalmente di un caso, ma su un messaggio molto lungo è probabile che questa ripetizione casuale si presenti molte volte per le combinazioni di lettere più comuni di una lingua. In base a queste ripetizioni, un critto-analista esperto può dedurre la lunghezza della chiave usata e, una volta trovata la lunghezza, può craccare il cifrario con un metodo di analisi in frequenza in forma leggermente più complessa (si veda il link a fine pagina per una applicazione completa del metodo di decifrazione).

In sostanza, la lunghezza (o meglio, la brevità) della chiave, costituisce la principale debolezza del cifrario di Vigenere. In generale in crittografia qualsiasi ripetizione (ripetizione di lettere, di sostituzioni, di chiavi, di parole etc.) rappresenta un punto debole del cifrario e andrebbe evitata a ogni costo.

Infatti il cifrario di Vigenere, considerato per secoli assolutamente inattaccabile, venne decifrato da Charles Babbage e da Friedrich Kasiski verso la metà dell'800, usando il metodo a cui abbiamo accennato.

 

The Black Chamber: un sito che guida passo passo all'analisi e alla decifrazione di un testo cifrato con Vigenére.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it