Cos'è la Crittografia


Crittografia e criptoanalisi

Quì troverete notizie generali relative alla crittografia, alla criptoanalisi e ai principali metodi crittografici, oltre ad una descrizione sommaria di PGP.



  • Breve storia della crittografia

  • Alcune tecniche di criptoanalisi




    Introduzione


  • Il tema della sicurezza della corrispondenza è antico quanto il mondo, e da sempre l'uomo ha cercato il modo di proteggere i suoi segreti e la sua vita privata. Come non ricordare certi romanzi ambientati nella Francia degli imperatori, dove la ghigliottina era strumento di uso frequente, e le dame facevano di tutto per proteggere l'identità dei loro innamorati facendo ricorso agli espedienti più strani ? I primi esempi di uso della Crittografia si hanno addirittura all'epoca dell'impero romano, quando Giulio Cesare usava una chiave che potremmo definire "rot-3" per cifrare i suoi messaggi, ossia "scalava" le lettere di 3 posizioni (la A diventava C, la B diventava D e cosí via ...) Da questi primi episodi ovviamente è passato molto tempo, e le tecniche di crittografia si sono molto evolute. Si è passati attraverso segnali di fumo, corde con nodi particolari, inchiostri simpatici ecc. fino a tecniche di crittografia basate su macchine meccaniche prima (come la tedesca ENIGMA della seconda guerra mondiale) e computers poi. Attualmente ci sono parecchi algoritmi di crittografia che usano la grande potenza di calcolo dei moderni calcolatori elettronici, cosí come gli stessi calcolatori sono impiegati nella "criptoanalisi", ossia nel tentativo di decifrare quello che è stato codificato da altri.




    Cos'è la crittografia


    Per crittografia si intende quella tecnica che permette di "cifrare" un messaggio rendendolo incomprensibile a tutti fuorchè al suo destinatario. In generale i due processi principali che vengono applicati in crittografia si dividono in "cifratura" e "codifica". La cifratura lavora sulle lettere "individuali" di un alfabeto, mentre una codifica lavora ad un livello semantico più elevato, come può essere una parola o una frase. I sistemi di cifratura possono lavorare per trasposizione (mescolando i caratteri di un messaggio in un nuovo ordine), o per sostituzione (scambiando un carattere con un altro carattere in accordo con una regola specifica), o una combinazione di entrambi. Nel linguaggio corrente la trasposizione è anche chiamata permutazione. Una cifratura che implementa entrambe le tecniche (trasposizione e sostituzione) è chiamata "cifratura composta". In linea di massima una cifratura composta è più sicura di una cifratura basata solo su sostituzione o su trasposizione. Shannon (l'inventore della teoria dell'informazione, N.d.R.) paragona la sostituzione alla "confusione", perchè l'output è una funzione non lineare dell'input. Egli inoltre ha paragonato la trasposizione alla "diffusione" perchè estende la dipendenza dell'output da un piccolo numero di posizioni dell'input a un grande numero.

    Ogni sistema di crittografia ha due parti essenziali: un algoritmo (per codificare e decodificare) e una "chiave", la quale consiste di informazioni che, combinate con il testo "in chiaro" passato attraverso l'algoritmo, vi darà poi il testo codificato. In ogni moderno sistema di crittografia si assume che l'algoritmo sia conosciuto dai potenziali "nemici", quindi la sicurezza di un sistema risiede solo ed esclusivamente nella segretezza della chiave.

    Il nostro obiettivo è quello di tradurre il linguaggio del testo in chiaro in un nuovo "linguaggio" che non può essere compreso e/o tradotto senza le informazioni supplementari fornite dalla chiave. A chi è familiare il concetto di entropia in fisica potrà essere sorpreso di scoprire che questo concetto è utile anche in crittografia. L'entropia è la misura della quantità di disordine in un sistema fisico, o della relativa assenza di informazione in un sistema di comunicazione. In un linguaggio naturale, come potrebbe essere l'italiano, l'entropia è bassa, in quanto vi è ridondanza e una certa regolarità statistica nei termini e nei caratteri. Se alcuni dei caratteri di una frase sono persi o incomprensibili noi di solito riusciamo a ricostruire la frase, con una buona approssimazione, nella grande maggioranza dei casi. Inversamente, noi vogliamo che il nostro testo criptato abbia la più alta entropia possibile, al fine di renderne il più difficile possibile la decodifica. Idealmente il nostro testo dovrebbe apparire come una serie di lettere o simboli casuali ... (random). Il nostro principio guida sarà quello di aumentare l'incertezza del criptoanalista il più possibile.

    La prima considerazione nella sicurezza di un sistema di crittografia riguarda la lunghezza della chiave. Se noi usiamo una chiave troppo corta (se comparata alla lunghezza del testo in chiaro) molto probabilmente l'algoritmo da noi usato, arrivato ad un certo punto della codifica, dovrà ripetere dei caratteri, o delle sequenze di caratteri, fornendo così uno schema che il criptoananlista potrebbe sfruttare per compiere il suo lavoro. Se la cosa dovesse ripetersi molte volte il criptoananalista potrebbe avere abbastanza materiale in mano per poter ottenere la nostra chiave. Un altro fattore importante da tenere in considerazione è il numero di chiavi che il mio algoritmo ammette. Se il mio algoritmo ammettesse, ad esempio, 10000 chiavi, io posso stare certo che un "nemico" dotato di mezzi di calcolo anche modesti potrebbe provarle tutte in un lasso di tempo accettabile, vanificando quindi il mio sistema di crittografia. Questo approccio (ricerca esaustiva su tutte le chiavi possibili) viene chiamato approccio di "forza bruta". Questo introduce il concetto del "fattore lavoro", necessario per rompere un sistema di crittografia. In linea di principio un sistema sicuro in assoluto NON esiste. Ma se noi possiamo fare in modo che il fattore lavoro necessario per romperlo sia il più alto possibile molto probabilmente ci saremo messi al riparo dalla grande maggioranza degli attacchi. Anche perchè il nostro avversario prima di lanciarsi nel tentativo di decodifica di un sistema complesso molto probabilmente eseguirà un bilancio costi-benefici. Se il beneficio che esso potrà avere dalla decodifica del nostro messaggio è inferiore allo sforzo (anche economico) che deve sostenere per decodificarlo (o per tentare di farlo) molto probabilmente lascerà perdere.



    Cos'è la Criptoanalisi


    Per criptoanalisi si intende appunto "l'analisi" del testo cifrato nel tentativo di decodificare un messaggio codificato da altri e del quale non si possiede la chiave. I metodi di attacco possono variare da una complicata analisi statistica del testo criptato fino a penetrare in casa del soggetto, o nel suo ufficio, e rubargli (o copiargli) la chiave (questo approccio si definisce criptoanalisi "pratica"). NON vi sono regole di fair-play. Il Criptoanalista è libero di usare tutte le armi in suo possesso per scoprire la vostra chiave, anche la vostra ingenuità, che di solito si rivela l'arma migliore. Se per caso venisse a sapere che il vostro cane si chiama "Beethoven" potrebbe pensare che voi siete abbastanza ingenui da usare questo nome come chiave. A prima vista potrebbe sembrare strano, ma vi assicuro che nella maggior parte dei casi funziona. Anche chi deve impostare una password molte volte usa il proprio nome, o quello della fidanzata, moglie, amante, figlio ... magari seguito da un numero, tanto per "complicare" le cose ... E' statisticamente provato che queste sono le password più facili da indovinare. Su una cosa del genere ci hanno addirittura fatto un film: Wargames !!

    Il criptoanalista potrebbe avere solo il testo criptato su cui lavorare, oppure avere sia il testo criptato sia quello in chiaro corrispondente. Alcuni sistemi crittografici sono abbastanza buoni se l'analista dispone solo del testo criptato, mentre falliscono completamente se è disponibile sia il testo criptato sia quello in chiaro. Alcuni si chiederanno: "Ma se l'analista ha già il testo in chiaro, perchè perdere tempo per ottenere la chiave ?". Semplice: perchè avendo la chiave egli potrà decodificare tutti i vostri messaggi, anche quelli di cui non dispone del testo in chiaro. Il vostro sistema, quindi, dovrebbe essere abbastanza robusto da resistere ad entrambi gli attacchi, sia quelli portati al solo testo criptato, sia quelli condotti al testo criptato e al testo in chiaro.

    La potenza dei computer moderni può aiutare moltissimo il criptoanalista, ma molti sistemi che possono sembrare estremamente sicuri possono essere infranti semplicemente con carta e penna. Per esempio la famiglia "Vigenere" di cifratura polialfabetica è stata creduta inviolabile fino alla fine del diciannovesimo secolo. Una cifratura polialfabetica consiste nell'uso di un secondo alfabeto per sostituire le lettere del testo in chiaro. In questo sistema la chiave determina l'ordine in cui devono venire scambiate le lettere e il ciclo viene ripetuto con una periodicità pari alla lunghezza della chiave. Questa periodicità è un indizio "fatale", infatti il criptoanalista applica uno schema di questo tipo: "A cifra uguale corrisponde lettera uguale, e a blocco uguale corrisponde parola uguale". In questo modo si evidenzia la lunghezza della chiave. Una volta conosciuta la lunghezza della chiave possiamo applicare le tabelle di frequenza di lettere di un linguaggio per iniziare a ipotizzare quale potrebbe essere la chiave. Questo tipo di cifratura "Vigenere" può essere facilmente implementata su un moderno computer, ma ormai essa è ritenuta troppo "debole" per gli scopi attuali.




    Alcuni sistemi crittografici


    Vediamo ora una brevissima sintesi di alcuni sistemi crittografici:


    La cifratura detta a chiave infinita o one-time pad consiste nel generare una chiave composta il più possibile da lettere, numeri e simboli disposti in modo casuale, e di una lunghezza almeno pari alla lunghezza del testo da criptare. Quindi per ogni carattere del testo in chiaro aggiungiamo (come somma di valori ASCII ad esempio) un carattere della chiave, ottenendo il testo criptato. E' facile intuire che una cosa del genere è praticamente impossibile da decifrare, in quanto si basa su una chiave ottenuta in modo assolutamente casuale (entropia massima) e senza la possibilità di analizzare delle ripetizioni nel testo, in quanto la chiave ha appunto la lunghezza stessa del testo. Questo sistema di codifica è usato per ottenere i più alti gradi di sicurezza militari, ma ha il grosso difetto di non essere impiegabile su vasta scala o per messaggi particolarmente lunghi.

    Alcuni algoritmi sono stati costruiti approssimando il sistema a chiave infinita con l'espansione di una chiave relativamente breve. Il sistema "Vernam", ad esempio, usato nelle trasmissioni telegrafiche, usava lunghi nastri di carta contenenti dei bit casuali, i quali erano aggiunti ai bit del messaggio originario.


    Il sistema a rotore prende il nome dalla macchina elettromeccanica tedesca ENIGMA usata nella seconda guerra mondiale. Essa era composta da ruote con i caratteri incisi sul bordo, e con contatti elettrici in corrispondenza delle lettere in entrambi i lati. Il testo in chiaro, digitato su una tastiera, veniva riprodotto utilizzando i caratteri di una ruota, la quale a sua volta veniva "rimappata" utilizzando i caratteri della seconda, e poi della terza, e cosi' via ... Tutti i rotori, e potevano essere parecchi, venivano "scalati", in modo che la sostituzione delle lettere fosse ogni volta diversa. La chiave consisteva nel settaggio iniziale dei rotori, che potevano essere posizionati in milioni di combinazioni diverse. Questo meccanismo è facile da costruire via software e abbastanza sicuro, può tuttavia essere infranto. Le storie che sono nate attorno alla decifrazione del codice ENIGMA da parte degli alleati hanno dato origine a parecchi libri e lo spunto anche per diversi film.


    Nel 1977 il "National Bureau of Standard" ha promulgato il DES (Data Encryption Standard) come il sistema di crittografia usato da tutte le agenzie federali (fatta eccezione per quegli atti che richiedevano un livello più alto di sicurezza). Il DES è disponibile in una pubblicazione governativa e anche in diversi libri. In origine era stato implementato solo in hardware, probabilmente per impedire una modifica delle sue tabelle interne, ma più tardi è stato implementato anche via software, tanto che esso ora è disponibile in parecchi pacchetti commerciali (come le famosissime Norton Utilities). Il DES è un algoritmo di cifratura composta che usava 16 passaggi di permutazione e sostituzione su blocchi di 64 bit ciascuno. Le tabelle di permutazione sono fisse, e la sostituzione è determinata dai valori di una chiave lunga 56 bit e dai blocchi del messaggio. Proprio la relativa brevità della chiave ha indotto alcuni esperti a credere che il DES potesse essere violato con relativa facilità cosa che poi è effettivamente accaduta. Il DES completo a 16 passaggi è stato attaccato con qualche successo da Biham e Shamir (uno dei creatori dell'algoritmo RSA, gli altri due erano Rivest e Adleman. N.d.R.) con l'uso della criptoanalisi differenziale, e da Matsui con l'uso della criptoanalisi lineare.

    Tuttavia il più devastante attacco pratico portato al DES è stato descritto alla conferenza Crypto '93, dove Michael Wiener del Bell Northern Research ha presentato un documento sull'apertura del codice DES con una macchina speciale. Egli aveva sviluppato e verificato un chip che provava 50 milioni di codici DES al secondo, fino a trovare quello giusto. Sebbene fino ad ora egli si sia astenuto dal produrre il componente in serie, può ottenerne la produzione per 10.50 $ al pezzo, e può inserirne 57000 in una macchina speciale con un costo di 1 milione di dollari. Questa macchina può provare tutte le chiavi DES in 7 ore, ottenendo la soluzione mediamente in 3,5 ore. Si può stornare e nascondere 1 milione di dollari dal budget di molte società. Spendendo 10 milioni di dollari la soluzione è ottenuta in 21 minuti, e 100 milioni di dollari assicurano un tempo di 2 soli minuti. Avendo a disposizione il budget di un qualunque governo per esaminare il traffico DES, il codice può essere violato in alcuni secondi. Tutto questo significa che il DES a 56 bits ormai è morto per ciò che riguarda le applicazioni serie di sicurezza dei dati.Un possibile successore del DES potrebbe essere una variazione conosciuta come "triplo DES", che usa due chiavi DES per cifrare tre volte , raggiungendo una lunghezza effettiva della chiave di 112 bits. Questo sistema è però tre volte più lento del DES normale.

    PGP usa una combinazione di diversi algoritmi, nella fattispecie RSA (crittografia a chiave singola), IDEA (crittografia a chiave pubblica, vedi più avanti) e MD5 (funzione di hash crittografico, cioè di verifica della firma). Le routines MD5 sono state sviluppate e rese di pubblico dominio da Ron Rivest. Per le persone crittograficamente curiose, la cifratura IDEA utilizza blocchi di 64 bits per il testo sia in chiaro che cifrato. Essa utilizza una chiave di 128 bits. È basata sulla filosofia della miscelazione di operazioni da diversi gruppi algebrici. È molto più veloce del DES e, come il DES, può essere usata in modo CFB (cipher feedback) o CBC (cipher block chaining). PGP usa l'IDEA in modo CFB a 64 bits.

    La cifratura a blocchi IPES/IDEA è stata sviluppata all'ETH di Zurigo da James L. Massey e Xuejia Lai, e pubblicata nel 1990. Non è un algoritmo "casalingo". I suoi progettisti hanno un'ottima reputazione nella comunità dei crittografi. I primi documenti pubblicati chiamavano l'algoritmo IPES (Improved Proposed Encryption Standard), ma più tardi il nome è stato cambiato in IDEA (International Data Encryption Algorithm). Fino ad ora, IDEA ha resistito agli attacchi molto meglio di altri algoritmi come FEAL, REDOC-II, LOKI, Snefru e Khafre. Prove recenti fanno ritenere che l'IDEA sia anche più resistente del DES agli attacchi portati da Biham e Shamir con la loro efficientissima criptoanalisi differenziale. Biham e Shamir hanno esaminato a fondo l'IDEA per trovare debolezze, senza successo. Gruppi accademici di criptoanalisti in Belgio, Inghilterra e Germania stanno cercando di attaccare l'IDEA, così come i servizi militari di diversi Paesi. Man mano che questo nuovo algoritmo attira le attenzioni e gli sforzi dei più formidabili gruppi del mondo della criptoanalisi, la fiducia in esso cresce col passare del tempo.




    Cos'è la Crittografia a chiave pubblica


    Il problema principale che affliggeva tutti i metodi di crittografia consisteva nello scambio della chiave, ossia nel prendere accordi con il destinatario del messaggio su quale codice usare. Supponiamo ad esempio che i due corrispondenti scelgano di scambiarsi messaggi tramite una corda con alcuni nodi particolari. È necessario che i due si incontrino almeno una volta e in gran segreto per concordare la sequenza e il significato dei nodi, altrimenti il messaggio risulterebbe assolutamente incomprensibile. È ovvio che se lo "scambio della chiave" fosse spiato da qualcun'altro quest'ultimo potrebbe a sua volta decifrare i messaggi una volta entrato in possesso della corda annodata, invalidando in questo modo l'intero sistema. Se dover far incontrare i due corrispondenti poteva essere problematico un tempo, quando magari i due abitavano a parecchi giorni di cammino l'uno dall'altro, è praticamente impossibile ai giorni nostri, almeno su vasta scala. Con l'avvento delle reti telematiche è possibile corrispondere con persone ai quattro angoli del globo, e ovviamente diventa impossibile andare a visitarle tutte ... Questo problema ha impedito il diffondersi di sistemi di crittografia come ad esempio il DES che usano una sola chiave per codificare e decodificare il messaggio. Il problema è stato risolto in modo brillante da Whitfield Diffie, in collaborazione con il professor Martin Hellmann della Stanford University, che creó un sistema di cifratura detto "a chiave pubblica". Il concetto č abbastanza facile da capire; nei sistemi di crittografia usati fino ad allora la "password" era unica, sia per codificare che per decodificare il messaggio. Con i sistemi a chiave pubblica le cose non stanno pių cosí le chiavi sono due, una per codificare e una per decodificare. Entrambe sono generate dal programma quando l'utente glielo chiede, e sono univoche, cioè non possono essere utilizzate per lo scopo inverso, ed è praticamente impossibile ottenere l'una quando si è in possesso solo dell'altra. Fatto questo basta rendere pubblica (appunto) la chiave per codificare e tenere ben nascosta quella per decodificare. In questo modo chiunque voglia mandarmi un messaggio potrá farlo, stando certo che io e solo io potrò leggerlo. Anzi, potrá a sua volta mandarmi, magari nella stessa mail, la sua chiave pubblica, cosí che io possa rispondergli in modo assolutamente sicuro. Ecco, è proprio partendo da questo principio che è nato PGP, il quale consente appunto di generare una coppia di chiavi, in congiunzione biunivoca tra loro, e di rendere pubblica ove si vuole la chiave per decodificare (anzi piú viene pubblicizzata e meglio è) trattenendo per se la chiave privata. Anzi, mi permette di fare anche molte altre cose, ad esempio di lasciare un messaggio "in chiaro" e di "firmarlo" elettronicamente con la mia chiave privata, in gergo si dice che si effettua "l'hash" di un messaggio. Chiunque possegga la mia chiave pubblica potrà poi chiedere al programma di verificare che il messaggio riportato nel testo sia effettivamente quello che ho scritto io e che non sia stato modificato da altri.

    Cos'è il PGP


    Il PGP è l'acronimo di Pretty Good Privacy (ossia: "Una privacy niente male"), un programma di
    crittografia a chiave pubblica che permette di scambiarsi informazioni (anche riservate) in modo estremamente sicuro e veloce, cioe' attraverso la posta elettronica. Ma PGP fa anche molte altre cose, ad esempio criptare un messaggio per uso "interno" (quindi usando un algoritmo a chiave singola), "firmare" il messaggio impedendo così delle modifiche da parte di estranei, codificare un qualsiasi file con il formato "Armor Radix 64", permettendone così l'invio tramite la posta elettronica e molto altro ancora.

    PGP è stato creato da Phil Zimmermann il quale ha messo a libera disposizione sia il programma compilato sia i sorgenti, cosicchè chiunque può visionare ed eventualmente modificare (se ne è in grado e previa autorizzazione di Zimmermann stesso) il codice di PGP. L'uso di PGP è pertanto gratuito per un uso privato e non soggetto a nessuna forma di registrazione.

    Il file è liberamente scaricabile da Internet e per l'installazione basta seguire le indicazioni riportate nella pagina installazione di questa guida.


    Ritorno al Menu

    Ritorno alla Home Page