Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Il dato scritto da Alice è senza alcun tipo di protezione da qui plaintext, trad. testo in chiaro.
Quest’ultimo, non può essere inoltrato così com’è a Bob, perché un utente intermedio, Eve, può
leggere il contenuto senza sforzo, facendo perdere la confidenzialità. Da qui nasce la necessità
di trasformare il plaintext in qualcos’altro, il ciphertext, trad. testo cifrato. Se la trasformazione
è fatta bene, chi osserva il ciphertext non ha nessuna informazione in merito al plaintext e
l’azione di trasformazione prende il nome di cifratura. In questo modo Eve osserva il
ciphertext che è ciò che Alice invia sul canale. La cifratura prevede un’operazione inversa, la
decifratura, che permette di riottenere il plaintext. A questo punto sorge il problema, se Eve
fosse a conoscenza del procedimento di decifratura? Saremmo punto e a capo. La cifratura
avviene avendo due input: il plaintext e la chiave di cifratura, mentre per la decifratura: il
ciphertext e la chiave di decifratura. Se la chiave di cifratura e decifratura è la stessa, siamo in
presenza di un crittosistema simmetrico altrimenti di uno antisimmetrico. In entrambi i casi,
per far funzionare il meccanismo, la chiave dev’essere segreta e posseduta esclusivamente da
Alice e Bob, se questo avviene, Eve non riuscirà nel suo intento. La discriminazione tra Bob ed
Eve è computazionale, il primo fa poca fatica conoscendo a priori la chiave, il secondo cerca in
tutti i modi di ricavarsela.
1
A questo punto Eve può adoperare due tipi di attacchi per arrivare alla chiave:
- Passivi, se non interloquisce direttamente con Bob ed Alice;
- Attivi, se decide di farlo, per esempio, potrebbe pensare di fingersi Alice.
Nella crittografia contemporanea ci sono almeno quattro attacchi da considerare:
1- Ciphertext only
Il solo attacco considerato fino ai primi anni del 1900. Eve ha a disposizione solo testi
cifrati da cui cerca di recuperare la chiave.
2- Known plaintext
Eve ha una o più copie del testo cifrato e dei corrispondenti testi in chiaro, facendo un
matching, c’è un’alta probabilità che riesca a risalire alla chiave. Questo tipo di attacco,
insieme ad altri, fu quello che aiutò il gruppo di Turing ad attaccare la macchina Enigma,
perché all’inizio di quasi tutte le lettere inviate dai tedeschi vi era il saluto al Führer, questo
era un known plaintext.
3- Chosen plaintext
Eve sceglie un testo in chiaro e contemporaneamente ha accesso limitato alla macchina
cifrante. Se immaginiamo che questo possa andare avanti per un tempo infinito, prima o poi
arriverà a convergenza.
4- Chosen ciphertext
La stessa cosa del punto 3 ma al rovescio, cioè Eve ha la possibilità di decifrare per un po’.
Risulta fondamentale conoscere i possibili attacchi per costruire un algoritmo più efficiente.
2
2- Il sistema non deve esigere la segretezza, e deve poter cadere in mani estranee senza
inconvenienti.
3- Deve essere possibile scambiare e memorizzare la chiave senza bisogno di note scritte, ed
essa deve poter essere cambiata o modifica a piacere dagli utenti.
Questa regola mi dice che la chiave deve essere relativamente corta anche perché altrimenti
ricadremmo nel punto 1, dato che il cifrario perfetto utilizza un chiave spropositata,
principale problematica dell’applicazione di quest’ultimo.
4- Il sistema deve essere applicabile alla corrispondenza telegrafica.
Basta sostituire telegrafica con Internet e siamo arrivati ai giorni nostri, la regola rimane la
stessa, cioè si deve poter applicare ai dati.
5- Il sistema deve essere portatile ed il suo utilizzo o il suo funzionamento non devono
richiedere l’impiego di un gran numero di persone.
6- Infine, date le circostanze nelle quali verrà presumibilmente utilizzato, il sistema non deve
richiedere la conoscenza di una lunga serie di regole, né essere di difficile applicazione.
3
Esempi di cifrari simmetrici standardizzati dal NIST, National Institute of Standards and
Technology:
- DES, Data Encryption Standard
Obsoleto anche se ancora presente per motivi che in inglese diremmo legacy, trad. eredità,
cioè far si che i sistemi continuino a lavorare fin tanto che non si estinguano.
- AES, Advanced Encryption Standard
Introdotto nei primi anni del 2000, per sopperire alle limitazioni del DES, ancora regge.
Utilizzato per esempio per cifrare hard disk ed essendo molto veloce, permette di cifrare o
decifrare dati in tempo reale senza rendermi conto.
4
Bisogna quindi trovare un modo per tradurre in termini
algoritmico-matematici la procedura appena descritta →
Diffie-Hellman, 1970, mettono in piedi un protocollo
crittografico che consente a due entità di stabilire una
chiave condivisa e segreta utilizzando un canale di
comunicazione insicuro, pubblico, senza la necessità che
le due parti si siano scambiate informazioni o si siano
incontrate in precedenza. Il protocollo utilizza il
problema dei logaritmi discreti come base per la
creazione di funzioni unidirezionali, in quanto l’utilizzo
di operazioni quali somma, sottrazione, moltiplicazione
e divisione, o costituiscono operazioni non commutative
oppure commutative ma non sicure. Tale procedura
però, implica che la chiave è scambiata soltanto se Bob ed Alice sono responsive, trad. reattivi,
per cui sarebbe meglio evitare questo doppio passaggio. Per evitare ciò, quello che si fa è,
associare ad ogni attore coinvolto nella comunicazione una coppia di chiavi:
- Pubblica, disponibile per tutti;
- Privata, personale e segreta.
Evitando così il problema connesso alla necessità di uno scambio in modo sicuro dell’unica
chiave utile alla cifratura-decifratura presente invece nella crittografia simmetrica.
Alice produce una coppia di
chiavi per ogni
comunicazione, una pubblica
messa in una directory
pubblica ed una privata
facilmente connessa a quella
pubblica, con il vincolo che il
viceversa richiede uno sforzo
computazionale enorme.
Bob prende il messaggio e lo
cifra utilizzando la chiave
pubblica di Alice, la quale
facilmente tramite la propria chiave privata decifra il
messaggio.
Se gli algoritmi sono stati scelti ed utilizzati in modo
appropriato, i messaggi non possono essere decifrati da nessuno
che non possieda la chiave privata corrispondente, che si
presume quindi essere il proprietario di tale chiave e quindi la
persona associata alla chiave pubblica. Per fare ciò, deve essere
computazionalmente facile per un utente generare una coppia di
chiavi, pubblica e privata, da utilizzare per cifrare e decifrare.
La forza di un sistema di crittografia a chiave pubblica si basa sulla difficoltà di determinare la
5
chiave privata corrispondente alla chiave pubblica. La sicurezza dipende quindi solo dal
mantenere la chiave privata segreta, mentre la pubblicazione della chiave pubblica non
compromette la sicurezza.
La differenza con la cifratura simmetrica sta nel fatto che le chiavi per cifrare e decifrare non
sono le stesse, con quella con cui si chiude non si apre ed il viceversa, anche se chi ha la chiave
per aprire, ha anche quella per chiudere, per quanto detto.
Chi ha solo la chiave pubblica può solo cifrare ma poi non può decifrare perché quella privata è
difficilmente calcolabile.
Quindi, un qualsiasi utente su internet genera una coppia di chiavi per ogni comunicazione, si
tiene per sé quella privata, mette a disposizione quella pubblica, riceverà messaggi cifrati da
chiunque tramite la chiave pubblica, senza bisogno di avere una pre-condivisione di chiave con
nessuno.
Quanto appena detto è implementato in tanti crittosistemi asimmetrici di cui RSA fa da padrone,
poi c’è El Gamal e le curve ellittiche.
Per mettere in pratica quanto detto bisogna mettere in piedi una trapdoor, trad. trappola, cioè
una funzione facile da computare in una direzione, ma difficile da calcolare nella direzione
opposta, ossia trovarne l’inversa, se non si conoscono determinate informazione. In termini
matematici, sia F una funzione trapdoor, allora esiste una qualche informazione segreta y tale
che date F(x) e y risulti facile calcolare x. Una trapdoor è un problema matematico difficile, per
esempio la fattorizzazione di un numero intero, il logaritmo discreto e le relazioni delle curve
ellittiche. Questo comporta però un peso computazionale non indifferente.
Un esempio di una semplice trapdoor matematica può essere: 6895601, prodotto di due numeri
primi, quali sono questi numeri? Una tipica soluzione, utilizzando la forza bruta, potrebbe essere
quella di dividere il numero per diversi numeri primi fino a trovare la risposta. Tuttavia, se
qualcuno rendesse noto che 1931 è parte della risposta, diverrebbe semplice, con l'aiuto di una
calcolatrice, trovare la soluzione completa, 6895601 ÷ 1931. Questo esempio non rappresenta
dunque una robusta funzione trapdoor dal momento che un computer moderno può facilmente
elaborare tutte le possibili soluzioni in un arco di tempo molto breve, ma lo stesso esempio può
essere irrobustito ricorrendo al prodotto di due numeri primi molto più grandi.
Due i modi di trasferire dati:
1- Public Key Encryption, PKE
A causa del peso computazionale della crittografia asimmetrica, essa è usata per piccoli
blocchi dati, in genere il trasferimento di una chiave di cifratura simmetrica, la chiave di
sessione.
Solo crittografia asimmetrica.
6
2- Key Exchange Mechanism, KEM + Data Encryption Mechanism, DEM
Metodo con cui vengono trasferiti molti dati. Utilizza la crittografia asimmetrica per
generare una chiave di sessione, impiegata per cifrare la comunicazione successiva tramite
uno schema di crittografia simmetrica in quanto basato su algoritmi semplici e quindi molto
veloci, una volta terminata viene buttata.
Cifratura ibrida = Crittografia asimmetrica + crittografia simmetrica.
Il problema di questi due modi è lo stesso e riguarda come Bob raccoglie le chiavi pubbliche
dei suoi interlocutori, se Eve riuscisse a spacciarsi per un suo contatto, facendo mettere nel
mazzo di chiavi la sua pubblica, il gioco è fatto. Questo tipo di attacco è detto man in the
middle e fa parte della categoria degli attacchi attivi.
❖ Firma digitale
Metodo matematico teso a dimostrare l’autenticità di un documento digitale autenticando
l’autore di un documento, la confidenzialità è messa da parte. E’ un paradigma diverso
rispetto a quello della cifratura asimmetrica appena visto ma in cui si possono usare le
medesime primitive crittografiche, per esempio utilizzare RSA ma al contrario, ciò non
significa che tutti i sistemi crittografici asimmetrici si possono prendere e rovesciare, l’idea
però è quello d’invertire il ruolo della chiave privata e pubblica. Infatti, un messaggio viene
firmato con la chiave privata del mittente e può essere verificato da chiunque abbia accesso
alla chiave pubblica del firmatario. Questa verifica dimostra che il mittente ha avuto
accesso alla chiave privata e quindi è molto probabile che sia la persona associata alla
chiave pubblica. Inoltre, dimostra che la firma è stata preparata per quel preciso messaggio,
poiché la verifica fallirà per qualsiasi altro messaggio che si possa concepire senza
utilizzare la chiave privata.
7
Una volta firmato digitalmente un file, chiunque può verificare la firma:
1- Calcolando l'hash del messaggio;
2- Decifrando l'hash del messaggio;
3- Confrontando la firma del messaggio.
Chi garantisce che la chiave pubblica è quella connessa alla privata del mittente? Le
Certification Authority, CA. Il futuro mittente si reca alla CA, quest’ultima verifica le
credenziali della persona che sta facendo la richiesta e genera una coppia di chiavi, quella
privata la dà al futuro mittente mentre la pubblica la tiene per se. A questo punto è compito
dell’ente di certificazione, garantire che quella chiave pubblica corrisponde effettivamente
alla persona fisica dichiarata.
❖ Funzioni Hash:
Fa parte della famiglia delle funzioni one-way, cioè
chiunque può calcolare la funzione diretta, nessuna
l’inversa.
Le possiamo paragonare ad un frullatore di bit che da come
output una stringa di bit di dimensione fissa. I bit d’uscita
sono dipendenti dall’ingresso e cambiando anche una
minimi parte, il digest cambia, per esempio, cambiando 1
bit in 1TB di dati, il digest corrispondente è completamente
differente da quello prodotto dal solo TB. Il digest, trad.
digerire, è il risultato della funzione hash. Una volta
prodotto un digest nemmeno chi l’ha prodotto può risalire
al messaggio d’ingresso, è chiaro però che chi l’ha calcolato può memorizzare il messaggio
d’ingresso.
8
5- CONFRONTO TRA CIFRATURA SIMMETRICA ED
ASIMMETRICA
11