Note per il corso di Sicurezza delle Reti. Michele Boreale Dipartimento di Sistemi e Informatica Firenze



Documenti analoghi
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

RETI DI CALCOLATORI. Crittografia. La crittografia

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

Dimensione di uno Spazio vettoriale

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

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

4 3 4 = 4 x x x 10 0 aaa

Informatica per la comunicazione" - lezione 13 -

Sommario. Introduzione alla Sicurezza Web

risulta (x) = 1 se x < 0.

Lezione 9: Cambio di base

Database. Si ringrazia Marco Bertini per le slides

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

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Reti di Telecomunicazione Lezione 8

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

Strutturazione logica dei dati: i file

Analisi e diagramma di Pareto

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

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

Scambio delle chiavi. mercoledì 7 dicembre 2011

Dispense di Informatica per l ITG Valadier

3. Introduzione all'internetworking

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Esempi di algoritmi. Lezione III

Obiettivo Principale: Spiegare come la stessa cosa possa essere realizzata in molti modi diversi e come, a volte, ci siano modi migliori di altri.

Lezione 8. La macchina universale

Algoritmi e strutture dati. Codici di Huffman

La firma digitale CHE COSA E'?

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

Teoria delle code. Sistemi stazionari: M/M/1 M/M/1/K M/M/S

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

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

Transitori del primo ordine

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

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

2. Leggi finanziarie di capitalizzazione

CALCOLO COMBINATORIO

Convertitori numerici in Excel

Soluzione dell esercizio del 2 Febbraio 2004

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

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

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza

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

Calcolo del Valore Attuale Netto (VAN)

Parte 2. Determinante e matrice inversa

Un gioco con tre dadi

Esercizio 1 Dato il gioco ({1, 2, 3}, v) con v funzione caratteristica tale che:

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

SISTEMI DI NUMERAZIONE E CODICI

1. Distribuzioni campionarie

Determinare la grandezza della sottorete

Matematica generale CTF

Capitolo 13: L offerta dell impresa e il surplus del produttore

Probabilità discreta

Testi di Esercizi e Quesiti 1


Sicurezza nelle applicazioni multimediali: lezione 8, sicurezza ai livelli di rete e data-link. Sicurezza ai livelli di rete e data link

4. Operazioni elementari per righe e colonne

Corso di Matematica per la Chimica

ESEMPIO 1: eseguire il complemento a 10 di 765

Sicurezza a livello IP: IPsec e le reti private virtuali

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

13. Campi vettoriali

1. PRIME PROPRIETÀ 2

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Il concetto di valore medio in generale

Matematica in laboratorio

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

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Capitolo 2. Operazione di limite

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

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

RETI DI TELECOMUNICAZIONE

LE FUNZIONI A DUE VARIABILI

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Interesse, sconto, ratei e risconti

TECNICHE DI SIMULAZIONE

1 Applicazioni Lineari tra Spazi Vettoriali

Statistica. Lezione 6

Allegato 3 Sistema per l interscambio dei dati (SID)

Parte 3. Rango e teorema di Rouché-Capelli

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

II.f. Altre attività sull euro

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

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};

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Il principio di induzione e i numeri naturali.

Ing. Simone Giovannetti

Appunti sulla Macchina di Turing. Macchina di Turing

10. Insiemi non misurabili secondo Lebesgue.

Fasi di creazione di un programma

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

CAPITOLO 10 I SINDACATI

Reti di calcolatori ed indirizzi IP

Contabilità generale e contabilità analitica

Coordinazione Distribuita

ESERCIZI DI ALGEBRA LINEARE E GEOMETRIA

Transcript:

Note per il corso di Sicurezza delle Reti Michele Boreale Dipartimento di Sistemi e Informatica Firenze 14 luglio 2003

Indice I Introduzione alla Network Security 3 1 Una panoramica 5 1.1 Servizi, attacchi e meccanismi.................. 6 1.1.1 Servizi........................... 6 1.1.2 Attacchi.......................... 7 1.1.3 Meccanismi........................ 8 1.2 Un modello per la Network Security............... 9 II Crittografia a chiave condivisa 11 2 Introduzione 13 2.1 Terminologia........................... 13 2.2 Criptanalisi............................ 14 2.3 Sicurezza dei cifrari........................ 16 3 Tecniche classiche di crittografia 19 3.1 Cifrari a sostituzione....................... 19 3.1.1 Cifrari monoalfabetici.................. 19 3.1.2 Cifrari monoalfabetici a blocchi............. 20 3.1.3 Cifrari polialfabetici................... 22 3.2 Criptanalisi del cifrario di Vigenère............... 23 3.2.1 Determinazione della lunghezza della chiave...... 23 3.2.2 Determinazione della chiave............... 25 3.3 Cifrari perfetti........................... 32 3.3.1 Cifrari perfetti secondo Shannon............. 32 3.3.2 One Time Pad...................... 33 4 Cifrari di Feistel 37 4.1 Cifrari a blocchi.......................... 37 4.2 Lo schema di Feistel....................... 39 i

5 Data Encryption Standard 43 5.1 Struttura di DES......................... 44 5.1.1 Dettagli di un singolo round............... 45 5.1.2 Generazione delle sottochiavi.............. 46 5.1.3 Decryption con DES................... 49 5.2 Considerazioni sulle scelte progettuali di DES......... 49 5.2.1 Uso delle chiavi a 56 bit................. 49 5.2.2 Caratteristiche dell algoritmo.............. 49 5.2.3 Cenni di criptanalisi lineare............... 50 5.3 Modi di operazione di DES.................... 51 5.3.1 Electronic Codebook Mode................ 51 5.3.2 Cipher Block Chaining Mode.............. 51 5.3.3 Cipher Feedback Mode.................. 52 5.3.4 Output Feedback Mode................. 54 5.4 Alternative a DES........................ 54 5.4.1 Double DES........................ 54 5.4.2 Triple DES........................ 58 5.4.3 Altri cifrari simmetrici.................. 59 6 Confidenzialità e gestione della chiave condivisa 61 6.1 Link encryption vs. end-to-end encryption........... 61 6.2 Distribuzione della chiave segreta................ 63 6.3 Durata delle chiavi........................ 65 III Crittografia a chiave pubblica 67 7 Introduzione 69 8 Teoria dei numeri 73 8.1 Concetti di base.......................... 73 8.2 Operazioni modulo n....................... 76 8.3 I teoremi di Fermat e di Eulero................. 78 8.4 Algoritmo di Euclide....................... 83 8.5 Algoritmo di esponenziazione veloce............... 85 8.6 Il Teorema Cinese del Resto................... 87 8.7 Generazione di numeri primi e test di primalità........ 91 8.8 Il logaritmo discreto....................... 95 ii

9 Il sistema RSA 99 9.1 Parametri............................. 99 9.2 Encryption e decryption..................... 100 9.3 Aspetti computazionali...................... 101 9.4 Resistenza di RSA........................ 102 9.4.1 Attacchi di forza bruta.................. 102 9.4.2 Attacchi matematici................... 102 9.4.3 Attacchi basati sul tempo................ 105 9.4.4 Attacchi chosen-plaintext................. 106 10 Alternative a RSA 109 10.1 Il sistema El Gamal........................ 109 10.2 Lo Standard DSS (Digital Signature Standard)......... 110 11 Gestione della chiave con la crittografia a chiave pubblica 115 11.1 Gestione della chiave pubblica.................. 115 11.1.1 Annuncio pubblico.................... 115 11.1.2 Directory pubblica.................... 115 11.1.3 Public-Key Authority (PKA).............. 116 11.1.4 Certificati......................... 117 11.2 Scambio di chiavi condivise................... 117 11.3 Scambio della chiave di Diffie-Hellman............. 120 IV Applicazioni 123 12 Pretty Good Privacy (PGP) 125 12.1 Funzionalità............................ 125 12.1.1 Firma digitale....................... 125 12.1.2 Confidenzialità...................... 126 12.1.3 Compressione....................... 126 12.1.4 Compatibilità....................... 127 12.1.5 Segmentazione...................... 127 12.2 Gestione delle chiavi in PGP................... 127 12.2.1 Generazione della one-time key............. 127 12.2.2 Identificatori di chiavi pubbliche............. 128 12.3 Anelli di chiavi.......................... 130 12.3.1 Uso degli anelli...................... 131 12.4 Uso della fiducia......................... 133 iii

13 Internet Protocol Security 139 13.1 Authentication Header (AH)................... 144 13.1.1 Anti-Replay........................ 145 13.1.2 Tunnel e Transport Mode................ 146 13.2 Encapsulating Security Payload (ESP)............. 146 13.2.1 Formato del pacchetto ESP............... 147 13.2.2 Tunnel e Transport Mode................ 148 13.3 Combinazioni di SA........................ 151 13.4 Gestione della chiave e negoziazione di SA........... 153 13.4.1 Oakley........................... 153 14 Web Security 157 14.1 Socket Security Layer (SSL)................... 158 14.1.1 SSL Record Protocol................... 159 14.1.2 Alert Protocol....................... 160 14.1.3 Change Cipher Spec Protocol.............. 160 14.1.4 Handshake Protocol................... 161 14.2 Secure Electronic Transaction (SET).............. 165 14.2.1 Requisiti.......................... 166 14.2.2 Caratteristiche...................... 166 14.2.3 Partecipanti........................ 167 14.2.4 Firma duale........................ 169 14.2.5 Processo di pagamento.................. 171 iv

Nota Queste note nascono come trascrizione delle lezioni del corso Sicurezza delle Reti, tenuto per la Laurea in Informatica dell Università di Firenze, nell anno accademico 2002-2003. Le note non si intendono in alcun modo sostitutive dei libri di testo consigliati e riportati in bibliografia, in primis l ottimo Cryptography and Network Security: Principles and Practices di W. Stallings, del quale queste note riprendono l impostazione generale. Piuttosto, esse sono da intendersi come guida e stimolo allo studio sui libri di testo. Osservazioni, errori, omissioni etc. vanno segnalati a: Michele Boreale, boreale@dsi.unifi.it. Struttura delle note Le note sono suddivise in tre parti. La prima parte consta di un unico capitolo, che è una panoramica sui concetti della network security e allo stesso tempo introduce un pò di terminologia. Nella seconda parte si prendono in esame vari aspetti legati alla crittografia a chiave condivisa, comprese le tecniche classiche e le problematiche relative alla distribuzione della chiave segreta. Nella seconda parte si studia la crittografia a chiave pubblica, ivi comprese le basi di teoria dei numeri. Si sono inclusi in questa parte anche i meccanismi di autenticazione, come le funzione hash one-way, e le problematiche di gestione della chiave pubblica. Nella terza e ultima parte si studiano alcune applicazioni delle tecniche studiate alla sicurezza nella rete Internet. Si sono inseriti diversi esercizi, il cui svolgimento dovrebbe essere considerato parte integrante dello studio della materia. Ringraziamenti A Marco Corrado, Alessandro Daidone, Dario Di Minno e Marcello Faugiana, studenti del corso di Sistemi di Elaborazione: Sicurezza (come si chiamava SR nel vecchio ordinamento) nell a.a. 2000-2001, si deve una prima stesura di questi appunti. Senza il loro prezioso contributo queste note non avrebbero probabilmente visto la luce. 1

2

Parte I Introduzione alla Network Security 3

Capitolo 1 Una panoramica Al giorno d oggi, ogni organizzazione gestisce i propri dati servendosi di sistemi informativi. L accesso a questi dati da parte di singoli o di altri sistemi prevede la loro trasmissione attraverso reti di comunicazione, locali o su larga scala, che sono per loro natura insicure, cioè soggette ad intrusioni da parte di malintenzionati. La sicurezza delle reti (in inglese, network security) studia le tecniche, e i concetti alla loro base, che permettono di prevenire, rilevare e correggere violazioni della sicurezza nella trasmissione dei dati. Consideriamo quindi la network security come distinta dalla system security, che si occupa della protezione dei dati locali ai singoli sistemi informativi. Tuttavia, è bene notare che non sempre è possibile tracciare un confine netto tra i due campi di studio: ad esempio, i dati memorizzati in un PC possono essere attaccati da un virus ricevuto attraverso un messaggio di posta elettronica. Vediamo ora qualche convenzione che adotteremo nel resto di questi appunti: indichiamo con M, M 1,... i messaggi che i diversi sistemi si scambiano tra loro; indichiamo con A, B,... i sistemi o agenti che si scambiano informazioni; non facciamo distinzione fra messaggio, documento, file,... : per noi si tratta semplicemente di informazioni che vanno protette; indichiamo con K, K 1,... le chiavi utilizzate per cifrare informazioni; indichiamo con C, C 1,... i messaggi cifrati scambiati tra i sistemi. Vediamo subito alcuni esempi tipici di violazione di sicurezza, che riprenderemo in seguito per motivare alcune definizioni. 5

Esempio 1.1. 1. A trasmette a B un file con informazioni che devono essere mantenute segrete (ad esempio numeri di carta di credito), ed un terzo sistema C, non autorizzato, intercetta il messaggio e legge le informazioni. 2. A trasmette ad B un informazione M, contenente diritti di accesso ad un certo sistema. C intercetta il messaggio lo modifica in M, alterando a suo piacere i diritti di accesso. 3. C comunica con B, ma spacciandosi per A. 4. Un investitore A compra delle azioni mandando un ordine di acquisto al suo agente di borsa B. Il titolo acquistato crolla, e A afferma di non aver mai mandato quell ordine. 5. Qualcuno non autorizzato, come un impiegato appena licenziato, accede al sistema informativo per distruggere dei dati importanti. 6. Qualcuno impedisce il normale funzionamento di un servizio di rete, sopprimendo i messaggi del fornitore del servizio, o sovraccaricandolo di messaggi, in modo da renderlo inservibile. 1.1 Servizi, attacchi e meccanismi Per poter ragionare in modo sistematico di questi problemi, introduciamo un poò di terminologia, presa a prestito da [Sta03]. Nella network security si possono distinguere i seguenti concetti: 1. servizi offerti; 2. attacchi sui dati trasmessi; 3. meccanismi di difesa. Tali concetti vengono analizzati di seguito. 1.1.1 Servizi I servizi definiscono il tipo di protezione dei dati che si vuole ottenere. Ecco una possibile classificazione: 6

Confidenzialità (o Segretezza): Garantisce che i dati siano accessibili in lettura solo alle parti autorizzate; viene violata nell esempio 1.1(1). Integrità: Assicura che un messaggio venga trasmesso senza subire modifiche da parte di terzi non autorizzati; viene violata nell esempio 1.1(2). Autenticazione: Assicura che l origine di un messaggio sia correttamente identificata, e che non sia stata falsificata; viene violata nell esempio 1.1(3). Non-ripudiabilità: Garantisce che nè il mittente nè il destinatario potranno negare di aver trasmesso o ricevuto un messaggio; viene violata nell esempio 1.1(4). Controllo degli accessi: Assicura che l accesso esterno ai dati sia in ogni momento ristretto ai soli autorizzati; viene violata nell esempio 1.1(5). Disponibilità: Garantisce che il sistema sia disponibile agli autorizzati ogni qualvolta si renda necessario; viene violata nell esempio 1.1(6). Gli ultimi due tipi di servizi sono in effetti parte integrante della system security: ignoreremo per lo più questi servizi e le relative problematiche nel resto di queste note. 1.1.2 Attacchi Gli attacchi definiscono i modi in cui un servizio può essere violato. Una prima classificazione li suddivide in passivi e attivi. Attacchi passivi Un entità non autorizzata, l attaccante, monitora le trasmissioni fra due entità. L obiettivo, per l attaccante, è quello di ottenere informazioni su ciò che si sta trasmettendo. Questo può essere fatto o scoprendo il contenuto del messaggio (in inglese disclosure), o attraverso la traffic analysis. Per traffic analysis si intende un insieme di tecniche che, pur non svelando il contenuto del messaggio, forniscono all attaccante informazioni potenzialmente utili come il mittente, il destinatario, la lunghezza di un messaggio, un analisi statistica sul contenuto, o altro ancora. Attacchi attivi Gli attacchi attivi presuppongono che l attaccante sia in grado di modificare il normale flusso di informazioni fra le entità che comunicano. A livello del singolo messaggio trasmesso, questo può avvenire essenzialmete in tre modi: 7

1. Interruption: il messaggio viene soppresso. 2. Modification: il messaggio viene modificato. 3. Fabrication: un nuovo messaggio viene creato e immesso nella rete. Gli attacchi attivi sono tipicamente diretti a violare l autenticazione e l integrità. Tipicamente, l attaccante cerca di falsificare la propria identità (masquerade) nel colloquiare con un sistema, oppure di replicare vecchi messaggi di utenti legittimi per trarre in inganno il sistema (replay). Confrontando le caratteristiche di attacchi passivi e attivi, possiamo dire che i primi sono difficili da rilevare, ma relativamente facili da prevenire, mentre i secondi sono difficili da prevenire, ma più facili da rilevare. 1.1.3 Meccanismi I meccanismi, ovvero le tecniche che servono a prevenire gli attacchi e quindi a garantire i servizi, sono principalmente rappresentati da certe trasformazioni dei messaggi, come le funzioni di encryption (cifratura), hash e firma digitale. Tratteremo queste trasformazioni in dettaglio nel seguito di queste note. Per il momento, possiamo dire che i meccanismi di cifratura hanno lo scopo di rendere inintelleggibile il contenuto di un messaggio a chi non sia in possesso di una opportuna chiave. La cifratura viene perciò impiegata per garantire la confidenzialità. Accenniamo qui anche al fatto che, come vedremo, esistono due tipi fondamentali di funzioni di cifratura: convenzionale (o a chiave condivisa) e a chiave pubblica. Tipicamente, i due tipi di cifratura vanno impiegati in una opportuna combinazione per garantire sia la sicurezza che l efficienza di un servizio. Le funzioni di hash servono a generare vere e proprie impronte digitali uniche e non falsificabili di un messaggio. Queste impronte sono spesso usate in combinazione con i meccanisimi di cifratura per produrre dei particolari codici che, concatenati ad un documento elettronico, garantiscono al ricevente l autenticità del documento o assumono vero e proprio valore di firma, da parte del mittente, del documento stesso. Questo è, a grandi linee, il meccanismo della firma digitale, che viene usata per garantire l autenticazione e la non ripudiabilità dei messaggi. A livello più alto, queste funzioni vanno usate all interno di opportuni protocolli, di cui vedremo in seguito molti esempi. I tipi più comuni di protocolli servono a distribuire le chiavi per le funzioni di cifratura ai vari 8

partecipanti ad una comunicazione (key management), o a garantire la loro corretta identificazione (autenticazione). 1.2 Un modello per la Network Security Per quanto detto fino a questo momento, quando si affronta il progetto di un servizio bisogna sempre considerare i seguenti ingredienti fondamentali: 1. I nodi A, B,... che si scambiano i messaggi M, M,... 2. Una funzione di trasformazione T la sua inversa T 1. Un esempio sono gli algoritmi di cifratura e decifrazione a chiave condivisa. 3. Un algoritmo per generare un segreto S, che, tipicamente, servirà da chiave. 4. I metodi per distribuire S, in maniera sicura, ai nodi coinvolti nella comunicazione. 5. Protocolli che facciano uso di T e di T 1 insieme a S, per garantire il particolare servizio. Il modello concettuale che useremo nello studio delle tecniche di sicurezza viene rappresentato nella figura 1.1. Il nodo A vuole spedire un messaggio M al nodo B, usando una trasformazione T. Il messaggio viene spedito su un canale, sul quale può essersi messo in ascolto un attaccante, che può anche interrompere o modificare il normale flusso di comunicazione. Il nodo B, per recuperare M, applica T 1, che è l inverso della trasformazione usata da A. Può essere richiesto che i due nodi condividano un segreto S (tipicamente una chiave condivisa), generato e distribuito con l aiuto di un server fidato. 9

Server fidato Nodo A canale logico/fisico Nodo B M S T Attaccante T 1 M S Figura 1.1: Modello per la network security. 10

Parte II Crittografia a chiave condivisa 11

Capitolo 2 Introduzione 2.1 Terminologia Introduciamo ora un modello e un pò di terminologia per la crittografia a chiave condivisa. Il modello è rappresentato in Figura 2.1. L idea è che il mittente e il destinatario di un messaggio condividono una chiave segreta K, che viene usata per cifrare i messaggi in partenza e decifare quelli in arrivo. Più in dettaglio, sia A un alfabeto, ad esempio l alfabeto delle 26 lettere oppure A = {0, 1}. Consideriamo sequenze X, Y, K,... di questo tipo: X = (X 1,..., X l ) plaintext (X i A) Y = (Y 1,..., Y m ) ciphertext (Y i A) K = (K 1,..., K n ) chiave (K i A) dove plaintext è un messaggio in chiaro, e ciphertext un messaggio cifrato ottenuto cifrando un plaintext con la chiave K, condivisa fra due nodi A e B. Nel modello è previsto anche un attaccante, che produce delle stime X e K, rispettivamente del messaggio X e della chiave K. Dati l insieme K delle chiavi e P dei plaintext, si possono definire delle funzioni di encryption E : K P C e di decryption D : K C P. In questi appunti verrà usata la notazione E K [X] per indicare E(K, X) e D K [Y ] per indicare D(K, Y ). Devono valere le seguenti proprietà: 1. Per ogni chiave K D K = E 1 K 13

cioè D K [ EK [X] ] = X. Quindi, per ogni K, E K deve essere iniettiva, cioè X, X con X X E K [X] E K [X ]. 2. Data la chiave K, sia E K che D K devono essere facili da calcolare. 3. Viceversa, dato solo il ciphertext Y = E K [X], deve essere difficile risalire a X e a K. In altre parole, la sicurezza del sistema deve dipendere solo dalla segretezza della chiave K, per la quale devono essere previsti opportuni metodi di distribuzione ai vari nodi. Il fatto che la sicurezza dello schema non dipenda dalla conoscenza degli algoritmi D ed E, che si suppongono noti all attaccante, è un concetto fondamentale, alla base della crittografia moderna. Questo concetto ha reso possibile lo sviluppo di hardware e software dedicati efficienti e a basso costo. Infine, notiamo che non abbiamo qui precisato cosa si debba intendere per facile e difficile. In effetti, si possono dare delle definizioni ben precise, cui accenneremo. Per ora ci basta sapere che, nella crittografia moderna, facile vuol dire computazionalmente facile, ovvero calcolabile con una quantità ragionevole di risorse. Difficile al contrario significa che occorre impiegare una quantità talmente elevata di risorse da rendere l operazione non fattibile o non conveniente per l attaccante. 2.2 Criptanalisi Per criptanalisi si intende genericamente un processo mediante il quale, nel modello prima illustrato, l attaccante O cerca di scoprire il messaggio originale X, la chiave K o ambedue. La criptanalisi è, in generale, progettata per sfruttare il fatto che nel testo cifrato possono resistere tracce della struttura o del pattern del testo originario. Si possono classificare i vari tipi di attacchi criptanalitici secondo il tipo di informazione che è disponibile all analista, nella maniera seguente: 14

Attaccante ^ X ^ K Sorgente del messaggio X algoritmo di encryption Y=E k [X] algoritmo di decryption X=D k [Y] Destinazione K K canale sicuro Generazione chiave Figura 2.1: Modello per la crittografia a chiave singola. Nome Disponibile all analista 1 Ciphertext only il ciphertext da decifrare (Y = E K [X]) 2 Known plaintext il ciphertext da decifrare e coppie X i, E K [X i ] formate con K. 3 Chosen plaintext il ciphertext da decifrare e coppie X i, E K [X i ] con gli X i scelti dall analista. 4 Chosen ciphertext il ciphertext da decifrare e coppie D K [Y i ], Y i con gli Y i scelti dall analista. Il ciphertext only è il tipo di attacco più facile dal quale difendersi. Di solito sono attacchi di tipo forza bruta, in cui O prova tutte le chiavi possibili su Y, fino a ottenere qualcosa che assomiglia a un plaintext. Questo presuppone che O possieda qualche informazione sul tipo del plaintext (testo inglese, sorgente Java o altro). Questo attacco comunque non è praticabile se lo spazio delle chiavi è molto grande. Quando l analista possiede qualche coppia di plaintext e testo cifrato (questo può succedere, per esempio, se l analista sa che i file trasmessi hanno un certo header noto, come in un file PostScript o in un sorgente Java) può usarli per estrarre una qualche relazione generale tra il ciphertext, la chiave e il plaintext: siamo difronte ad un attacco di tipo known plaintext. La 15

relazione congetturata può aiutare a limitare lo spazio di ricerca (si veda ad esempio, la criptanalisi lineare, [Sch96a]). Quando l analista ha anche solo temporaneamente accesso al meccanismo di encryption, può attuare un attacco di tipo chosen plaintext (questo è il caso della criptanalisi differenziale, [Sch96a]). Quando invece l analista ha accesso al meccanismo di decryption, può condurre un attacco di tipo chosen ciphertext. 2.3 Sicurezza dei cifrari Dato uno schema di encryption, si possono considerare due tipi di sicurezza: 1. Uno schema è incondizionatamente sicuro (cifrario perfetto) se non c è alcun modo per risalire da un testo cifrato a quello in chiaro corrispondente, indipendentemente dalla quantità di testo cifrato e dalle risorse computazionali disponibili per l attaccante. Si può quindi dire che non c è alcuna correlazione fra testo originale e cifrato. Questo concetto fu formalizzato da Shannon nel 1948 in termini probabilistici. Se vediamo il plaintext X e il ciphertext Y come variabili aleatorie, questa condizione si può scrivere come: x, y P[ X = x Y = y ] = P[ X = x ]. Ovvero: la probabilità che X valga x, sapendo che Y vale y e uguale alla probabilità che X vale x. Questa formula esprime il concetto che osservare un ciphertext non dà all opponente O alcuna informazione sul plaintext. L unica cosa che O può fare è indovinare il plaintext scegliendolo a caso. Vedremo un esempio di tale schema, detto one time pad. 2. Uno schema è computazionalmente sicuro se il costo in termini di risorse di calcolo per forzare il cifrario eccede il valore dell informazione, oppure se il tempo per forzare lo schema eccede il lasso di tempo in cui l informazione può essere utile. Sebbene gli schemi del primo tipo, quelli incodizionatamente sicuri, siano in teoria da preferire, vedremo che sono difficili da realizzare in pratica, per cui quasi tutti gli schemi in uso oggi sono (o aspirano ad essere) solo computazionalmente sicuri. Il problema degli schemi computazionalmente sicuri è che il tempo o le risorse necessarie per forzare un cifrario è difficile da stimare. Consideriamo un caso specifico. 16

Esempio 2.1. Il cifrario a chiave singola DES (Data Encryption System) è stato introdotto nel 1976 ed è di gran lunga il più usato. Utilizza chiavi di 56 bit. Nel 1976, si valutava che questa lunghezza fosse sufficiente a mettere DES al ripara da attacchi di tipo forza bruta. Difatti, assumendo un tempo ragionevole di 1 encryption/µs, ci vorrebbero in media 2 55 µs, più di un migliaio di anni, per trovare la chiave. I progressi tecnologici hanno però reso possibile la realizzazione ad un costo ragionevole di hardware dedicato che esegue più encryption in parallelo: si può arrivare a 10 6 encryption/µs, e quindi basterebbero in media 10,01 ore per trovare la chiave. Di conseguenza DES non dovrebbe più essere considerato computazionalmente sicuro (e di fatti non lo è). Nel prossimo capitolo prenderemo in esame due tipi di cifrari storici, quelli a sostituzione e il one-time-pad, che hanno avuto una grande rilevanza nello sviluppo della crittografia moderna. Ne analizzeremo punti di forza e debolezze. Questo ci condurrà, nel capitolo successivo, a introdurre la classe dei cifrari di Feistel, su cui la crittografia moderna a chiave condivisa è basata. Quindi analizzeremo il Data Encryption Standard (DES), che è un cifrario di questa classe ed è di gran lunga quello più usato. Nel capitolo conclusivo di questa parte analizzeremo alcune questioni legate alla distribuzione delle chiavi e alla confidenzialità. 17

18

Capitolo 3 Tecniche classiche di crittografia 3.1 Cifrari a sostituzione I cifrari a sostituzione sono quelli in cui ogni lettera (o blocco di bit) del plaintext viene sostituita da un altra lettera (o blocco di bit), determinata in base alla chiave. Ad esempio, se assegniamo ad ogni lettera un numero (a = 0, b = 1,..., z = 25) e selezioniamo una chiave K {1,..., 25}, possiamo definire: { E K [ p ] = ( p + K ) mod 26 D K [ q ] = ( q K ) mod 26. Ad esempio, con piccolo abuso di notazione, si può scrivere: E 4 [ message ] = qiwweki. Questo tipo di cifratura viene a volte chiamato shift encryption 1, perchè il ciphertext si ottiene semplicemente spostando in avanti di K posizioni nell alfabeto ciascuna lettera del plaintext, dove K è il valore della chiave. Dal momento che ci sono 25 possibili chiavi non banali (ignoriamo la chiave K = 0, che lascia il plaintext invariato), è facilissimo rompere questo schema con un attacco forza bruta, purchè si conosca la natura del testo in chiaro. 3.1.1 Cifrari monoalfabetici Questo problema viene risolto da un cifrario a sostituzione monoalfabetico, in cui ogni lettera può essere sostituita con qualsiasi altra, secondo una permu- 1 Il cifrario usato da Giulio Cesare corrisponde a fissare K = 3. 19

tazione fissata dell alfabeto. La chiave diventa così la permutazione stessa, e dunque abbiamo 26! 4 10 26 possibili chiavi, un numero che rende impossibile l attacco forza bruta. I cifrari a sostituzione presentano però un altro problema: essi sono facili da rompere ricorrendo a tecniche statistiche, e a patto di avere sufficiente quantità di testo cifrato. Per le lingue parlate, infatti, la frequenza di ogni lettera è ben nota (ad esempio, nella lingua inglese le sei lettere più frequenti sono, nell ordine: E, T, R, N, I, O). Supponiamo che l analista conosca la natura del testo originario, ad esempio un testo in lingua inglese. Si procede nel modo seguente: Si determina la frequenza di ciascuna lettera nel testo cifrato. Siano a 0, a 1,..., a 25 le lettere in ordine decrescente di frequenza; Si confrontano queste frequenze con la distribuzione standard delle lettere in Inglese: E : 12,75 % T : 9,25 % R : 8,5 % I, N : 7,75 %. Se il testo cifrato è abbastanza lungo, possiamo aspettarci che a 0 sia la codifica di E, a 1 la codifica di T, e così via. Se non c è abbastanza differenza fra le frequenze di a 0, a 1,... possiamo procedere per tentativi. Un altra possibilità è quella di considerare la frequenza dei digrammi (sequenze di 2 lettere) della lingua inglese, procedendo come per le lettere singole (ad esempio, in inglese il digramma più frequente è th ). In ogni caso, se il testo cifrato è lungo qualche centinaio di caratteri, questo metodo ci porta rapidamente alla soluzione. Il problema qui è che il testo cifrato riflette fedelmente la frequenza delle singole lettere del testo in chiaro. Per nascondere questa frequenza ci sono due possibilità: Si cifrano più lettere alla volta (digrammi, trigrammi e, in generale, q-grammi): cifrari monoalfabetici a blocchi. Si usano più cifrari monoalfabetici a rotazione: cifrari polialfabetici. 3.1.2 Cifrari monoalfabetici a blocchi La distribuzione delle frequenze dei q-grammi è molto più piatta che per le lettere singole. Inoltre, ci sono molti più q-grammi che lettere singole (ad 20

esempio i digrammi sono 26 26 = 676); quindi per accumulare evidenza statistica occorre molto più testo cifrato. Un cifrario di questo tipo è il Playfair, usato dalle forze armate inglesi fino alla prima guerra mondiale. Tale cifrario fa uso dei digrammi; tuttavia è piuttosto facile da rompere con l aiuto di un calcolatore, perché lascia intatta molta della struttura statistica del testo originario. Un altro cifrario interessante è quello di Hill. Il cifrario di Hill Il cifrario di Hill (1929) funziona nel seguente modo: dato un testo da cifrare, si considerano m lettere alla volta, con m 2, e si sostituiscono con m lettere di ciphertext. La sostituzione è determinata da un sistema di m equazioni lineari: C 1 = (K 11 p 1 + + K 1m p m ) mod 26. C m = (K m1 p 1 + + K mm p m ) mod 26. Se definiamo C = C 1. C m, K = K 11 K 1m..... K m1 K mm, P = possiamo esprimere il sistema in forma matriciale come segue (tutte le operazioni si intendono modulo 26): { E K [ P ] = C = K P D K [ C ] = K 1 C = K 1 K P = P dove K 1 è la matrice inversa modulo 26 di K, ovvero (K K 1 ) mod 26 = (K 1 K) mod 26 = I. Dunque la chiave K è data da una matrice di interi, che deve essere invertibile (mod 26), altrimenti E K non sarebbe iniettiva. Se prendiamo m grande, allora il cifrario di Hill è abbastanza sicuro contro attacchi ciphertext only, perché il numero degli m-grammi possibili diventa troppo grande per fare un analisi statistica. Tuttavia, Hill è vulnerabile ad un attacco known plaintext. Infatti, si supponga che un attaccante abbia a disposizione m coppie di plaintext e ciphertext: P 1, C 1 = K P 1. P m, C m = K P m. 21 p 1. p m

Se definiamo le matrici P e C nel modo seguente: P = [P 1... P m ] C = [C 1... C m ] sappiamo che C = (K P ) mod 26. Se P è invertibile (se non lo è, occorre raccogliere altre coppie P i, C i ), l attaccante può calcolare: e quindi scoprire la chiave. 3.1.3 Cifrari polialfabetici C P 1 = K P P 1 = K Un altro modo per migliorare le tecniche monoalfabetiche è utilizzare sostituzioni monoalfabetiche diverse all interno di uno stesso plaintext. In questo caso, due lettere uguali nel ciphertext non corrispondono in generale a due lettere uguali nel plaintext. Questo complica notevolmente le tecniche di criptoanalisi basate sulla frequenza delle lettere. Tali schemi prendono il nome di cifrari polialfabetici e consistono di: 1. un insieme di cifrari monoalfabetici; 2. una regola in base alla quale la chiave determina quale cifrario usare per ogni lettera del plaintext. Il cifrario di Vigenère Un esempio di cifrario polialfabetico, in cui: 1. si usano i 26 caratteri alfabetici; 2. per ogni lettera del plaintext, si considera una lettera della chiave, che ci dice quale cifrario usare. Se indichiamo con m la lunghezza della chiave K, con P i, C i, K i la i-esima lettera di plaintext, ciphertext e chiave, rispettivamente, contate a partire da 0, le regole per encryption e decryption sono: Esempio 3.1. E K [P i ] = P i + K i mod m mod 26 D K [C i ] = C i K i mod m mod 26. 22