Matematica Discreta Lezione del 13/05/09
Abbiamo visto che nel sistema crittografico di Cesare la chiave di cifratura coincide con quella di decifratura, e ovviamente deve essere concordata in anticipo fra il mittente e il destinatario: tale chiave consiste in un valore numerico a (offset) tale che 0a20 (l’offset rappresenta di quante posizioni in senso orario differisce la lettera cifrata dalla lettera in chiaro); ovviamente i 2 utenti potrebbero in modo equivalente assegnare ad ogni lettera dell’alfabeto un valore numerico progressivo da 0 a 20 (A=0, B=1, C=2,…., Z=20), poi scegliere come chiave una delle 21 lettere dell’alfabeto e definire il valore dell’offset a uguale al valore numerico della lettera scelta (nell’esempio della lezione precedente, con offset=3, i 2 utenti avrebbero concordato la chiave D, perché a=3 è il valore numerico della lettera D).
Abbiamo notato che il sistema di Cesare è attaccabile con il metodo della “forza bruta”, visto il numero ridotto delle possibili chiavi (in tutto 21).
Abbiamo anche introdotto una sua evoluzione, in cui la chiave è una permutazione delle 21 lettere dell’alfabeto (la cifratura di una lettera è la lettera che si trova, nella permutazione, nella stessa posizione della lettera in chiaro): il numero di chiavi possibili è molto alto (in tutto 21!) e rende impraticabile l’attacco con il sistema della forza bruta.
Tale sistema crittografico, come quello di Cesare, è un sistema a sostituzione monoalfabetica :ogni lettera x dell’alfabeto viene cifrata con una lettera y, ma la cifratura y di x é sempre la stessa, anche se la lettera x appare in diverse posizioni nel testo in chiaro.
Tutti i sistemi a sostituzione monoalfabetica sono però vulnerabili ad un altro tipo di attacco, quello basato sull’analisi statistica delle frequenze delle lettere .
Se un testo è scritto in una certa lingua (e soprattutto se esso è molto lungo) il numero di presenze (in percentuale) di ogni lettera dell’alfabeto nel testo è in genere molto vicino ad un valore statistico che si conosce a priori.
Ecco un grafico dei valori percentuali delle frequenze delle lettere della lingua italiana (in ordine
decrescente):
Per esempio le vocali a, e sono le lettere statisticamente più frequenti (quasi il 12%
di frequenza); seguono la vocale i (poco oltre l’11%), la vocale o (circa il 10%), la consonante n (circa il 7%) e così via, fino alle consonanti q, z (le meno frequenti, con un valore di circa 0,5%).
Poiché ogni lettera del testo in chiaro ha sempre la stessa cifratura (indipendentemente dalla sua posizione), esaminando la frequenza delle lettere nel testo cifrato si potrebbe, con una certa approssimazione, fare delle ipotesi sulle lettere di cui esse sono la cifratura (soprattutto se il testo è molto lungo) e poi, attraverso altre considerazioni “linguistiche” (ogni lingua ha certi “vincoli” fra le lettere di una parola) sarebbe possibile, anche per tentativi, risalire al testo in chiaro.
Il sistema crittografico di Vigenère
La vulnerabilità alle analisi statistiche dei sistemi crittografici a sostituzione monoalfabetica risiede
dunque nel fatto che ogni lettera dell’alfabeto viene cifrata sempre con la stessa lettera,
indipendentemente dalla sua posizione nel testo.
Il sistema crittografico di Vigenère (introdotto nel ‘500) pone rimedio a questo difetto, perché è un sistema a sostituzione polialfabetica, nel senso che ogni lettera dell’alfabeto viene cifrata con una lettera che però dipende dalla posizione della lettera stessa nel testo in chiaro.
Il sistema di Vigenère è una evoluzione del sistema di Cesare: nel sistema di Cesare si fissa come chiave (offset) una lettera dell’alfabeto con valore numerico a, con 0a20; ogni lettera x del testo in chiaro é cifrata con la lettera y che si trova (a partire dalla lettera x) spostandosi di a posizioni lungo l’alfabeto in verso orario (pensando sempre all’alfabeto con un struttura circolare).
Nel sistema di Vigenère la chiave è una parola composta da k lettere dell’alfabeto: poiché k è in genere minore del numero di lettere del testo in chiaro, per effettuare la cifratura si ripete più volte la chiave sotto il testo in chiaro fino a “coprire” tutte le lettere di quest’ultimo (anche in eccesso), e poi si cifra ogni lettera del testo in chiaro con il sistema di Cesare utilizzando come chiave la lettera della parola chiave che si trova sotto di essa.
Per esempio, se il testo in chiaro è “APPUNTAMENTOALLETRE”, e se la chiave è la parola
“SEGRETO” :
A P P U N T A M E N T O A L L E T R E
S E G R E T O S E G R E T O S E G R E T O
S T V O R P O F I T N S T D E I C L I
Nella prima riga vi è il testo in chiaro, nella seconda la chiave ripetuta più volte (fino a coprire il testo in chiaro), nella terza il testo cifrato: per esempio si cifra la seconda lettera P con chiave E (offset =4), ottenendo la cifratura T; si cifra la terza lettera P con chiave G (offset =16), ottenendo la cifratura V e così via. Come si vede una lettera del testo in chiaro può essere cifrata in modo diverso a secondo della sua posizione: la P in seconda posizione viene cifrata con T; la P in terza posizione viene cifrata con V.
Per semplificare la cifratura, si può utilizzare una matrice 21x21, composta da alfabeti ordinati e shiftati verso destra: la prima riga contiene le lettere dell’alfabeto nel loro ordine naturale; la seconda riga contiene le lettere shiftate di 1 posto verso destra (sempre pensando ad una struttura circolare); la terza riga contiene le lettere shiftate di 2 posti verso destra etc…. (vedere sotto la matrice).
Per cifrare una lettera del testo in chiaro basta individuare, nella prima riga, la colonna in cui si trova la lettera stessa, poi individuare, nella prima colonna, la riga in cui si trova la lettera che ha il ruolo della chiave (offset): la cifratura sarà la lettera che si trova all’incrocio fra la colonna e la riga individuate.
Per esempio per cifrare la lettera T con la chiave R: si individua nella prima riga la colonna della T, si individua nella prima colonna la riga della R e si ottiene la cifratura N all’incrocio.
A B C D E F G H I L M N O P Q R S T U V Z B C D E F G H I L M N O P Q R S T U V Z A C D E F G H I L M N O P Q R S T U V Z A B D E F G H I L M N O P Q R S T U V Z A B C E F G H I L M N O P Q R S T U V Z A B C D F G H I L M N O P Q R S T U V Z A B C D E G H I L M N O P Q R S T U V Z A B C D E F H I L M N O P Q R S T U V Z A B C D E F G I L M N O P Q R S T U V Z A B C D E F G H L M N O P Q R S T U V Z A B C D E F G H I M N O P Q R S T U V Z A B C D E F G H I L N O P Q R S T U V Z A B C D E F G H I L M
P Q R S T U V Z A B C D E F G H I L M N O Q R S T U V Z A B C D E F G H I L M N O P R S T U V Z A B C D E F G H I L M N O P Q S T U V Z A B C D E F G H I L M N O P Q R T U V Z A B C D E F G H I L M N O P Q R S U V Z A B C D E F G H I L M N O P Q R S T V Z A B C D E F G H I L M N O P Q R S T U Z A B C D E F G H I L M N O P Q R S T U V