1 tradizionalmente la crittografia simmetrica è usata per garantire la segretezza dei messaggi...
TRANSCRIPT
1
◘ Tradizionalmente la crittografia simmetrica è usata per garantire la segretezza dei messaggi
◘ Scenario tipico
Workstations accedono ad altre workstation e server sulla propria rete locale (LAN) o su altre reti interconnesse usando switches/routers
Uso di LAN parzialmente o totalmente wireless
◘ Attacchi
Spionaggio da altre workstation sulla stessa rete
Uso di link e routers per entrare dall’esterno e spiare
Accesso all’armadio di cablaggio che funge da punto di interconnessione per le
linee interne, le linee telefoniche e le linee di comunicazione esterne e ascolto sui cavi
2
Un attacco può aver luogo in un qualsiasi punto di collegamento
3
Due principali alternative per stabilire cosa crittografare e dove localizzare il sistema di crittografia
Crittografia di canale (link encryption)
-Criptazione indipendente su ciascun link
-Implica la necessità di decriptare il traffico tra i link
- Richiede molti dispositivi
-Se viene utilizzata la rete pubblica l’utente non ha controllo sulla sicurezza dei nodi
-Ogni coppia di nodi che condivide un collegamento deve avere una chiave univoca
e per ogni collegamento deve essere utilizzata una chiave differente
-Occorre generare una grande quantità di chiavi
4
Crittografia end-to-end (end-to end encryption)
-Criptazione tra la sorgente primaria e la destinazione finale
-Bisogno di dispositivi alle due estremità con chiavi condivise
-Riduce i rischi connessi alla sicurezza dei collegamenti e delle reti
- Si presentano problemi su cosa crittografare poiché è necessario conoscere l’intestazione per potere inoltrare i dati
Si ottiene una sicurezza maggiore adottando entrambi i sistemi
7
Usando l’encryption end-to-end si debbono lasciare gli header in chiaro
La rete così può instradare l’informazione correttamente
Quindi, anche se I contenuti sono protetti,
gli andamenti dei flussi di traffico non lo sono
Idealmente si vorrebbe avere insieme tutto
La protezione end-to-end che protegge i dati lungo
l’intero percorso e fornisce l’autenticazione
La protezione a livello link che impedisce
il monitoraggi dei flussi di traffico
Analisi del traffico
10
Analisi del traffico
Anche con l’encryption un opponent può ottenere
delle informazioni utili
Può essere fatto monitorando il flusso di traffico
Utile negli ambienti militari e commerciali
Può pure essere usato per creare un canale coperto
Problema minimizzato dalla link encryption che
oscura i dettagli degli header
In ogni modo i volumi del traffico globale rimangono visibili
Una soluzione è rappresenata dal traffic padding
11
Padding del traffico
Un dispositivo di crittografia Traffic panding
GeneratoreContinuo di dati casuali
Algoritmo di
crittografia
Chiave
Input discontinuo
di testo in chiaroOutput cifrato
continuo
12
Distribuzione delle chiavi
Schemi simmetrici richiedono che entrambe le parti
condividano una chiave comune segreta
Il problema è come distribuire con sicurezza
questa chiave
Frequenti crash di sistemi sicuri dovuti a un break
nello schema di distribuzione delle chiavi
13
Distribuzione delle chiavi
Due parti A and B hanno varie
alternative per la key distribution:
A sceglie una chiave e la consegna fisicamente a B
Una terza parte può scegliere e consegnare
la chiave ad A e B
Se A e B hanno comunicato in precedenza, possono
usare la chiave precedente per criptare una nuova chiave
Se A e B hanno comunicazioni sicure con una terza parte
C, questa può può può fare da relay della chiave tra A e B
14
Gerarchia delle chiavi
Data
Chiavi di sessione
Chiavi master
Protezione
crittografica
Protezione
crittografica
Protezione
Non crittografica
15
Crittografia in una rete a commutazione di pacchetto
Ogni utente i condivide una
master key ki col KDC
16
Problemi di distribuzione delle chiavi
◘ Per grandi network sono richieste gerarchie di KDC, ma
questi devono avere reciprocamente fiducia
◘ Per maggiore sicurezza i tempi di vita delle chiavi di sessione deve essere limitato
◘ Il tempo di vita tipico di una chiave, nel caso protocolli connection-less è limitato a un tempo fisso
◘ Il tempo di vita tipico di una chiave, nel caso protocolli
connection oriented, è limitato a una sessione
◘ Uso della distribuzione automatica di chiavi a beneficio degli utilizzatori ma servono sistemi con fiducia
Generatori di Numeri PseudoCasuali
Anyone who attempts to generate random numbers bydeterministic means is, of course, living in a state of sin.
--John von Neumann
18
I generatori di numeri casuali (RNGs) risultano
componente fondamentale per diverse applicazioni:
- Esperimenti statistici –analisi di algoritmi-
- Simulazione di sistemi stocastici
- Analisi numerica basata su metodi Monte-Carlo
- Algoritmi probabilistici
- Computer games
- Crittografia
- Protocolli di comunicazione sicuri
- Gambling machines
- Virtual Casino
19
molti algoritmi crittografici necessitano di (tanti) bit casuali
le sorgenti casuali (macroscopiche) sono rare in Natura produrre bit casuali è costoso
idea: si usa un generatore di numeri pseudocasuali (PRNG)
dato un seme casuale, un PRNG produce una sequenza di bit che è indistinguibile da una sequenza di bit casuali
PRNG
20
indistinguibile significa che nessun algoritmo eseguibile in tempo polinomiale su una Macchina di Turing(MdT) probabilistica sa decidere se la sequenza emessa dal PRNG è casuale oppure calcolata definizione di tipo computazionale
Neanche Eve è in grado di capire se stiamo usando numeri casuali o pseudocasuali
PRNG
21
definizione: un PRNG è un algoritmo, eseguibile in tempo polinomiale su una MdT deterministica, che calcola una funzione
G : {0,1}k → {0,1}l(k), con l(k) > k(k= lunghezza stringa in ingresso, l(k)= lunghezza stringa in uscita)
i PRNG possono essere uniformi o non uniformi
PRNG
Un PRNG non uniforme
22
generatore congruenziale lineare: siano a, b ed m tre interi tali che 0 a, b < m dato un seme intero s, con 0 s < m, il sistema di
equazioni:
si chiama generatore congruenziale lineare
1mod1
0
imbaxx
sx
ii
PRNG
23
proposto da Lehmer nel 1951, produce una sequenza di numeri della medesima lunghezza
la scelta di a, b ed m è critica per non ottenere sequenze facili da prevedere
viene usato spesso (ma non in Crittografia) non è un buon generatore: i numeri prodotti
presentano relazioni lineari
se Eve scopre quattro valori x0, x1, x2, x3 prodotti, risolvendo il sistema di equazioni:trova i valori di a, b, ed m
mbaxx
mbaxx
mbaxx
mod
mod
mod
23
12
01
PRNG
24
problema: costruire una funzione
G : {0,1}k → {0,1}l(k)
che allunga l’input, verificando i requisiti della definizione
domanda: dobbiamo costruire una funzione diversa per ogni possibile funzione l(k) ?
PRNG
25
risposta: no. A partire da un PRNG H : {0,1}k →{0,1}k+1 possiamo costruire qualunque PRNG G : {0,1}k → {0,1}l(k)
Data la stringa x0 {0,1}k per costruire una stringa pseudocasuale di lunghezza l(k)>k è sufficiente applicare l(k) volte il generatore pseudocasuale H, ottenendo ogni volta un bit della stringa di output ed un nuovo seme per applicare H.
PRNG
26
abbiamo quindi ridotto il problema di costruire G a quello di costruire H, che allunga l’input di un solo bit ci basterà una funzione one-way
definiamo il concetto di hard-core bit se f è una funzione (permutazione) one-way, è
difficile da invertire: dato y, è difficile calcolare x tale che f(x) = y
se x è difficile da calcolare, alcuni suoi bit saranno difficili da calcolare (se x {0,1}n, devono essere più di log2n, ad esempio n/4)
i bit difficili da calcolare sono hard-core bit per f
PRNG
27
supponiamo che Alice debba mandare il bit b {0,1} a Bob preleva la chiave pubblica (nB, eB) di Bob sceglie a caso un intero x < nB/2
(quindi, 2x < n) trasmette a Bob y = (2x + b)eB mod nB
Bob, ricevuto y: calcola ydB mod nB = 2x + b prende il bit meno significativo del risultato
Intermezzo: RSA randomizzato
Numeri casuali generati in modo crittografico
28
osservazione: non si sa se gli altri bit di m (in particolare, quali e quanti) sono hard-core bit per RSA
quindi, per cifrare in modo sicuro un messaggio m, si può cifrare ogni bit di m con RSA randomizzato la crittoanalisi diventa molto difficile se il messaggio è lungo, il metodo è
inefficiente
RSA randomizzato
29
RSA pseudorandom bit generator
1. Si sceglie a caso due grandi primi p e q
2. Si calcola2.1 n = pq2.2 = (p-1)(q-1)2.3 e tale che MCD(e,) = 1
3. Si sceglie a caso un seme x0 < n-1
(N.B. Intel generator consigliato)
4. Si itera quanto serve4.1 xi = xi-1
e mod n,
4.2 bi = xi mod 2
(N.B. bi è il bit meno significativo di (xi)2
#define MAX_LUNGHEZZA 256void RSAGenerator(intero z[MAX_LUNGHEZZA],intero l){ intero n,p,q;intero phi;intero x[MAX_LUNGHEZZA];p=prime(1000,5000);q=prime(1000,5000);n=p*q;phi = (p-1)*(q-1);intero e = random(1,phi);while(mcd(e,phi)!=1) e = random(1,phi); x[0]=random(1,n-1); //semefor (intero i=1;i<=l;i++) {x[i]=powermod(x[i-1],e,n);z[i-1]=x[i]%2;printf("%d",x[i]%2);}}
30
proposta da Meyer e Matyas nel 1982 a partire da una master key (seme) si
produce una sequenza di chiavi di sessione si usa un contatore avente periodo N il valore del contatore viene usato come
chiave (o come testo in chiaro) in un crittosistema simmetrico
ogni volta che viene usato, il contatore viene incrementato
Cifratura ciclica
Numeri casuali generati in modo crittografico
31
per rafforzare ulteriormente lo schema si può usare una sequenza di input più complicata
C
C+1
ENC
contatore con periodo N
xi = Ekm(C+1)
master key km
Cifratura ciclica
Numeri casuali generati in modo crittografico
32
si può anche usare il modo di funzionamento OFB di un crittosistema simmetrico per generare un keystream, che poi si usa come l’output di un PRNG
Ek
m1
c1
z0 z1 Ek z2
m2
c2
Keystream nel modo OFB
Numeri casuali generati in modo crittografico
33
è uno dei PRNG crittografici migliori tra quelli noti viene usato in PGP utilizza 3DES come indicato in figura (vedere
prossima slide) input:
DTi: rappresentazione a 64 bit della data e dell’ora attuali. Viene aggiornato ad ogni blocco pseudocasuale generato
Vi: seme da 64 bit chiavi:
k1, k2: da 64 bit ciascuna
Vengono usate nei tre moduli di 3DES, in modalità EDE (encryption – decryption – encryption)
ANSI X9.17
Numeri casuali generati in modo crittografico
34
ANSI X9.17
35
output: Ri: blocco pseudocasuale da 64 bit Vi+1: valore aggiornato del seme
dalla figura si vede che:Ri = EDEk1,k2(Vi EDEk1,k2(DTi ))
Vi+1 = EDEk1,k2(Ri EDEk1,k2(DTi ))
riassumendo, il PRNG: usa una chiave da 112 bit vengono fatte nove cifrature/decifrature con DES si usano i valori pseudocasuali DTi e Vi, che
cambiano ad ogni valore prodotto
ANSI X9.17
36
per quanto riguarda la sicurezza: la quantità di informazioni da
compromettere è enorme anche se Eve riesce a trovare un Ri, non
riesce comunque a trovare i successivi
ANSI X9.17
37
proposto nel 1986 siano p e q numeri primi (grandi) tali che:
p 3 mod 4, q 3 mod 4 sia n = p q si sceglie a caso s tale che MCD(s, n) = 1
(s non è multiplo né di p né di q) il generatore produce la sequenza di bit:
B1, B2, …
con il seguente algoritmo
Generatore di Blum, Blum e Shub (BBS)
Numeri casuali generati in modo crittografico
38
BBS(s)X0 = s2 mod n
i = 1while (true)
do Xi = (Xi-1)2 mod n
Bi = Xi mod 2 Bi = lsb(Xi)
la sicurezza si basa sulla (congetturata) difficoltà di fattorizzare n
Generatore di Blum, Blum e Shub (BBS)
39
Blum-Blum-Shub generator
1. Si scelgono due grandi e diversi primi p e q, congruenti a 3 modulo 41. Si calcola n = p.q. 2. Si sceglie a caso un s < n-1 tale che MCD(s,n) = 1 3. Si calcola x0 = s 2 mod n
4. Si itera quanto serve5.1 xi = xi-1
2 mod n,
5.2 bi = xi mod 2.
(Teorema di Dirichlet): “se MCD(a,n) = 1, allora esistono infiniti numeri primi del tipo p=a+k.n” N = 3 + k.4
N primo?
k = k + 1
k = 0
NO
L’efficienza è alta: una quadratura per passo
la sicurezza si basa sulla (congetturata) difficoltà di fattorizzare
40
#define MAX_LUNG 256void BBSgenerator(interoz[MAX_LUNG],intero l){intero p,q;intero n,s;intero x[MAX_LUNGHEZZA];do{ p=prime(1000,5000); while(!congruente(p,3,4)) p=prime(1000,5000); q=prime(1000,5000); while(!congruente(q,3,4)) q=prime(1000,5000);} while (p!=q);n=p*q;s=random(1,n-1); //semewhile(mcd(s,n)!=1) s = random(1,n-1);x[0]=powermod(s,2,n);for (intero i=1;i<=l;i++) {x[i]=powermod(x[i-1],2,n);z[i-1]=x[i]%2;printf("%d",x[i]%2);}}
Blum-Blum-Shub generator
41
si dimostra che BBS supera il next-bit test
ovvero, non esiste nessun algoritmo polinomiale che, dati i primi k bit della sequenza di output:
B1, B2, …, Bk
è in grado di indovinare il (k+1)-esimo (cioè Bk+1) con probabilità > ½
Generatore di Blum, Blum e Shub (BBS)
42
Generatori di numeri realmente casuali (TRNG)
Si ottengono campionando processi naturali non prevedibili
Intel ha sviluppato un circuito integrato che campiona il rumore termico amplificando la tensione misurata ai capi di una resistenza
Bell Labs utilizza una tecnica che sfrutta le variazioni nel tempo di risposta delle richieste di lettura di un settore di un disco rigido
Vi sono problemi legati alla reale casualità e alla distribuzione in rete di tali numeri casuali.
43
Skew
Un TRNG può non rispettare la richiesta di omogeneità nella distribuzione di 0 e 1.
Per ridurre tale inconveniente sono stati sviluppati alcuni algoritmi chiamati algoritmi di deskew.
Uno di questi medodi utilizza funzioni hash generate con MD5 o SHA-1