segretezza e crittografia sim

Download Report

Transcript segretezza e crittografia sim

◘ 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

1

Un attacco può aver luogo in un qualsiasi punto di collegamento

2

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

3

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

4

Analisi del traffico

Usando in chiaro l’encryption end-to-end si debbono lasciare gli header 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

7

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

10

Input discontinuo di testo in chiaro

Padding del traffico

Chiave Algoritmo di crittografia Output cifrato continuo Generatore Continuo di dati casuali Un dispositivo di crittografia Traffic panding

11

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

12

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

13

Data

Gerarchia delle chiavi

Protezione crittografica Chiavi di sessione Chiavi master Protezione crittografica Protezione Non crittografica

14

Crittografia in una rete a commutazione di pacchetto

Ogni utente i condivide una master key k i col KDC

15

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

16

Generatori di Numeri PseudoCasuali

Anyone who attempts to generate random numbers by deterministic means is, of course, living in a state of sin.

--John von Neumann

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

18

PRNG

    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 dato un seme ( PRNG casuale ) , un PRNG produce una sequenza di bit che è indistinguibile sequenza di bit casuali da una

19

PRNG

  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

20

PRNG

 definizione : un PRNG è un che calcola una funzione algoritmo , eseguibile in tempo polinomiale su una MdT deterministica,

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 Un PRNG non uniforme

21

PRNG

 generatore congruenziale lineare :   siano

a

,

b

ed

m

tre interi tali che

0

dato un seme intero equazioni:

s

, con

0

 

a, b < m s < m

, il sistema di   

x

0

x i

s

ax i

 1 

b

mod

m

i

 1  si chiama generatore congruenziale lineare

22

PRNG

    proposto da Lehmer nel 1951, produce una sequenza di numeri della medesima lunghezza la scelta di

a

,

b

ed facili da prevedere

m

è critica per non ottenere sequenze viene usato spesso (ma non in Crittografia) non è un buon generatore : i numeri prodotti presentano relazioni lineari 

x 0

se Eve scopre quattro valori

, x 1 , x 2 , x 3

prodotti, risolvendo il sistema di equazioni: trova i valori di a, b, ed m

x x

2

x

3 1 

ax

0 

ax

1 

ax

2 

b

 

b b

mod mod mod

m m m

23

PRNG

 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)

?

24

PRNG

 risposta : no . A partire da un PRNG

{0,1}

k

→{0,1}

k+1

H :

possiamo costruire qualunque PRNG

G : {0,1}

k

→ {0,1}

l(k)

Data la stringa x 0

{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.

25

PRNG

   abbiamo quindi ridotto il problema di costruire a quello di costruire solo bit  ci basterà

H

, che allunga l’input di un una funzione one-way definiamo il concetto di hard-core bit

G

 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 difficili da calcolare (se log

2 n

, ad esempio

n/4

)

x

 saranno

{0,1} n

, devono essere più di i bit difficili da calcolare sono hard-core bit per

f

26

Numeri casuali generati in modo crittografico

Intermezzo: RSA randomizzato

supponiamo che Alice debba mandare il bit

b

{0,1}

a Bob     preleva la chiave pubblica

(n B , e B

) di Bob sceglie a caso un intero (quindi,

2x < n

)

x < n B /2

trasmette a Bob

y = (2x + b) e B

mod

n B

Bob, ricevuto

y

:   calcola

y dB

mod

n B = 2x + b

prende il bit meno significativo del risultato

27

RSA randomizzato

  osservazione : non si sa se gli altri bit di (in particolare, quali e quanti) sono hard core bit per RSA

m

quindi, per cifrare in modo sicuro messaggio

m

, si può cifrare con RSA randomizzato un ogni bit di

m

  la crittoanalisi diventa molto difficile se il messaggio è lungo, il metodo è inefficiente

28

RSA pseudorandom bit generator

1. Si sceglie a caso due grandi primi

p

e

q

2. Si calcola 2.1

n = pq

2.2 F 2.3

e = (p-1)(q-1)

tale che

MCD(e,

F

) = 1

3. Si sceglie a caso un seme x 0 (N.B. Intel generator consigliato) < n-1 4. Si itera quanto serve 4.1

x i = x i-1 e mod n

, (N.B. 4.2

b i b i = x i mod 2

è il bit meno significativo di (

x i

) 2 #define MAX_LUNGHEZZA 256 void 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); //seme for (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);

29

Numeri casuali generati in modo crittografico

    

Cifratura ciclica

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

30

Numeri casuali generati in modo crittografico

Cifratura ciclica

per rafforzare ulteriormente lo schema si può usare una sequenza di input più complicata contatore con periodo N C C+1 master key k m ENC x i = E km (C+1)

31

Numeri casuali generati in modo crittografico

Keystream nel modo OFB

 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

z 0 E k m 1 z 1 E k m 2 z 2 c 1 c 2

32

Numeri casuali generati in modo crittografico

   

ANSI X9.17

è uno dei PRNG crittografici migliori viene usato in PGP tra quelli noti come indicato in figura (vedere prossima slide) input : 

DT i

: rappresentazione a 64 bit della data e dell’ora   generato

V i

: seme da 64 bit chiavi : 

k 1 , k 2

: da 64 bit ciascuna Vengono usate nei tre moduli di 3DES, in modalità EDE (encryption – decryption – encryption)

33

ANSI X9.17

34

ANSI X9.17

   output : 

R i

: blocco pseudocasuale da 64 bit 

V i+1

: valore aggiornato del seme dalla figura si vede che:

R i V i+1 = EDE k1,k2 (V i = EDE k1,k2 (R i

 

EDE k1,k2 (DT i )) EDE k1,k2 (DT i ))

riassumendo, il PRNG:    usa una chiave da 112 bit vengono fatte nove cifrature/decifrature con DES si usano i valori pseudocasuali ogni valore prodotto

DT i

e

V i

, che cambiano ad

35

ANSI X9.17

 per quanto riguarda la sicurezza :   la quantità di informazioni da compromettere è enorme anche se Eve riesce a trovare un comunque a trovare i successivi

R i

, non riesce

36

Numeri casuali generati in modo crittografico

    

Generatore di Blum, Blum e Shub (BBS)

proposto nel 1986 siano

p

e

q

numeri primi

p

3

mod ( grandi ) tali che:

4, q

3

mod

4

sia

n = p

q

( si sceglie

s

a caso

s

tale che

MCD

non è multiplo né di

p

né di

q

)

(s, n) = 1

il generatore produce la sequenza di bit:

B 1 , B 2 , …

con il seguente algoritmo

37

Generatore di Blum, Blum e Shub (BBS)

BBS(s) X 0 = s 2 mod n i = 1 while (true) do X i = (X i-1 ) 2 B i = X i mod n mod 2  B i = lsb(X i )  la sicurezza si basa sulla ( congetturata ) difficoltà di fattorizzare

n

38

Blum-Blum-Shub generator

k = 0

(Teorema di Dirichlet)

: “

se MCD(a,n) = 1, allora esistono infiniti numeri primi del tipo p=a+k.n

” k = k + 1 N = 3 + k.4

NO N primo?

1.

1.

2.

3.

4.

Si scelgono due grandi e diversi primi

p congruenti a 3 modulo 4

e

q

, Si calcola

n = p.q

. Si sceglie a caso un

s < n-1

Si calcola

x 0 = s 2 mod n

Si itera quanto serve 5.1

5.2

x b i i = x i-1 = x i 2 mod n mod 2

.

, tale che

MCD(s,n) = 1

L’efficienza è alta: una quadratura per passo  la sicurezza si basa sulla ( congetturata ) difficoltà di fattorizzare

39

Blum-Blum-Shub generator

#define MAX_LUNG 256 void 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); //seme while(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); } }

40

Generatore di Blum, Blum e Shub (BBS)

  si dimostra che BBS supera il next-bit test ovvero, non esiste polinomiale che, dati i primi sequenza di output: nessun algoritmo

k

bit della

B

1

, B

2

, …, B

k

è in grado di indovinare il (

k+1

)-esimo (cioè

B

k+1

) con probabilità > ½

41

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.

42

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

43