SRP验证说明文档

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SRP验证说明文档

文档编号:

文档类别:需求、设计

版本:V1.0

创建时间:2012-07-31

单位名称:

版本记录

*状态:C-创建 A-增加 M-修改 D-删除编制说明

目录

第 1 章概述 (3)

1.1编写目的 (3)

1.2适用对象 (3)

1.3术语 (3)

1.4参考资料 (3)

第 2 章技术验证说明 (4)

2.1 运算公式 (4)

2.2 验证说明 (5)

2.3 设置密码 (5)

2.4 验证密码 (6)

第 1 章概述

1.1编写目的

针对互联网密码登录认证进行的技术验证。

1.2适用对象

适用于项目开发人员、系统的管理人员。

1.3术语SRP:安全远程密码。使用SRP的客户机/服务器不会在网络上以明文

或加密的方式传送密码,这样可以完全消除密码欺骗行为。保证口令可以安全地在网络上面传送。基本的思想是,防止有被动或主动网络入侵者使用字典攻击。

第 2 章技术验证说明

2.1 运算公式

名词介绍:

公式计算:

The host stores passwords using the following formula:

The host then keeps {I, s, v} in its password database. The authentication protocol itself goes as follows:

User -> Host: I, A = g^a (identifies self, a = random number)

Host -> User: s, B = kv + g^b (sends salt, b = random number)

Both: u = H(A, B)

User: x = H(s, p) (user enters password)

User: S = (B - kg^x) ^ (a + ux) (computes session key)

User: K = H(S)

Host: S = (Av^u) ^ b (computes session key)

Host: K = H(S)

Now the two parties have a shared, strong session key K. To complete authentication, they need to prove to each other that their keys match. One possible way:

User -> Host: M = H(H(N) xor H(g), H(I), s, A, B, K)

Host -> User: H(A, M, K)

2.2 验证说明

技术验证只验证到K值的比较,并没有进行M值的运算,但这并不影响SRP使用,也不代表SRP的实际应用情况。

在设置用户密码的时候随机产生N值和g值,并保存起来,在进行修改或重置时重新设置N 值和g值。

2.3 设置密码

1. 在设置密码的时候,服务端产生随机盐值、N、g,下发到客户端。

2. 客户端根据盐值以及客户填写的用户名及密码HASH运算得出x值,并使用N、g以及

x值运算得出v值。

使用运算公式:

x=H(salt || H(username || ":" || password))

v=g^x (mod N)

说明:

3. 客户端将v值以及用户名上送给服务端。

4. 服务保存上送的用户名I和v值、第一步产生的盐值s和N值以及g值。

流程图如下:

2.4 验证密码

1. 客户端输入用户名、密码,将用户名传送到客户端。

2. 服务端根据用户名找到相应的srp信息:盐值s、v、N、g。

3. 服务端随机产生b值,并根据v值产生B。

使用运算公式:

k=H(N || g) (mod N)

B=kv + g^b

说明:

4. 服务端将盐值B、s、N、g传送给客户端。

5. 客户端根据用户名、密码产生x;随机产生a,根据服务端下发的g值获得A;根据服

务端发送的N、g、B等信息,计算K值。

使用运算公式:

x=H(salt || H(username || ":" || password))

A= g^a (mod N)

k=H(N || g) (mod N)

u = H(A, B) (mod N)

S = (B - kg^x) ^ (a + ux)

K = H(S)

说明:

6. 客户端将A以及K值上送给服务端。

7. 服务端计算K值。

使用运算公式:

u = H(A, B) (mod N)

S= (Av^u) ^ b (mod N)

K = H(S)

说明:

8. 服务端将自身产生的K值与客户端上传的K值进行比对,如果一致则成功。流程图如下:

相关文档
最新文档