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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

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

Saved successfully!

Ooh no, something went wrong!