La sicurezza nelle reti di calcolatori La sicurezza nelle La sicurezza nelle
reti di calcolatori
reti di calcolatori
Contenuti del corso Contenuti del corso
Æ La progettazione delle reti Æ La progettazione delle reti
Æ Il routing nelle reti IP Æ Il routing nelle reti IP
Æ Il collegamento agli Internet Service Provider e problematiche di sicurezza
Æ Il collegamento agli Internet Service Provider e problematiche di sicurezza
Æ Analisi di traffico e dei protocolli applicativi
Æ Analisi di traffico e dei protocolli applicativi
Æ Multimedialità in rete Æ Multimedialità in rete
Æ Tecnologie per le reti future Æ Tecnologie per le reti future
Contenuti del corso Contenuti del corso
Æ La progettazione delle reti Æ La progettazione delle reti
Æ Il routing nelle reti IP Æ Il routing nelle reti IP
Æ Il collegamento agli Internet Service Provider e problematiche di sicurezza
Æ Il collegamento agli Internet Service Provider e problematiche di sicurezza
Æ Analisi di traffico e dei protocolli applicativi
Æ Analisi di traffico e dei protocolli applicativi
Æ Multimedialità in rete Æ Multimedialità in rete
Æ Tecnologie per le reti future Æ Tecnologie per le reti future
Argomenti della lezione Argomenti della lezione
Î Proprietà necessarie alla
sicurezza della comunicazione Î Proprietà necessarie alla
sicurezza della comunicazione Î Elementi di crittografia
Î Elementi di crittografia
Sicurezza della comunicazione Sicurezza della comunicazione
Proprietà desiderabili Proprietà desiderabili Proprietà desiderabili
Segretezza Segretezza Segretezza
Autenticazione Autenticazione Autenticazione
Integrità del messaggio Integrità del messaggio Integrità del messaggio
Segretezza Segretezza
Può anche essere desiderabile
la segretezza del fatto stesso che sia avvenuta una comunicazione tra due persone (proprietà meno ovvia)
Può anche essere desiderabile
la segretezza del fatto stesso che sia avvenuta una comunicazione tra due persone (proprietà meno ovvia)
Il contenuto del messaggio può essere letto soltanto dal destinatario (proprietà banale) Il contenuto del messaggio
può essere letto soltanto dal destinatario (proprietà banale)
Autenticazione Autenticazione
Come faccio ad essere certo dell’identità della persona
con cui comunico?
Come faccio ad essere certo dell’identità della persona
con cui comunico?
Î Autenticazione del mittente
Î Autenticazione del destinatario Î Autenticazione del mittente
Î Autenticazione del destinatario
Servono:
Servono:
Integrità del messaggio Integrità del messaggio
Come posso garantire che il messaggio ricevuto sia esattamente quello
inviato (e non sia stato modificato da qualcuno?)
Come posso garantire che il messaggio ricevuto sia esattamente quello
inviato (e non sia stato modificato da qualcuno?)
ti amo ti amo
BobBob BobBob
Alice Alice
Integrità del messaggio Integrità del messaggio
Come posso garantire che il messaggio ricevuto sia esattamente quello
inviato (e non sia stato modificato da qualcuno?)
Come posso garantire che il messaggio ricevuto sia esattamente quello
inviato (e non sia stato modificato da qualcuno?)
Alice Alice
Trudy Trudy BobBob
ti amo ti amo
BobBob
ti ti odioodio
BobBob
Sicurezza per chi?
Sicurezza per chi?
Î Apparati dell’infrastruttura di rete (es. server DNS, router, ecc.)
Î Apparati dell’infrastruttura di rete (es. server DNS, router, ecc.)
Î Utenti (persone) Î Utenti (persone)
Î Falle nella sicurezza
dell’infrastruttura possono essere veicolo di attacchi alle attività
degli utenti
Î Falle nella sicurezza
dell’infrastruttura possono essere veicolo di attacchi alle attività
degli utenti
Vulnerabilità della rete Vulnerabilità della rete
Î Violazione della segretezza mediante sniffer
Î Violazione della segretezza mediante sniffer
Broadcast di livello 2 Broadcast di livello 2
Î Incertezza del mittente (IP spoofing)
Î Incertezza del mittente (IP spoofing)
Indirizzi IP non autenticati Indirizzi IP non autenticati
Vulnerabilità della rete Vulnerabilità della rete
Î Possibile alterazione dei messaggi Î Possibile alterazione dei messaggi
Informazioni trasmesse in chiaro Informazioni trasmesse in chiaro
Vulnerabilità della rete Vulnerabilità della rete
DoS: Denial of Service DoSDoS: : DenialDenial of Serviceof Service
Attacchi orientati ad impedire il normale
funzionamento dei sistemi Attacchi orientati ad
Attacchi orientati ad impedire il normale impedire il normale
funzionamento dei sistemi funzionamento dei sistemi
Esempi: SYN flooding (apertura connessioni TCP), smurf (ICMP echo
con falsi IP sorgenti) Esempi: SYN
Esempi: SYN floodingflooding (apertura (apertura connessioni TCP),
connessioni TCP), smurfsmurf (ICMP (ICMP echoecho con falsi IP sorgenti)
con falsi IP sorgenti)
Principi di crittografia Principi di crittografia
Permette di ottenere:
Permette di ottenere:
Permette di ottenere:
Segretezza Segretezza Segretezza
Autenticazione Autenticazione Autenticazione
Integrità del messaggio Integrità del messaggio Integrità del messaggio
Definizioni Definizioni
ABCD
testo in chiaro testo in
chiaro
algoritmo di cifratura
algoritmo di cifratura
#^$&
testo cifratotesto cifrato
Definizioni Definizioni
algoritmo di cifratura
algoritmo di
cifratura ABCD
testo in chiaro testo in
chiaro
#^$&
testo cifratotesto cifrato
Algoritmo segreto Algoritmo segreto
“Scambia ogni lettera in posizione i con quella in posizione (i3+3) mod m”
“Scambia ogni lettera in posizione i con quella in posizione (i3+3) mod m”
Esempio:
Esempio:
void crypto (char s[]) {
int i, m = strlen (s);
for (i = 0; i < m; i++) {
char t; int j;
j = (i*i*i + 3) % m;
t = s[i];
s[i] = s[j];
s[j] = t;
}
return;
}
void crypto (char s[]) void crypto (char s[]) {{
intint i, m =i, m = strlenstrlen (s);(s);
for (i = 0; i < m; i++) for (i = 0; i < m; i++) {{
char t;
char t; intint j;j;
j = (i*i*i + 3) % m;
j = (i*i*i + 3) % m;
t = s[i];
t = s[i];
s[i] = s[j];
s[i] = s[j];
s[j] = t;
s[j] = t;
}}
return;
return;
}}
Cifratura
Cifratura
void decrypto (char s[]) {
int i, m = strlen (s);
for (i = m-1; i >= 0; i--) {
char t; int j;
j = (i*i*i + 3) % m;
t = s[i];
s[i] = s[j];
s[j] = t;
}
return;
}
void decrypto (char s[]) {
int i, m = strlen (s);
for (i = m-1; i >= 0; i--) {
char t; int j;
j = (i*i*i + 3) % m;
t = s[i];
s[i] = s[j];
s[j] = t;
}
return;
}
Decifratura
Decifratura
Esempio:
Esempio:
"Cara Alice, credo
"Cara Alice, credo cheche TrudyTrudy ci stia spiandoci stia spiando""
"
"arT sausA eie aioCnodcrdaarT sausA eie aioCnodcrda y cc,ey cc,e trlidchiptrlidchip""
NO: è necessario permettere lo sviluppo del software
necessario
NO: è necessario permettere lo sviluppo del software
necessario
Algoritmo segreto per Internet?
Algoritmo segreto per Internet?
algoritmi pubblici + CHIAVI
algoritmi pubblici
+ CHIAVI
Definizioni Definizioni
ABCD
testo in chiaro testo in
chiaro
algoritmo di cifraturaalgoritmo di cifratura
#^$&
testo cifratotesto cifrato chiave
KA chiave
KA
Alice Alice
Definizioni Definizioni
algoritmo di decifratura algoritmo di
decifratura ABCD
testo in chiaro testo in
chiaro
%&*#
testo cifratotesto cifrato chiave
KB chiave
KB
BobBob
Definizioni Definizioni
KH#4
testo
incomprensibiletesto incomprensibile algoritmo di
decifratura algoritmo di
decifratura
%&*#
testo cifratotesto cifrato
?
? ?
Trudy Trudy
Chiavi simmetriche Chiavi simmetriche
Stessa chiave per crittografia e decrittografia
Stessa chiave
per crittografia
e decrittografia
Chiavi simmetriche Chiavi simmetriche
len (chiave) > len (messaggio) chiavi sempre diverse
len (chiave) > len (messaggio) chiavi sempre diverse
Massima sicurezza:
Massima sicurezza:
Come scambiarsi le chiavi?
Come scambiarsi le chiavi?
Problema:
Problema:
Algoritmi per chiavi simmetriche
Algoritmi per chiavi simmetriche
Î Schema di sostituzione fissa di ogni lettera con un’altra
Î Schema di sostituzione fissa di ogni lettera con un’altra
Cifrature monoalfabetiche (cifrario di Cesare)
Cifrature monoalfabetiche (cifrario di Cesare)
Î Forzatura tramite analisi statistica delle ricorrenze Î Forzatura tramite analisi
statistica delle ricorrenze
a b c d e f g h i j k l m n o ...
f g e s j y z k r q p i t a v ...
a b c d e f g h i j k l m n o ...
f g e s j y z k r q p i t a v ...
“ciao”
“ciao” “erfv”“erfv”
Esempio: cifrario di Cesare
Esempio: cifrario di Cesare
Algoritmi per chiavi simmetriche
Algoritmi per chiavi simmetriche
n cifrari di Cesare usati ciclicamente
n cifrari di Cesare usati ciclicamente
Cifrature polialfabetiche (cifrari di Vigenere)
Cifrature polialfabetiche (cifrari di Vigenere)
chiave: “key”
chiave: “key”
Esempio: cifrario di Vigenere Esempio: cifrario di Vigenere
ciaociaoc
c mm
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
...
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
...
cc mm
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
...
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
... chiave: “key”chiave: “key”
Esempio: cifrario di Vigenere Esempio: cifrario di Vigenere
mm ciaociaoii
ii mm
mm
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
...
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
... chiave: “key”chiave: “key”
Esempio: cifrario di Vigenere Esempio: cifrario di Vigenere
mm ciaociaoaa
aa
yy
mmyy
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
...
a b c d e f g h i j k l m n o ...
k l m n o p q r s t u v w x y ...
e f g h i j k l m n o p q r s ...
y z a b c d e f g h i j k l m ...
k l m n o p q r s t u v w x y ...
e f g ...
... chiave: “key”chiave: “key”
Esempio: cifrario di Vigenere Esempio: cifrario di Vigenere
mm ciaociaooo
oo
yy
mmyyyy
Tipologie di attacco Tipologie di attacco
Forza bruta (tutte le possibili chiavi)
Forza bruta (tutte le possibili chiavi)
ÎÎ
Analisi statistica (ricorrenze delle lettere, delle sillabe, ecc.)
Analisi statistica (ricorrenze delle lettere, delle sillabe, ecc.)
ÎÎ
Î Analisi del crittogramma di cui è nota una parte del testo
(es. intestazione standard)
Î Analisi del crittogramma di cui è nota una parte del testo
(es. intestazione standard)
Î Analisi con testo in chiaro scelto Î Analisi con testo in chiaro scelto
Algoritmi per chiavi simmetriche
Algoritmi per chiavi simmetriche
Î Chiave a 56 bit Î Chiave a 56 bit
Î 16 fasi di manipolazione ed EXOR con i bit della chiave
Î 16 fasi di manipolazione ed EXOR con i bit della chiave
DES: Data Encryption Standard DES: Data Encryption Standard
Î Due fasi di permutazione Î Due fasi di permutazione
Algoritmi per chiavi simmetriche
Algoritmi per chiavi simmetriche
Forzato nel 1997 Forzato nel 1997
Evoluzione: DES triplo (3DES) Evoluzione: DES triplo (3DES)
Chiavi pubbliche Chiavi pubbliche
Due chiavi Due chiavi
Chiave pubblica Chiave pubblica
Chiave privata (segreta) Chiave privata (segreta)
Chiavi pubbliche Chiavi pubbliche
d
B(e
B(m)) = m = e
B(d
B(m)) d
B(e
B(m)) = m = e
B(d
B(m))
Chiavi e algoritmo di cifratura devono soddisfare la proprietà:Chiavi e algoritmo di cifratura devono soddisfare la proprietà:
Chiavi pubbliche Chiavi pubbliche
Dove:
Dove:
Dove:
dB chiave privata di Bob, usata per la decifratura
dB chiave privata di Bob, usata per la decifratura
eB chiave pubblica di Bob, usata per la cifratura
eB chiave pubblica di Bob, usata per la cifratura
m messaggio m messaggio
d
B(e
B(m)) = m = e
B(d
B(m))
d
B(e
B(m)) = m = e
B(d
B(m))
Crittografia a chiave pubblica Crittografia a chiave pubblica
%&*#
testo cifrato
eB(m) testo cifrato
eB(m) chiave
pubblica di Bob
eB chiave pubblica
di Bob eB
Alice Alice ABCD
testo in chiaro testo in
chiaro
algoritmo di cifraturaalgoritmo di cifratura
Crittografia a chiave pubblica Crittografia a chiave pubblica
%&*# testo cifrato eB(m)
testo cifrato eB(m)
chiave privata
di Bob eB chiave privata
di Bob eB
BobBob
ABCD
testo in chiaro dB(eB(m))=m testo in chiaro
dB(eB(m))=m algoritmo di
decifratura algoritmo di
decifratura
Algoritmo RSA per
cifratura a chiave pubblica Algoritmo RSA per
cifratura a chiave pubblica
Î RSA (Ron Rivest, Adi Shamir, Leonard Adleman)
Î RSA (Ron Rivest, Adi Shamir, Leonard Adleman)
Î Chiavi generate a partire da due
numeri primi p e q molto grandi:
p ·q dell’ordine di 1024 bit
(difficile scomposizione in fattori)
Î Chiavi generate a partire da due
numeri primi p e q molto grandi:
p ·q dell’ordine di 1024 bit
(difficile scomposizione in fattori)
Descrizione dell’algoritmo a pag. 570 e seguenti del libro di testo
Descrizione dell’algoritmo a pag. 570 e seguenti del libro di testo
Algoritmo RSA per
cifratura a chiave pubblica Algoritmo RSA per
cifratura a chiave pubblica
richiede calcolo di elevamento a potenza con numeri molto grandi richiede calcolo di elevamento a potenza con numeri molto grandi
Lungo tempo di elaborazione Lungo tempo di elaborazione
Problema:
Problema:
Algoritmo RSA per
cifratura a chiave pubblica Algoritmo RSA per
cifratura a chiave pubblica
scambio di chiavi simmetriche di sessione
scambio di chiavi simmetriche di sessione
Possibile impiego:
Possibile impiego:
RSA → chiavi di sessione
DES → contenuto dei messaggi RSA → chiavi di sessione
DES → contenuto dei messaggi
La sicurezza nelle reti di calcolatori La sicurezza nelle La sicurezza nelle
reti di calcolatori
reti di calcolatori
Autenticazione Autenticazione
Esempi di possibili attacchi:
Esempi di possibili attacchi:
Î IP spoofing Î IP spoofing
Alice Alice
IP di Trudy:
158.110.253.254 IP di Trudy:
158.110.253.254 IP di Bob:
158.110.254.1 IP di Bob:
158.110.254.1
IP mittente:
158.110.254.1
HELLO, BOB
Autenticazione Autenticazione
Esempi di possibili attacchi:
Esempi di possibili attacchi:
Î Lettura delle password in chiaro Î Lettura delle password in chiaro
PWD:
5XY7ZW HELLO,
BOB
Alice Alice BobBob
Trudy Trudy
Autenticazione Autenticazione
Esempi di possibili attacchi:
Esempi di possibili attacchi:
Î Lettura delle password in chiaro Î Lettura delle password in chiaro
PWD:
5XY7ZW
HELLO, BOB
Alice Alice BobBob
Trudy Trudy
Autenticazione Autenticazione
Î Lettura e riutilizzo di password cifrate (attacco di replica)
Î Lettura e riutilizzo di password cifrate (attacco di replica)
PWD:lovealice
? ?
PWD:
%&$#*@
Esempi di possibili attacchi:
Esempi di possibili attacchi:
Alice Alice BobBob
Trudy Trudy
HELLO, BOB
Autenticazione Autenticazione
Alice Alice BobBob
PWD:
%&$#*@
HELLO, BOB
Trudy Trudy
Î Lettura e riutilizzo di password cifrate (attacco di replica)
Î Lettura e riutilizzo di password cifrate (attacco di replica)
Esempi di possibili attacchi:
Esempi di possibili attacchi:
Protocollo di autenticazione a chiave simmetrica basato
su nonce
Protocollo di autenticazione a chiave simmetrica basato
su nonce
Bob Alice
sono Alice!
sono Alice!
KAB (R) KAB (R)
RR
Protocollo di autenticazione a chiave pubblica
Protocollo di autenticazione a chiave pubblica
sono Alice!
sono Alice!
dA (R) dA (R)
RR
chiave pubblica?
chiave pubblica?
eA
eA Bob
Alice
Protocollo di autenticazione a chiave pubblica Protocollo di autenticazione
(fallimento)a chiave pubblica
(fallimento)Trudy Bob
dT (R) dT (R)
RR
chiave pubblica?
chiave pubblica?
eT eT
sono Alice!
sono Alice!
Man in the middle Man in the middle
BobBob dT (R)
dT (R) RR
chiave pubblica?
chiave pubblica?
eT eT Trudy
Trudy Alice
Alice
sono Alice!
sono Alice! sono Alice!sono Alice!
dA (R) dA (R)
RR
chiave pubblica?
chiave pubblica?
eA eA
Man in the middle Man in the middle
BobBob Trudy
Trudy Alice
Alice
dati cifrati con eT dati cifrati con eT dati cifrati con eA
dati cifrati con eA
Trudy riceve e decifra tutti i dati trasmessi
Trudy riceve e decifra tutti i dati trasmessi
Alice e Bob non si accorgono di nulla!
Alice e Bob non si accorgono di nulla!
Autenticazione basata su crittografia
Autenticazione basata su crittografia
Richiede distribuzione sicura delle chiavi
Richiede distribuzione sicura Richiede distribuzione sicura
delle chiavi delle chiavi
Î Crittografia a chiavi simmetriche:
serve intermediario di fiducia (KDC, Key Distribution Center)
ÎÎ Crittografia a chiavi simmetriche: Crittografia a chiavi simmetriche:
serve intermediario di fiducia serve intermediario di fiducia
(KDC,
(KDC, Key DistributionKey Distribution CenterCenter)) Î Crittografia a chiave pubblica:
CA (Certification Authority)
ÎÎ Crittografia a chiave pubblica:Crittografia a chiave pubblica:
CA (CA (Certification AuthorityCertification Authority))
Key Distribution Center Key Distribution Center
Chiave simmetrica condivisa tra ogni utente registrato e il KDC
Chiave simmetrica condivisa tra ogni utente registrato e il KDC
ÎÎ
Il KDC genera ed invia una chiave simmetrica per singola sessione
Il KDC genera ed invia una chiave simmetrica per singola sessione
ÎÎ
Key Distribution Center Key Distribution Center
Il KDC invia anche ad Alice la chiave di sessione e
l’identificativo di Alice cifrati con la chiave di Bob, che serviranno ad Alice per farsi autenticare da
Bob e per trasmettergli la chiave di sessione
Il KDC invia anche ad Alice ÎÎ
la chiave di sessione e
l’identificativo di Alice cifrati con la chiave di Bob, che serviranno ad Alice per farsi autenticare da
Bob e per trasmettergli la chiave di sessione
Key Distribution Center Key Distribution Center
KB-KDC(“Alice”, R1) KB-KDC(“Alice”, R1)
Dati cifrati con R1 Dati cifrati con R1 KA-KDC (“Alice”, “Bob”) KA-KDC (“Alice”, “Bob”)
KDCKDC
BobBob Alice
Alice
KA-KDC (R1), KB-KDC(“Alice”, R1) KA-KDC (R1), KB-KDC(“Alice”, R1)
Certification Authority Certification Authority
Î Garantisce la corrispondenza entità - chiave pubblica
Î Garantisce la corrispondenza entità - chiave pubblica
Î Crea un certificato per ogni entità registrata
(standard X.509 e RFC 1422)
Î Crea un certificato per ogni entità registrata
(standard X.509 e RFC 1422) Î Pubblica i certificati in siti
noti senza possibilità di contraffazione
Î Pubblica i certificati in siti noti senza possibilità di
contraffazione
Integrità Integrità
Cifratura del messaggio con chiave pubblica del destinatario
Cifratura del messaggio con chiave pubblica del destinatario
ABCD
testo in chiaro testo in
chiaro
%&*#
testo cifratotesto cifrato chiave
pubblica di Bob chiave pubblica
di Bob
BobBob Alice
Alice
tempi di cifratura/decifratura troppo lunghi
tempi di cifratura/decifratura troppo lunghi
Cifratura del solo digest (riassunto)
Cifratura del solo digest (riassunto)
Problema:
Problema:
Integrità Integrità
Cifratura del messaggio con chiave pubblica del destinatario
Cifratura del messaggio con chiave pubblica del destinatario
Digest del messaggio Digest del messaggio
Stringa di lunghezza fissa Stringa di lunghezza fissa
Generata con funzione di hash H(m)
Generata con funzione di hash H(m)
Proprietà:
Proprietà:
Î Non si può trovare y tale che H(y)=x Î Non si può trovare y tale che H(y)=x
Î Non si possono trovare due
messaggi x e y tali che H(x)=H(y) Î Non si possono trovare due
messaggi x e y tali che H(x)=H(y)
Algoritmo MD5 Algoritmo MD5
Î Attualmente molto usato Î Attualmente molto usato
Î RFC 1321 Î RFC 1321
Produce un digest di 128 bit Produce un digest di 128 bit ÎÎ
Î Processo a 4 fasi Î Processo a 4 fasi
Digest del messaggio Digest del messaggio
messaggio messaggio
digest in chiarodigest in chiaro
chiave privata del
mittente chiave privata del
mittente
digest cifratodigest cifrato spedizione
spedizione
Digest del messaggio Digest del messaggio
chiave
pubblica del mittente
chiave
pubblica del mittente digest
cifratodigest
cifrato digest
in chiarodigest in chiaro
messaggio
messaggio digest
in chiarodigest in chiaro
confrontoconfronto
Può essere usato come firma digitalePuò essere usato come firma digitale