ANALISI E SPERIMENTAZIONE DI UNA CERTIFICATION AUTHORITY IN UN SISTEMA DI AUTENTICAZIONE BIOMETRICO



Documenti analoghi
! La crittoanalisi è invece la scienza che cerca di aggirare o superare le protezioni crittografiche, accedendo alle informazioni protette

Informatica per la comunicazione" - lezione 13 -

RETI DI CALCOLATORI. Crittografia. La crittografia

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

Analisi di programmi: Crittografia

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

4 3 4 = 4 x x x 10 0 aaa

Dispense di Informatica per l ITG Valadier

PROGETTO LAUREE SCIENTIFICHE -MATEMATICA 2006/2007 Modelli Matematici per la Società Incontro del

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza

Introduzione alla crittografia con OpenPGP

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo

Appunti sulla Macchina di Turing. Macchina di Turing

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

DOCUMENTO ELETTRONICO E FIRMA DIGITALE

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

Convertitori numerici in Excel

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica)

SISTEMI DI NUMERAZIONE E CODICI

Dimensione di uno Spazio vettoriale

Capitolo 8 La sicurezza nelle reti

Firma digitale: aspetti tecnologici e normativi. Milano,

La firma digitale CHE COSA E'?

Vendere online. Andrea Marin. Università Ca Foscari Venezia SVILUPPO INTERCULTURALE DEI SISTEMI TURISTICI SISTEMI INFORMATIVI PER IL TURISMO

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

risulta (x) = 1 se x < 0.

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

ESEMPIO 1: eseguire il complemento a 10 di 765

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

un protocollo è costituito da una serie di passi (step) e coinvolge due o più persone (parti, entità) allo scopo di svolgere un incarico

Identità e autenticazione

Lezione 7 Sicurezza delle informazioni

Reti di calcolatori ed indirizzi IP

I sistemi di numerazione

Scambio delle chiavi. mercoledì 7 dicembre 2011

Strutturazione logica dei dati: i file

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

I numeri semiprimi e i numeri RSA. come loro sottoinsieme

Firma digitale Definizione

Capitolo 2. Operazione di limite

POSTA ELETTRONICA CERTIFICATA

3. Introduzione all'internetworking

Gennaio. SUAP On Line i pre-requsiti informatici: La firma digitale

Alessandro Pellegrini

PEC un obbligo che semplifica

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

Lezioni di Matematica 1 - I modulo

La sicurezza nelle reti di calcolatori

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Informazione analogica e digitale

Probabilità discreta

Database. Si ringrazia Marco Bertini per le slides

Allegato A: Regole tecniche per la gestione dell identità.

Algoritmi e strutture dati. Codici di Huffman

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Il database management system Access

Registratori di Cassa

Documenti cartacei e digitali. Autenticità. Cosa si vuole garantire? Riservatezza. Integrità 11/12/2012. PA digitale: documenti e firme (I.

ALGEBRA DELLE PROPOSIZIONI

Uso di base delle funzioni in Microsoft Excel

RC4 RC4. Davide Cerri. Davide Cerri CEFRIEL - Politecnico di Milano cerri@cefriel.it

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

L apposizione di firme e informazioni su documenti firmati

Il calendario di Windows Vista

Software per Helpdesk

La firma digitale e le sue possibili applicazioni

Serve a garantire la nostra privacy nell era era della comunicazione digitale.

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

V= R*I. LEGGE DI OHM Dopo aver illustrato le principali grandezze elettriche è necessario analizzare i legami che vi sono tra di loro.

Corso di Informatica

Lezione 9: Cambio di base

Guida Compilazione Piani di Studio on-line

LICEO STATALE ENRICO MEDI CON INDIRIZZI:

Quasar Sistemi S.r.l.

Mentore. Rende ordinario quello che per gli altri è straordinario

Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

CALCOLO COMBINATORIO

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

INVIO SMS

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

II.f. Altre attività sull euro

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

SOMMARIO... 3 INTRODUZIONE...

Determinare la grandezza della sottorete

GUIDA ALL USO 4 STAR PRESENTA LA RUBRICA VOCALE UN SOLO NUMERO PER CHIAMARE CHI VUOI.

da chi proviene un messaggio?

Corso di ARCHITETTURA DEI SISTEMI INFORMATIVI - Prof. Crescenzio Gallo. 114 Sistemi informativi in rete e sicurezza 4.6

Certificati digitali con CAcert Un'autorità di certificazione no-profit

Esercizi su. Funzioni

POSTA ELETTRONICA CERTIFICATA

Informatica. Rappresentazione dei numeri Numerazione binaria

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Transcript:

UNIVERSITÀ DEGLI STUDI DI PADOVA FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica TESI DI LAUREA Titolo ANALISI E SPERIMENTAZIONE DI UNA CERTIFICATION AUTHORITY IN UN SISTEMA DI AUTENTICAZIONE BIOMETRICO Relatore: prof. Michele Moro Candidato: Costa Alberto ANNO ACCADEMICO 2006-2007

Sommario Scopo di questa tesi di laurea è la realizzazione di una Certification Authority per la gestione dei certificati a chiave pubblica, nell ambito di un sistema di autenticazione biometrico. Tale sistema, il cui scopo è quello di garantire l identificazione sicura di un utente grazie ad un parametro biometrico come l impronta digitale, è costituito non solo da una Certification Authority, ma anche da una Attribute Authority. Quest ultima si preoccupa proprio della gestione dei certificati di attributo, che contengono l informazione sull impronta digitale. Un tale progetto era già stato realizzato precedentemente; il lavoro effettuato in questa tesi pone però l attenzione solo sulla Certification Authority, con il duplice scopo di aggiornare il software presente con le nuove versioni disponibili e di realizzare una guida passo passo che accompagni l utente durante l installazione e la configurazione di tale software. Tutto questo naturalmente senza trascurare gli aspetti teorici che permettono di capire il perché di alcune scelte effettuate in fase realizzativa. Per le funzioni di Certification Authority la scelta è ricaduta sul software opensource Ejbca, che si appoggia all application server JBoss per funzionare. Inoltre per la gestione e memorizzazione dei certificati è stato utilizzato OpenLDAP. Particolare attenzione è stata inoltre riservata per garantire la sicurezza durante le comunicazioni tra i vari programmi utilizzati, grazie a software come OpenSSL e Cyrus SASL. I campi dove è possibile utilizzare una Certification Authority sono innumerevoli, e non per forza legati a sistemi di autenticazione tramite parametri biometrici; un esempio attuale è rappresentato dal commercio elettronico, dove alla necessità di sicurezza nelle comunicazioni si aggiunge il bisogno di una identificazione sicura delle parti coinvolte, per evitare fenomeni come il phishing. 1

Indice 1 Introduzione... 4 2 Crittografia... 6 2.1 Informazioni generali... 6 2.2 Crittografia e Steganografia nel passato... 6 2.2.1 Il cifrario di Cesare... 7 2.3 La crittografia fino al XVIII secolo... 9 2.4 La crittografia moderna... 11 2.4.1 Enigma... 12 2.5 Cifrario di Vernam e sicurezza perfetta... 15 2.6 Crittografia simmetrica e asimmetrica... 16 2.6.1 Crittografia simmetrica... 16 2.6.1.1 Des... 17 2.6.1.2 Triple-Des... 19 2.6.1.3 AES... 20 2.6.1.4 IDEA... 21 2.6.1.5 Lo scambio di chiavi di Diffie-Hellman... 22 2.6.2 Crittografia asimmetrica... 23 2.6.2.1 RSA... 24 2.7 Funzioni di Hash... 25 2.8 Firma Digitale... 26 3 Certification Authority e PKI... 28 3.1 Certificato digitale... 28 3.1.1 Il formato X.509... 29 3.2 Public Key Infrastructure... 30 3.2.1 Certificazione... 31 3.2.1.1 Certification Authority... 31 3.2.1.2 Procedura di certificazione... 33 3.2.2 Validazione... 35 3.3 X.500 e LDAP... 36 4 Realizzazione... 38 4.1 Hardware... 38 4.2 Il software utilizzato... 38 4.2.1 Java... 38 4.2.2 Ant... 40 4.2.3 JBoss... 41 4.2.4 Ejbca... 41 4.2.5 OpenSSL... 43 4.2.6 Berkeley DB... 45 4.2.7 Cyrus SASL... 46 4.2.8 OpenLDAP... 47 4.2.8.1 I file di OpenLDAP... 47 4.2.8.2 Slapd e Slurpd... 47 4.2.8.3 Strumenti e librerie di OpenLDAP... 48 2

4.2.9 Ldap Browser/Editor... 49 4.3 Guida all installazione... 50 4.3.1 Login... 50 4.3.2 Installazione di Java... 52 4.3.3 Installazione di Ant... 58 4.3.4 Installazione di JBoss... 61 4.3.5 Installazione di Ejbca... 73 4.3.6 Installazione di OpenSSL... 82 4.3.6.1 Creazione di una CA con OpenSSL... 84 4.3.7 Installazione di BerkeleyDB... 91 4.3.8 Installazione di Cyrus SASL... 94 4.3.9 Installazione di OpenLDAP... 96 4.3.9.1 Configurazione di OpenLDAP... 99 4.3.10 Installazione di Ldap Browser/Editor... 106 4.3.11 Errore di accesso alla sezione Administration di Ejbca... 108 4.4 Conclusioni... 111 Bibliografia... 112 3

Capitolo 1 Introduzione Il grande sviluppo di Internet negli ultimi anni è stato molto rapido, e oramai molte delle attività che implicavano una interazione fisica tra le persone, come il commercio, la vendita e l acquisto di beni, vengono effettuate anche in rete. È quindi indispensabile garantire una certa sicurezza sull identità dei soggetti che nella rete Internet forniscono servizi, soprattutto se a pagamento. Se non fosse presente nessun metodo di controllo, non ci sarebbe per esempio la garanzia che il bene che stiamo acquistando, e che pagheremo magari con una carta di credito, non sia in realtà una truffa, messa in piedi da qualche soggetto non meglio identificato che una volta ricevuti i nostri soldi non si farà più sentire. Gli strumenti introdotti in questo lavoro possono evitare il verificarsi di situazioni spiacevoli come quella descritta ora. La parola chiave che ricorrerà molto spesso nelle pagine di questa tesi è autenticazione, cioè il fatto di essere davvero sicuri che un soggetto sia davvero chi dice di essere. La scoperta che segna la svolta, e che apre la strada a meccanismi di autenticazione efficienti, è la crittografia asimmetrica, il cui aspetto fondamentale è la presenza di una coppia di chiavi, una privata da custodire e una pubblica da rendere disponibile. Così si usa la chiave pubblica di un soggetto per cifrare un messaggio diretto al soggetto stesso, e solo lui potrà decifrarlo essendo l unico possessore della chiave privata. Tutto questo ha rappresentato una rivoluzione rispetto ai metodi di crittografia precedenti, dove era presente una sola chiave segreta. Con la crittografia asimmetrica si riescono infatti a fornire strumenti come la firma digitale, che rendono l identificazione di un soggetto nella rete molto più semplice, anche se non assolutamente certa. Il vero strumento che porterà a garantire la certezza assoluta nell identificazione di un soggetto è il certificato digitale, emesso dalla Certification Authority, che permette di associare una certa chiave pubblica a un soggetto, e riesce quindi a fornire alla firma digitale quello che mancava per avere la certezza del riconoscimento: si riesce a garantire il cosiddetto non ripudio. Questo significa ad esempio che se un soggetto A manda un messaggio a un soggetto B e lo firma digitalmente, e B verifica attraverso il certificato digitale che è stato proprio A a mandare il messaggio, A non può negare di averlo mandato. Tale fatto è così importante che alla firma digitale e ai certificati digitali è stato dato valore legale; l elenco pubblico delle Certification Authority, così come il formato dei certificati, è regolato infatti in Italia dall articolo 29 comma 1 del decreto legislativo 7 marzo 2005 nn 82 e specificato nel DPCM 13 gennaio 2004. Per informazioni e materiale vedere il sito del CNIPA (Centro Nazionale per l Informatica nella Pubblica Amministrazione) http://www.cnipa.gov.it/site/it- IT/Attivit%c3%a0/Certificatori_accreditati/Elenco_certificatori_di_firma_digitale/. Una Certification Authority non deve però solo emettere certificati, ma anche emettere delle liste dove sono contenuti i certificati non più validi, oltre a prendersi carico di verificare l identità di un soggetto che richieda un certificato. 4

La scelta effettuata per la Certification Authority è stata EJBCA, un software open source scritto in Java che fornisce tutte le funzioni di cui abbiamo parlato, e che supporta moltissimi algoritmi crittografici e protocolli per la gestione dei certificati, come X.509. Tutta questa struttura messa in atto per rendere disponibili le chiavi pubbliche e garantire la loro autenticità con i certificati prende il nome di Public Key Infrastructure. Infatti chiavi e certificati digitali devono essere diffusi e resi disponibili, altrimenti non avrebbero molta utilità. Ad aggiungere maggior sicurezza, sono stati usati software come OpenSSL e Cyrus SASL, che garantiscono la sicurezza nelle comunicazioni client server (come potrebbe essere nel caso di un utente che da casa richiede un certificato collegandosi alla pagina web di EJBCA) e che forniscono metodi di autenticazione avanzati. Per quanto riguarda la struttura della tesi, nel capitolo 2 verrà fatta una panoramica sulla crittografia, partendo dalle tecniche utilizzate in passato fino a quelle più attuali, e introducendo tra le altre cose i concetti già accennati di firma digitale e crittografia asimmetrica. Nel capitolo 3 si analizzeranno invece gli scopi e il funzionamento di Certification Authority e PKI (Public Key Infrastructure), descrivendo inoltre la struttura dei certificati digitali secondo lo standard X.509 v3 e presentando anche il protocollo LDAP per la gestione di directory contenenti informazioni, nel nostro caso relative ai certificati. Infine nel capitolo 4 si descriveranno i software utilizzati in questa tesi, terminando con la guida all installazione, in modo che se in futuro dovesse rendersi necessario il ripristino del sistema utilizzato, questo sia semplice e intuitivo anche per chi non ha molta familiarità con l ambiente Linux. Tale guida, oltre a riportare i comandi da utilizzare, è ricca di immagini che riprendono le varie fasi di installazione dei programmi, in modo che ci si renda conto subito se tutto sta procedendo per il verso giusto o se sono presenti errori. Si ricorda che nel dvd allegato alla tesi sono presenti, oltre a questo file, tutti i programmi utilizzati nella guida con relativi file di istruzioni, comprese le immagini in formato ISO del sistema operativo Linux utilizzato, in modo da evitare a chi dovrà eventualmente ripristinare il tutto di dover cercare in Internet il materiale necessario, cosa sicuramente abbastanza onerosa in termini di tempo. 5

Capitolo 2 Crittografia Data la grande importanza della crittografia nell ambito di questo lavoro, in questo capitolo verrà trattato l argomento, descrivendo i vari tipi di tecniche crittografiche, evidenziandone i pregi e i difetti, in modo da rendere comprensibili alcune delle scelte effettuate nella realizzazione del progetto. Non verrà comunque fatta una trattazione esaustiva su tutti gli aspetti della crittografia, ma solo su quelli ritenuti più importanti per la comprensione del lavoro svolto, oltre ad una parte di introduzione storica. 2.1 Informazioni generali La parola crittografia deriva dalla parola greca kryptós che significa nascosto e dalla parola greca gráphein che significa scrivere. La crittografia è la controparte della crittanalisi ed assieme formano la crittologia. Volendo definire semplicemente questi termini, possiamo dire che la crittografia è la parte della crittologia che si occupa di trasformare un messaggio in qualcosa di diverso, utilizzando adeguate tecniche, così da renderne impossibile, o quantomeno difficile, la decifrazione. Di questa ultima si occupa invece la crittanalisi, cioè del risalire al messaggio originale conoscendo quello cifrato ma senza sapere la tecnica usata per cifrarlo. 2.2 Crittografia e Steganografia nel passato Sembra che il primo esempio scritto di messaggio cifrato risalga a circa 6000 anni fa; si tratta di una iscrizione egizia, dove vennero usati geroglifici non standard per celare il significato di un messaggio. Per migliaia di anni re, regine e generali hanno avuto il bisogno di comunicazioni efficienti per governare i loro paesi e comandare i loro eserciti. Inoltre, essi compresero le conseguenze dell eventuale caduta dei loro messaggi in mano ostili: informazioni preziose sarebbero state a disposizione di nazioni rivali e nemici. Fu il pericolo dell'intercettazione da parte degli avversari a promuovere lo sviluppo di codici, tecniche di alterazione del messaggio destinate a renderlo comprensibile solo alle persone autorizzate. Una delle prime tecniche di comunicazione segrete, basata sull'occultamento del messaggio, si chiama steganografia, dalle parole greche steganós, che significa coperto, e gráphein, che significa scrivere. Negli anni sono state impiegate in tutto il mondo innumerevoli forme di steganografia. La longevità della steganografia dimostra che essa garantisce una certa sicurezza, ma il suo punto debole è evidente: se il portatore del messaggio è attentamente perquisito, è probabile che il messaggio sia scoperto. In altre parole, la segretezza è perduta nel momento stesso dell'intercettazione. 6

Perciò in parallelo con lo sviluppo della steganografia si assisté all'evoluzione della crittografia. Essa non mira a nascondere il messaggio in sé, ma il suo significato. Per rendere incomprensibile un testo, lo si altera per mezzo di un procedimento concordato dal mittente e dal destinatario. Questi può quindi invertire il procedimento, e ricavare il messaggio originale. Il vantaggio della crittografia è che anche se il nemico intercetta il messaggio, esso risulta incomprensibile e quindi inutilizzabile. Infatti il nemico, non conoscendo il procedimento di alterazione, dovrebbe trovare difficile, se non impossibile, ricostruire il significato. Non tutte le società antiche svilupparono forme di crittografia. La Cina, per esempio, l'unica civiltà antica ad usare una scrittura ideografica, non ne ha mai viste. Le ragioni, secondo gli storici, sono legate alla natura prevalentemente orale delle comunicazioni. Anche se la steganografia e la crittografia sono discipline indipendenti, possono essere impiegate per alterare e occultare il medesimo testo, garantendo un livello di sicurezza molto più elevato. Per esempio, il «microdot», cioè la riduzione di uno scritto alle dimensioni di un punto, è una forma di steganografia che ebbe largo impiego durante la seconda guerra mondiale. Tramite un procedimento fotografico, gli agenti tedeschi in America latina trasformavano una pagina scritta, precedentemente crittografata, in una macchia con un diametro inferiore al millimetro, che poteva essere nascosta nel puntino di una «i» in una comunicazione banale. Il primo microdot fu scoperto dall' FBI nel 1941 grazie a una soffiata. Come esempio di tecniche crittografiche usate in passato, esaminiamo il Cifrario di Cesare, forse il più famoso. 2.2.1 Il cifrario di Cesare Svetonio nella Vita dei dodici Cesari, un'opera del II secolo d.c., racconta che Giulio Cesare usava per le sue corrispondenze riservate un codice di sostituzione molto semplice, nel quale ogni lettera del testo veniva sostituita dalla lettera che la segue di tre posti nell'alfabeto (usiamo in questo esempio l alfabeto inglese) a b c d e f g h i j k l m n o p q r s t u v w x y z d e f g h i j k l m n o p q r s t u v w x y z a b c Figura 2.1: Cifrario di Cesare Supponiamo per esempio di voler trasformare la parola informatica usando questo metodo, e facendo in modo che ogni lettera del messaggio cifrato sia spostata di 3 posizioni rispetto a quella del messaggio originale. Il risultato sarebbe lqirupdwlfd. Certo, oggi può sembrare banale una tecnica del genere, ma al tempo di Cesare, quando erano poche le persone che sapevano leggere, poteva bastare. Metodi come questo si chiamano cifrari a scorrimento, ed un esempio è il ROT- 13, dove l offset tra i caratteri del messaggio cifrato e quello originale è 13. 7

Figura 2.2: ROT 13 Il cifrario di Cesare ci permette comunque di definire gli elementi principali della crittografia. 1. Un testo in chiaro (plain-text) da proteggere (nell esempio del cifrario di Cesare, informatica ) 2. Un algoritmo di cifratura, cioè il metodo usato per elaborare il testo in chiaro; nel nostro caso la sostituzione di ogni carattere con una lettera più avanti nell alfabeto. 3. Una chiave, che serve all algoritmo crittografico per produrre il testo cifrato; nell esempio analizzato è il numero 3, cioè il numero di posizioni di cui far avanzare ogni lettera del testo in chiaro. 4. Il testo cifrato (cipher-text), l output dell algoritmo; nel nostro esempio la parola lqirupdwlfd. Un algoritmo come quello di Cesare, dove la stessa chiave viene usata per cifrare e decifrare, è detto simmetrico o a chiave privata, per differenziarlo dagli algoritmi asimmetrici o a chiave pubblica; torneremo su questi argomenti più avanti. Il difetto principale del metodo di Cesare è però che usando una tecnica brute force (cioè provando tutte le chiavi possibili) si riesce facilmente ad arrivare alla decifrazione del messaggio; infatti supponendo di usare l alfabeto italiano, le possibili chiavi sono 20. Questo perché l alfabeto italiano ha 21 caratteri, e usando la chiave 21 si avrebbe il cipher-text uguale al plain-text, mentre con la chiave 22 si otterrebbe lo stesso risultato fornito dalla chiave 1 e così via (in sostanza si avrebbe la chiave modulo 21). Si potrebbe a questo punto pensare che per ovviare al problema basti tenere segreto il metodo di cifratura (l algoritmo) usato. Questo approccio però è sbagliato, perché se un eventuale nemico si impadronisse dell algoritmo, sarebbe in grado di decifrare tutti i messaggi, anche quelli futuri. Nel 1883 lo studioso di crittologia Auguste Kerckhoffs, scrisse infatti: "La sicurezza di un crittosistema non deve dipendere dal tener celato il crittoalgoritmo. La sicurezza dipenderà solo dal tener celata la chiave." Un buon algoritmo non dovrà quindi basarsi sulla sua segretezza, ma sull impossibilità di provare tutte le chiavi in tempo ragionevole, evitando l attacco brute force, e sulla difficoltà di risalire alla chiave usata conoscendo solo l algoritmo. 8

2.3 La crittografia fino al XVIII secolo Nel 1446 il grande architetto e letterato Leon Battista Alberti pubblicò il trattato De Cifris, dove oltre a parlare dei vari metodi di cifratura conosciuti, introdusse un nuovo algoritmo, la cui particolarità era quella di modificare periodicamente la chiave. Alberti ha proposto un disco composto di due cerchi concentrici di rame. Uno esterno fisso di diametro maggiore sul quale sono riportate le lettere dell'alfabeto in chiaro e uno interno mobile per le lettere dell'alfabeto cifrante. Il disco esterno è composto di 24 caselle contenenti 20 lettere maiuscole in ordine lessicografico, escluse H, J, K, W, Y, al posto delle quali ci sono i numeri 1, 2, 3, 4. Il disco interno riporta le 24 lettere minuscole in maniera disordinata (la u e la v sono collassate) ed un simbolo speciale &. Fissata una lettera maiuscola come chiave, ad esempio B, si deve spostare il disco mobile interno in modo da far corrispondere la B con un simbolo particolare del disco interno(&). Si stabilisce in tal modo un'associazione tra le lettere dell'alfabeto in chiaro e quello dell'alfabeto cifrante. Figura 2.3: Disco di Leon Battista Alberti Blaise de Vigenère pubblicò nel 1586 un trattato di cifrari nel quale proponeva tra gli altri un codice che ebbe grande fortuna e che è ricordato con il suo nome. Si tratta del più semplice codice di sostituzione polialfabetica, e proprio per la sua semplicità ha goduto per secoli di una grossa fama. La forza del cifrario di Vigenère sta nell'utilizzare non uno ma 26 alfabeti cifranti per cifrare un solo messaggio. Il metodo si può considerare una generalizzazione del codice di Cesare; invece di spostare sempre dello stesso numero di posti la lettera da cifrare, questa viene spostata di un numero di posti variabile, determinato dalle lettere della parola chiave, da concordarsi tra mittente e destinatario. La parola è detta chiave o verme, per il motivo che, essendo in genere molto più corta del messaggio, deve essere ripetuta molte volte. Di seguito viene riportata il cifrario utilizzato nei codici di Vigenère. 9

Figura 2.4: Cifrario di Vigenère Forniamo ora un esempio pratico dell utilizzo del cifrario di Vigenère. Scegliamo innanzitutto una parola chiave, per es. mito, e scriviamo di seguito le righe della tabella precedente (alfabeti) con le iniziali corrispondenti alle lettere della parola chiave. M N O P Q R S T U V W X Y Z A B C D E F G H I J K L I J K L M N O P Q R S T U V W X Y Z A B C D E F G H T U V W X Y Z A B C D E F G H I J K L M N O P Q R S O P Q R S T U V W X Y Z A B C D E F G H I J K L M N A questo punto supponiamo di voler codificare la parola mondo. Dobbiamo usare i 4 alfabeti ottenuti in ciclo continuo; ora, la m di mondo corrisponde nel primo alfabeto a y, infatti m è la 13 esima lettera dell alfabeto, e y è la 13 esime lettera del primo alfabeto. Di conseguenza, la o viene codificata, usando il secondo alfabeto, in w, la n usando il terzo in g, la d usando il quarto in r, e per la o finale dobbiamo riusare il primo alfabeto ottenendo a. Quindi la parola che otteniamo è ywgra. La cosa importante da notare è che alla stessa lettera del testo in chiaro, possono corrispondere lettere diverse del testo cifrato. E, viceversa, a lettere diverse del testo in chiaro può corrispondere la stessa lettera nel testo cifrato. Questa caratteristica rende il cifrario di Vigenerè inattaccabile con le tecniche di analisi statistica, basate sul fatto che in tutte le lingue alcune lettere sono molto più frequenti di altre (per es. in italiano la e ricorre molo più spesso della q ). La forza di questo cifrario risiede anche nel fatto che il numero di chiavi è enorme, quindi un tentativo di decifratura basato sulla forza bruta (cioè sulla prova in sequenza di tutte le chiavi possibili) risulta computazionalmente troppo oneroso. Questo metodo, che rimase per circa 300 anni inviolato, venne però sconfitto da Friederich Kasiski, che in un suo trattato del 1861 descrisse un modo per attaccare con successo un cifrario polialfabetico con chiave ripetuta come quello di Vigenère. 10

2.4 La crittografia moderna Il cifrario di Jefferson prende il nome dal suo inventore Thomas Jefferson (1743-1826), uno degli autori della Dichiarazione d'indipendenza e Presidente degli USA nel 1801-1804. Jefferson non lo mise mai in uso e il suo cifrario fu dimenticato fino al 1922, quando fu riscoperto e utilizzato, fino agli anni '50, dall'esercito statunitense. Nel 1890 Etienne Bazeries un crittologo francese propose "La chiffre endecifrable", un cifrario del tutto equivalente a quello di Jefferson. Il codice di Jefferson è un metodo di cifratura meccanico basato su un cilindro costituito da 36 dischi, imperniati su di un asse, in grado di ruotare liberamente. Ogni disco riporta le 26 lettere dell'alfabeto sul bordo esterno, in ordine differente l'uno rispetto all' altro. Inoltre i dischi possono volta per volta essere inseriti sull'asse in un ordine differente per ogni cifratura. La cifratura di un messaggio avviene nel seguente modo: il messaggio viene innanzitutto diviso in blocchi di 36 caratteri. Per ogni blocco, i dischi della macchina vengono ruotati in modo tale da far comparire allineati su una riga i caratteri del blocco. Una volta effettuata tale operazione, si sceglie a caso un'altra riga, e si considera la corrispondente sequenza di 36 lettere come il messaggio cifrato. Il ricevente, che possiede un cilindro identico a quello del trasmittente, non deve far altro che ruotare i dischi in modo tale da far comparire il cifrato allineato su una riga. Compiuta questa operazione, deve analizzare le restanti righe. Una sola di queste è una frase di senso compiuto rappresentante il messaggio in chiaro. Una variante è quella di fissare a priori la riga su cui sarà possibile trovare il messaggio in chiaro. Il cilindro di Jefferson è il primo esempio di una serie di macchine cifranti basate su cilindri e dischi ruotanti intorno ad un asse, e la più celebre di tutte è la cosiddetta Macchina Enigma usata dai Tedeschi nella Seconda Guerra Mondiale. Figura 2.5: Cifrario di Jefferson Il Playfair cipher fu inventato dal noto fisico Sir Charles Wheatstone (1802-1875), ma il nome di Playfair deriva da colui che ha divulgato nelle alte sfere governative questo metodo di cifratura. Lyon Playfair, barone di St.Andrews, mostrò per la prima volta questo sistema nel 1854 durante una cena organizzata da Lord Granville alla presenza di Lord Palmerton (1784-1865) allora ministro degli Esteri. 11

Il Cipher è ritenuto essere il primo metodo di cifratura a bigrammi (coppie di caratteri). Si usa una matrice di 25 lettere che viene riempita nelle prime caselle con la parola chiave, eliminando le eventuali lettere ripetute, ed è completata con le rimanenti lettere in ordine alfabetico. Si tralascia la W che, se necessario, potrà essere cifrata come una doppia V. Il testo in chiaro deve essere diviso in bigrammi di due lettere consecutive. Le due lettere si cercano sul quadrato e si sostituiscono con altre secondo alcune regole prestabilite. Durante la seconda guerra mondiale, le operazioni di decifrazione Britanniche furono spostate da Londra a Bletchley Park. Anche Alan Turing (1912-1954) (uno dei più famosi matematici di questo secolo, fra i fondatori dell'informatica teorica) era nel team di Bletchley Park e il lavoro suo e dei suoi colleghi poté essere completamente apprezzato solo molti anni dopo, quando cadde il segreto militare sulle tecniche di crittoanalisi durante la guerra. Quasi tutte le comunicazioni tedesche venivano cifrate con una macchina chiamata Enigma. Questa macchina è una nobile rappresentante dei cifrari a rotore, utilizzati fino all'introduzione di cifrari elettronici e microelettronici che hanno sconvolto e trasformato il mondo della crittografia. Per sconfiggere Enigma (alcuni dettagli della soluzione sono tenuti segreti fino ad oggi) Turing, per conto del governo inglese, si servì di gigantesche macchine chiamate appunto Colossi, che possono considerarsi i precursori dei moderni calcolatori elettronici. Turing è inoltre autore di ricerche estremamente importanti sul concetto logico-matematico di calcolabilità: lo strumento che egli ha proposto per affrontare il problema è noto oggi col nome di macchina di Turing. 2.4.1 Enigma Nel 1918 l'inventore tedesco Arthur Scherbius mise a punto un dispositivo crittografico che in sostanza era una versione elettromeccanica del disco cifrante di Leon Battista Alberti: la macchina Enigma. La versione semplificata di questo dispositivo consiste in 3 componenti collegati da fili elettrici: una tastiera per immettere le lettere del testo in chiaro; un'unità scambiatrice che cifra la lettera e un visore con varie lampadine, che accendendosi indicano la lettera da inserire nel testo cifrato; una stampante elettro-meccanica avrebbe appesantito troppo il congegno e lo avrebbe reso poco maneggevole. Per generare il crittogramma, l'operatore preme il tasto corrispondente alla lettera da cifrare; l'impulso elettrico raggiunge l'unità scambiatrice, e dopo essere stato elaborato va ad illuminare il visore in modo da evidenziare la lettera cifrata corrispondente Figura 2.6: Versione semplificata della macchina Enigma con un alfabeto di sei lettere. 12

Con questo schema lo scambiatore in sostanza definisce una corrispondenza tra le lettere del testo in chiaro e quelle cifrate, e la macchina può essere usata per realizzare una semplice cifratura per sostituzione monoalfabetica. Il passo successivo consiste nel far ruotare automaticamente il disco scambiatore di un 1/26 di giro dopo la cifratura di ogni lettera. Con questa disposizione rotante, lo scambiatore in sostanza definisce 26 diverse corrispondenze tra lettere in chiaro e cifrate, ed Enigma può essere usata per effettuare una cifratura polialfabetica. Tuttavia il congegno ha un punto debole evidente: dopo 26 pressioni continue dello stesso tasto, il disco torna alla posizione iniziale, e se si continuasse a premere lo stesso tasto, lo schema di cifratura si ripeterebbe tale e quale. Per ridurre il numero di ripetizioni può essere aggiunto un altro scambiatore. In questo modo, ogni volta che una lettera è cifrata, il primo disco ruota di un carattere, mentre il secondo disco invece resta immobile fin quando il primo scambiatore ha completato un giro; solo a questo punto il secondo scambiatore avanza di una posizione. L'aggiunta del secondo scambiatore comporta il vantaggio che lo schema della cifratura non si ripete finché il secondo scambiatore non è tornato al punto di partenza, il che richiede 26 giri completi del primo scambiatore, ovvero la cifratura di 26x26=676 lettere. Per una sicurezza maggiore viene aggiunto un terzo rotore, per cui il numero di sostituzioni diverse è 26x25x26=16.900 (il secondo rotore effettua una rotazione in meno rispetto agli altri due, poiché dopo aver effettuato un giro completo rimane fermo una volta per far ruotare il terzo rotore). Inoltre viene aggiunto un riflessore molto simile allo scambiatore che consiste in un disco di gomma con circuiti interni che non ruotano e i fili entrano ed escono dallo stesso lato. Col riflessore installato quando si digita una lettera il segnale elettrico attraversa i 3 rotori, raggiunge il riflessore ed è mandato indietro. Quindi il segnale elettrico passa di nuovo nei rotori ma lungo un percorso diverso. Figura 2.7: Il progetto di Scherbius del modello base di Enigma includeva un terzo scambiatore e un riflessore, che costringe l'impulso elettrico ad attraversare di nuovo gli scambiatori. Dato che il numero di chiavi è alto ma non abbastanza per scoraggiare un crittoanalista che può disporre di più macchine, per accrescere l'affidabilità si dovrebbe aumentare il numero di chiavi. Invece di aggiungere un altro rotore e aumentare di 26 volte le chiavi sono state introdotte due nuove caratteristiche. Innanzitutto si possono utilizzare rotori removibili e sostituibili, ad esempio il primo e il terzo rotore si possono scambiare di posto. Quindi dati tre elementi intercambiabili essi possono essere permutati in sei modi differenti; con questo accorgimento il numero di chiavi aumenta di un fattore sei. La seconda 13

caratteristica è l'inserimento di un pannello a prese multiple tra la tastiera e il primo rotore. Il pannello permette al mittente di inserire alcuni cavi muniti di spinotti, che aveva l'effetto di scambiare due lettere prima della loro immissione nel rotore. L'operatore di Enigma dispone di sei cavi che gli danno la possibilità di scambiare sei coppie di lettere contemporaneamente. Figura 2.8: Il pannello a prese multiple è interposto tra la tastiera e gli scambiatori. Inserendo gli appositi cavetti è possibile scambiare due lettere. Eseguiamo ora un rapido calcolo per trovare il numero di chiavi possibili Rotori I due dischi rotanti più esterni effettuano 26 rotazioni ognuno, mentre quello centrale ne effettua 25, quindi sono ammesse 26x25x26=16.900 combinazioni Unità cifratrice I tre rotori (1, 2 e 3) possono essere inseriti nell'unità centrale in diverse posizioni reciproche, così riassumibili: 123, 132, 213, 231, 312, 321. Sono quindi ammesse 6 diverse posizioni reciproche dei rotori. Pannello a prese multiple I possibili abbinamenti di 2 x 6 = 12 lettere su 26 sono moltissime, per l'esattezza 100.391.791.500, che si ottiene dalla formula seguente dove p, il numero di cavi, è uguale a 6. Il numero totale di chiavi si ottiene moltiplicando queste possibilità: 16.900 x 6 x 100.391.791.500 14

Figura 2.9: Macchina Enigma 2.5 Cifrario di Vernam e sicurezza perfetta Nel 1917 Gilbert Vernam, impiegato della compagnia AT&T, inventò un ingegnosissimo sistema di protezione crittografica, per comunicazioni su telegrafo, dei testi codificati in binario. Egli costruì per prima cosa un dispositivo in grado di leggere contemporaneamente due nastri in input e generare a partire da essi un nastro di output in modo che ciascun foro fosse generato mediante uno XOR dei due corrispondenti fori sui nastri input. Dopodiché prese un nastro su cui era perforata una sequenza di caratteri casuale ed un nastro su cui era perforato un testo reale e li passò nella sua macchina. Lo schema di crittografia di Vernam è uno schema one-time pad; un tale schema richiede che: la chiave sia utilizzata una sola volta; la chiave deve essere lunga almeno quanto il testo in chiaro; fra i bit che compongono la chiave non deve esserci alcuna relazione; la chiave deve essere generata casualmente. In pratica se il testo in chiaro è X = 0110 e la chiave è metodo di Vernam si ottiene il seguente testo cifrato : Y= X K = 1010 la decifratura si ottiene nel seguente modo: X= Y K = 0110 K = 1100, applicando il 15

Notiamo che è stata applicata la stessa chiave ed è stata effettuata la stessa operazione sia per la cifratura che per la decifratura; ciò caratterizza un sistema crittografico reversibile, e questo è uno dei molti aspetti notevoli del cifrario di Vernam. Per quanto riguarda la sicurezza, a tutt'oggi questo è l'unico metodo ad essere perfetto, ossia costituisce un cifrario assolutamente indecifrabile in senso stretto. Un cifrario si dice perfetto se, dati X il testo in chiaro e Y il cifrato corrispondente, gode della seguente proprietà: per ogni X e Y risulta: Pr (X = X ) = Pr (X = X Y = Y ) La proprietà di cui sopra si chiama sicurezza perfetta. Per un cifrario che gode della sicurezza perfetta, l'indecisione nello stabilire qual è il testo in chiaro X senza conoscere il testo cifrato Y è la stessa che si ha su X conoscendo il testo cifrato Y. Le proprietà che caratterizzano l one-time pad sono estremamente restrittive, e volendole rispettare si ottiene un sistema scomodo da usare in pratica, considerando che le ingombranti chiavi andrebbero generate in anticipo rispetto al loro uso, e conservate in luogo sicuro. Sono questi i motivi per cui questo sistema non viene usato che per casi eccezionali, come la famosa hot-line tra Washington e Mosca. Un'altro problema è che l one-time pad è modificabile; un intruso può cambiare Y così che il messaggio M decifrato sia differente dal messaggio spedito. Non ci sono modi per il destinatario di controllare che il mittente abbia spedito proprio il messaggio ricevuto. Ci sono delle varianti che possono evitare di utilizzare delle chiavi così grandi, ma che fanno perdere la perfezione al sistema perché introducono delle dipendenze statistiche. Un esempio è quello di prendere una chiave in un grosso testo, come la Divina Commedia, specificando un punto di inizio qualunque, e tutti i caratteri da quel punto in poi formeranno la chiave. La dipendenza statistica dipende proprio dal fatto che le parole devono avere senso compiuto. La difficoltà per i crittoanalisti, oltre alla conoscenza della chiave (punto di inizio nel testo), sta anche nel capire qual è il testo utilizzato. Il problema con le chiavi corte, che dunque devono essere riutilizzate ciclicamente nel corso del messaggio, è che producono, in uscita, delle regolarità statistiche che possono essere usate dai crittoanalisti per forzare il cifrario. 2.6 Crittografia simmetrica e asimmetrica Si può effettuare una distinzione in 2 grandi categorie per quanto riguarda i metodi di cifratura: quelli a chiave privata (o simmetrici, o a chiave segreta) e quelli a chiave pubblica (o asimmetrici). Analizziamo ora le caratteristiche principali di questi tipi di algoritmi fornendo anche qualche esempio. 2.6.1 Crittografia simmetrica La crittografia simmetrica si basa sul fatto che la stessa chiave che viene usata per cifrare il messaggio viene utilizzata anche per decifrarlo. 16

Figura 2.10: Funzionamento riassuntivo della crittografia a chiave privata Ad esempio il cifrario di Cesare visto in precedenza è un classico esempio di sistema simmetrico. La chiave in questo caso è rappresentata dal numero 3 corrispondente al numero di traslazioni, verso sinistra, delle lettere dell'alfabeto della lingua italiana a partire dalla lettera a. I cifrari simmetrici sono stati tra i primi cifrari della storia e vengono tuttora utilizzati nei moderni sistemi crittografici per la loro velocità di elaborazione. Vediamone alcuni esempi. 2.6.1.1 Des Il DES (Data Encryption Standard) venne adottato dal governo degli Stati Uniti nel 1977 come standard federale. Esso deriva dall'algoritmo Lucifer inventato dall' IBM nei primi anni '70. Mentre Lucifer era ancora in via di sviluppo il NBS (National Bureau of Standard), diventato poi NIST (National Institute of Standards and Technology), sollecitò l'industria americana alla creazione di un nuovo standard crittografico per la protezione di dati riservati ma non classificati come "segreti militari" o di "stato". L'NBS non fu accontentato molto presto forse perché il governo degli Stati Uniti non ha mai incoraggiato ricerche in questo campo, e nel 1974 l'ibm propose un Lucifer modificato a cui fu dato il nome di DEA (Data Encryption Algorithm). L NBS sceglie il DEA come standard ed è annunciato sul documento N.46 di Federal Information, col nuovo e definitivo nome di DES. La chiave di crittografazione è lunga 64 bit, ma 8 bit sono di controllo, quindi la chiave effettiva è di 56 bit. Questo porta ad avere 2 56 (circa 72 milioni di miliardi) possibili chiavi in un tentativo di attacco brute - force. In effetti un supercomputer potrebbe scoprire la password in un tempo che va dalle 3 alle 10 ore (per quello che è noto a livello non militare). Tuttavia, anche senza basarsi sull'attacco di forza bruta, gli studiosi Biham e Shamir hanno ideato una nuova tecnica di forzatura detta crittoanalisi differenziale. Questa tecnica consiste nell'utilizzo dell'algoritmo per la cifratura di 247 testi particolari ed il confronto dei risultati. Ancora in tempi più recenti, Matsui ha ideato un altro tipo di forzatura, la crittoanalisi lineare. Anche in questo caso vengono cifrati dei testi noti, per la precisione 243, ed analizzati i risultati con il testo da decifrare. I tempi di decrittazione sono comunque lunghi: il primo esperimento di Matsui richiese 9735 postazioni di lavoro e 50 giorni e 12 ore di tempo. 17

Il DES non viene più certificato dal NIST. Ha tuttavia ancora larghissimo impiego nelle trasmissione audiovisive (è incluso nello standard IRDETO, usato nelle trasmissioni svizzere) e nei sistemi di protezione di Bancomat e carte di credito, data anche l'elevata velocità di crittografazione rispetto al suo rivale RSA a chiave pubblica. Non può essere tuttavia utilizzato in quei casi dove il valore dell'informazione da proteggere sia tropo elevato, dato che già da tempo è stato dimostrato che in circa 3 ore qualsiasi testo cifrato con DES può essere riportato in chiaro tramite un computer dal costo di 1 milione di dollari. É comunque stata costruita una versione del DES, chiamata Triplo DES, che utilizza 3 chiavi diverse ad ogni passaggio di sovracifratura. Nonostante i risultati siano inferiori alle aspettative, è stato innalzato moltissimo il tempo necessario per un attacco di brute-force. Figura 2.11: Riassunto del funzionamento del Des 18

2.6.1.2 Triple-Des Il Triple-Des, o TDES, è l evoluzione del Des; venne realizzato quando i 56 bit del Des oramai erano insufficienti a garantire un alto livello di sicurezza dei messaggi crittografati. Il Triple Des funziona in sostanza applicando 3 volte il Des a un messaggio da cifrare usando 3 chiavi; questa si chiama configurazione EEE, e per decifrare il messaggio si faranno 3 passaggi di decifrazione come si farebbe per il Des normale usando le 3 chiavi. Un altro metodo di funzionamento è il cosiddetto EDE, dove il secondo passaggio, nella generazione del messaggio cifrato, è in realtà di decifrazione; così per decifrare il messaggio, il secondo passo dovrà essere di cifrazione. Figura 2.12: Triple-Des in modalità EDE Quando le 3 chiavi sono diverse si parla di 3TDES, e in questo caso la chiave è lunga 168 bit, infatti ogni chiave del Des è lunga 56 bit; con i bit di parità si arriverebbe ad una lunghezza effettiva di 192 bit. C è un altro approccio, chiamato 2TDES, dove la prima e la terza chiave sono uguali; questo fa scendere la lunghezza della chiave a 112 bit (128 con i bit di parità). Il Triple Des è sicuramente molto più difficile da sconfiggere del Des, e in effetti anche usando tecniche di calcolo parallelo sarebbe molto oneroso in termini di tempo e denaro riuscire a decifrare un messaggio cifrato con TDES, ma questo algoritmo è stato superato da AES, molto più veloce ed efficiente. 19

2.6.1.3 AES Aes (Advanced Encryption Standard) è una implementazione dell algoritmo Rijndael (dai cognomi dei suoi inventori, Joan Daemen e Vincent Rijmen). Questo è un algoritmo molto veloce, sia se sviluppato in hardware, sia in software, (fino a 6 volte più di Des), ed è usato come standard dal governo degli Stati Uniti d America. Aes è un algoritmo di cifratura a blocchi, e questi ultimi hanno dimensione di 128 bit, mentre la chiave può essere di 128, 192 o 256 bit. Per funzionare l algoritmo usa matrici di 4x4 byte chiamate Stati. La cifratura avviene seguendo questi 4 passaggi ad ogni passo, tranne l ultimo dove il terzo passaggio viene saltato. Passo 1 SubBytes: in questa fase tutti i byte della matrice vengono rimpiazzati seguendo una specifica tabella in maniera non lineare Passo 2 ShiftRows: a seconda della riga di appartenenza viene effettuato uno spostamento dei byte di un certo numero di posti Passo 3 MixColumns: i byte, una colonna per volta, vengono trattati con una operazione lineare Passo 4 AddRoundKey: Ogni byte della tabella viene combinato con una certa chiave. Figura 2.13: I vari passi di AES Finora tutti gli attacchi ad AES si sono rivelati inefficaci, nel senso che seppur corretti formalmente richiedono un tempo di calcolo troppo elevato per poter essere presi in considerazione. 20

2.6.1.4 IDEA Questo algoritmo è stato sviluppato da Xuejia Lay e James Massey. La prima versione dell algoritmo sviluppato, chiamata PES, era però facilmente attaccabile da crittoanalisi differenziale, quindi venne sviluppata una seconda versione, IPES, che è in pratica il vero e proprio IDEA. Come RSA, che vedremo più avanti, IDEA è usato nel famoso programma PGP (Pretty Good Privacy), ed è quindi un algoritmo efficiente. Come DES, è un sistema di cifratura a blocchi, ma usa chiavi da 128 bit (e non 56, o 64 se contiamo i bit di parità, come DES). Un attacco brute force è quindi impraticabile, dato che dovrebbero essere 128 analizzate 2 chiavi. IDEA si basa su un procedimento in 9 passi: ad ogni passo vengono utilizzate 6 sottochiavi, mentre nell ultimo 4. Il testo in input viene suddiviso in blocchi da 64 16 bit, e vengono utilizzante come operazioni lo XOR, la somma modulo 2 e la 16 moltiplicazione modulo 2 +1. Per la decifrazione sono usate sottochiavi diverse, ma il procedimento è lo stesso. Non vogliamo qui analizzare a fondo il funzionamento di IDEA, ma ricordiamo che è uno degli algoritmi più sicuri in circolazione al momento. Figura 2.14: Funzionamento di IDEA Ci sarebbero ancora moltissimi algoritmi a chiave segreta, come RC5, RC6, Blowfish, Serpent e Mars solo per fare alcuni nomi, ma non vogliamo analizzarli 21

tutti. Per gli scopi di questa tesi gli esempi presentati sono sufficienti; in rete è comunque possibile trovare facilmente molto materiale per chi fosse interessato ad approfondire l argomento. 2.6.1.5 Lo scambio di chiavi di Diffie-Hellman Lo svantaggio principale della crittografia simmetrica è che se Alice e Bob vogliono comunicare devono scambiarsi le chiavi. Usando il metodo di Diffie ed Hellman si riesce a risolvere questo problema. Questa tecnica si basa innanzitutto sulla presenza di 2 parametri, p e g: il primo è un numero primo e il secondo è un intero minore di p, e si chiama generatore. Il generatore deve avere la proprietà che n [ 1, p 1] esiste una potenza k di g tale che n = g k mod p. Ora, per scambiarsi una chiave segreta Alice sceglie un valore a e Bob sceglie un valore b in modo casuale rispettando però la condizione che a,b 1, p. A questo punto Alice calcola il valore A = g a mod p e lo invia a [ 2] Bob, mentre Bob calcola il valore B = g b mod p e lo invia ad Alice. Ora Alice a ab calcola il valore K = B mod p = g mod p, e Bob calcola b ab K = A mod p = g mod p. Così ora Alice e Bob hanno la possibilità di avere una chiave in comune, K, per poter comunicare usando la crittografia segreta. Figura 2.15: Scambio delle chiavi di Diffie-Hellman Questo metodo presenta però uno svantaggio: se un intruso T volesse, potrebbe intercettare i messaggi di Alice e Bob, e farsi spacciare per Bob nei confronti di Alice, e per Alice nei confronti di Bob: questo è il cosiddetto attacco man in the middle, e si può presentare anche con i metodi di crittografia simmetrica come RSA. La soluzione a questo problema verrà analizzata nel capitolo 3 quando si parlerà di certificati digitali e Certification Authority. 22

2.6.2 Crittografia asimmetrica Uno dei problemi maggiori dell utilizzo di tecniche di crittografia simmetrica è che, come abbiamo detto, se A e B vogliono comunicare, devono in qualche modo scambiarsi la chiave segreta. Questo sarebbe possibile in modo sicuro per esempio se A e B si incontrassero di persona e si scambiassero tale informazione, ma per ovvi motivi non è sempre attuabile. Whitfield Diffie e Martin Hellman introdussero nel 1976 un sistema nuovo, dove erano presenti 2 chiavi: la chiave pubblica e quella privata. Ogni persona possiede una coppia di chiavi, pubblica e privata, ma quest ultima va tenuta segreta, mentre la prima deve essere resa disponibile. Se A vuole mandare un messaggio a B, non deve fare altro che cifrarlo usando la chiave pubblica di B, che è disponibile. Solo B, con la sua chiave privata, potrà decifrare tale messaggio. Se infatti un intruso T riuscisse ad intercettare il messaggio che A ha inviato a B, non riuscirebbe a fare nulla, dato che non possiede la chiave privata di B. Il metodo si basa sul fatto che è computazionalmente molto difficile risalire alla chiave privata di una persona anche sapendo la sua chiave pubblica; queste proprietà derivano di solito da importanti teoremi dell algebra. Figura 2.16: Crittografia asimmetrica (a chiave pubblica) 23

2.6.2.1 RSA L esempio forse più famoso per quanto riguarda la crittografia a chiave pubblica è RSA. Esso è un algoritmo ideato da Rivest, Shamir e Adleman nel 1978 (RSA deriva dalle iniziali dei loro cognomi). Supponiamo che A e B vogliano scambiarsi messaggi usando RSA; vediamo i vari passaggi necessari. Per prima cosa A e B devono generare ognuno una coppia <chiave pubblica, chiave privata>. Analizziamo questo processo di generazione per A, ma lo stesso deve fare B. 1. A sceglie due numeri primi grandi, p e q. 2. A calcola n=p x q e calcola anche il prodotto (p-1) x (q-1). 3. A deve scegliere un numero e in modo che e e (p-1) x (q-1) siano primi tra loro (cioè non abbiano fattori in comune a parte 1); e non deve essere banale, cioè non deve essere ne 1 ne (p-1) x (q-1). 4. A calcola d in modo che d x e mod (p-1) x (q-1) sia uguale a 1. 5. La chiave pubblica di A è la coppia <n,e> e viene pubblicata; quella privata <n,d> deve essere mantenuta segreta. Ricordiamo che la funzione mod è il modulo, cioè a mod b è il resto della divisione tra a e b. Supponiamo che anche B abbia fatto lo stesso, e che la sua chiave pubblica sia <n,e > mentre quella privata sia <n,d >. Se ora B volesse spedire ad A un messaggio M, per prima cosa, usando la chiave pubblica di B (che ricordiamo è disponibile), dovrebbe calcolare la quantità c = M e mod n ; questo sarebbe il messaggio da spedire ad A. Una volta ricevuto il messaggio, A utilizzando la sua chiave privata dovrebbe calcolare la quantità c d mod n, che equivale a M, il messaggio che B voleva mandare. Se a volesse mandare un messaggio a B dovrebbe fare lo stesso, ma usando la chiave pubblica di B <n,e >, e B dovrebbe usare la sua chiave privata <n,d > per la decifrazione. Facciamo ora un esempio per far capire meglio come funziona l algoritmo. Supponiamo che B, come nel caso precedente, voglia spedire un messaggio ad A. In questo caso A deve calcolare le sue chiavi pubbliche e private; anche se abbiamo detto che dobbiamo usare numeri grandi, come esempio scegliamo p e q abbastanza piccoli: p=7, q=11 ; ora calcoliamo i valori n e (p-1) x (q-1) n=7 x 11=77, (p-1) x (q-1)=6 x 10=60; ora troviamo e e deve essere primo con 60; scegliamo ad esempio 7, infatti mdc(7,60)=1. Adesso calcoliamo d e x d mod (p-1) x (q-1)=1 Abbiamo che 7 x d mod 60 = 1; in questo caso prendiamo d=43, infatti 7 x 43 mod 60 = 301 mod 60 =1 Ora la chiave pubblica è <7,77> mentre la privata è <43,77> Supponiamo ora che il messaggio che B vuole spedire sia M=9 (usiamo un esempio in decimale per semplicità). Allora innanzitutto B calcola, usando la chiave pubblica di A, il valore c = 9 7 mod 77 = 37 ; sarà quindi 37 il messaggio 24

che B invierà ad A. Una volta ricevuto 37, A dovrà decifrarlo usando la sua chiave privata, ottenendo m = 37 43 mod 77 = 9, cioè il messaggio originale mandato da B. Tutto questo funziona grazie a dei teoremi molto importanti dell algebra, come il piccolo teorema di Fermat, il teorema cinese del resto e l algoritmo di Euclide, che però non andremo ad approfondire. La potenza dell algoritmo non è legata all impossibilità di sconfiggerlo, ma si basa sul fatto che è molto oneroso in termini di tempo riuscire a fattorizzare un numero, soprattutto se elevato. Lo svantaggio è che RSA è molto più lento di algoritmi simmetrici come DES, anche di 3-4 ordini di grandezza. Anche in questo caso, come già anticipato, l attacco man in the middle non è eliminabile, in quanto un intruso Trudy potrebbe spacciarsi per Bob e far credere agli altri che la sua chiave pubblica sia quella di Bob; così se Alice vuole spedire un messaggio a Bob, lo cifra con la chiave pubblica di Bob, ma in realtà è quella di Trudy, che avendo la corrispondente chiave privata può leggere il messaggio. Il problema verrà risolto, come già anticipato, nel capitolo 3. 2.7 Funzioni di Hash Prima di proseguire con la trattazione, ed analizzare argomenti come la firma digitale, dobbiamo introdurre un terzo tipo di algoritmi crittografici; le cosiddette funzioni di hash o di message digest (riassunto). Lo scopo di questi algoritmi è quello di creare un riassunto a partire da un messaggio; per fare questo i vari algoritmi di message digest di solito operano delle trasformazioni su messaggi da 512 bit alla volta, in un modo che ricorda un po il Des. Non vogliamo scendere nel dettaglio di come funzionano questi algoritmi; per chi fosse interessato, un esempio del funzionamento dei più famosi, MD5 e SHA, si trova al sito http://nsfsecurity.pr.erau.edu/crypto/md5.html per l algoritmo MD5 e su http://nsfsecurity.pr.erau.edu/crypto/sha1.html per SHA, mentre un generico algoritmo di hash su http://nsfsecurity.pr.erau.edu/crypto/generichash.html. Figura 2.17: Esempio di funzione di hash 1/2 25