Crittografia Base
Cifrari a Sostituzione
Il più antico e conosciuto sistema di criptazione è il Cifrario a Sostituzione. Venne usato per la prima volta da Cesare, da cui prese appunto il nome, inseguito vennero ideati altri cifrari a sostituzione molto più sicuri (rispetto al cifrario di Cesare), che però come vedremo tra poco, "soffrono" di una debolezza comune. La famiglia dei cifrari a sostituzione ha occupato e occupa un posto importante nei sistemi crittologici. Di base, un algoritmo a sostituzione non fa altro che sostituire ad una lettera K una lettera J. Matematicamente è rappresentabile come:
f(x) <--- E' il nostro algoritmo di sostituzione
f(K) = J ----> Perciò K è speculare a J
La funzione f(K) è biettiva cioè reversibile, e necessita SEMPRE di una chiave, sia per il processo di crittazione sia per quello di decifrazione. Possedendo la chiave e il testo cifrato, possiamo inverire la funzione ed ottenere nuovamente il testo in chiaro.Possiamo anche notare crittosistemi a sostituzione si dividono in due tronconi, quelli a funzione crescenti o decrescenti, e quelli basati sulla posizione (come il sistema Enigma). I cifrari a sostituzione appartengono ad una grande famiglia, quella dei cifari Simmetrici Double-Way.
Cifrario di Cesare
Questo è in assoluto il sistema più vecchio è più insicuro che ci possa essere. Ogni lettera del testo originale viene sostituita da un'altra differente lettera. Abbiamo la frase:
PlainText: ALICE HA TELEFONATO A BOB.
P rappresenta il testo in chiaro mentre C è il testo criptato. Per crittare questa frase, dobbiamo scegliere una lettera che fungerà da chiave, noi scegliamo la lettera Z, lo schema da applicare sarà il seguente:
Perciò la frase precedente diventerà:
C: EPMGI LE XIPIJSREXS E FSF
Invece per decrittare la stessa frase, dobbiamo applicare lo stesso pattern ma al contrario.
Questo cifrario può essere tradotto in termini matematici come:
C= (P + X )MOD 26
Dove X rappresenta la posizione della lettera nell'alfabeto, P la lettera da criptare e 26 invece è il numero delle lettere dell'alfabeto. Per chi non lo sapesse l'operazione MOD ci restituisce il resto di una divisione. Da questa relazione matematica salta immediatamente all'occhio una grave debolezza, cioè che ad una lettera A ne corrisponderà SEMPRE una B, inoltre gli spazi ed i segni d'interpunzione non verranno minimamente cambiati. Il problema è che questo genere di cifrario può essere facilmente forzato con un bruteforce, poichè le possibili chiavi sono 26, come le lettere dell'alfabeto.
Cifraro a Sostituzione Semplice
Il cifrario a sostituzione semplice è la naturale evoluzione del cifrario di Cesare. A differenza del cifrario di Cesare, la chiave qui non è una sola lettera, ma un'intera parola, o meglio è lo stesso charset. Essendoci l'intero charset ci rendiamo facilmente conto che le possibilità di un bruteforce diventano nulle, poichè si dovrebbero tentare 26*25*24....2*1 combinazioni cioè il fattoriale di 26!, il numero di combinazioni che ne uscirebbe sarebbe dell'ordine di 10^26 !!!. Anche in questo cifrario ogni lettera del PlainText è rimpiazzata dalla stessa del CipherText. Il miglior attacco che possiamo tentare è la PERIODICITA', infatti in ogni lingua ci sono delle lettere che si ripetono con una certa FREQUENZA ed inoltre sussistono delle strutture grammaticali comuni. Ad esempio gli articoli le preposizioni ecc. Prendiamo ad esempio la frase:
P: IL CANE NON ABBAIA
e come chiave usiamo K= KEY
Il pattern sarà:
Ciph: K E Y Z X W V U T S R Q P O N M L J I H G F D C B A
Frase cifrata: TQ YKOX ONO KEEKTK
La prima cosa che si nota è che nella frase cifrata vengono mantenuti gli spazi, e ciò ci permette di riconoscere le parole dalle strutture comuni (articoli ecc.). Dato che ad un'ipotetica lettera A corrisponde sempre una lettera G, viene naturale pensare che la frequenza statistica delle lettere di un PlainText NON VARIA nel CipherText. Nella lingua italiana (come anche nelle altre lingue) le lettere che hanno maggiore frequenza sono le vocali, ed in particolare la A,I,E,O mentre è meno frequente la U. Le consonanti con frequenza maggiore invece sono S,L,P,R. Per individuare le tabelle di frequenza bisogna sempre utilizzare testi lunghi, in modo da poter stabilire uno Standard-Statistico per ogni lingua. Perciò un cifrario a sostituzione semplice si può risolvere semplicemente facendo affidamento alla FREQUENZA e tenendo sempre di conto la lingua su cui stiamo lavorando, poichè come avrete certamente capito lo standard-statistico varia da linguaggio a linguaggio. Proviamo ora a stabilire una tabella statistica per la nostra frase:
Histogram Analysis of
| No. | Substring Frequency | In (%) | Frequency |
| 1 |
K
|
26.6667 |
4
|
| 2 |
O
|
20.0000 |
3
|
| 3 |
E
|
13.3333 |
2
|
| 4 |
T
|
13.3333 |
2
|
| 5 |
N
|
6.6667 |
1
|
| 6 |
Q
|
6.6667 |
1
|
| 7 |
X
|
6.6667 |
1
|
| 8 |
Y
|
6.6667 |
1
|
Come si può vedere la lettera più frequente è la K, proviamo a sostituirla con la A che è la vocale più frequente.
tq yAox ono AeeAtA
La parola "ono" potrebbe essere NON...
tq yANx NnN AeeAtA
La "tq" iniziale dovrebbe essere un articolo, proviamo ad usare IL che è il primo e le cui lettere non sono state usate prima:
IL yANx NON AeeAIA
"A**AIA" potrebbe essere "ABBAIA", e se c'è questo verbo, chi compie l'azione dovrebbe essere un CANE..
Ecco il crittogramma risolto:
IL CANE NON ABBAIA
Come esempio non è il massimo, ma questo è il modus-operandi per risolvere i cifrari a sostituzione semplice.
In sintesi per risolvere un cifrario a sostituzione semplice in assenza della chiave, bisogna avere conoscenze specifiche sul linguaggio in cui è scritto. La caratteristica basilare di ogni linguaggio è la frequenza relativa di ogni lettera dell'alfabeto e la posizione delle lettere in relazione in relazione alle altre (lettere) in una parola. La punteggiatura e gli spazi possono esserci di grande aiuto, infatti i diagrafi (parole formate da due lettere) sono delle strutture statiche di ogni linguaggio. La frequenza delle lettere si divide in alta, media, moderata. In caso di crittoanalisi bisogna partire dalla serie di "lettere alte" cioè quelle a più alta frequenza statistica, questo fatto che a molti potrebbe apparire scontato è invece di fondamentale importanza.
In questa prima lezione ho inserito solamente il caso più semplice di crittogramma, ma con l'andare avanti delle puntate noterete che la difficoltà crescerà esponenzialmente. Spesso ci sarà bisogno di utilizzare l'analisi matematica, ed è per questo che sto preparando una puntata dedicata solamente ai concetti matematici adottati nella crittologia.
Bye