RETI DI CALCOLATORI II
Prof. PIER LUCA MONTESSORO 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 queste slide.
In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non
Nota di Copyright
Elementi di crittografia Elementi di Elementi di
crittografia
crittografia
Crittografia 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 cifratotesto cifrato
“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”
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;
}}
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;
}
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 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
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
“ciao”
“ciao” “mmyy”“mmyy”
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)
dB (eB (m)) = m = eB (dB (m)) dB (eB (m)) = m = eB (dB (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
decifratura
dB chiave privata di Bob, tipicamente usata per la
decifratura
eB chiave pubblica di Bob, tipicamente usata per la
cifratura
eB chiave pubblica di Bob, tipicamente usata per la
cifratura
dB (eB (m)) = m = eB (dB (m)) dB (eB (m)) = m = eB (dB (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 eB(m)
testo cifrato eB(m)
chiave privata
di Bob d
chiave privata
di Bob
Bob d
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)
V. descrizione dell’algoritmo V. descrizione dell’algoritmo
Algoritmo RSA per
cifratura a chiave pubblica Algoritmo RSA per
cifratura a chiave pubblica
Diffie and Hellman:
crittografia a chiave asimmetrica
Tre proprietà:
Î D(E(P)) = P
Î estremamente difficile dedurre D da E Î E non può essere forzato con attacco
di tipo “testo in chiaro a scelta”
Rivest, Shamir and Adleman:
RSA
Î Scegliere p e q (da 1024 bit) Î Calcolare
n = p x q
z = (p - 1) x (q - 1)
Î Scegliere e tale che:
1 < e < z
MCD (z, e) = 1
esempioRSA
chiavi e cifraturaRSA:
Î Chiave pubblica: { e , n } Î Chiave privata: { d, n }
Î Cifratura del testo in chiaro M < n
C = Me (mod n)
Î Decifratura del testo cifrato C
M = Cd (mod n)
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
RSA → chiavi di sessione
DES → contenuto dei messaggi RSA → chiavi di sessione
DES → contenuto dei messaggi
Possibile impiego:
Possibile impiego: