Question

A propos du protocole SRP: http://en.wikipedia.org/wiki/Secure_remote_password_protocol

Je peux voir que la génération de la clé de session (K) est tout à fait sûr, mais dans la dernière étape, l'utilisateur envoie une preuve de K (M). Si le réseau est sécurisé et l'attaquant dans les captures de midlle M, il serait en mesure d'authentifier sans avoir droit K.?

Était-ce utile?

La solution

Un peu d'histoire

valeurs bien connues (établie au préalable):

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

Le mot de passe de l'utilisateur est établi comme:

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'authentification:

+---+------------------------+--------------+----------------------+
|   | 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 réponse à votre question:

Comme vous pouvez le voir, les deux parties calculent K (= la clé de session) séparément, en fonction des valeurs disponibles à chacun d'eux.
Si le mot de passe d'Alice P entré à l'étape 2 correspond à celle qu'elle initialement utilisée pour générer v, puis les deux valeurs de S correspondront.

La clé de session K réelle est envoyée cependant jamais sur le fil, seule la preuve que les deux parties ont calculé avec succès la même clé de session. Ainsi, un homme en milieu pourrait renvoyer la preuve, mais comme il n'a pas la clé de session réelle, il ne serait pas en mesure de faire quoi que ce soit avec les données interceptées.

Autres conseils

La preuve est valable uniquement pour un certain K.

Sans MITM:

Alice <-K-> Bob

Alice produit une preuve K et Bob accepte

Avec MITM:

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

Alice produit une preuve pour K1 mais quand présente Eve à Bob, il ne l'accepte pas parce qu'il ne correspond pas à K2.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top