Storia della crittografia - Cifrari
Cifre monoalfabetiche
Prova tu stesso il codice - Frequenza statistica delle lingue

matematicamente

Una cifra monoalfabetica è una funzione biunivoca che ha per dominio l'insieme dei segni chiari e per codominio l'insieme dei segni cifrati.

Una simile relazione è anche detta 1:1 (uno a uno), infatti ad ogni segno chiaro deve corrispondere uno e un solo segno cifrato e viceversa.

Molte volte il codominio coincide con il dominio e quindi si usano gli stessi simboli dell'alfabeto chiaro; la funzione cifrante si riduce ad una permutazione dell'alfabeto; altre volte si usano invece come cifre gruppi di due o tre cifre, e cioè numeri da 00 a 99 o da 000 a 999. In passato era frequente usare simboli geometrici o di fantasia.

Per aumentare la sicurezza di un cifrario monoalfabetico di fronte alla crittanalisi statistica si può eliminare la clausola della biunivocità in quattro modi diversi, che non si escludono a vicenda.

  • Non cifrati: Usare una relazione non ovunque definita, in altre parole alcuni segni non vengono cifrati; nella crittografia classica è abituale non cifrare spazi(*)e segni di interpunzione; le minuscole di solito vengono convertite in maiuscole e quindi cifrate come tali. I numeri o meglio le cifre decimali di solito vengono scritti per esteso, altrimenti devono avere un cifra anche loro.
  • Omofoni: Usare una relazione non univoca, quindi alcuni segni chiari, almeno i più frequenti, sono cifrati con diversi segni cifranti da alternare preferibilmente a caso.
  • Polifoni: Usare una relazione non iniettiva, quindi diversi segni chiari sono cifrati con lo stesso segno (polifono).
  • Nulle: Usare una relazione non suriettiva, quindi ci sono alcuni segni cifrati (nulle) che non corrispondono a nessun segno chiaro.

I cifrari monoalfabetici sono cifrari di sostituzione: del testo chiaro si sostituisce ogni carattere con un altro carattere (o numero) secondo una tabella prestabilita, ottenendo il testo cifrato. Nella crittografia contemporanea (informatica) si sostituiscono blocchi di bit invece di caratteri, ma il principio è sempre quello della sostituzione.

I più antichi cifrari di questo tipo sono il cifrario Atbash e il cifrario di Cesare.

Quanti alfabeti cifranti sono possibili? Cominciando dalla A questa può essere cifrata con una qualsiasi delle 26 lettere, la B con una delle 25 rimanenti, la C con una delle 24 rimanenti ... alla fine la Z dovrà essere cifrata con l'unica rimasta. In totale quindi il numero di alfabeti possibili è $N = 26 \times 25 \times 24 ... 1 = 26! = 403.291.461.126.605.635.584.000.000‬$ numero fuori della portata umana.

Sembrerebbe quindi che la cifra sia sicurissima, inattaccabile, ma non è così, una semplice crittanalisi statistica basata sulle caratteristiche statistiche delle lingue è in genere sufficiente per forzare il testo, a condizione che sia sufficientemente lungo.

Come generare la chiave?

La chiave della cifra è la lista delle cifre in ordine alfabetico; se si cifra con lettere dello stesso alfabeto sarà un alfabeto disordinato impossibile da ricordare a memoria; per avere una lista facilmente riproducibile si sono usate parole chiave che fanno da inizio della lista (escludendo le lettere ripetute) lasciando poi le altre lettere a seguire; per esempio usando come chiave VENEZIA si ottiene la lista cifrante:

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

Ovviamente questo comporta una perdita di sicurezza tanto più per parole brevi come questa; si sono escogitati molti altri artifici per generare liste cifranti a partire da parole chiave; di interesse storico sono le liste involutorie o reciproche che hanno il pregio di essere reversibili, servono cioè sia a cifrare sia a decifrare.

Nella tabella a lato sono elencati alcuni metodi per aumentare la sicurezza di un sistema monoalfabetico. Altri modi sono quello di affiancarlo con un dizionario o nomenclatore: le parole più comuni si cifrano con simboli speciali secondo un dizionario segreto, oppure di usare cifre di lunghezza variabile.


Il caso più generale di codice monoalfabetico è quello che prevede di usare come tabella di cifratura una arbitraria permutazione dell'alfabeto; si stabilirà p.es. che A va cifrata con T, B con Y, C con R ... come nell'esempio che segue(*):

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

Il messaggio Arrivano rinforzi si cifra allora sostituendo una per una le lettere del chiaro con le lettere della tabella:

ARRIVANORINFORZI TKKESTNJKENPJKCE

La decifratura richiede di cercare via via le lettere del cifrato nella tabella, recuperando le lettere del chiaro; ovvero di costruire preventivamente una tabella inversa, detta lista decifrante, che nel nostro esempio sarebbe:

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

così che dal cifrato si recupera il chiaro con lo stesso metodo;

TKKESTNJKENPJKCE ARRIVANORINFORZI


Valido HTML 4.01!
Riferimenti bibliografici
X

Gli spazi sono di solito omessi perché fornirebbero un grosso aiuto al crittanalista, grossissimo se lasciati in chiaro, comunque notevole anche se cifrato; lo spazio è infatti il carattere con la massima frequenza.

In poche parole, nella crittografia classica il dominio viene di norma limitato alle sole lettere maiuscole; se necessario i caratteri esclusi vengono scritti per esteso, per esempio invece del segno . si scrive punto; e numeri e cifre vengono convertiti in letterali, quindi 0 → zero, 1 → uno, 2 → due ...

Nella crittografia contemporanea, DES, RSA, AES ... viceversa tutti i segni vengono cifrati.

X la lista cifrante è generata a caso ogni volta che questa pagina viene caricata.