ワンタイムパスワード認証システム(電話の場合はj2me、サーバー側の場合はphp)の開発を検討しています。
私はプロセスに頭を悩ませようとしています、これが私が理解していることです
- ユーザー>ランダムシークレット(S)をハッシュn回入力します
- ユーザー>サーバーにS^nを送信します
- サーバー>はnとS^nを保存します
- ユーザー>は(S ^ n)-1を生成し、サーバーに送信します
- サーバー>はユーザー入力を受け取り、ハッシュ関数をもう1回適用し、以前に保存されたハッシュと照合します
ここで、RFC2289(S / Key)を読むと、クライアントに発行され、ユーザーが一意の識別子を入力したときにユーザーのシークレットと連結されるシードがあります(ステップ4)。このシードはどのように作成されますか、ランダムですか、保存されますか。