为什么SRP不具有明文等效?
-
13-10-2019 - |
题
关于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。
不隶属于 StackOverflow