Вопрос

О протоколе SRP:http://en.wikipedia.org/wiki/secure_remote_password_protocol

Я вижу, что генерация ключа сеанса (k) вполне безопасна, но на последнем этапе пользователь отправляет подтверждение k (m). Если сеть небезопасна, а злоумышленник в середине захватывает М, он сможет аутентифицировать, не имея К., верно?

Это было полезно?

Решение

Немного фона

Хорошо известные ценности (установлены заранее):

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

Пароль пользователей установлен как:

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

Аутентификация:

+---+------------------------+--------------+----------------------+
|   | 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

Ответ на ваш вопрос:

Как видите, обе стороны рассчитывают k (= ключ сеанса) отдельно, основываясь на значениях, доступных для каждого из них.
Если пароль Алисы P, введенный на шаге 2, соответствует тому, что она первоначально использовала для генерации V, то оба значения S будут совпадают.

Фактический ключ сеанса k, однако, никогда не отправляется через проволоку, только доказательство того, что обе стороны успешно рассчитали один и тот же ключ сеанса. Таким образом, человек в середине может привести к тому, что доказательство может отправить доказательство, но, поскольку у него нет фактического ключа сеанса, он не сможет ничего сделать с перехваченными данными.

Другие советы

Доказательство верно только для определенного К.

Без MITM:

Alice <-K-> Bob

Алиса производит доказательство для К, и Боб принимает это

С MITM:

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

Алиса производит доказательство для K1, но когда Ева представляет его Бобу, он не принимает его, потому что это не соответствует K2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top