(57)【特許請求の範囲】
【請求項１】
クライアントと、前記クライアントにネットワークを介して接続され、前記クライアントからの認証要求に応じてクライアントの認証を行うサーバを備える認証システムにおいて、
前記クライアントは、
所定のビット列、及び一方向性関数を記憶する第１の記憶部と、
前記サーバに前記クライアントの認証要求を行う際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理部と、
前記生成されたパスフレーズを含むデータを前記サーバに送信する第１の制御部とを有し、
前記サーバは、
前記第１の記憶部に記憶されたものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶する第２の記憶部と、
前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の第２の適用回数だけ適用して判定パスフレーズを生成する第２の処理部と、
前記第２の記憶部に記憶されている前記参照パスフレーズと、前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証する一方、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理部によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、所定回数繰り返す第２の制御部を有し、
前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させ、前記サーバは、前記第２の適用回数を、前記第１の適用回数の前記減少分に対応させるように前記所定の規則を用いて設定することを特徴とする認証システム。
【請求項２】
クライアントと、前記クライアントにネットワークを介して接続され、前記クライアントからの認証要求に応じてクライアントの認証を行うサーバを備える認証システムにおいて、
前記クライアントは、
所定のビット列、及び一方向性関数を記憶する第１の記憶部と、
前記サーバに前記クライアントの認証要求を行う際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理部と、
前記生成されたパスフレーズを含むデータを前記サーバに送信する第１の制御部とを有し、
前記サーバは、
前記第１の記憶部に記憶されたものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶する第２の記憶部と、
前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の第２の適用回数だけ適用して判定パスフレーズを生成する第２の処理部と、
前記第２の記憶部に記憶されている前記参照パスフレーズと、前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証すると共に、前記クライアントから受信したデータ中のパスフレーズを前記第２の記憶部に累積的に参照パスフレーズとして記憶し、次回の前記判定処理で、これらの参照パスフレーズ群のそれぞれと前記第２の処理部によって生成された判定パスフレーズを比較する第２の制御部を有し、
前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させ、前記サーバは、前記第２の適用回数を、前記第１の適用回数の前記減少分に対応させるように前記所定の規則を用いて設定することを特徴とする認証システム。
【請求項３】
請求項２に記載の認証システムにおいて、
前記第２の記憶部に累積的に蓄積された参照パスフレーズ群のうち、前記パスフレーズを含む前記データのサーバ到達時刻が所定の時刻以前である参照パスフレーズを、前記第２の記憶部から所定のタイミングで除去することを特徴とする認証システム。
【請求項４】
請求項２に記載の認証システムにおいて、
前記第２の制御部は、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理部によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する前記判定処理を、所定回数繰り返すことを特徴とする認証システム。
【請求項５】
請求項２に記載の認証システムにおいて、
前記第２の制御部は、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の記憶部に累積された参照パスフレーズ群のそれぞれに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する前記判定処理を、所定回数繰り返すことを特徴とする認証システム。
【請求項６】
クライアントと、前記クライアントにネットワークを介して接続され、前記クライアントからの認証要求に応じてクライアントの認証を行うサーバを備える認証システムにおいて、
前記クライアントは、
所定のビット列、及び一方向性関数を記憶する第１の記憶部と、
前記サーバに当該クライアントの認証を要求する際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理部と、
前記生成されたパスフレーズを含むデータと前記第１の適用回数を前記サーバに送信する第１の制御部とを有し、
前記サーバは、
前記第１の記憶部に記憶されたものと同内容の一方向性関数を記憶し、前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶し、更に、前回、前記クライアントを認証した際に受信した前記第１の適用回数を第２の適用回数として記憶する第２の記憶部と、
前記クライアントから前記データ及び前記第１の適用回数を受信した場合に、前記第１の適用回数と前記第２の適用回数を比較し、第１の適用回数の方が第２の適用回数より小さい場合に、前記クライアントから受信した当該データ中のパスフレーズに前記一方向性関数を、前記第２の適用回数から前記第１の適用回数を差し引いた回数だけ適用して判定パスフレーズを生成する一方、第１の適用回数が第２の適用回数以上である場合に、前記第２の記憶部に記憶されている参照パスフレーズに前記一方向性関数を、前記第１の適用回数から前記第２の適用回数を差し引いた回数だけ適用して判定パスフレーズを生成する第２の処理部と、
前記第２の記憶部に記憶された参照パスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証し、前記クライアントから前記データ及び前記第１の適用回数を受信した前記第２の処理部が前記第１の適用回数と前記第２の適用回数を比較した結果、前記第１の適用回数が前記第２の適用回数以上である場合に、前記第２の処理部が前記クライアントから受信した当該データ中のパスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証する第２の制御部を有し、
前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させることを特徴とする認証システム。
【請求項７】
請求項６に記載の認証システムにおいて、
前記第１の適用回数が前記第２の適用回数以上である場合であって、前記第２の制御部が、前記クライアントから受信した当該データ中のパスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているとの判断した場合に、前記クライアントから受信した当該データ中のパスフレーズ及び第１の適用回数が、前記第２の記憶部に参照パスフレーズ及び第２の適用回数として反映されないように制御することを特徴とする認証システム。
【請求項８】
請求項６に記載の認証システムにおいて、
前記第２の記憶部が更に、参照パスフレーズを含んでいたデータがサーバに到達した到達時刻を記憶しており、
前記第２の処理部が、前記クライアントから前記データ及び前記第１の適用回数を受信した場合において、前記第１の適用回数と前記第２の適用回数を比較し、第１の適用回数が第２の適用回数以上である場合に、前記参照パスフレーズの到達時刻が所定の時刻以前である場合には、前記クライアントの認証を行わないように制御することを特徴とする認証システム。
【請求項９】
ネットワークによって接続されたクライアントからの認証要求に応答して、クライアントの認証を行うサーバにおいて、
前記クライアントが使用するものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中のパスフレーズを参照パスフレーズとして記憶する第２の記憶部と、
前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の適用回数だけ適用して判定パスフレーズを生成する第２の処理部と、
前記第２の記憶部に記憶されている前記参照パスフレーズと、前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証する一方、更に、前記第２の処理部によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、所定回数繰り返す第２の制御部を有し、
前記所定の適用回数は、前記クライアントが前記パスフレーズを生成する際の一方向性関数の適用回数の変化に対応して設定することを特徴とするサーバ。
【請求項１０】
クライアントから、前記クライアントにネットワークを介して接続されたサーバへの認証要求に応じてクライアントの認証を行う認証方法において、
前記クライアントが、前記サーバに前記クライアントの認証要求を行う際に、ビット列に一方向性関数を所定の第１の適用回数だけ適用し、パスフレーズを生成するステップと
前記クライアントが、前記生成されたパスフレーズを含むデータを前記サーバに送信するステップと、
前記サーバが、前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の第２の適用回数だけ適用して判定パスフレーズを生成するステップと、
前記サーバが、前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズと、前記判定パスフレーズとが一致しているかどうかを判定するステップと、
前記判定ステップで両パスフレーズが一致していると判断された場合に、前記サーバが前記クライアントを正当なものとして認証する一方、両パスフレーズが一致していないと判断された場合に、更に、前記判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、前記サーバが所定回数繰り返すステップとを有し、
前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させ、前記サーバは、前記第２の適用回数を、前記第１の適用回数の前記減少分に対応させるように前記所定の規則を用いて設定することを特徴とする認証方法。
【請求項１１】
ネットワークを介してサーバに接続されたクライアントを、
所定のビット列、及び一方向性関数を記憶する第１の記憶手段と、
前記サーバに前記クライアントの認証要求を行う際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理手段と、
前記生成されたパスフレーズを含むデータを前記サーバに送信する第１の制御手段として機能させ、更に、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させるよう制御し、
前記サーバを、
前記第１の記憶手段に記憶されたものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶する第２の記憶手段と、
前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の第２の適用回数だけ適用して判定パスフレーズを生成する第２の処理手段と、
前記第２の記憶手段に記憶されている前記参照パスフレーズと、前記第２の処理手段によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証し、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理手段によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、所定回数繰り返す第２の制御手段として機能させ、更に、前記第２の適用回数を、前記第１の適用回数の前記減少分に対応させるように前記所定の規則を用いて設定するためのプログラム。
【請求項１２】
ネットワークによってクライアントに接続されたサーバを、
前記クライアントが使用するものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中のパスフレーズを参照パスフレーズとして記憶する第２の記憶手段と、
前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の適用回数だけ適用して判定パスフレーズを生成する第２の処理手段と、
前記第２の記憶手段に記憶されている前記参照パスフレーズと、前記第２の処理手段によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証し、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理手段によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、所定回数繰り返す第２の制御手段として機能させ、更に、前記所定の適用回数を、前記クライアントが前記パスフレーズを生成する際の一方向性関数の適用回数の変化に対応して設定するよう制御するプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、遠隔地（リモート）に存在するサーバがクライアントを認証するシステム、方式、及びプログラムに関し、特に認証を高速かつ連続的に行う必要があり、かつサーバとクライアントの間の通信路の信頼性が高くない場合にワンタイムパスワードを用いて認証を行う認証システムに関する。
【０００２】
【従来の技術】
ネットワークで結ばれた機器間で認証を行う技術の一つとして、(広義の)ワンタイムパスワードという技術が知られている。これは、パスワードは常に１回限りで使い捨てとすることにより、パスワードが盗聴されても、そのパスワードを再利用してシステムを不正に使用することを不可能とする技術である。
【０００３】
これを実現する一手法として広く知られているのが、IETF(Internet Engineering Task Force)のRFC(Request For Comment) 1938 'One-Time Password system (OTP)'で規定されている、一方向性関数を用いた手法であり、これが狭義の意味でのワンタイムパスワードである。このＯＴＰでは、以下の手順を用いることによりサーバがクライアントを認証する。
【０００４】
サーバ内には前回の認証成功時にクライアントから送付されたビット列が保管されている。本ビット列はシードＳと、サーバ、クライアント（またはクライアントのユーザ）間で共有される秘密のパスフレーズＰとを結合したビット列に対して一方向性関数を（Ｎ＋１）回適用したものである。
【０００５】
クライアントからサーバに対して認証要求があると、サーバはクライアントに対して、一方向性関数の種別、一方向性関数を適用すべき回数Ｎ、及びシードＳを提示する。クライアントは、提示されたシードＳと、クライアント内で保持されている（またはクライアントのユーザから提供された）秘密のパスフレーズＰとを結合し、その結合されたビット列（Ｓ＋Ｐ）に対して、提示された一方向性関数をＮ回適用してサーバに送付する。サーバは送付された結果に一回のみ一方向性関数を適用し、それがサーバ内に保管されている、前回認証成功時に送付されたビット列（この場合は、シードＳと秘密のパスフレーズＰとを結合したビット列に対して一方向性関数を（Ｎ＋１）回適用したもの）と一致すれば、そのクライアントを正当なものと認証する。
【０００６】
次回、クライアントから認証要求があった場合には、ビット列（Ｓ＋Ｐ）に一方向性関数を適用すべき回数を（Ｎ−１）回として同様の手順が繰り返される。このとき、サーバは、前回クライアントから受け取った結果、即ち、ビット列（Ｓ＋Ｐ）に一方向性関数をＮ回適用したものを記憶しており、クライアントから受け取った、ビット列（Ｓ＋Ｐ）に（Ｎ−１）回だけ一方向性関数が適用された値に、一回だけ一方向性関数を適用し、その結果の値と、前記記憶していた値とを比較する。
【０００７】
本認証手法の中核をなすのは、（Ｓ＋Ｐ）というサーバ、クライアント間で共有されたビット列に対して、認証要求ごとに一方向性関数を適用する回数Ｎを１回ずつ減らしていくという手順である。これにより、ネットワーク上を流れるパスワードは毎回変更される。またサーバでの認証は、クライアントから送られたビット列に一回のみ一方向性関数を適用し、サーバ内のビット列（前回認証時にクライアントから送付されたビット列）と比較することで行われる。一方向性関数は一般に重い処理であり、これを１回のみ行うことで認証できるのは本方式の優れた特徴である。
【０００８】
【発明が解決しようとする課題】
ＯＴＰは、上述のような方法で認証を行うため、クライアントが、遠隔地にあるサーバにログインし、比較的長いインターバルで対話を行うような用途に適している。
【０００９】
しかし、近年、特開2001-148715号に開示された「ネットワークシステム及び端末装置」に示されるように、各パケット毎に送信者を認証したいという要求が生じている。こうしたケースでは、各パケットの処理は短時間で完結し、各パケットはパケットロス等の理由で必ずしも相手に到達するとは限らず、また、パケットが送信した順に送信先に到達するとも限らない。前述したＯＴＰは、サーバから提示されたデータに対してクライアントが計算を行い、その計算結果をサーバが受け取って認証を行い、更に、これらの認証がサーバ、クライアント間の各処理ごとに行われるという方法をとっているため、多数の認証を連続して行う必要がある用途に使用するには問題がある。
【００１０】
以下の記述はパケットの認証について行うが、モバイルエージェントの認証や、処理要求を多数行い処理確認は別途まとめて行うトランザクション処理でも同様の問題が発生する。
【００１１】
第１の問題は、認証のための通信オーバーヘッドが大きいことである。ＯＴＰでは、クライアントが認証されるまでに、クライアントからサーバへの認証要求、サーバからクライアントへのシードＳ等の提示、クライアントからサーバへの一方向性関数適用結果の提示、と３回の通信が行われる。このように、１回の認証のために複数回通信を行うことのオーバーヘッドは、１回の認証でクライアントが長時間アクセスし続けるならば大きな問題とはならないが、個々のパケットに関して認証を行う場合は、認証のための通信オーバーヘッドの方がペイロードのための通信オーバーヘッドよりも大きくなってしまう。
【００１２】
第２の問題は、認証要求が相手に到達したことを確認せずに次の認証要求を送る場合が考慮されていないことである。ＯＴＰでは、クライアントもサーバも、送付した情報に対して適切な応答が戻ってきたことにより、送付した情報を確かに相手が受信した事を確認し、その後に次の処理を開始する。この結果、ＯＴＰでは、認証情報を送付した事実それ自体がネットワークの障害などにより相手に伝達されないという場合を考慮する必要がなくなる。しかし、その代償として認証処理には長い時間がかかり、また認証要求を相手からの応答を待たずに連続的に送付することが出来なくなる。ただし、このことは、クライアントとサーバとがある程度の時間、継続して接続され対話的に動作するという用途であれば重大な問題とはならない。
【００１３】
しかし、パケット毎の認証ではこの点が問題となる。パケット通信では連続的（バースト的）にパケットを送出したい場合があるためである。この場合、送付したパケットが相手に認証されたことを確認してから次のパケットを送出していたのでは時間がかかり過ぎてしまう。更に、パケット通信では、パケットは必ずしも相手に到達するとは限らないため、一部のパケットが相手に到達しない場合や到着順が逆転したような場合であっても機能する必要があるが、ＯＴＰでは、そのような場合が考慮されていない。
【００１４】
【課題を解決するための手段】
従って、本発明の目的は、サーバがクライアントからのアクセス要求を高速に認証できる、ワンタイムパスワードを用いた認証システムを提供することにある。
【００１５】
更に、本発明の目的は、クライアントが送付した処理要求（パケット）がパケットロス等の理由でサーバに到達しない場合があっても、全体として適切に機能する、ワンタイムパスワードを用いた認証システムを提供することにある。
【００１６】
更に、本発明の目的は、クライアントが送付した処理要求（パケット）が送信した順にサーバに到達しない場合であっても、全体として適切に機能する、ワンタイムパスワードを用いた認証システムを提供することにある。
【００１７】
また更に、本発明の目的は、クライアントが多数の認証要求を連続して行う場合であっても適切に機能する、ワンタイムパスワードを用いた認証システムを提供することにある。
【００１８】
本発明の認証システムは、サーバとクライアントとの間でシードＳを基本的に共有し、クライアントはシードＳに一方向性関数をＭ回適用した結果をサーバに送付するという点に関しては従来技術と同一である。
【００１９】
本発明の第１の実施態様によれば、クライアントと、前記クライアントにネットワークを介して接続され、前記クライアントからの認証要求に応じてクライアントの認証を行うサーバを備える認証システムが提供され、ここで、前記クライアントは、所定のビット列、及び一方向性関数を記憶する第１の記憶部と、前記サーバに前記クライアントの認証要求を行う際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理部と、前記生成されたパスフレーズを含むデータを前記サーバに送信する第１の制御部とを有し、前記サーバは、前記第１の記憶部に記憶されたものと同内容の一方向性関数を記憶し、更に前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶する第２の記憶部と、前記クライアントから前記データを受信した場合に、当該データ中のパスフレーズに前記一方向性関数を所定の第２の適用回数だけ適用して判定パスフレーズを生成する第２の処理部と、前記第２の記憶部に記憶されている前記参照パスフレーズと、前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証する第２の制御部を有し、更に、前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させ、前記サーバは、前記第２の適用回数を、前記第１の適用回数の前記減少分に対応させるように前記所定の規則を用いて設定するように構成される。
【００２０】
本発明の第２の実施態様によれば、前記第１の実施態様において、前記第２の制御部が、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理部によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する判定処理を、所定回数繰り返すように構成される。
【００２１】
本発明の第３の実施態様によれば、前記第１の実施態様において、前記第２の制御部が、前記判定処理の結果、両パスフレーズが一致していると判断した場合に、前記クライアントから受信したデータ中のパスフレーズを前記第２の記憶部に累積的に参照パスフレーズとして記憶し、次回の前記判定処理で、これらの参照パスフレーズ群のそれぞれと前記第２の処理部によって生成された判定パスフレーズが比較されるように構成される。
【００２２】
本発明の第４の実施態様によれば、前記第３の実施態様において、前記第２の記憶部に累積的に蓄積された参照パスフレーズ群のうち、前記パスフレーズを含む前記データのサーバ到達時刻が所定の時刻以前である参照パスフレーズを、前記第２の記憶部から所定のタイミングで除去するように構成される。
【００２３】
本発明の第５の実施態様によれば、前記第３の実施態様において、前記第２の制御部は、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の処理部によって生成された判定パスフレーズに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する前記判定処理を、所定回数繰り返すように構成される。
【００２４】
本発明の第６の実施態様によれば、前記第３の実施態様において、前記第２の制御部は、前記判定処理の結果、両パスフレーズが一致していないと判断した場合に、更に、前記第２の記憶部に累積された参照パスフレーズ群のそれぞれに前記一方向性関数を適用して前記両パスフレーズが一致するかどうかを判定する前記判定処理を、所定回数繰り返すように構成される。
【００２５】
本発明の第７の実施態様によれば、クライアントと、前記クライアントにネットワークを介して接続され、前記クライアントからの認証要求に応じてクライアントの認証を行うサーバを備える認証システムが提供され、ここで、前記クライアントは、所定のビット列、及び一方向性関数を記憶する第１の記憶部と、前記サーバに当該クライアントの認証を要求する際に、前記ビット列に前記一方向性関数を所定の第１の適用回数だけ適用したパスフレーズを生成する第１の処理部と、前記生成されたパスフレーズを含むデータと前記第１の適用回数を前記サーバに送信する第１の制御部とを有し、前記サーバは、前記第１の記憶部に記憶されたものと同内容の一方向性関数を記憶し、前回、前記クライアントを認証した際に受信したデータ中の前記パスフレーズを参照パスフレーズとして記憶し、更に、前回、前記クライアントを認証した際に受信した前記第１の適用回数を第２の適用回数として記憶する第２の記憶部と、前記クライアントから前記データ及び前記第１の適用回数を受信した場合に、前記第１の適用回数と前記第２の適用回数を比較し、第１の適用回数の方が第２の適用回数より小さい場合に、前記クライアントから受信した当該データ中のパスフレーズに前記一方向性関数を、前記第２の適用回数から前記第１の適用回数を差し引いた回数だけ適用して判定パスフレーズを生成する第２の処理部と、前記第２の記憶部に記憶された参照パスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証する第２の制御部を有し、更に、前記クライアントは、前記第１の適用回数を、前記クライアントが認証要求を行う度に所定の規則によって減少させるように構成される。
【００２６】
本発明の第８の実施態様によれば、前記第７の実施態様において、前記第２の処理部が、前記クライアントから前記データ及び前記第１の適用回数を受信した場合において、前記第１の適用回数と前記第２の適用回数を比較し、第１の適用回数が第２の適用回数以上である場合に、前記第２の記憶部に記憶されている参照パスフレーズに前記一方向性関数を、前記第１の適用回数から前記第２の適用回数を差し引いた回数だけ適用して判定パスフレーズを生成し、その場合に、前記第２の制御部が、前記クライアントから受信した当該データ中のパスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているかどうかを判定する判定処理を行い、両パスフレーズが一致していると判断した場合に、前記クライアントを正当なものとして認証するように構成される。
【００２７】
本発明の第９の実施態様によれば、前記第８の実施態様において、前記第１の適用回数が前記第２の適用回数以上である場合であって、前記第２の制御部が、前記クライアントから受信した当該データ中のパスフレーズと前記第２の処理部によって生成された判定パスフレーズとが一致しているとの判断した場合に、前記クライアントから受信した当該データ中のパスフレーズ及び第１の適用回数が、前記第２の記憶部に参照パスフレーズ及び第２の適用回数として反映されないように制御するように構成される。
【００２８】
本発明の第１０の実施態様によれば、前記第８の実施態様において、前記第２の記憶部が更に、参照パスフレーズを含んでいたデータがサーバに到達した到達時刻を記憶しており、前記第２の処理部が、前記クライアントから前記データ及び前記第１の適用回数を受信した場合において、前記第１の適用回数と前記第２の適用回数を比較し、第１の適用回数が第２の適用回数以上である場合に、前記参照パスフレーズの到達時刻が所定の時刻以前である場合には、前記クライアントの認証を行わないように制御するように構成される。
【００２９】
【発明の実施の形態】
最初に、本発明の第１の実施形態について、図１ないし図６を参照して説明する。図１には、本発明の第１の実施形態の認証システム１００を構成するクライアント１１０、サーバ１２０、及び通信路１３０が示されている。クライアント１１０は、認証のフローを制御する制御部１１１、シードＳと、シードＳに対して一方向性関数Ｗを適用すべき回数を保持するパラメータ記憶部１１２、及び一方向性関数Ｗを、与えられたビット列に対して適用（計算）する一方向性関数処理部１１３から構成される。
【００３０】
サーバ１２０は、認証のフローを制御する制御部１２１、参照パスフレーズを保持するパラメータ記憶部１２２、及び一方向性関数Ｗを、与えられたビット列に対して適用（計算）する一方向性関数処理部１２３から構成される。
【００３１】
通信路１３０は、クライアント１１０とサーバ１２０とを接続するネットワークである。
【００３２】
クライアント１１０の一方向性関数処理部１１３、及びサーバ１２０の一方向性関数処理部１２３は、あるビット列を受け取り、それを別のビット列に変換する。このとき、正方向の変換は計算量的に容易であり、かつ逆方向の変換は実用的な方法が知られていないものとする。このような変換を行う関数として、例えばMD5（IETF RFC1321）が知られている。
【００３３】
上記関数をＦとし、ビット列をＢとすると、関数Ｆをビット列Ｂに１回適用するとは、Ｂ’＝Ｆ（Ｂ）で表わされ、結果としてＢ’が求まる。関数Ｆをビット列Ｂに２回適用するとは、Ｂ’’＝Ｆ（Ｂ’）＝Ｆ（Ｆ（Ｂ））で表され、結果としてＢ’’が求まる。一方向性関数とは、Ｂ＝Ｆ−１（Ｂ’）なる関数Ｆ−１が知られていないことをいう。
【００３４】
図２に示すのは、クライアント１１０のパラメータ記憶部１１２の構成例である。シードＳとして２バイトの値「０ｘＥＥ０６」、及びそのシードＳに対して一方向性関数Ｗを適用すべき回数「３５」とを保持している。本実施形態では、説明を簡単にするため、シードＳ、及びそこから一方向性関数Ｗを用いて生成される値（以下、パスフレーズという）は全て２バイトとして記述しているが、実際には必要とされる認証強度に応じて任意の長さとすることができる。
【００３５】
図３には、サーバ１２０のパラメータ記憶部１２２の構成例が示されている。当該パラメータ記憶部１２２は、クライアント１１０から受信したパスフレーズを参照パスフレーズとして記憶し、この例では２バイトの値「０ｘ０２ＣＢ」をとる。
【００３６】
次に、本発明の第１の実施形態のクライアント１１０の処理について説明する。
【００３７】
図４は、クライアント１１０側で認証要求を生成し、送信する手順を示すフローチャートである。当該処理は、クライアント１１０が認証要求を行うたびに、例えばパケットを送信するたびに呼び出され実行される。図示されてはいないが、初期化フェーズでは、シードＳがクライアント１１０またはサーバ１２０で決定され、クライアント１１０とサーバ１２０との間で共有される。また、一方向性関数ＷをシードＳに対して適用する回数Ｍの初期値もこのときに、クライアント１１０及びサーバ１２０の間で取り決めておく。例えば、最初の認証要求に用いるＭの値を１００とする。
【００３８】
クライアント１１０においてサーバ１２０のリソースを利用したい等の要求が発生した場合、クライアント１１０は、シードＳに対して一方向性関数ＷをＭ回適用した結果を、通信路１３０を介してサーバ１２０に送付する（ステップＳ１０）。クライアント１１０は、一方向性関数処理部１１３において、パラメータ記憶部１１２に記憶されているシードＳに対して、パラメータ記憶部１１２に記憶されている回数Ｍだけ一方向性関数Ｗを適用する。
【００３９】
クライアント１１０は、この計算結果（パスフレーズ）の送付に際し、他のデータ、例えばサーバ１２０上で実行されるプログラムや、そのパラメータを添付することもできる。このとき、クライアント１１０からサーバ１２０に送付されるデータは、例えば、図５に示すように、パスフレーズと、他のデータとから構成されることとなる。
【００４０】
次に、ステップＳ１２において、次の認証要求に備えて、一方向性関数Ｗを適用すべき回数Ｍを１減少させる。このことは、クライアント１１０のパラメータ記憶部１１２の回数Ｍを１減少させることによって行われる。
【００４１】
以上でクライアント１１０側での１つのパケットに対する認証要求生成・送信処理は終わりである。また、このようなクライアント１１０の処理は、認証制御部１１１が制御する。
【００４２】
次に、第１の実施形態のサーバ１２０における認証手順について説明する。
【００４３】
図６は、サーバ１２０側でクライアント１１０からの認証要求を受信した場合の認証処理手順を示すフローチャートである。この処理は、クライアント１１０から認証要求を受信するたびに実行される。サーバ１２０は、前述したように、初期化フェーズでクライアント１１０との間で、シードＳと、一方向性関数Ｗを適用すべき回数Ｍの初期値（例えば１００）を共有する。
【００４４】
また、当該フェーズで、シードＳに一方向性関数ＷをＭ＋１（＝１０１）回適用した結果を算出しておき、参照用パスフレーズとしてパラメータ記憶部１２２に記録する。この時のパラメータ記憶部１２２の構成は図３に示したようなものである。シードＳに一方向性関数Ｗを１０１回適用した結果を、クライアント１１０から、或いはその他の方法によって取得できるのであれば、サーバ１２０はシードＳを保持する必要はない。
【００４５】
サーバ１２０は、クライアント１１０から認証要求を図５に示すようなフォーマットで受信すると、ステップＳ２０において、その受信データの中からパスフレーズを取りだし、それに一方向性関数Ｗを１回適用する。
【００４６】
ここでは、クライアント１１０から送信されるパスフレーズは、シードＳに一方向性関数Ｗを適用したものであり、その適用回数は認証を要求する度に１ずつ減らされている。従って、これに対応してサーバ１２０は、上記のように関数Ｗを１回適用して、前回クライアント１１０から受信したパスフレーズと一致するかどうかを判定する。よって、サーバ１２０における、この適用回数は、クライアント１１０の適用回数の変化に応じたものであり、常に１回に制限されるものではない。その他の所定の規則的な変化を用いて適用回数を定めることができる。
【００４７】
次にステップＳ２２において、その結果をパラメータ記憶部１２２内の参照用パスフレーズと比較し、両者が一致したら、ステップＳ２４において、クライアント１１０を正当なクライアントとして認証する。その後、ステップＳ２６において、クライアント１１０から受信した前記パスフレーズを新たな参照パスフレーズとしてパラメータ記憶部１２２内に記憶し、認証処理を終了する。
【００４８】
この後の処理は、クライアント１１０とサーバ１２０との取り決めによる。例えば、サーバ１２０がクライアント１１０からプログラム実行要求を受けることになっていれば、パラメータが渡された場合に、そのパラメータを用いて指定されたプログラムが実行される。
【００４９】
ステップＳ２２で、両者が不一致であった場合は、何件か先に送信されるであろうパスフレーズを推定し、その推定結果とクライアント１１０からのパスフレーズが一致するかを判定する。また、ここでは、Ａという値を設けて、パスフレーズを推定する範囲を制限している。ステップＳ２８で判断される適用回数は、次にステップＳ２０を実行した場合の、一方向性関数Ｗの適用回数を表し、最初にステップＳ２０が実行され、ステップＳ２２でＮＯと判定された場合に２となり、以降ステップＳ２８の直前で１ずつ増加される。
【００５０】
この処理は、クライアント１１０から送信されるパケットが、パケットロスのために喪失したり、送信された順序でサーバ１２０に到達しなかったりする可能性もある点を考慮したものである。
【００５１】
まず、ステップＳ２８において、前記適用回数をチェックする。それが、ある決められた一定の値Ａ、例えば１０以下であればステップＳ２０に戻り、一方向性関数Ｗを適用する回数を増やして同様の処理を行う。もし決められた値を超えていれば、その時はステップＳ３０において認証失敗と判定する。ステップＳ２２で一致すれば、ステップＳ２４において、そのクライアント１１０は認証される。その後、ステップＳ２６において、クライアント１１０からのパスフレーズが、参照パスフレーズとして記憶される。
【００５２】
上述したサーバ１２０の処理は、認証制御部１２１が制御する。
【００５３】
こうした本発明の第１の実施形態においては、上述のように、サーバ１２０において、一方向性関数Ｗを１ないしＡ回の範囲でシードＳに適用している。従って本実施形態では、サーバ１２０が記憶する参照パスフレーズが、シードＳに関数Ｗを（Ｍ＋１）回適用したものであるときに、クライアント１１０が送信するパスフレーズが、シードＳに関数ＷをＭ回適用したものでなければならないという、クライアント１１０に関する従来の認証条件が、ある程度緩和されている。
【００５４】
即ち、本実施形態でクライアント１１０が認証されるには、サーバ１２０が記憶する参照パスフレーズが、シードＳに関数Ｗを（Ｍ＋１）回適用したものであるときに、クライアント１１０が送信するパスフレーズが、シードＳに関数Ｗを（Ｍ−Ａ＋１）回ないしＭ回適用したものであればよい。
【００５５】
このことは、クライアント１１０からのパケットが、（Ａ−１）個連続してサーバ１２０に届かない場合であっても、Ａ個目がサーバ１２０に到達すれば認証が成功することを意味する。
【００５６】
上述のように、本実施形態では、追加的にＡ回だけ一方向性関数Ｗを適用し、認証の幅を持たせているが、これは本発明の認証システムとして必須のものではない。例えば、図６において、ステップＳ２８とステップＳ３０を除いたフローチャートをサーバ１２０に関して適用することが可能である。また、他の関連する実施形態についても同様のことが言える。
【００５７】
また、この第１の実施形態においては、シードＳだけに一方向性関数Ｗを適用している一方、従来のワンタイムパスワードでは、前述のように、シードＳと秘密のパスフレーズＰを結合したビット列に一方向性関数Ｗが適用されている。本明細書においてシードＳのみを用いているのは、説明を簡単にするためであって、このシードＳを、従来のワンタイムパスワードにおける秘密のパスフレーズＰを含むものと考えてもよい。
【００５８】
また、シードＳ（前述のように、シードＳを、秘密のパスフレーズＰを含むものと考える場合には、シードＳの少なくとも一部）は、クライアント１１０のパラメータ記憶部１１２に記憶された適用回数Ｍが０になった場合に、新たなワンタイムパスワード生成のサイクルを形成するため、例えば乱数等を用いてクライアント１１０またはサーバ１２０のいずれかで再作成され、両者間で再び共有される。
【００５９】
次に、本発明の第２の実施形態の認証システムについて、図７ないし図９を参照して説明する。
【００６０】
第２の実施形態は、送信順序とは異なる順序でサーバ１２０に到着したパケットに対処するためのものである。前記第１の実施形態においては、パケットの順序逆転が発生すると、遅く到達したパケットは全て認証されないことになる。これは次に述べる理由による。
【００６１】
本発明の実施形態においては、認証システムはすべて一方向性関数Ｗを用いている。そこで、クライアント１１０が、シードＳに対して一方向性関数ＷをＭ回適用した結果をパスフレーズとしてサーバ１２０に送付し、サーバ１２０が、当該シードＳに対して一方向性関数ＷをＬ回適用した結果を参照パスフレーズとして記憶しているとき、Ｍ＞Ｌであれば、サーバ１２０はクライアント１１０から受信したパスフレーズに何らかの操作を加えるという方法では、サーバ１２０内の参照パスフレーズと、受信したパスフレーズが、同一のシードＳから生成されたものであるか否かを知ることが出来ない。一方向性関数Ｗの実用的な逆関数は存在しないからである。
【００６２】
Ｍは通常は１回ずつ、パケットを送出するたびに減少する。Ｌも、認証が成功すればＭに伴って減少する。ここで、クライアント１１０からの認証要求の順序逆転が発生すると、Ｍ＞Ｌという状況が発生する。
【００６３】
この場合において、クライアント１１０から送付されたパスフレーズが、シードＳに対して一方向性関数Ｗを適用した結果として生成されたものであることを知る方法は２つある。
【００６４】
一つの方法は、クライアント１１０から送付されたパスフレーズに一方向性関数Ｗを適用するという方法はそのままに、比較対象としてサーバ１２０内に記録しておく参照パスフレーズの少なくとも一つを、Ｍ＜Ｌという条件が実用上常に満たされるように選ぶことである。そして、これが本発明の第３の実施形態である。本実施形態では、このために、参照パスフレーズは必ずしも直前の認証成功時にクライアント１１０から送付されたパスフレーズとはせず、より古いパスフレーズも参照パスフレーズの一つとして利用可能としている。
【００６５】
本発明の第２の実施形態は、図１に示された認証システム１００と同様の構成を有する。更に、第１の実施形態の認証システム１００のクライアント１１０のパラメータ記憶部１１２を図７に示すように構成し、サーバ１２０のパラメータ記憶部１２２を図８に示すように構成したものである。
【００６６】
図７に示すように、クライアント１１０のパラメータ記憶部１１２は、シードＳから一方向性関数Ｗを用いて生成されたパスフレーズと、そのパスフレーズを生成するために関数Ｗを適用した適用回数、及び次の認証要求に利用すべきパスフレーズはどれかを示す「現在」フラグを保持している。
【００６７】
また、図８に示すように、サーバ１２０のパラメータ記憶部１２２は、参照パスフレーズを複数（この実施例では５個）保持し、更に、それぞれクライアント１１０から対応するパスフレーズを受信した日時を保持ている。また、図８では、参照パスフレーズが５個示されているが、こうしたパラメータ記憶部１２２の構成は、サーバ１２０の処理動作の途中で形成されるものであり、初期状態では、第１の実施形態で説明したように１件の参照パスフレーズを有しており（図３）、保持する件数も処理に伴って変動する。
【００６８】
次に、このような構造の認証システム１００の動作について、第１の実施形態の認証システムと異なる点を中心に説明を行う。
【００６９】
まず、クライアント１１０は、初期化フェーズにおいて、シードＳに一方向性関数Ｗを順次適用して、複数のパスフレーズを生成し、それらのパスフレーズと、対応する一方向性関数Ｗの適用回数をパラメータ記憶部１１２に記憶する。図７の例では、一方向性関数Ｗを１００回適用し、その過程で、当該関数Ｗを０回から１００回まで適用したパスフレーズをそれぞれ記憶している。パラメータ記憶部１１２は、これ以外の構成、例えば、図２のように構成して、第１の実施形態と同様にパスフレーズを生成しても良い。
【００７０】
また、サーバ１２０は、初期化フェーズで、例えばシードＳに関数Ｗを１０１回適用した値を、参照パスフレーズとしてパラメータ記憶部１２２に記憶する。
【００７１】
クライアント１１０の認証要求の生成・送信処理は図４に示した第１の実施形態に関するクライアント１１０のフローチャートと同様である。ただし、クライアント１１０で、シードＳに一方向性関数ＷをＭ回適用した結果（パスフレーズ）を得るには（図４のステップＳ１０の処理）、パラメータ記憶部１１２内の対応するレコード（「現在」を示すフラグがセットされているレコード）を参照することによって可能となる。
【００７２】
また、一方向性関数Ｗを適用すべき回数Ｍを１減少させるには（図４のステップ１２の処理）、「現在」フラグを１レコード下に移動することで実現される。
【００７３】
一方、サーバ１２０は、クライアント１１０から認証要求を受信した場合、図６のフローチャートに示した処理に代えて、図９のような処理に変更する必要がある。図９のフローチャートでは、図６のステップＳ２２、及びＳ２６が、それぞれステップＳ４４、及びＳ４８に変更され、ステップＳ４０が新たに追加されているが、それ以外は、図６のフローチャートの対応するステップと同一内容である。
【００７４】
サーバ１２０は、まず、ステップＳ４０において、図８に示されるような一群の参照パスフレーズの整理を行う。この処理については後で詳述する。
【００７５】
次に、ステップＳ４２において、クライアント１１０から認証要求を受信し、その受信データの中からパスフレーズを取りだし、それに一方向性関数Ｗを１回適用する。また、この受信の際に、当該パスフレーズに対応付けて、そのパスフレーズをサーバ１２０に受信した日時を記憶する。図８には、「日時」という項目でこの情報が示されている。
【００７６】
次にステップＳ４４において、その結果をパラメータ記憶部１２２内の参照用パスフレーズの全てと比較し、そのうちのいずれかと一致したら、ステップＳ４６において、正当なクライアントからの要求と認める。前述したように、１つめの認証要求を受信した段階では、パラメータ記憶部１２２内には１つの参照用パスフレーズしか記憶されていないが、後で説明するように、認証が成功するたびに当該参照用パスフレーズが蓄積されていくことになる。
【００７７】
次に、ステップＳ４８において、クライアント１１０から受信したパスフレーズをパラメータ記憶部１２２に記憶された参照パスフレーズに追加し、認証処理は終了する。
【００７８】
ステップＳ４４で、両者が一致しない場合は、第１の実施形態と同様、所定の適用回数Ａを限度として、クライアント１１０から受信したパスフレーズに関数Ｗが適用される。この複数回にわたる関数Ｗの適用の結果、ステップＳ４４でそれが、参照パスフレーズのどれかと一致したと判定されると、ステップＳ４６において、正当なクライアントと認証される。また、ステップＳ４８において、受信パスフレーズが参照パスフレーズとしてパラメータ記憶部１２２に追加される。
【００７９】
本実施形態では、認証が成功するたびに、クライアント１１０から受信したパスフレーズが、サーバ１２０のパラメータ記録部１２２内に参照パスフレーズとして蓄積され、次第に参照パスフレーズの件数が多くなっていく。そこで、これらをある程度の合理的な数に調整するために、ステップＳ４０において、所定の日時を基準に、それ以前に受信したパスフレーズに対応する参照パスフレーズを前記パラメータ記録部１２２から削除する。基準となる所定の日時は、現在時刻や、最新のパスフレーズの受信時刻を元に決定されうる。
【００８０】
参照パスフレーズは、図８に示すように、対応するパスフレーズの受信日時を記憶しているので、これらの日時と、上記基準となる所定の日時が比較される。
【００８１】
また、日時以外の他の基準を用いて参照パスワードを整理することもできる。例えば、パラメータ記憶部１２２内に、参照パスフレーズとともに、それに対応するパスフレーズに関する一方向性関数Ｗの適用回数Ｍを記憶し、参照パスフレーズを、直近の所定の個数だけ保持するように構成しても良い。
【００８２】
次に、本発明の第３の実施形態を、図１０を参照して説明する。本実施形態は、第２の実施形態の変形であり、サーバ１２０の認証処理のみについて説明する。
【００８３】
前述した、パケットの順序逆転に対処する他の方法は、前記第２の実施形態とは逆に、サーバ１２０のパラメータ記憶部１２２に記憶されている参照パスフレーズのそれぞれに一方向性関数Ｗを適用し、その結果と、クライアント１１０から受信したパスフレーズを比較するものである。
【００８４】
本実施形態の認証システム１００は、ステップＳ６０において、参照パスフレーズの整理を行う。この処理は、第２の実施形態に関して説明した図９のステップＳ４０の処理と同様のものである。
【００８５】
ステップＳ６２において、クライアント１１０からパスフレーズを受信する。以降の処理は、パラメータ記憶部１２２に記憶された参照パスフレーズごとに行われる。
【００８６】
認証システム１００は、ステップＳ６４において、参照パスフレーズの１つを選択する。参照パスフレーズは、１つ目のパスフレーズをクライアント１１０から受信する際には１つだけ記憶されているが、認証が成功するたびに、受信したパスフレーズが累積的に記憶されていく。
【００８７】
新たに選択すべき参照パスフレーズが存在しない場合は、ステップＳ６６でＹＥＳとなり、ステップＳ６８で認証失敗と判断される。これは、全ての参照パスフレーズについてのテストが失敗したことを意味する。
【００８８】
選択可能な参照パスフレーズが残っている場合は、ステップＳ７０に進み、そこで、選択された参照パスフレーズに、一方向性関数Ｗが１回だけ適用される。次に、その関数Ｗが適用されたビット列が、ステップＳ６２でクライアント１１０から受信したパスフレーズと一致するか判断される。一致した場合、ステップＳ７４でクライアント１１０は認証され、ステップＳ７６で受信パスフレーズが新たに参照パスフレーズとしてパラメータ記憶部１２２に記憶される。
【００８９】
ステップＳ７２で一致しないと判断された場合は、ステップＳ７８に進み、そこで、現在、参照パスフレーズに何回一方向性関数Ｗが適用されているかが判定され、所定の回数Ａを越える場合は、ステップＳ６４に進み、新たな参照フレーズを選択して同様の比較処理を繰り返す。適用回数がＡ以下である場合は、ステップＳ７０に進み、更に一方向性関数Ｗが適用され、ステップＳ７２で受信パスフレーズとの比較が行われる。
【００９０】
次に、本発明の第４の実施形態を、図１１ないし図１４を参照して説明する。この実施形態は、クライアント１１０から、パスフレーズとともに、そのパスフレーズに関する一方向性関数Ｗの適用回数Ｍをサーバ１２０に送信し、サーバ１２０では、自身が保持する参照パスフレーズの適用回数Ｌと前記適用回数Ｍとの差だけ、受信パスフレーズに一方向性関数Ｗを適用し、それが参照パスフレーズと一致すればクライアント１１０を認証するものである。
【００９１】
本発明の第４の実施形態による認証システムの構成は、図１に示されたものと基本的に同様である。ただし、サーバ１２０内のパラメータ記憶部１２２の構成は、図１１に示すように、参照パスフレーズと、その参照パスフレーズがシードＳに一方向性関数Ｗを何回適用した結果として得られたかを示す適用回数Ｌを含んでいる。
【００９２】
図１２は、クライアント１１０側で認証要求を生成する手順を示すフローチャートであり、クライアント１１０が認証要求を行うたびに、例えばパケットを送信するたびに呼び出され実行される。図示されてはいないが、初期化フェーズでは、シードＳがクライアント１１０またはサーバ１２０で決定され、クライアント１１０とサーバ１２０との間で共有される。また、一方向性関数ＷをシードＳに対して適用する回数Ｍの初期値もこのときに、クライアント１１０、サーバ１２０間で取り決めておく。例えば、最初の認証要求で用いられるＭの値を１００とする。
【００９３】
クライアント１１０において、サーバ１２０のリソースを利用したい等の要求が発生した場合、クライアント１１０は、ステップＳ８０において、シードＳに対して一方向性関数ＷをＭ回適用してパスフレーズを生成し、そのパスフレーズを、適用した回数Ｍの値と共にサーバ１２０へ通信路１３０を介して送信する。送信に際しては、第１の実施形態と同様、他のデータ、例えばサーバ１２０上で実行されるプログラムのためのパラメータを同時に添付することも可能である。この結果、クライアント１１０からサーバ１２０に送付されるデータは図１３のように、パスフレーズ、適用回数Ｍ、及び他のユーザデータとから構成されることとなる。
【００９４】
次に、ステップＳ８２において、次に認証要求を生成する場合に、一方向性関数Ｗを適用すべき回数を１だけ減ずる。これは第１の実施形態と同様、クライアント１１０側のパラメータ記憶部１１２が図２のような構成を持つ場合には、パラメータ記憶部１１２内の回数Ｍを１減少させることで行われる。
【００９５】
こうした処理の流れは、クライアント１１０の認証制御部１１１が制御する。
【００９６】
次に、サーバ１２０でクライアント１１０から認証要求を受信した場合の処理手順を、図１４のフローチャートを参照して説明する。この処理は、クライアント１１０から認証要求を受信するたびに実行される。サーバ１２０は、前述したように、初期化フェーズでクライアント１１０と同期をとり、シードＳと、一方向性関数Ｗを適用すべき回数Ｍの初期値（例えば１００）を共有する。
【００９７】
次に、シードＳに一方向性関数ＷをＬ＝Ｍ＋１（＝１０１）回適用した結果を算出し、参照用パスフレーズとしてパラメータ記憶部１２２に記録する。回数Ｌも同時にパラメータ記憶部１２２に記録される。この時のパラメータ記憶部１２２の構成は図１１に示したようなものである。
【００９８】
サーバ１２０は、認証要求を受信すると、ステップＳ９０において、受信したデータの中から一方向性関数Ｗの適用回数Ｍを取り出し、パラメータ記憶部１２２内の回数Ｌと比較する。もし、Ｌ＜＝Ｍであれば、これは、例えばパケットの順序が逆転して送信されたようなケースであり、ステップＳ１００において認証は失敗であると判断する。
【００９９】
Ｌ＞Ｍであれば、ステップＳ９２において、クライアント１１０から受信したパスフレーズに、一方向性関数Ｗを（Ｌ−Ｍ）回適用する。ステップＳ９２における計算結果が、ステップＳ９４においてパラメータ記憶部１２２内の参照パスフレーズと一致すれば、ステップＳ９６において、認証は成功と見なされ、ステップＳ９８でクライアント１１０から受信したパスフレーズを新たな参照パスフレーズとし、前記適用回数Ｍを適用回数Ｌとしてパラメータ記憶部１２２を更新し、認証処理は終了する。
【０１００】
この後の処理は、第１の実施形態と同様、クライアント１１０とサーバ１２０との取り決めによる。
【０１０１】
ステップＳ９４で両者が不一致であると判定されたら、ステップＳ１００において認証は失敗と判定される。
【０１０２】
こうした処理の流れは、サーバ１２０の認証制御部１２１が制御する。
【０１０３】
次に、本発明の第５の実施形態について、図１５を参照して説明する。この実施形態は、第４の実施態様において、図１４に示すサーバ１２０での処理を改良したものである。ここでは、パケットの到着順が逆転した場合であっても、認証が成功するように、救済措置を設けている。即ち、受信したパスフレーズを参照してＭ＜Ｌとなっていなければ、参照パスフレーズの方に一方向性関数Ｗを適用し、その結果を当該受信パスフレーズと比較しようとするものである。
【０１０４】
サーバ１２０の認証処理では、図１５のフローチャートに示すように、Ｍ＜Ｌの場合は、図１４に示す第４の実施形態と同様の処理を行う。一方、Ｍ＞＝Ｌの場合には、第４の実施形態とは異なり、ただちに認証失敗とはしないように制御する。Ｍ＞＝Ｌの場合は、ステップＳ１２２において、サーバ１２０のパラメータ記憶部１２２内の参照パスフレーズに、一方向性関数Ｗを（Ｍ−Ｌ）回適用する。その結果と、クライアント１１０から受信したパスフレーズとが一致したら、正当なクライアントと認証し、あとは図１４の場合と同様にステップＳ１２６とステップＳ１２８の処理を行う。
【０１０５】
次に、本発明の第６の実施形態について、図１６を参照して説明する。この実施形態は、第５の実施態様における、認証処理を更に改良するものである。
【０１０６】
本実施形態では、参照パスフレーズの更新を、Ｍ＜Ｌの場合に限ることにより、認証の速度を向上させる。一方向性関数Ｗは一般に、計算量的に重い処理であり、この回数を減少させることは速度向上のため重要である。
【０１０７】
ここで、第６の実施形態の処理とその効果を、ＰＫ１、ＰＫ２、ＰＫ３の順で連続してサーバ１２０に到達した３つのパケットを例にとって考える。ＰＫ１は、シードＳにＭ１回一方向性関数Ｗを適用したパスフレーズＰ１を含み、ＰＫ２は、シードＳにＭ２回関数Ｗを適用したパスフレーズＰ２を含み、ＰＫ３は、シードＳにＭ３回関数Ｗを適用したパスフレーズＰ３を含むものと仮定する。
【０１０８】
ここで、前記第５の実施形態によってこれらのパケットの認証処理を行うと、認証成功後にサーバ１２０のパラメータ記憶部１２２内に保持される参照パスフレーズは、Ｐ１、Ｐ２、Ｐ３の順に遷移する。
【０１０９】
また、２つ目に到達したパケットＰＫ２と３つ目に到達したパケットＰＫ３を認証する際に、サーバ１２０において必要となる一方向性関数Ｗの適用回数は、各々｜Ｍ１−Ｍ２｜回、｜Ｍ２−Ｍ３｜回となる。ここで｜ｘ｜は、ｘの絶対値を示す。
【０１１０】
通常はパケットは順序よく到着し、一方向性関数Ｗの適用回数Ｍは１ずつ減っていくが（即ち、Ｍ１＝Ｍ２＋１＝Ｍ３＋２）、稀にパケットの順序が逆転する場合がある。
【０１１１】
次に、パケットＰＫ２のみが順序の逆転を生じ、ＰＫ１とＰＫ３が連続している場合（（Ｍ１−Ｍ３）＝１）を考える。ＰＫ１、ＰＫ２、ＰＫ３の順で受信するものとする。
【０１１２】
この場合、上記第５の実施形態のサーバ１２０では、２つ目に到達したパケットＰＫ２の認証では、（Ｍ２−Ｍ１）)回、３つ目に到達したパケットＰＫ３の認証では、（Ｍ２−Ｍ３）回、合計で（Ｍ２−Ｍ１）＋（Ｍ２−Ｍ３）＝２（Ｍ２−Ｍ３）−１回、一方向性関数Ｗを適用する必要が生じる。これは、(Ｍ２−Ｍ３)が大きい数字の場合には（大きく順序逆転した場合には）、重い処理となることを示している。
【０１１３】
これに対して、第６の実施形態によるサーバ１２０では、順序逆転した際は、サーバ１２０のパラメータ記憶部１２２内に格納される参照パスフレーズは更新されないので、各認証後に格納されている参照パスフレーズはＰ１、Ｐ１、Ｐ３と遷移し、２つ目及び３つ目のパケットを認証するために必要な一方向性関数Ｗは、各々（Ｍ２−Ｍ１）回と（Ｍ１−Ｍ３）回となる。この合計はＭ２−Ｍ３回であり、Ｍ２−Ｍ３が１より大きければ、第６の実施形態における方が、第５の実施形態におけるよりも、必要となる一方向性関数Ｗの適用回数は小さくなる。
【０１１４】
Ｍ２−Ｍ３＝１となるのは、Ｍ２＝Ｍ１の場合であり、これはクライアント１１０が一つのパスフレーズを複数回利用したと言うことであってあり得ない。従って、順序逆転は稀にしか発生しない状態では、第６の実施形態により一方向性関数Ｗを適用すべき回数は小さくなることが期待できる。
【０１１５】
第５の実施形態と第６の実施形態の優劣比較において重要なのは、パケットの順序逆転の頻度である。もし順序逆転したパケットが連続的に到着すると、サーバ内に格納されるパスフレーズを更新しない事によるペナルティは大きくなるためである。しかし、順序逆転が稀であるとの仮定が成立するならば、第６の実勢形態は一方向性関数Ｗを適用すべき回数を減少させ、認証を高速化することになる。
【０１１６】
図１６に示すフローチャートでは、図１５のフローチャートと比較して分かるように、Ｍ＞＝Ｌの場合には、サーバ１２０のパラメータ記憶部１２２に記憶されている参照パスフレーズの更新を行わないように制御される。即ち、図１６に示すフローチャートでは、図１５のステップＳ１２８に対応するステップが省略されている。
【０１１７】
次に、本発明の第７の実施形態について、図１７及び図１８を参照して説明する。第７の実施形態は、サーバ１２０において、参照パスフレーズをいつ受信したかを、クライアント１１０の認証可否判定基準に加えるものである。
【０１１８】
不正アクセスを防ぐためには、こうした時刻情報を併用することが有効であり、上記説明した第５及び第６の実施形態の認証システム等に適用することができる。
【０１１９】
ここでは、当該機能を、前述の第６の実施形態に付加した例を以下に説明する。
【０１２０】
サーバ１２０のパラメータ記憶部１２２には、図１７に示すように、参照パスフレーズ、そのパスフレーズを得るために一方向性関数ＷをシードＳに適用すべき回数Ｌに加え、その参照パスフレーズをサーバ１２０が受信した日時が記録される。この日時に関する情報は、認証要求の順序が逆転して到達した際に、それが合理的な範囲であるかどうかを判定するために用いるので、時刻には、その合理的な範囲と判定できる程度の精度が必要である。図１７に示した例では、ミリ秒の単位で時刻を記録するものとしている。
【０１２１】
この実施形態におけるクライアント１１０の処理は、第４の実施形態と同様である。サーバ１２０での処理は図１８のフローチャートに示すようなものになる。図１８のフローチャートは、ステップＳ１６２を除くと、第６の実施形態に関連して説明した図１６の処理と同様である。即ち、ステップＳ１５０においてＭとＬとを比較し、Ｍ＞＝Ｌの場合には、図１６のステップＳ１４２に対応するステップＳ１６４の前に、ステップＳ１６２の処理を行う。
【０１２２】
ステップＳ１６２では、現在の時刻と、参照パスフレーズがサーバ１２０に何時受信されたのかを示す時刻情報とを比較し、両者が一定限度内、例えば５秒以内であれば、正当な認証要求である可能性有りとして以下のステップＳ１６４に進む。ステップＳ１６２で比較した時間の差が一定限度を超えている場合は、ステップＳ１６０において認証失敗と判断する。
【０１２３】
本実施形態で、時刻による認証をＭ＞＝Ｌの場合に限っているのは、時刻による判断が、認証要求の到着順序が逆転した場合に特に有効と考えられるからである。もちろん、Ｍ＞＝Ｌ以外の場合に上記のような時刻による判断が行われてもよい。
【０１２４】
次に、本発明の認証システムを構成するクライアント１１０、及びサーバ１２０として動作しうるパーソナル・コンピュータの構成例を、図１９を参照して説明する。上記本発明の構成要素であるクライアント１１０、及びサーバ１２０はそれぞれ、こうしたパーソナル・コンピュータでのみ実施されるとは限らない。より高性能なワークステーションやホストマシン、より簡単な機能を有するその他のコンピュータ等で実施することも可能である。
【０１２５】
パーソナル・コンピュータ２００は、ＣＰＵ２１０、メモリ２２０、外部記憶装置２３０、入力装置２４０、出力装置２５０、記録媒体駆動装置２６０、ネットワーク・インタフェース２７０、およびこれらの構成要素２１０〜２７０を相互に接続するバス２８０からなる。
【０１２６】
ＣＰＵ２１０は、パーソナル・コンピュータ２００内の各構成要素の処理を制御して、上述したクライアント１１０やサーバ１２０の各機能（例えば、認証制御部１１１、１２１、及び一方向性関数処理部１１３、１２３の動作）を実現する。
【０１２７】
メモリ２２０は、前記制御、および各処理を行うようＣＰＵ２１０を制御するプログラム、および当該プログラムが使用するデータを一時的に記憶する。
【０１２８】
外部記憶装置２３０は、本システムで必要なデータを記憶するハードディスク等の記憶装置である。パーソナル・コンピュータ２００がクライアント１１０として使用される場合、この外部記憶装置２３０内にはパラメータ記憶部１１２が含まれる。一方、サーバ１２０として使用される場合は、パラメータ記憶部１２２が含まれる。
【０１２９】
入力装置２４０は、マウス、キーボード等の、ＣＰＵ２１０に特定の指令を与えたり、外部記憶装置２３０に記憶するデータを入力するための装置である。当該要素は、本発明の認証システムに関しては必須の要素ではないが、クライアント１１０のユーザは、これらの入力装置２４０を用いてクライアント１１０にログインしたり、プログラムの実行をさせる等のために、サーバ１２０への認証要求を指示する。
【０１３０】
出力装置２５０は、ＣＲＴディスプレイやテレビモニタであり、ＣＰＵ２１０への指示やその他の入力を受付るための入力画面や、特定の情報を表示する表示画面を表示するために用いられる。
【０１３１】
また、必要に応じて、データ等を印刷出力するためのプリンターが出力装置として用いられる。
【０１３２】
記録媒体駆動装置２６０は、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、フレキシブルディスク等の記録媒体２９０の内容を読み出し、必要に応じて前記メモリ２２０や外部記憶装置２３０にコピーする。本発明の認証システムのクライアント１１０、及びサーバ１２０に各機能を実行させるためにＣＰＵ２１０に指令を与え制御する前記プログラムも当該記録媒体２９０に格納される場合があり、このプログラムは、必要に応じてメモリ２２０にロードされる。パーソナル・コンピュータ２００は、このメモリ２２０内にロードされた当該プログラムによって制御され、ＣＰＵ２１０はこのプログラムの命令に従って各種処理を実行し、本発明の認証システムを実現する。
【０１３３】
ネットワーク・インタフェース２７０は、パーソナル・コンピュータ２００をネットワーク３００に接続する。ネットワーク３００は、図１に示す通信路１３０に対応し、公衆電話回線、専用回線、インターネット等様々な態様のネットワーク、及びそれらの組み合わせを含む。
【０１３４】
前記ＣＰＵ２１０に指令を与え、本発明を実現するプログラムは、前述したような記録媒体２９０を介さずに当該ネットワーク３００を介してメモリ２２０にロードされる場合もある。
【０１３５】
また、当該プログラムは、システム全体として提供されるだけでなく、各クライアント、サーバ毎、即ち各パーソナル・コンピュータ毎に個別に提供されうる。
【０１３６】
【発明の効果】
本発明の第１の効果は、認証のための通信オーバーヘッドを減少させることができ、高速な認証が可能となることである。
【０１３７】
その理由は、クライアントから送られたパスフレーズに対して一方向性関数を適用すべき回数をサーバで推定するため、サーバから回数情報をクライアントに対して送付する必要がないためである。
【０１３８】
本発明の第２の効果は、クライアントは、認証要求がサーバに到達したことを確認することなく、連続的に認証要求を送ることが可能となることである。
【０１３９】
その理由は、サーバでの一方向性関数の回数の推定に際して、認証要求が通信途上で失われる場合や、認証要求の順序が逆転した場合をも考慮して推定するため、認証が常に成功しなくてもサーバは認証作業を継続でき、その結果クライアントは連続的に認証要求を送付できるからである。
【図面の簡単な説明】
【図１】本発明の認証システムの機能ブロック図である。
【図２】本発明の第１の実施形態における、クライアント１１０のパラメータ記憶部１１２の構成例を示す図である。
【図３】本発明の第１の実施形態における、サーバ１２０のパラメータ記憶部１２２の構成例を示す図である。
【図４】本発明の第１の実施形態における、クライアント１１０での認証要求生成・送信処理の一例を示すフローチャートである。
【図５】本発明の第１の実施形態において、クライアント１１０からサーバ１２０へ送付されるデータの構造を示す図である。
【図６】本発明の第１の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図７】本発明の第２の実施形態における、クライアント１１０のパラメータ記憶部１１２の構成例を示す図である。
【図８】本発明の第２の実施形態における、サーバ１２０のパラメータ記憶部１２２の構成例を示す図である。
【図９】本発明の第２の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１０】本発明の第３の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１１】本発明の第４の実施形態において、サーバ１２０のパラメータ記憶部１２２の構成例を示す図である。
【図１２】本発明の第４の実施形態における、クライアント１１０での認証要求生成・送信処理の一例を示すフローチャートである。
【図１３】本発明の第４の実施形態において、クライアント１１０からサーバ１２０へ送付されるデータの構造を示す図である。
【図１４】本発明の第４の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１５】本発明の第５の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１６】本発明の第６の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１７】本発明の第７の実施形態において、サーバ１２０のパラメータ記憶部１２２の構成例を示す図である。
【図１８】本発明の第７の実施形態において、サーバ１２０での認証処理の一例を示すフローチャートである。
【図１９】本発明のクライアント１１０、及びサーバ１２０を構成するパーソナル・コンピュータ２００の構成例を示す図である。
【符号の説明】
１００  認証システム
１１０  クライアント
１１１  認証制御部
１１２  パラメータ記憶部
１１３  一方向性関数処理部
１２０  サーバ
１２１  認証制御部
１２２  パラメータ記憶部
１２３  一方向性関数処理部
１３０  通信路
２００  パーソナル・コンピュータ
２１０  ＣＰＵ
２２０  メモリ
２３０  外部記憶装置
２４０  入力装置
２５０  出力装置
２６０  記録媒体駆動装置
２７０  ネットワーク・インタフェース
２８０  バス
２９０  記録媒体
３００  ネットワーク
【図１】
0004259021.tif 000002
【図２】
0004259021.tif 000003
【図３】
0004259021.tif 000004
【図４】
0004259021.tif 000005
【図５】
0004259021.tif 000006
【図６】
0004259021.tif 000007
【図７】
0004259021.tif 000008
【図８】
0004259021.tif 000009
【図９】
0004259021.tif 000010
【図１０】
0004259021.tif 000011
【図１１】
0004259021.tif 000012
【図１２】
0004259021.tif 000013
【図１３】
0004259021.tif 000014
【図１４】
0004259021.tif 000015
【図１５】
0004259021.tif 000016
【図１６】
0004259021.tif 000017
【図１７】
0004259021.tif 000018
【図１８】
0004259021.tif 000019
【図１９】
0004259021.tif 000020