关于SRP协议:http://en.wikipedia.org/wiki/secure_remote_password_protocol

我可以看到会话密钥(k)的生成非常安全,但是在最后一步中,用户发送了k(m)的证明。如果网络是不安全的,并且中部攻击者捕获了M,那么他将能够在没有K的情况下进行身份验证。对吗?

有帮助吗?

解决方案

有点背景

众所周知的值(事先建立):

  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(= session键)。
如果在步骤2中输入的爱丽丝密码p匹配她最初用于生成v的密码p,则s的两个值都将匹配。

但是,实际的会话密钥k永远不会发送到电线上,只有双方成功计算了同一会话密钥的证明。因此,一个中间的人可以重新启动证明,但是由于他没有实际的会话密钥,因此他将无法对截获的数据做任何事情。

其他提示

证明仅对某个K。

没有mitm:

Alice <-K-> Bob

爱丽丝为K和鲍勃提供了证明

与mitm:

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

爱丽丝为K1提供了证明,但是当夏娃向鲍勃展示它时,他不接受它,因为它不适合K2。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top