06.11.2014 Views

ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)

ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)

ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>ANALISI</strong> <strong>DEL</strong> <strong>PROTOCOLLO</strong> <strong>SRP</strong><br />

(<strong>SECURE</strong> <strong>REMOTE</strong> <strong>PASSWORD</strong>)<br />

Technical Paper - rev.0.6 - Maggio 2007<br />

Andrea Manganaro, Mingyur Koblensky, Michele Loreti<br />

Dipartimento di Sistemi e Informatica, Universita’ di Firenze<br />

Viale Morgagni 65 - 50134 Firenze, Italy<br />

amanga@ngi.it, mingyur@gmail.com, loreti@dsi.unifi.it<br />

Keywords:<br />

Abstract:<br />

Password-based authentication, <strong>SRP</strong>-3, <strong>SRP</strong>-6, <strong>SRP</strong>-6a<br />

<strong>SRP</strong> (Secure Remote Password) è un protocollo di autenticazione pensato per lo scambio sicuro ed autenticato<br />

di chiavi di sessione, progettato per resistere ad attacchi passivi ed attivi. L’autenticazione delle parti avviene<br />

tramite la prova del possesso di un segreto condiviso, la password di un utente accreditato presso un Server di<br />

Autenticazione. Lo scopo di <strong>SRP</strong> è infatti quello di poter utilizzare password facilmente memorizzabili dalle<br />

persone (quindi anche relativamente corte e semplici) senza che questo condizioni la sicurezza del protocollo.<br />

In questa Technical Paper vengono presentate le caratteristiche fondamentali di <strong>SRP</strong>, partendo dalle basi<br />

matematiche ed illustrando la definizione delle principali versioni storiche.<br />

1 Introduzione<br />

<strong>SRP</strong> (Secure Remote Password) è un protocollo<br />

password-based stato ideato da Thomas Wu nel 1997,<br />

mentre era studente alla Stanford University [20]:<br />

<strong>SRP</strong> è stato pensato per lo scambio sicuro ed autenticato<br />

di chiavi di sessione e progettato per resistere ad<br />

attacchi passivi ed attivi. L’autenticazione delle parti<br />

avviene tramite la prova del possesso di un segreto<br />

condiviso, la password di un utente accreditato presso<br />

un Server di Autenticazione. La peculiaritá principale<br />

di <strong>SRP</strong> è che consente di utilizzare password<br />

facilmente memorizzabili dalle persone (quindi anche<br />

relativamente corte e semplici) senza che questo<br />

condizioni la sicurezza del protocollo.<br />

La definizione di <strong>SRP</strong> fa parte processo di standardizzazione<br />

IEEE P1363.2 [12], che si occupa di<br />

raccogliere le specifiche per la realizzazione di tecniche<br />

di autenticazione, derivazione e scambio sicuro<br />

delle chiavi, utilizzando cifrari a chiave pubblica.<br />

In questo documento vengono presentati i fondamenti<br />

teorici ed i dettagli di funzionamento del<br />

protocollo.<br />

2 Fondamenti teorici<br />

<strong>SRP</strong> si basa sull’utilizzo della funzione di esponenziazione<br />

discreta, che è supposta essere di tipo<br />

one-way, ovvero che il calcolo della sua inversa (il<br />

logaritmo discreto) non sia computazionalmente praticabile.<br />

Il meccanismo è analogo a quello del protocollo<br />

noto come Diffie-Hellman Key Exchange [5], di<br />

cui <strong>SRP</strong> è una estensione.<br />

In questo paragrafo vengono riassunte le basi matematiche<br />

della esponenzazione discreta, insieme alla<br />

sua applicazione al protocollo di Diffie-Hellman: per<br />

una trattazione approfondita si rimanda a [14].<br />

2.1 Radici primitive e logaritmo<br />

discreto<br />

Ricordando che per P si intende l’insieme dei numeri<br />

primi, consideriamo quanto segue.<br />

Definizione 1 (Funzione di Eulero) Sia N + = N −<br />

{0}, si definisce come funzione di Eulero<br />

φ : N + → N +<br />

la funzione che individua la cardinalità ∀n ∈ N +<br />

φ(n) = #{b ∈ N | 1 ≤ b ≤ n , (b,n) = 1}


e che gode delle seguenti proprietà:<br />

1. φ(1) = 1<br />

2. se p ∈ P =⇒ φ(p) = (p − 1)<br />

3. se p ∈ P =⇒ φ(p n ) = (p n − p n−1 ) = p n (1 − 1 p )<br />

4. se (m,n) = 1 =⇒ φ(mn) = φ(m)φ(n)<br />

Teorema 2.1 (di Eulero - s.d.) Dati a ∈ Z e n ≥ 1<br />

tali che siano relativamente primi tra loro, cioè<br />

si ha che<br />

□<br />

(a,n) = 1<br />

a φ(n) ≡ n 1 (1)<br />

Definizione 2 (Radice primitiva) Siano α , n ∈ N<br />

tali che (α,n) = 1, si definisce come ordine di α<br />

modulo n la seguente quantità<br />

ord n (α) = min{i > 0 | α i ≡ n 1}<br />

Dal teorema di Eulero avremo necessariamente<br />

che<br />

ord n (α) ≤ φ(n)<br />

Allora si dirà che α è radice primitiva di n se vale<br />

che<br />

ord n (α) = φ(n) (2)<br />

In generale si ha che vale il seguente risultato<br />

Teorema 2.2 (Forma delle radici primitive - s.d.)<br />

Un numero n ha radici primitive se e solo se è nella<br />

forma<br />

dove<br />

□<br />

2 , 4 , p α , 2p α<br />

p ∈ P , p > 2 , α > 1<br />

Consideriamo adesso un certo α radice primitiva di n.<br />

Per quanto appena visto vale che<br />

(α,n) = 1<br />

ma dalla teoria dei numeri sappiamo che in questo<br />

caso esiste un unico<br />

α −1 mod n<br />

Dati quindi i seguenti valori<br />

α 1 , α 2 , ... , α φ(n)<br />

valgono le seguenti considerazioni:<br />

• i valori elencati sono tutti diversi tra loro (modulo<br />

n)<br />

• i valori elencati sono tutti relativamente primi con<br />

n, poichè già vale che (α,n) = 1. Di conseguenza<br />

questo varrà anche modulo n e che quindi<br />

{α 1 mod n , α 2 mod n , ... , α φ(n) mod n} = Z ∗ p<br />

Basandoci sulle precedenti considerazioni si<br />

introduce la seguente<br />

Definizione 3 Sia p ∈ P e α radice primitiva di p, si<br />

definiscono le seguenti funzioni<br />

dove<br />

exp α,p : Z ∗ p → Z ∗ p , ind α,p : Z ∗ p → Z ∗ p<br />

exp α,p (i) = (α i mod p) (3)<br />

è detta esponenziazione discreta. Mentre<br />

ind α,p (a) = min{i > 0 | α i mod p = a} (4)<br />

è detto logaritmo discreto.<br />

Concludendo abbiamo che la funzione di esponenziazione<br />

è biettiva e risulta che<br />

ind α,p = exp −1<br />

α,p<br />

2.1.1 One-wayness della esponenziazione<br />

discreta<br />

La funzione di esponenziazione discreta è supposta<br />

essere di tipo one-way e quindi il calcolo di ind α,p (n)<br />

con p molto grande non è computazionalmente praticabile.<br />

Infatti, uno dei modi per ottenere il logaritmo<br />

discreto è quello di provare tutte le potenze di α finchè<br />

non si trova l’esponente giusto, ma con numeri grandi<br />

questo richiede molte risorse di calcolo. Esistono anche<br />

strategie più sofisticate ed efficienti, come il Pollard’s<br />

rho method [13] che comunque si vanificano<br />

con adeguate grandezze di p.<br />

Esempio<br />

Supponiamo sia dato<br />

ind 2,19 (9) = h<br />

e che si voglia ottenere h procedendo per tentativi.<br />

Dalla definizione avremo che<br />

h = min{i > 0 | 2 i mod 19 = 9}<br />

2


Quindi, provando esaustivamente le potenze di α si<br />

ottiene<br />

...<br />

...<br />

2 5 ≡ 19 13<br />

2 6 ≡ 19 7<br />

2 7 ≡ 19 14<br />

2 8 ≡ 19 9<br />

concludendo, in questo caso, che h = 8.<br />

2.2 Diffie-Hellman Key Exchange<br />

Il Diffie-Hellman Key Exchange è un protocollo che<br />

si basa sulla funzione di esponenziazione discreta e<br />

sulle proprietà della sua inversa, il logaritmo discreto<br />

(paragrafo 2.1). Il suo scopo è, essenzialmente, quello<br />

di far derivare in modo sicuro chiavi simmetriche a<br />

due parti in comunicazione.<br />

2.2.1 Funzionamento<br />

In un modello client-Server, il funzionamento è il<br />

seguente<br />

Client<br />

(g,n)<br />

←→<br />

Server<br />

1.<br />

2. a < n<br />

3. A = g a mod n<br />

A<br />

−→<br />

4. b < n<br />

5.<br />

←− B = g b mod n<br />

6. K S = B a mod n K S = A b mod n<br />

Tabella 1: Funzionamento del Diffie-Hellman Key<br />

Exchange<br />

1. Le parti devono concordare su due valori pubblici:<br />

n ∈ P molto grande<br />

g radice primitiva di n e tale che g < n<br />

2. Il client genera un numero casuale<br />

a < n tenendolo segreto<br />

3. Il client inoltre calcola<br />

A = g a mod n inviandolo al Server<br />

4. Il Server genera un numero casuale<br />

b < n tenendolo segreto<br />

5. Il Server infine calcola<br />

B = g b mod n inviandolo al client<br />

B<br />

6. Le parti calcolano la medesima chiave di sessione<br />

K S<br />

client −→ K S = B a mod n<br />

Server −→ K S = A b mod n<br />

Il fatto che client e Server derivino la stessa K S si<br />

dimostra osservando i seguenti passaggi<br />

K S = B a mod n =<br />

= (g b mod n) a mod n = (g b ) a mod n =<br />

= (g a ) b mod n = (g a mod n) b mod n =<br />

= A b mod n = K S<br />

dove effettivamente il primo e l’ultimo corrispondono<br />

ai calcoli svolti, rispettivamente da client e Server, per<br />

ottenere la chiave di sessione.<br />

2.2.2 Sicurezza<br />

L’unica strategia che ha un attacante per ricavare K S<br />

dalle informazioni pubbliche (g, n, A, B) è cercare di<br />

ricavare uno dei due valori privati, cioè calcolando<br />

a = ind g,n (A) oppure b = ind g,n (B)<br />

ma come si è visto nel paragrafo 2.1 questo è un<br />

problema non praticabile con n opportunatamente<br />

grande.<br />

2.2.3 Vulnerabilità<br />

Le principali vulnerabilità note del protocollo di<br />

Diffie-Hellman riguardano gli attacchi Man-in-the-<br />

Middle e di Clogging.<br />

Man-in-the-Middle Attack Come evidenziato in<br />

[18] questo protocollo è suscettibile ad attacchi di<br />

tipo Man-in-the-Middle, a causa della mancanza di<br />

un meccanismo di autenticazione che permetta di<br />

stabilire l’autenticità delle chiavi.<br />

L’attacco funziona con una terza parte che si interpone<br />

nella comunicazione tra client e Server e<br />

procede come segue (ricordando che n e g sono noti):<br />

1. genera un numero casuale i < n e calcola Ω AB =<br />

g i mod n<br />

2. invia Ω AB a client e Server<br />

A questo punto l’attaccante è in grado di derivare<br />

due chiavi di sessione distinte<br />

K S1 = A i mod n<br />

K S2 = B i mod n<br />

che gli permettono di avviare due canali cifrati indipendenti<br />

con client e Server che però rimarranno<br />

convinti di comunicare l’uno con l’altro.<br />

3


Client Attaccante Server<br />

K S1 = (Ω AB ) a<br />

A<br />

−→<br />

Ω<br />

←−<br />

AB<br />

Ω AB = g i<br />

K S1 = A i<br />

K S2 = B i<br />

Ω AB<br />

−→<br />

B<br />

←−<br />

K S2 = (Ω AB ) b<br />

Tabella 2: Man-in-the-middle attack nel Diffie-Hellman Key Exchange: le operazioni si intendono modulo n.<br />

Clogging Attacks Un altro problema dello schema<br />

Diffie-Hellman è la vulnerabilità ai cosiddetti Clogging<br />

Attacks, ovvero i casi in cui un attaccante sommerga<br />

una delle parti con richieste contenenti i valori<br />

A ′ o B ′ ottenuti da esponenziazione discreta. In questo<br />

modo il ricevente è costretto a rispondere, calcolando<br />

la chiave di sessione per ogni richiesta, sprecando<br />

risorse di calcolo.<br />

Replay Attacks Così come è definito, lo schema<br />

Diffie-Hellman non offre protezione da attacchi di tipo<br />

Replay, ovvero in cui un attaccante utilizzi i dati<br />

di una precedente comunicazione tra client e Server<br />

per tentare successivamente di impersonare una delle<br />

parti.<br />

2.3 Sicurezza dei parametri<br />

L’utilizzo della funzione di esponenziazione discreta<br />

in sistemi basati sullo schema Diffie-Hellman pone<br />

degli interrogativi sulla corretta scelta dei parametri,<br />

in particolare di g ed n. Si parla in questo caso di sicurezza,<br />

poichè, senza un controllo sulle caratteristiche<br />

dei valori, si rende praticabile ad un attaccante la possibilità<br />

di ottenere la chiave simmetrica [9, Chapter<br />

12].<br />

2.3.1 Requisiti matematici<br />

Il primo aspetto legato alla sicurezza di un protocollo<br />

basato sullo schema DH è che le parti in comunicazione<br />

possano verificare l’aderenza ai requisiti<br />

matematici di n e g, ovvero:<br />

• la primalità di n;<br />

• che n verifichi le proprietá di safe prime 1 ;<br />

• che g sia effettivamente una radice primitiva per<br />

n.<br />

1 Cioé che n sia un numero primo sufficientemente<br />

grande e nella forma 2q + 1, con q anch’esso primo.<br />

Questi tipi di test sono peró computazionalmente<br />

molto onerosi, di conseguenza, nell’utilizzo pratico,<br />

si pone come requisito l’appartenenza ad un insieme<br />

predefinito di valori che già verificano le proprietà<br />

richieste. Si veda ad esempio [13].<br />

2.3.2 Dimensione di n<br />

Il secondo aspetto è quanto grande debba essere n e,<br />

di conseguenza, il numero di bit con cui lo si andrà<br />

a rappresentare. Si è visto, infatti, che l’esponenziazione<br />

discreta fonda la sua one-wayness sull’impraticabilità<br />

di effettuare i tentativi necessari per calcolare<br />

il logaritmo discreto (si veda l’esempio al paragrafo<br />

2.1): questo è fortemente dipendente dalla grandezza<br />

di n che, ai fini pratici, si lega al numero di bit che lo<br />

rappresentano.<br />

Le usuali stime di sicurezza sulla lunghezza delle<br />

chiavi crittografiche simmetriche (tipicamente di 128<br />

o 256 bit) non si possono applicare a questo contesto,<br />

in quanto le operazioni di esponenziazione sono<br />

molto più lente per un calcolatore rispetto a quelle di<br />

encryption. Infatti, obbligare un attaccante a 2 128 tentativi<br />

per attaccare lo schema Diffie-Hellman richiede<br />

circa 6800 bit per n [9].<br />

Una autorevole pubblicazione in cui si affronta<br />

questo problema è [15], dalla cui lettura ci si può convincere<br />

che una dimensione di 2048 bit dovrebbe essere<br />

il minimo assoluto e che l’utilizzo di 4096 bit<br />

offra un adeguato livello di sicurezza.<br />

3 Schema generale di <strong>SRP</strong><br />

<strong>SRP</strong> si ispira ad un schema pubblicato in [3] e<br />

formalmente noto come EKE (Encrypted Key Exchange).<br />

Da questo schema sono stati derivati poi<br />

principalmente il protocollo DH-EKE (Diffie Hellman<br />

EKE), e lo schema AKE (Asymmetric Key<br />

Exchange), che è una generalizzazione di <strong>SRP</strong>.<br />

In <strong>SRP</strong> viene adottata una forma del Diffie-<br />

Hellman Key Exchange a cui si aggiunge un mecca-<br />

4


nismo di autenticazione. Lo schema generale del protocollo<br />

comprende gli elementi mostrati nella tabella<br />

3: si sfruttano le caratteristiche della funzione di esponenziazione<br />

discreta e della sua inversa, il logaritmo<br />

discreto.<br />

Elementi fondamentali per il protocollo <strong>SRP</strong> sono<br />

che permette la mutua autenticazione delle parti e che<br />

tutti i messaggi scambiati sono “in chiaro”.<br />

n un numero primo molto grande<br />

g una radice primitiva di n<br />

s una stringa casuale<br />

P la password dell’utente<br />

x una chiave privata, derivata da P e da s<br />

u un valore casuale<br />

a,b chiavi private temporanee<br />

A,B le chiavi pubbliche temporanee<br />

H( ) una funzione one-way di hash<br />

K la chiave di sessione<br />

Tabella 3: Notazione matematica per <strong>SRP</strong><br />

3.1 Operazioni modulo n<br />

I calcoli vengono operati all’interno di un campo finito<br />

GF(n) con n primo molto grande e tutte le operazioni<br />

si intendono modulo n: tale valore e g sono fissati<br />

e si suppone siano noti alle parti, mentre a partire<br />

da <strong>SRP</strong>-6 (paragrafo 6) spetta al Server comunicarli<br />

esplicitamente.<br />

Per i valori di n e g le implementazioni di <strong>SRP</strong> usano<br />

come riferimento un insieme perdefinito di valori,<br />

definiti in [19].<br />

3.2 Funzioni di hash<br />

<strong>SRP</strong> richiede una funzione di hash H ritenuta sicura e<br />

che produca un output di almeno 16 byte: la famiglia<br />

di funzioni SHA [8] in genere è considerata adeguata<br />

e viene usata in tutte le implementazioni conosciute<br />

di <strong>SRP</strong>. Riguardo la sicurezza delle funzioni di hash,<br />

vale la pena citare [11], un autorevole punto di vista<br />

di P. Hoffman e B. Schneier, dove vengono illustrate<br />

le effettive problematiche di sicurezza degli attuali<br />

algoritmi disponibili.<br />

3.3 Inizializzazione dei valori<br />

Alla creazione dell’account del Client, il Server conserva<br />

temporaneamente nel proprio database la userID<br />

I e la password P dell’utente, generando un valore<br />

casuale s (detto salt) relativo a tale account e<br />

procedendo con i seguenti calcoli<br />

x = H(s,I,P)<br />

v = g x detto verifier<br />

Conseguentemente il Server conserva i seguenti<br />

dati relativi al client<br />

(I,s,v)<br />

cancellando dal proprio database la password del<br />

client: questo fatto è cruciale, poichè facilita la gestione<br />

delle politiche di sicurezza del server e semplifica<br />

il protocollo.<br />

4 <strong>SRP</strong>-1<br />

La prima versione di <strong>SRP</strong> è stata definita in [20]<br />

e viene indicata in questo documento come <strong>SRP</strong>-1.<br />

Per realizzare l’accesso alla rete e l’autenticazione il<br />

client ed il Server procedono con uno scambio di messaggi<br />

non cifrati nel seguente modo (illustrato nella<br />

tabella 4):<br />

Client<br />

(g,n)<br />

←→<br />

1.<br />

−→<br />

2. x = H(s,I,P)<br />

s<br />

←−<br />

3. A = g a A<br />

−→<br />

I<br />

B,u<br />

Server<br />

ricerca (I,s,v)<br />

4.<br />

←− B = v + g b<br />

5. S = (B − g x ) a+ux S = (Av u ) b<br />

6. K = H(S) K = H(S)<br />

7. M 1 = H(A,B,K)<br />

M<br />

−→<br />

1<br />

verifica M1<br />

M<br />

8. verifica M 2<br />

2 ←−<br />

Tabella 4: Funzionamento di <strong>SRP</strong>-1<br />

1. Il client invia il proprio userdID I;<br />

M2 = H(A,M 1 ,K)<br />

2. Il Server cerca la tripla (I,s,v) corrispondente ed<br />

invia s;<br />

3. Il client genera 1 < a < n casuale, calcola A e la<br />

invia al Server;<br />

4. Il Server genera 1 < b < n ed u casuali, calcola B<br />

e li invia al Client;<br />

5. Entrambe le parti calcolano il valore esponenziale<br />

comune S, utilizzando i parametri a disposizione.<br />

5


Solo se la password dell’utente utilizzata al passo<br />

2 corrisponde con quella usata dal Server per<br />

generare s,v si otterrà il medesimo valore di S;<br />

6. Entrambe le parti derivano la chiave di sessione<br />

K;<br />

7. Il client calcola M 1 , la prova che ha derivato la<br />

chiave di sessione in modo corretto, e la invia al<br />

Server che effettua lo stesso calcolo e verifica la<br />

corrispondenza;<br />

8. Analogo a sopra dal lato Server, con M 2 .<br />

Tralasciando per ora i dettagli dei calcoli utilizzati,<br />

è facile notare che i passi 3-6 corrispondono ad una<br />

variante del Diffie-Hellman (DH) Key Exchange 2 , per<br />

cui il problema di ottenere K solo dalle informazioni<br />

scambiate in chiaro è facilmente riducibile a quello di<br />

DH e alla supposta one-wayness dell’esponenziazione<br />

discreta. Da questo deriva la resistenza di <strong>SRP</strong> agli<br />

attacchi passivi.<br />

Teorema 4.1 (Simmetria della chiave in <strong>SRP</strong>-1)<br />

Se la password P è simmetrica, allora anche la<br />

chiave di sessione K è simmetrica.<br />

Dimostrazione:<br />

La simmetria della password P implica che il Server<br />

produca i parametri (s,x,v) nel modo descritto<br />

nel paragrafo 3.3 e che anche x sia simmetrica.<br />

Poichè K è ottenuta tramite un hash di S è sufficiente<br />

mostrare che client e Server calcolino lo<br />

stesso S. Per questo si osservino i seguenti passaggi<br />

(tutte le operazioni si intendono modulo<br />

n)<br />

S = (B − g x ) a+ux =<br />

= ((v + g b ) − g x ) a+ux = ((v + g b ) − v) a+ux =<br />

= (g b ) a+ux = (g b ) a (g b ) ux = (g a ) b (g b ) ux =<br />

(A) b (g ux ) b =<br />

= (A) b ((g x ) u ) b = (A) b (v u ) b =<br />

= (Av u ) b = S<br />

□<br />

4.1 Il parametro B<br />

Se si fosse seguito lo schema classico del DH Key<br />

Exchange, sarebbe stato possibile calcolare al passo 4<br />

B = g b invece di B = v + g b<br />

Sfortunatamente tale semplificazione esporebbe il<br />

protocollo ad un active dictionary attack, dove un attaccante,<br />

che si finge Authentication Server, convince<br />

il client ad effettuare un tentativo di autenticazione<br />

dopo aver catturato il valore s da una precedente<br />

sessione tra client e Server.<br />

2 Si confronti con la tabella 1.<br />

4.1.1 Primo esempio di attacco<br />

Si utilizzi la tabella 4 come riferimento, supponendo<br />

di calcolare B = g b e di aver catturato s in precedenza:<br />

1. il client invia il proprio userID I all’attaccante;<br />

2. l’attaccante invia al client il valore s catturato in<br />

precedenza;<br />

3. il client invia il proprio esponenziale residuo A;<br />

4. l’attaccante genera i propri b ed u, calcola il<br />

proprio esponenziale residuo (B = g b ) ed invia<br />

B,u;<br />

5. il client calcola la propria chiave di sessione K ed<br />

invia la prova M 1 del suo possesso;<br />

6. l’attaccante simula un network failure o semplicemente<br />

notifica al client che la password non è<br />

corretta.<br />

A questo punto l’attaccante possiede M 1 che è calcolato<br />

dal client utilizzando una chiave di sessione<br />

“pilotata” dai valori B ed u forniti dal falso Server.<br />

Quest’ultimo così è in grado di cercare<br />

x = H(s,I,P) tale che verifichi M 1<br />

tramite tentativi su P basati su un dizionario di termini<br />

e caratteri probabili.<br />

Poichè l’attacco parte da chi non conosce il vero<br />

valore di v è necessario fare in modo che questo condizioni<br />

il valore di B e, di conseguenza quello di M 1 ,<br />

impedendo in questo modo l’attacco descritto. Per<br />

questo motivo si combinano i due valori tramite una<br />

opportuna funzione<br />

f (v,g b )<br />

con particolare attenzione al modo in cui vengono<br />

scelti v e g b (devono rispondere a dei requisti illustrati<br />

in [20]). L’addizione modulare dei termini v + g b<br />

sembra essere la soluzione più semplice; le successive<br />

versioni <strong>SRP</strong>-3 e <strong>SRP</strong>-6 differiscono leggermente<br />

in questo aspetto (si veda il paragrafo 6.1).<br />

4.2 Il parametro u<br />

Lo scopo del parametro u è quello di proteggere dalla<br />

compromissione dei dati dell’utente presso il Server,<br />

in particolar modo nel caso del furto del verifier v da<br />

parte di un attaccante.<br />

Il requisito fondamentale è che u non sia noto a<br />

priori e venga inviato solo al passo 3; questo fatto si<br />

spiega immaginando il seguente scenario.<br />

6


4.2.1 Secondo esempio di attacco<br />

Si supponga che l’attaccante abbia rubato il verifier v<br />

relativo all’utente I, possegga u e si finga tale utente<br />

presso il Server:<br />

1. l’attaccante invia lo userID I dell’utente che vuole<br />

impersonare;<br />

2. il server procede come già visto, inviando s;<br />

3. l’attaccante calcola<br />

A = g a v −u<br />

invece di usare la formula prestabilita ed invia tale<br />

risultato al Server;<br />

4. il server calcola ed invia B = v + g b regolarmente<br />

all’attaccante;<br />

5. l’attaccante calcola S nel seguente modo<br />

S = (B − v) a<br />

inviando la prova M 1 al Server;<br />

6. il Server procede e l’attaccante guadagna l’accesso<br />

impersonando l’utente I, derivando la chiave di<br />

sessione K.<br />

Questo attacco funziona perchè il Server calcola come<br />

già visto il valore S = (Av u ) b , ma a causa del calcolo<br />

al passo 3 succede che<br />

S = (Av u ) b = (g a v −u v u ) b = g ab<br />

quindi è evidente che l’attaccante il passo 5 ottiene<br />

proprio lo stesso S<br />

S = (B − v) a = ((v + g b ) − v) a = (g a ) b = g ab = S<br />

e si dimostra che è necessario non rivelare u sino al<br />

ricevimento di A da parte del Server.<br />

4.3 Resistenza agli attacchi passivi<br />

I parametri scambiati in chiaro tra le parti non possono<br />

essere usati da un attaccante per ottenenere le<br />

informazioni private; qui di seguito lo dimostriamo<br />

spiegando il comportamento di <strong>SRP</strong> con gli attacchi<br />

di questo tipo.<br />

4.3.1 Attacco alla chiave di sessione<br />

Come già affermato nel paragrafo 4 il problema di<br />

ottenere S o K solo dalle informazioni scambiate in<br />

chiaro si basa alla supposta one-wayness della esponenziazione<br />

discreta. Si dovrebbe infatti poter calcolare<br />

il logaritmo discreto sui valori A e B, ma questo è<br />

considerato computazionalmente non praticabile.<br />

In alternativa, si potrebbe tentare un attacco con<br />

forza bruta su M 1 o M 2 per ottenere direttamente K,<br />

poichè<br />

M 1 = H(A,B,K)<br />

M 2 = H(A,M 1 ,K)<br />

ed i parametri A,B,M 1 ,M 2 sono tutti pubblici.<br />

Questo tipo di attacco con <strong>SRP</strong>-1 è limitato dall’output<br />

della funzione hash in uso: in SHA-1 si hanno<br />

128 bit, quindi si richiederà in media uno sforzo<br />

nell’ordine di 2 127 per ottenere tutti i candidati per<br />

K. 3<br />

4.3.2 Attacco di Denning-Sacco<br />

Si tratta di una situazione illustrata per la prima volta<br />

in [4]; siamo nel caso in cui un attaccante sia riuscito<br />

in qualche modo a derivare la chiave di sessione K<br />

in uso tra client ed Authentication Server e la voglia<br />

usare per impersonare il client.<br />

Si può dimostrare che <strong>SRP</strong>-1 è resistente a questo<br />

tipo di attacco, infatti anche se l’attaccante possiede<br />

K non è in grado di derivare informazioni sulla password<br />

utilizzando M 1 e M 2 . Entrambi i valori sono<br />

calcolati solo sulla base di parametri inviati in chiaro<br />

e su K stessa. Per come sono stati definiti i parametri<br />

x, S e K, si ha che trovare una certa password P ′ che<br />

verifichi la chiave K posseduta, si riduce ad un attacco<br />

con forza bruta.<br />

4.3.3 Attacchi basati su dizionario<br />

Un attacco basato su un dizionario di termini probabili<br />

per la password non è praticabile: P influenza solo<br />

i valori di x e v, che sono noti solo alle parti legittime.<br />

L’attaccante, per ciscuno dei valori x ′<br />

ottenuti<br />

dal proprio dizionario, dovrebbe procedere esaustivamente<br />

per trovare i valori a o b che verifichino<br />

rispettivamente M 1 o M 2 . Infatti<br />

M 1 = H(A,B,H((B − g x ) a+ux ))<br />

M 2 = H(A,M 1 ,H(A((g x ) u ) b ))<br />

ma a e b sono valori casuali.<br />

4.4 Resistenza agli attacchi attivi<br />

La vulnerabilità evidenziata per lo schema di Diffie-<br />

Hellman agli attacchi Man-in-the-Middle, non è più<br />

applicabile a <strong>SRP</strong>. La modifica dei valori A e B causa<br />

3 Si parla di candidati, poichè M 1 e M 2 sono il risultato di<br />

una funzione one-way: una ricerca esaustiva potrebbe portare<br />

dei falsi positivi a causa di una collisione nella funzione<br />

di hash.<br />

7


il fallimento dell’autenticazione delle parti e non dà<br />

informazioni all’attacante per ottenere P.<br />

<strong>SRP</strong>-1 è immune anche dagli attacchi di Replay e,<br />

al momento, non sono note vulnerabilità rilevanti; tuttavia<br />

<strong>SRP</strong>-1 sembra comunque suscettibile ad attacchi<br />

di Clogging, così come avveniva per il protocollo di<br />

Diffie-Hellman.<br />

4.5 Ottimizzazione del Protocollo<br />

La necessità di implementare in modo efficiente <strong>SRP</strong><br />

in sistemi reali porta a dover considerare il numero<br />

di round necessari per completare l’autenticazione e<br />

la derivazione della chiave K; nella formulazione fin<br />

qui fatta si può osservare che servono 6 messaggi,<br />

equivalenti a 3 round (vedi tabella 5).<br />

Client Server Parametro Inviato<br />

=⇒ I<br />

⇐= s<br />

=⇒ A<br />

⇐= B,u<br />

=⇒ M 1<br />

⇐= M 2<br />

modo si preservano i requisiti del protocollo, illustrati<br />

nel paragrafo 4.2: l’utilità di questa modifica trova ragione<br />

in <strong>SRP</strong>-6, la successiva versione del protocollo<br />

che viene descritta nel prossimo paragrafo.<br />

Sebbene nello RFC 2945 non lo si indichi esplicitamente,<br />

è ancora possibile ridurre il numero di<br />

round necessari al protocollo, riordinando la sequenza<br />

originale come mostrato nella tabella 8.<br />

Client<br />

(g,n)<br />

←→<br />

1.<br />

−→<br />

2. x = H(s,I,P)<br />

s<br />

←−<br />

3. A = g a A<br />

−→<br />

I<br />

Server<br />

ricerca (I,s,v)<br />

B = v + g b<br />

4. u=H(A,B) ←− u=H(A,B)<br />

5. S = (B − g x ) a+ux S = (Av u ) b<br />

6. K = H(S) K = H(S)<br />

7. M 1 = H(A,B,K)<br />

M<br />

−→<br />

1<br />

verifica M1<br />

M<br />

8. verifica M 2<br />

2 ←−<br />

B<br />

M2 = H(A,M 1 ,K)<br />

Tabella 7: Funzionamento di <strong>SRP</strong>-3. Cambiano il calcolo e<br />

l’utilizzo del parametro u.<br />

Tabella 5: I round di <strong>SRP</strong>-1<br />

Si può dimostrare che è possibile ridurre il numero di<br />

messaggi, pur mantenendo le caratteristiche originali<br />

di <strong>SRP</strong>-1: la tabella 6 mostra la sequenza ottimizzata<br />

che sfrutta l’invio simultaneo di più parametri senza<br />

alterare i calcoli necessari.<br />

Client Server Parametro Inviato<br />

5 <strong>SRP</strong>-3<br />

=⇒ I,A<br />

⇐= s,B,u<br />

=⇒ M 1<br />

⇐= M 2<br />

Tabella 6: <strong>SRP</strong>-1 ottimizzato<br />

Nel settembre 2000 lo IETF ha pubblicato lo RFC<br />

2945 [21] che definisce le specifiche del protocollo<br />

<strong>SRP</strong>-3. Le differenze rispetto a <strong>SRP</strong>-1 sono minimali<br />

e si riassumono nella modifica del calcolo di u, che<br />

avviene tramite hashing dei parametri A e B: in tal<br />

Client Server Parametro Inviato<br />

=⇒ I,A<br />

⇐= s,B<br />

=⇒ M 1<br />

⇐= M 2<br />

Tabella 8: <strong>SRP</strong>-3 ottimizzato. u non viene più inviato.<br />

6 <strong>SRP</strong>-6 e <strong>SRP</strong>-6a<br />

Le precedenti versioni del protocollo <strong>SRP</strong> sono<br />

state migliorate sulla base di alcune considerazioni legate<br />

alla sicurezza ed all’ottimizzazione. La nuova<br />

versione, denominata <strong>SRP</strong>-6, è stata proposta in [22]<br />

e successivamente inclusa nel processo di standardizzazione<br />

IEEE P1363.2. La descrizione che segue include<br />

anche la recente versione <strong>SRP</strong>-6a, introdotta nel<br />

luglio 2005 e solo parzialmente documentata in [19].<br />

6.1 Attacco Two-for-One<br />

Nella sue precedenti formulazioni, <strong>SRP</strong> permette ad<br />

un attaccante di effettuare due tentativi in uno per<br />

8


indovinare i parametri segreti ad ogni connessione;<br />

infatti, poichè vale<br />

B = v + g b = g x + g b<br />

un attaccante che si finga Authentication Server può<br />

trattare B come<br />

g y + g z<br />

inserendo in y ed z i valori corrispondenti a due<br />

presunte password P ′ e P ′′ , calcolando<br />

y = H(s,I,P ′ ) e z = H(s,I,P ′′ )<br />

Considerando che il client sottrae g x a tale quantità (si<br />

veda la tabella 4) se y o z corrispondono alla password<br />

cercata il valore di S che verrà calcolato dal client e<br />

dall’attaccante sarà lo stesso, portando inevitabilente<br />

a concludere con successo l’autenticazione.<br />

Questa caratteristica non pone reali problemi alla<br />

sicurezza del protocollo, poichè si tratta di una situazione<br />

facilmente rilevabile e che richiede un numero<br />

non praticabile di connessioni per realizzare una<br />

quantità di tentativi significativa; tuttavia, a partire da<br />

<strong>SRP</strong>-6, è stata proposta una modifica che elimina la<br />

simmetria nel calcolo e, di conseguenza, la possibilità<br />

di realizzare questo attacco.<br />

La nuova formula utilizzata con <strong>SRP</strong>-6 è<br />

dove:<br />

B = kv + g b<br />

• k = 3 nella descrizione data nel documento [22];<br />

• k = H(n,g) nella più recente versione <strong>SRP</strong>-6a,<br />

inclusa in [19].<br />

ne consegue che il client, quando riceve B, dovrà<br />

calcolare S in un nuovo modo, ovvero<br />

S = (B − kg x ) a+ux<br />

6.2 Ordinamento dei messaggi<br />

<strong>SRP</strong>-1 e <strong>SRP</strong>-3 richiedono che per entrambe le parti<br />

siano in qualche modo fissati a priori n e g; questo<br />

però, è difficile da realizzare in pratica e renderebbe<br />

comunque poco flessibile il protocollo; è quindi<br />

più naturale permettere al Server di inviare al client<br />

i parametri necessari all’avvio del protocollo, dopo il<br />

primo messaggio.<br />

Tuttavia questo approccio (mostrato in tabella 9)<br />

vanifica le ottimizzazioni di <strong>SRP</strong>-1 e <strong>SRP</strong>-3, poichè<br />

n e g sono necessari per il calcolo di A e pertento<br />

quest’ultimo non può essere inviato fino al loro<br />

ricevimento.<br />

Client Server Parametro Inviato<br />

=⇒ I<br />

⇐= n,g,s<br />

=⇒ A<br />

⇐= B<br />

=⇒ M 1<br />

⇐= M 2<br />

Tabella 9: <strong>SRP</strong>-3 con parametri<br />

La soluzione è quella di inviare B come parte del<br />

primo messaggio del Server. Come è già stato fatto<br />

notare (paragrafo 4.2), è necessario non rivelare u sino<br />

al ricevimento del valore A e questa situazione è<br />

stata già risolta con la modifica presentata in <strong>SRP</strong>-3:<br />

u non viene più inviato in chiaro ma è derivato implicitamente<br />

dalle parti. Si ricorda infatti che per far<br />

questo client e Server calcolano<br />

u = H(A,B)<br />

basandosi quindi solo sui valori A e B rispettivamente<br />

ricevuti. In questo modo l’attacco mostrato al paragrafo<br />

4.2 diventa difficile da realizzare, anche se il<br />

valore B del Server viene inviato prima di ricevere A;<br />

infatti un attaccante dovrebbe trovare un valore u per<br />

cui valga<br />

u = H(g a v −u ,B)<br />

ma anche scegliendo a ed u in modo arbitrario, se si<br />

utilizza una funzione di hash come SHA-1, diventa<br />

impraticabile poter ottenere il giusto valore di u e, di<br />

conseguenza, quello di a.<br />

Conseguentemente diventa possibile ottenere una<br />

sequenza ottimizzata secondo le modifiche proposte e<br />

che non incrementi i messaggi necessari (tabella 10).<br />

Client Server Parametro Inviato<br />

=⇒ I<br />

⇐= n,g,s,B<br />

=⇒ A,M 1<br />

⇐= M 2<br />

Tabella 10: <strong>SRP</strong>-6 ottimizzato<br />

6.3 Funzionamento di <strong>SRP</strong>-6<br />

Secondo le modifiche presentate nei paragrafi precedenti,<br />

il protocollo <strong>SRP</strong>-6 si riassume quindi nei passi<br />

illustrati nella tabella 11 (schema completo senza<br />

9


iordinamento dei messaggi). Come si può notare la<br />

derivazione della chiave K è stata spostata come ultima<br />

azione del protocollo e la verifica dei valori M 1<br />

e M 2 coinvolge direttamente S e non più K: questa<br />

scelta non compromette in alcun modo la sicurezza<br />

del protocollo, anzi, mortifica ulteriormente eventuali<br />

attacchi con forza bruta su M 1 M 2 per l’ottenimento<br />

di S. Infatti, il valore di S, a differenza di K, ha un numero<br />

di bit variabile, limitato superiormente solo dai<br />

bit con cui è rappresentato n (tipicamente di almeno<br />

1024 bit): questo rende praticamente impossibile un<br />

attacco con forza bruta.<br />

Inoltre, la differenza per la derivazione di K, risparmia<br />

risorse di calcolo nel caso in cui l’autenticazione<br />

del client fallisca e sembra che questo meccanismo<br />

sia più adatto per l’integrazione di <strong>SRP</strong> con<br />

protocolli come TLS.<br />

Client<br />

1.<br />

−→<br />

2. x = H(s,I,P)<br />

n,g,s<br />

←−<br />

3. A = g a A<br />

−→<br />

I<br />

Server<br />

ricerca (I,s,v)<br />

B = kv + g b<br />

4. u = H(A,B) ←− u = H(A,B)<br />

5. S = (B − kg x ) a+ux S = (Av u ) b<br />

6. M 1 = H(A,B,S)<br />

B<br />

M 1 −→<br />

verifica M1<br />

7. verifica M 2<br />

M<br />

←−<br />

2<br />

M2 = H(A,M 1 ,S)<br />

8. K = H(S) K = H(S)<br />

Tabella 11: Il protocollo <strong>SRP</strong>-6.<br />

Teorema 6.1 (Simmetria della chiave in <strong>SRP</strong>-6)<br />

Se la password P è simmetrica, allora anche la<br />

chiave di sessione K è simmetrica.<br />

Dimostrazione:<br />

Si procede analogamente al teorema 4.1.<br />

S = (B − kg x ) a+ux =<br />

= ((kv + g b ) − kg x ) a+ux = ((kv + g b ) − kv) a+ux =<br />

= (g b ) a+ux = (g b ) a (g b ) ux = (g a ) b (g b ) ux =<br />

(A) b (g ux ) b =<br />

= (A) b ((g x ) u ) b = (A) b (v u ) b =<br />

= (Av u ) b = S<br />

□<br />

6.4 Resistenza agli attacchi<br />

Poichè <strong>SRP</strong>-6 è completamente basato sulla struttura<br />

delle precedenti versioni, continuano a valere le considerazioni<br />

già fatte nei paragrafi 4.3 e 4.4 per quanto<br />

riguarda la resistenza agli attacchi passivi ed attivi.<br />

La sicurezza della chiave di sessione è stata ulteriormente<br />

rafforzata, poichè un attacco con forza bruta<br />

sui valori M 1 o M 2 per ottenere K adesso dipende<br />

dalla dimensione di S, solitamente molto più grande.<br />

7 Sicurezza<br />

L’analisi della sicurezza di un qualunque protocollo<br />

non é semplice se si vogliono utilizzare dei metodi<br />

formali. Ad esempio, il Dolev-Yao model [6] si puó<br />

applicare con certi requisiti, tuttavia si é dimostrato<br />

[17] che non e’ adeguato quando si trattano primitive<br />

come l’esponenziazione discreta. Inoltre la sicurezza<br />

di un protocollo puó diventare indecidibile con<br />

modelli piú generali [10], poiché l’insieme di stati da<br />

considerare puó essere troppo grande o infinito.<br />

In questi ultimi anni ’e stato mostrato un certo interesse<br />

per provare formalmente la sicurezza dei protocolli<br />

password-based utilizzando un ideal-cipher<br />

model [1], per il quale sono state date prove della<br />

sua applicabilitá [2] anche per <strong>SRP</strong>. Sfortunatamente<br />

é stato dimostrato [23] che la dimostrazione formale<br />

della sicurezza di un protocollo secondo lo idealcipher<br />

model non significa che valga anche per l’<br />

istanziazione del protocollo stesso. Di conseguenza<br />

si puó affermare che ancora non si é stati in grado<br />

di provare formalmente la sicurezza di un protocollo<br />

password-based.<br />

Nonostate questa limitazione formale, il protocollo<br />

<strong>SRP</strong> viene considerato inerentemente sicuro, poiché<br />

la sua struttura matematica puó essere ridotta al<br />

ben noto schema di Diffie-Hellman [5]. Quindi é possibile<br />

dimostrare la sicurezza di <strong>SRP</strong> considerando<br />

la resistenza agli attacchi passivi ed attivi conosciuti,<br />

proprio come illustrato nei paragrafi precedenti.<br />

8 Implementazioni<br />

La Stanford University supporta attivamente un<br />

progetto Open Source 4 che raccoglie un ampia documentazione<br />

ed i sorgenti di varie implementazioni per<br />

<strong>SRP</strong>.<br />

Il protocollo viene gia’ usato in diverse applicazioni<br />

di rete, tra cui SSH, Telnet e TLS; da evidenziare<br />

il progetto GnuTLS 5 che offre un insieme di applicazioni<br />

e librerie dove <strong>SRP</strong> è stato integrato con<br />

TLS.<br />

4 The Stanford <strong>SRP</strong> Authentication Project, http://<br />

srp.stanford.edu/<br />

5 Transport Layer Security Library for the GNU system,<br />

www.gnutls.org<br />

10


Il Dipartimento di Sistemi e Informatica dell’Universitá<br />

di Firenze sta sviluppando [7,16] l’integrazione<br />

di <strong>SRP</strong>-6 come metodo di autenticazione EAP per<br />

sistemi di rete wireles.<br />

9 Conclusioni<br />

<strong>SRP</strong> costituisce un ottimo esempio di come può<br />

essere costruito un protocollo di autenticazione e derivazione<br />

delle chiavi di sessione, basato solo sulle password<br />

degli utenti e che non faccia uso di certificati<br />

digitali. Presenta infatti caratteristiche interessanti:<br />

• si basa su uno schema ben studiato (Diffie-<br />

Hellman), ereditandone i vantaggi e risolvendo la<br />

maggior parte delle vulnerabilità;<br />

• ha una definizione elegante e semplice: questo<br />

è utile per analizzarne la sicurezza e conveniente<br />

per l’implementazione;<br />

• realizza la mutua autenticazione delle parti;<br />

• deriva chiavi di sessione simmetriche;<br />

• le credenziali possono facilmente essere generalizzate;<br />

• le specifiche sono aperte e documentate.<br />

Sembra quindi che <strong>SRP</strong>, in particolare la versione<br />

<strong>SRP</strong>-6, sia un candidato ideale per essere integrato come<br />

protocollo di autenticazione in molte applicazioni<br />

dove si voglia adottare uno schema password-based<br />

sicuro.<br />

Riferimenti bibliografici<br />

[1] M. Bellare, D. Pointcheval, and P. Rogaway, “Authenticated<br />

key exchange secure against dictionary attacks,”<br />

Lecture Notes in Computer Science, vol. 1807,<br />

p. 139, 2000.<br />

[2] M. Bellare and P. Rogaway, “The AuthA protocol<br />

for password-based authenticated key exchange,” Tech.<br />

Rep., 2000, contribution to the IEEE P1363 study<br />

group for Future PKC Standards.<br />

[3] S. M. Bellovin and M. Merrit, “Encrypted key exchange:<br />

Password-based protocols secure against<br />

dictionary attacks,” AT&T Bell Laboratories, 1992.<br />

[4] D. Denning and G. M. Sacco, “Timestamps in key<br />

distribution systems,” Tech. Rep., 1981, communications<br />

of the ACM.<br />

[5] W. Diffie and M. E. Hellman, “New directions in cryptography,”<br />

IEEE Transactions on Information Theory,<br />

vol. IT-22, no. 6, pp. 644–654, 1976.<br />

[6] D. Dolev and A. C. Yao, “On the security of public<br />

key protocols,” Stanford, CA, USA, Tech. Rep., 1981.<br />

[7] K. D. M. Dorje, “Implementazione del protocollo<br />

di autenticazione EAP-<strong>SRP</strong>-256,” Dip. di Sistemi ed<br />

Informatica, December 2006, Master Thesis.<br />

[8] Announcing the <strong>SECURE</strong> HASH STANDARD, Federal<br />

Information Processing Standards Publication FIPS<br />

180-2, August 2002.<br />

[9] N. Ferguson and B. Schneier, Practical Cryptography.<br />

Wiley Publishing Inc., 2003, ISBN 0-471-22894-X.<br />

[10] N. Heintze and J. D. Tygar, “A model for secure protocols<br />

and their compositions,” Software Engineering,<br />

vol. 22, no. 1, pp. 16–30, 1996.<br />

[11] P. Hoffman and B. Schneier, “Attacks on cryptographic<br />

hashes in internet protocols,” RFC 4270, IETF,<br />

2005.<br />

[12] Draft Standard Specifications for Password-based Public<br />

Key Cryptographic Techniques, IEEE Working<br />

Draft Proposed Standard P1363.2, Rev. D26, 2006.<br />

[13] T. Kivinen and M. Kojo, “More modular exponential<br />

MODP) diffie-hellman groups for internet key<br />

exchange (IKE),” RFC 3526, IETF, 2003.<br />

[14] N. Koblitz, A Course in Number Theory and Cryptography,<br />

2nd ed., ser. Graduate Texts in Mathematics.<br />

Springer, 1994, no. 114.<br />

[15] A. K. Lenstra and E. R. Verheul, “Selecting cryptographic<br />

key sizes,” Journal of Cryptology: the journal<br />

of the International Association for Cryptologic<br />

Research, vol. 14, no. 4, pp. 255–293, 2001.<br />

[16] A. Manganaro, “Studio di un metodo di autenticazione<br />

per le reti wireless basato sul protocollo <strong>SRP</strong>-<br />

6.” Dip. di Sistemi ed Informatica, December 2005,<br />

Master Thesis.<br />

[17] J. Millen and V. Shmatikov, “Symbolic protocol analysis<br />

with products and diffie-hellman exponentiation,”<br />

2003.<br />

[18] W. Stallings, Cryptography and network security.<br />

Prentice Hall, 2006.<br />

[19] D. Taylor, T. Wu, N. Mavrogiannopoulos, and T. Perrin.<br />

(2006, June) Using <strong>SRP</strong> for TLS authentication.<br />

IETF Internet draft (Work in Progress). [Online].<br />

Available: draft-ietf-tls-srp-12.txt<br />

[20] T. Wu, “The secure remote password protocol,” in<br />

Proceedings of the 1998 Internet Society Network and<br />

Distributed System Security Symposium, San Diego,<br />

CA, November 1997, pp. 97–111.<br />

[21] ——, “The <strong>SRP</strong> authentication and key exchange<br />

system,” RFC 2945, IETF, 2000.<br />

[22] ——, “<strong>SRP</strong>-6: Improvements and refinements to the<br />

secure remore password protocol,” Submission to the<br />

IEEE P1363 Working Group, October 2002.<br />

[23] Z. Zhao, Z. Dong, and Y. Wang, “Security analysis of<br />

a password-based authentication protocol proposed to<br />

IEEE 1363,” Theor. Comput. Sci., vol. 352, no. 1, pp.<br />

280–287, 2006.<br />

11


Licenza e termini di utilizzo<br />

Questo documento è stato realizzato per scopi accademici e di divulgazione scientifica. Le informazioni<br />

contenute sono di dominio pubblico e si vuole favorirne la fruizione senza fini di lucro.<br />

A tutela del lavoro svolto dgli autori e degli scopi sopracitati, questo documento viene distribuito secondo la<br />

licenza Creative Commons Attribuzione-Non Commerciale 2.5. Per leggere una copia della licenza visita il sito<br />

web<br />

http://creativecommons.org/licenses/by-nc-sa/2.5/it/<br />

o spedisci una lettera a<br />

Creative Commons<br />

543 Howard Street<br />

5th Floor<br />

San Francisco, CA 94105-3013<br />

United States<br />

In accordo con tale licenza, si può:<br />

• riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare<br />

quest’opera;<br />

• modificare quest’opera.<br />

Alle seguenti condizioni:<br />

Attribuzione.<br />

licenza.<br />

Devi attribuire la paternità dell’opera nei modi indicati dall’autore o da chi ti ha dato l’opera in<br />

Non commerciale.<br />

Non puoi usare quest’opera per fini commerciali.<br />

Ogni volta che usi o distribuisci quest’opera, devi farlo secondo i termini di questa licenza, che va<br />

comunicata con chiarezza.<br />

In ogni caso, puoi concordare col titolare dei diritti d’autore utilizzi di quest’opera non consentiti da questa<br />

licenza.<br />

12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!