PROGRAMMIAMO
File - Cifrari poligrafici
Cifrari poligrafici

Gli esempi visti finora (cifrario di Cesare e cifrario di Vigenère) sono entrambi cifrari monografici, in quanto ogni carattere nel testo in chiaro viene sostituito con un carattere nel testo cifrato. Nei cifrari poligrafici invece il testo viene suddiviso in gruppi di caratteri (ad esempio a due a due) oppure ad ogni carattere del testo in chiaro corrisponde una coppia di simboli nel testo cifrato.

Lo storico greco Polibio (~200-118AC), nelle sue Storie (Libro X) descrive il più antico esempio di codice poligrafico, che attribuisce ai suoi contemporanei Cleoxeno e Democleito: l'idea è quella di cifrare una lettera con una coppia di numeri compresi tra 1 e 5, in base ad una scacchiera 5x5 di 25 numeri. La tabella seguente mostra le 24 lettere dell'alfabeto greco disposte su una scacchiera (l'ultima casella rimane vuota). Le righe e le colonne sono numerate da 1 a 5:

1 2 3 4 5
1 A B Γ Δ Ε
2 Z H Θ I K
3 Λ M N Ξ O
4 Π Ρ Σ T Υ
5 Φ Χ Ψ Ω

Ogni lettera viene quindi codificata in base al suo numero di riga seguito dal numero della colonna corrispondente. Per inviare ad esempio la parola KΡHTEΣ (cretès, cretesi in greco antico), si formeranno le lettere in questo modo:

K → 2,5    Ρ → 4,2    H  → 2,2    T → 4,4    E → 1,5    Σ → 4,3 

Il messaggio cifrato sarà dunque 25 42 22 44 15 43

Il cifrario di Polibio può anche essere usato con gli alfabeti moderni. Se usato con l'alfabeto inglese, il problema è che ci sono 26 lettere, cioè più delle caselle della scacchiera 5x5. In questo caso si decide di accorpare due lettere insieme (es. J e K) codificandole con lo stesso codice:

1 2 3 4 5
1 A B C D E
2 F G H I, J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

Ovviamente il cifrario di Polibio è molto facilmente attaccabile, poiché la chiave di cifratura è sempre la stessa (cioè la matrice con tutte le lettere). In effetti in antichità esso veniva usato piuttosto che per cifrare per trasmettere a distanza dei messaggi usando delle torce accese: mediante movimenti delle torce a destra e a sinistra si codificavano i numeri di riga e di colonna di ogni lettera e così si potevano trasmettere messaggi con una sorta di alfabeto Morse.

Cifrario di Playfair

Il Playfair Cipher è una forma di cifrario poligrafico nella quale il testo è scomposto da bigrammi, cioè gruppi di due caratteri. Per la cifratura si usa una matrice (cioè una scacchiera o tabella) di cinque righe per cinque colonne, contenente le lettere dell'alfabeto inglese. Siccome le lettere dell'alfabeto inglese sono 26 occorre eliminarne una (di solito si elimina una delle lettere meno frequenti, per esempio la W - se una W compare nel testo in chiaro, può essere sostituita da due VV).

Per esempio una matrice potrebbe essere la seguente:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

Si noti che le lettere nella matrice non sono disposte nell'ordine alfabetico. Infatti la matrice viene generata a partire da una parola chiave segreta che nel nostro caso è

INSALATA DI CAVOLFIORE

In pratica si dispongono le lettere della parola chiave nelle caselle della matrice eliminando le lettere ripetute e si riempiono le caselle rimaste vuote con le lettere che avanzano. fino a completare tutte le lettere dell'alfabeto.

Adesso supponiamo di voler cifrare la solita frase "SOPRA LA PANCA LA CAPRA CAMPA". Come al solito per semplicità trascuriamo gli spazi (blank) e dividiamo la frase in gruppi di due caratteri:

SO PR AL AP AN CA LA CA PR AC AM PA

Nel caso in cui i caratteri del messaggio fossero in numero dispari, si aggiunge in fondo una lettera rara (per esempio una X) per rendere pari il numero delle lettere. Inoltre se nel messaggio c'è una lettera doppia, una delle due viene eliminata (oppure sostituita con una X o con un'altra lettera rara). Per esempio se ci fosse la parola CAPPELLO bisognerebbe trasformarla prima della codifica in CAPELO o CAPXELXO.

Il procedimento di cifratura è il seguente:

  1. se le due lettere sono in colonne e righe diverse, si prendono le due che fanno rettangolo con esse, cominciando da quella che si trova in linea con la prima lettera del gruppo chiaro;

  2. se le due lettere si trovano sulla stessa riga, si sostituiscono con le due lettere che le seguono a destra; se una lettera si trova sulla quinta colonna a destra, si prenderà come successiva la prima lettera a sinistra della stessa linea;

  3. se le due lettere sono sulla stessa colonna, si prendono le due lettere sottostanti; se una lettera è nell'ultima riga, si prenderà come seguente la lettera che sta nella prima riga della stessa colonna;

Vediamo tutto questo col nostro esempio. Cominciando con SO, individuiamo la posizione di S e di O nella nostra matrice e il rettangolo corrispondente:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

In base alla regola 1, dovremo sostituire SO → LC.

Continuiamo con il digramma successivo PR. Individuiamo la sua posizione sulla matrice:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

Sempre base alla regola 1, sostituiamo PR → JG.

Il successivo bigramma è AL. Si noti che le due lettere si trovano sulla stessa riga della nostra matrice:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

In base alla regola 2 sostituiamo A con L (lettera immediatamente a destra) e L con I (siccome la L sta sull'ultima colonna, si prende la lettera a inizio riga). Dunque AL → LI

Andando un po' avanti consideriamo ora il bigramma AM (il penultimo della nostra frase). In questo caso le due lettere si trovano sulla stessa colonna:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

In base alla regola 3, sostituiamo A con V (la lettera sottostante) e M con Y e dunque abbiamo che AM → VY

Completando la cifratura si ottiene: LC JG LI LM LS VS IL VS JG SV VY ML

La decifratura avviene usando la stessa tabella e le stesse regole precedenti al contrario. Per esempio LC:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

In questo caso applico la regola 1 e sostituisco LC → SO

Consideriamo per esempio il terzo bigramma LI del testo cifrato:

I N S A L
T D C V O
F R E B G
H J K M P
Q U X Y Z

In base alla regola 2 invertita dobbiamo prendere le due lettere che si trovano immediatamente a destra di L (cioè A) e di I (cioè L, tenendo conto che I è in prima colonna e non ci sono lettere più a destra). Dunque LI → AL

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it