Pregunta

Sobre el Protocolo de SRP: http://en.wikipedia.org/wiki/Secure_remote_password_protocol

Me puede ver que la generación de la clave de sesión (K) es perfectamente seguro, pero en el último paso, el usuario envía prueba de K (M). Si la red es insegura y el atacante en las capturas midlle M, él sería capaz de autenticar sin tener K. ¿verdad?

¿Fue útil?

Solución

Un poco de historia

valores bien conocidos (establecido de antemano):

  n    A large prime number. All computations are performed modulo n.
  g    A primitive root modulo n (often called a generator).

La contraseña de los usuarios se establece como:

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

La autenticación:

+---+------------------------+--------------+----------------------+
|   | 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 respuesta a su pregunta:

Como se puede ver, ambas partes calculan K (= la clave de sesión) por separado, en base a los valores disponibles para cada uno de ellos.
Si la contraseña de Alice P introducido en el paso 2 coincide con el que se utilizó originalmente para generar v, entonces ambos valores de S coincidirán.

La clave de sesión K es real, sin embargo nunca se envía a través del cable, sólo la prueba de que ambas partes han calculado con éxito la misma clave de sesión. Por lo que un hombre en el medio podría volver a enviar la prueba, pero ya que él no tiene la clave de sesión actual, que no sería capaz de hacer cualquier cosa con los datos interceptados.

Otros consejos

La prueba es válida sólo para un cierto k.

Sin MITM:

Alice <-K-> Bob

Alice produce una prueba para K y Bob acepta

Con MITM:

Alice <-K1-> Eve <-K2-> Bob

Alice produce una prueba de K1 pero cuando Eve lo presenta a Bob que no lo acepta porque no encaja K2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top