2

我正在研究开发一种一次性密码认证系统(j2me 用于电话,php 用于服务器端)

我正在努力了解这个过程,这就是我所理解的

  1. 用户 > 将随机秘密 (S) 输入哈希 n 次
  2. 用户 > 提交 S^n 到服务器
  3. 服务器 > 保存 n 和 S^n
  4. 用户 > 生成 (S^n)-1 并提交给服务器
  5. 服务器 > 接受用户输入并再次应用散列函数 1 并根据先前存储的散列检查它

现在,通过阅读 RFC2289 (S/Key),当他们输入唯一标识符时,有一个种子会发给客户端并与用户的秘密连接起来(在第 4 步)这个种子是如何创建的,是随机的,是存储的.

4

1 回答 1

1

种子在密码序列初始化期间由服务器和客户端商定。因此,在使用 OTP 进行身份验证之前只执行一次。种子应该是随机的,但客户端应该能够选择它。换句话说,服务器可能会建议一个随机种子,但客户端应该可以选择提出他自己的(随机)种子。然后种子应由服务器存储。服务器在身份验证期间实际上不使用它。它存储它只是为了在身份验证期间将其与序列号一起呈现给用户。种子和序列号都不是秘密的

于 2011-12-15T10:01:02.693 回答