RETI DI CALCOLATORI II
Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI
Facoltà di Ingegneria
Università degli Studi di Udine
Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. Davide Pierattoni, Università degli Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in
Nota di Copyright
Elementi di crittografia Elementi di Elementi di
crittografia
crittografia
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
Autenticazione Autenticazione Autenticazione
Segretezza Segretezza Segretezza
Integrità del messaggio Integrit
Integritàà del messaggiodel messaggio
Proprietà desiderabili Propriet
Propriet à à desiderabili desiderabili
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)
Segretezza Segretezza
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?)
titi amoamo
BobBob AliceAlice
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 BobBob
titi amoamo BobBob
titi 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
DoS: Denial of Service DoS:
DoS: Denial Denial of of Service Service
Attacchi orientati ad impedire il normale
funzionamento dei sistemi Attacchi orientati ad
Attacchi orientati ad
impedire il normale
impedire il normalefunzionamento dei sistemi
funzionamento dei sistemiEsempi: 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)
Vulnerabilità della rete
Vulnerabilità della rete
Principi di crittografia Principi di crittografia
Permette di ottenere:
Permette di ottenere:
Permette di ottenere:
Autenticazione Autenticazione Autenticazione
Segretezza Segretezza Segretezza
Integrità del messaggio Integrit
Integritàà del messaggiodel 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 testo
“Scambia ogni lettera in posizione i con quella in posizione (i
3+3) mod m”“Scambia ogni lettera in posizione i con quella in posizione (i
3+3) mod m”Algoritmo segreto Algoritmo segreto
Esempio:
Esempio:
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;
}}
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;
}
Decifratura
Decifratura
Esempio:
Esempio:
"Cara Alice, credo
"Cara Alice, credo cheche Trudy Trudy cici stiastia spiando"spiando"
"
"arTarT sausAsausA eieeie aioCnodcrdaaioCnodcrda y cc,e y 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 testo chiave
KA chiave
KA
Definizioni Definizioni
algoritmo di decifratura algoritmo di
decifratura ABCD
testo in chiaro testo in
chiaro
%&*#
testo cifratotesto cifrato chiave
KB chiave
KB
Definizioni Definizioni
KH#4
testo
incomprensibiletesto incomprensibile algoritmo di
decifratura algoritmo di
decifratura
%&*#
testo testo
?
? ?
Chiavi simmetriche Chiavi simmetriche
Stessa chiave per crittografia e decrittografia
Stessa chiave
per crittografia
e decrittografia
Come scambiarsi le chiavi?
Come scambiarsi le chiavi?
Problema:
Problema:
Chiavi simmetriche Chiavi simmetriche
len (chiave) > len (messaggio) chiavi sempre diverse
len (chiave) > len (messaggio) chiavi sempre diverse
Massima sicurezza:
Massima sicurezza:
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)
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
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 con testo in chiaro scelto Î Analisi con testo in chiaro scelto
Î 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)
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)
d
B(e
B(m)) = m = e
B(d
B(m)) d
B(e
B(m)) = m = e
B(d
B(m))
Chiavi pubbliche Chiavi pubbliche
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, tipicamente usata per la
dB chiave privata di Bob, tipicamente usata per la
eB chiave pubblica di Bob, tipicamente usata per la
cifratura
eB chiave pubblica di Bob, tipicamente usata per la
cifratura
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
ABCD
testo in chiaro testo in
chiaro
algoritmo di cifraturaalgoritmo di cifratura
Crittografia a chiave pubblica Crittografia a chiave pubblica
%&*# testo cifrato e (m)
testo cifrato e (m)
chiave privata
di Bob chiave privata
di Bob
ABCD
testo in chiaro dB(eB(m))=m testo in chiaro
dB(eB(m))=m algoritmo di
decifratura algoritmo di
decifratura
Î 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. 603 Descrizione dell’algoritmo a pag. 603