Perchè SRP non è chiaro-equivalente?
-
13-10-2019 - |
Domanda
A proposito del protocollo SRP: http://en.wikipedia.org/wiki/Secure_remote_password_protocol
vedo che la generazione della chiave di sessione (K) è perfettamente sicuro, ma l'ultimo passo l'utente invia la prova di K (M). Se la rete è insicura e l'attaccante nelle catture midlle M, sarebbe stato in grado di autenticare senza avere K. giusto?
Soluzione
Un po 'di storia
valori riconosciuti (stabilito in anticipo):
n A large prime number. All computations are performed modulo n.
g A primitive root modulo n (often called a generator).
La password utenti è stabilito come:
x = H(s, P)
v = g^x
H() One-way hash function
s A random string used as the user's salt
P The user's password
x A private key derived from the password and salt
v The host's password verifier
L'autenticazione:
+---+------------------------+--------------+----------------------+
| | Alice | Public Wire | Bob |
+---+------------------------+--------------+----------------------+
| 1 | | C --> | (lookup s, v) |
| 2 | x = H(s, P) | <-- s | |
| 3 | A = g^a | A --> | |
| 4 | | <-- B, u | B = v + g^b |
| 5 | S = (B - g^x)^(a + ux) | | S = (A · v^u)^b |
| 6 | K = H(S) | | K = H(S) |
| 7 | M[1] = H(A, B, K) | M[1] --> | (verify M[1]) |
| 8 | (verify M[2]) | <-- M[2] | M[2] = H(A, M[1], K) |
+---+------------------------+--------------+----------------------+
u Random scrambling parameter, publicly revealed
a,b Ephemeral private keys, generated randomly and not publicly revealed
A,B Corresponding public keys
m,n The two quantities (strings) m and n concatenated
S Calculated exponential value
K Session key
La risposta alla tua domanda:
Come si può vedere, entrambe le parti calcolano K (= la chiave di sessione) a parte, sulla base dei valori disponibili per ciascuno di essi.
Se la password P di Alice immesso al punto 2 corrisponde a quello che originariamente utilizzato per generare v, quindi entrambi i valori di S corrisponderanno.
L'attuale chiave di sessione K è comunque mai inviare sul filo, solo la prova che entrambe le parti hanno calcolato con successo la stessa chiave di sessione. Quindi, un man-in-mezzo potrebbe inviare nuovamente la prova, ma dal momento che non ha la chiave di sessione attuale, non sarebbe in grado di fare qualsiasi cosa con i dati intercettati.
Altri suggerimenti
La prova è valida solo per un certo K.
Senza MITM:
Alice <-K-> Bob
Alice produce una prova per K e Bob accetta ??p>
Con MITM:
Alice <-K1-> Eve <-K2-> Bob
Alice produce una prova per K1, ma quando Eve regali a Bob che non lo accetta perché non si adatta K2.