OTP S / KEY - 如何生成种子,每次都是随机的吗?

时间:2010-02-18 15:59:48

标签: java-me one-time-password

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

我正试图了解这个过程,这是我理解的

  1. 用户>将随机秘密(S)输入哈希n次
  2. 用户>将S ^ n提交给服务器
  3. 服务器>保存n和S ^ n
  4. 用户>生成(S ^ n)-1并提交给服务器
  5. 服务器>获取用户输入并再次应用散列函数1并将其与先前存储的散列进行检查
  6. 现在,从阅读RFC2289(S / Key)有一个种子发布到客户端并在输入唯一标识符时与用户的秘密连接(在步骤4)如何创建这个种子,是随机的,是存储的。

1 个答案:

答案 0 :(得分:1)

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