212007
 

登录过程采用SRP协议,具体版本细节不清楚,反正不是最新版。

相关记号:
    H —- 单向Hash函数,WoW中用的是Sha1,Sha1生成的结果定长20字节
    N —- 大素数,32字节
    g —- N%(一个N的质因子),1字节
    C —- 明文用户名
    P —- 明文密码
    CP —- C + ":" + P,+表示字符串连接
    s —- 随机数
    x —- 临时变量,x = H(s, H(CP))
    v —- v = g ^ x
    a —- 随机数,保存在客户端,不公开
    b —- 随机数,保存在服务器,不公开
    A —- A = g ^ a
    B —- B = 3 * v + g ^ b
    u —- u = H(A, B)
    S —- 客户端:S = (B – 3 * g ^ x) ^ (a + u * x),服务器:S = (A * v ^ u) ^ b,都为32字节
    Key —- 40字节,偶数字节为H(S的偶数字节),奇数字节为H(S的奇数字节),Key将用于以后的通讯加密
    M1 —- M1 = H( H(N) xor H(g), H(C), s, A, B, Key )
    M2 —- M2 = H( A, M1, Key)
    ^ —- 幂运算
    xor —- 异或运算
    % —- 模运算
    所有运算结果都%N
   

登录过程(只包含正常的流程,错误检测忽略):
    0、服务器预先保存着N和g。
    1、客户端向服务器发送C。
    2、服务器根据C查找P。生成s、v、b、B,将B、g、N、s发送给客户端。
    3、客户端生成a、x、v、A、u、S、M1、M2,将A、M1发送给服务器。
    4、服务器生成S、Key、M1、M2,将M2发送给客户端。
    5、如果两边的M1和M2都一致,则登录成功。

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>