Почему SRP не эквивалентен ясного текста?
-
13-10-2019 - |
Вопрос
О протоколе 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.