ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)
ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)
ANALISI DEL PROTOCOLLO SRP (SECURE REMOTE PASSWORD)
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