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が認証に使用される前に1回だけ実行されます。シードはランダムである必要がありますが、クライアントはそれを選択できる必要があります。言い換えると、サーバーはランダムシードを提案する場合がありますが、クライアントは自分の(ランダム)シードを考え出すオプションを持っている必要があります。その後、シードはサーバーによって保存されます。サーバーは実際には認証中にそれを使用しません。認証時にシーケンス番号とともにユーザーに提示できるように保存します。シード番号とシーケンス番号はどちらも秘密ではありません

于 2011-12-15T10:01:02.693 に答える