Con questo articolo inzierò una serie di scritti sulla crittografia teorica, iniziando con le basi e le tecniche classiche, passando per DES, AES, Web of Trust, fino ad arrivare ad RSA. L’idea è dare delle basi di crittografia, le quali, sebbene dal punto di vista pratico non siano prettamente rilevanti, sono utilissime dal punto di vista teorico. Ovviamente non riuscirò a spiegare in modo approfondito i vari algoritmi, visto che servono nozioni avanzate di matematica discreta, ma darò la possibilità a chiunque voglia approfondire di poterlo fare in modo autonomo.
La crittografia è la branca della crittologia che si occupa di scrivere i metodi per rendere un messaggio ofuscato, quindi gli algoritmi e protoccoli per nascondere un messaggio in modo da non essere comprensibile a persone non autorizzate. Le branche affini ad essa sono:
Prima di iniziare, utilizzerò una serie di termini di cui darò solamente ora la definizione, che sono:
La forza di un algoritmo deve essere indipendente dal numero di messaggi e deve essere computazionalmente intrattabile. Per esserlo deve soddisfare due criteri principali:
Esistono diversi attacchi ad un cifrario, i principali sono:
I due tipi di attacco a un algoritmo di crittografia sono l’analisi crittografica, che si basa sulle caratteristiche dell’algoritmo di cifratura, e l'attacco a forza bruta, che consiste nel tentare tutte le possibili chiavi.
L’attaccante di noi sa tutto. L’algoritmo e il codice sono pubblici, l’unica cosa che non si sa è la mia password (chiave). Questo principio afferma quindi che la sicurezza di un crittosistema non deve dipendere dal tenere celato il crittoalgoritmo ma solo dal tenere celata la chiave.
fa uso della stessa chiave per cifrare e decifrare i messaggi (ex. DES,AES) ed è chiamata anche Crittografia convenzionale. La crittografia simmetrica trasforma il testo in chiaro in testo cifrato utilizzando un algoritmo di crittografia con una chiave segreta e presuppone che le due parti siano già in possesso delle chiavi. Per riavere il testo in chiaro basta applicare la medesima chiave al testo cifrato.
Il modello a cifratura simmetrica prevede quindi:
ad ogni persona coinvolta nella comunicazione è associata una coppia di chiavi:
Il meccanismo si basa sul fatto che, se con una delle due chiavi si cifra (o codifica) un messaggio, allora quest’ultimo sarà decifrato solo con l’altra.
In un sistema di crittografia a chiave pubblica (ad esempio: RSA), chiunque può crittografare un messaggio utilizzando la chiave pubblica del destinatario, ma tale messaggio può essere decifrato solo con la chiave privata del destinatario. La forza di un sistema di crittografia a chiave pubblica si basa sul grado di difficoltà per una chiave privata correttamente generata da determinare la sua chiave pubblica corrispondente.
La sicurezza dipende quindi solo mantenere la chiave privata segreta, e la chiave pubblica può essere pubblicata senza compromettere la sicurezza.
è una tecnica utilizzata per celare un messaggio segreto all’interno di un altro messaggio in modo tale che nessuno possa individuare la presenza e/o i contenuti del messaggio nascosto.
La cifratura di Cesare prevede la sostituzione di ciascuna lettera con la lettera che si trova a tre posizioni di distanza nell’alfabeto.
L’algoritmo può essere espresso nel seguente modo: C=E(3,p)=(p+3) mod 26
Per decrittografare: p=D(k,C)=(C-k) mod 26
In questa cifratura si può usare la forza bruta perchè le chiavi sono solamente 25, gli algoritmi di crittografia e decrittografia sono noti e il linguaggio del testo cifrato è facilmente riconoscibile.
La cifratura a sostituzione monoalfabetica utilizza un alfabeto per il testo in chiaro e una permutazione dello stesso per il testo cifrato. La chiave del sistema è rappresentata dalla permutazione. Se l’attaccante conosce la natura del testo in chiaro potrebbe sfruttare regolarità persenti in esso per attaccare (ex. Frequenza relativa delle lettere nel testo).
Queste cifrature sono infatti facili da violare poiché conservano le informazioni di frequenza dell’alfabeto originario.
È una cifratura multi-lettera, si basa sull’uso di una matrice 5x5 costruita utilizzando una parola chiave. La tecnica cifra coppie di lettere invece che una singola lettera, come nei precedenti. Le regole da applicare per cifrare sono:
L’algoritmo di crittografia prende un sequenza di _m _lettere in chiaro e le sostituisce con m lettere di testo cifrato. La sostituzione è determinata da m equazioni lineari in cui a ciascun carattere viene assegnato un valore numerico.
La formula di cifratura è:C=E(K,P)=KP mod26
La formula di decifratura è: P=D(K;C)=K(^-1)C mod26
La potenza di questo algoritmo deriva del fatto che essa nasconde completamente le frequenze mono-lettera.
La tecnica più nota è la cifratura di Vigenerè. In questa tecnica, l’insieme di regole di sostituzione monoalfabetica è costituito da 26 cifrature di Cesare con scorrimenti da 0 a 25. Ogni cifratura è denotata da una lettere chiave che è la lettera che sostituisce la lettera in chiaro “a”.
In questo schema viene utilizzata una chiave lunga quanto il messaggio in chiaro; inoltre, essa dev’essere utilizzata per crittografare e decrittografare un solo messaggio, poi scartata. Le difficoltà principali, sebbene esso sia inviolabile, sono:
Altre cifrature possono essere:
Come si può notare, la crittografia classica ha moltissime tecniche che porteranno poi le basi agli ideatori dei moderni algoritmi crittografici. Chiunque si sia interessato alla storia e alle tecniche passate consiglio vivamente _“Simon Singh - Codici & Segreti”. _