(57)【要約】【課題】内部時計に障害があるコンピュータを的確に検出できるようにする。【解決手段】時刻情報収集手段１ｃにより、クライアント２，３，４が有するクライアント側内部時計で示されたローカル時刻が取得される。次に、遅延時間算出手段１ｄにより、クライアント２，３，４ごとの送出時刻と到着時刻とから、通信における遅延時間が算出される。そして、障害検出手段１ｅにより、遅延時間によってローカル時刻が補正され、クライアント２，３，４ごとに、サーバ側内部時計１ａとクライアント側内部時計との誤差が所定の閾値以内か否かが判断される。全てのクライアント２，３，４の誤差が閾値を超えていた場合、サーバ側内部時計１ａに障害があると判定される。誤差が閾値を超えているクライアントの数が所定の割合以下の場合、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定される。【選択図】図１
2009008444.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークで接続された複数の装置の時刻管理を行う時刻管理サーバにおいて、
時刻同期の基準となる時刻を発生させるサーバ側内部時計と、
管理対象の複数のクライアントが登録されたクライアント情報記憶手段と、
前記クライアント情報記憶手段に登録された前記クライアントそれぞれに対して時刻情報の取得要求を送信し、前記クライアントが有するクライアント側内部時計で示されたローカル時刻を取得し、前記取得要求の発信時の前記サーバ側内部時計の時刻である送出時刻、当該ローカル時刻、および当該ローカル時刻取得時の前記サーバ側内部時計の時刻である到着時刻を組にして前記クライアント情報記憶手段に格納する時刻情報収集手段と、
前記クライアント情報記憶手段に格納された前記クライアントそれぞれの前記送出時刻と前記到着時刻とから、前記時刻管理サーバと前記クライアントそれぞれとの間の一方向分の通信における遅延時間を算出する遅延時間算出手段と、
前記遅延時間算出手段で算出された前記遅延時間によって前記ローカル時刻を補正し、補正された前記ローカル時刻と前記送出時刻または前記到着時刻との差を前記サーバ側内部時計と前記クライアント側内部時計との誤差とし、前記クライアントごとの誤差が所定の閾値以内か否かを判断し、全ての前記クライアントの誤差が前記閾値を超えていた場合、前記サーバ側内部時計に障害があると判定し、誤差が前記閾値を超えている前記クライアントの数が所定の割合以下の場合、誤差が前記閾値を超えている前記クライアントの前記クライアント側内部時計に障害があると判定する障害検出手段と、
を有することを特徴とする時刻管理サーバ。
【請求項２】
前記遅延時間算出手段は、前記クライアント情報記憶手段に格納された前記クライアントごとの前記送出時刻と前記到着時刻とから、前記時刻管理サーバと前記クライアントそれぞれとの間の一方向分の通信における遅延時間の平均値を算出し、算出された平均値を前記クライアントそれぞれとの通信における遅延時間とすることを特徴とする請求項１記載の時刻管理サーバ。
【請求項３】
前記障害検出手段により前記サーバ側内部時計が正常と判定された場合、前記クライアント側内部時計が正常と判定された前記クライアントとの間で、時刻を一致させるための時刻同期処理を実行することを特徴とする時刻同期手段をさらに有することを特徴とする請求項１記載の時刻管理サーバ。
【請求項４】
前記障害検出手段により前記クライアント側内部時計に障害があると判定された前記クライアントに対して、前記クライアント側内部時計を用いたサービスの停止を指示するサービス停止指示手段をさらに有することを特徴とする請求項１記載の時刻管理サーバ。
【請求項５】
前記障害検出手段は、誤差が前記閾値を超えている前記クライアントの数が所定の割合を超えている場合、正確な時刻が不明であると判定することを特徴とする請求項１記載の時刻管理サーバ。
【請求項６】
前記障害検出手段により正確な時刻が不明であると判定された場合、全ての前記クライアントに対して、前記クライアント側内部時計を用いたサービスの停止を指示するサービス停止指示手段をさらに有することを特徴とする請求項５記載の時刻管理サーバ。
【請求項７】
ネットワークで接続された複数の装置の時刻管理を、時刻同期の基準となる時刻を発生させるサーバ側内部時計を有するコンピュータで行うための時刻管理プログラムにおいて、
前記コンピュータを、
管理対象の複数のクライアントが登録されたクライアント情報記憶手段、
前記クライアント情報記憶手段に登録された前記クライアントそれぞれに対して時刻情報の取得要求を送信し、前記クライアントが有するクライアント側内部時計で示されたローカル時刻を取得し、前記取得要求の発信時の前記サーバ側内部時計の時刻である送出時刻、当該ローカル時刻、および当該ローカル時刻取得時の前記サーバ側内部時計の時刻である到着時刻を組にして前記クライアント情報記憶手段に格納する時刻情報収集手段、
前記クライアント情報記憶手段に格納された前記クライアントそれぞれの前記送出時刻と前記到着時刻とから、前記時刻管理サーバと前記クライアントそれぞれとの間の一方向分の通信における遅延時間を算出する遅延時間算出手段、
前記遅延時間算出手段で算出された前記遅延時間によって前記ローカル時刻を補正し、補正された前記ローカル時刻と前記送出時刻または前記到着時刻との差を前記サーバ側内部時計と前記クライアント側内部時計との誤差とし、前記クライアントごとの誤差が所定の閾値以内か否かを判断し、全ての前記クライアントの誤差が前記閾値を超えていた場合、前記サーバ側内部時計に障害があると判定し、誤差が前記閾値を超えている前記クライアントの数が所定の割合以下の場合、誤差が前記閾値を超えている前記クライアントの前記クライアント側内部時計に障害があると判定する障害検出手段、
として機能させることを特徴とする時刻管理プログラム。
【請求項８】
ネットワークで接続された複数の装置の時刻管理を、時刻同期の基準となる時刻を発生させるサーバ側内部時計を有するコンピュータで行うための時刻管理方法において、
時刻情報収集手段が、管理対象の複数のクライアントが登録されたクライアント情報記憶手段に登録された前記クライアントそれぞれに対して時刻情報の取得要求を送信し、前記クライアントが有するクライアント側内部時計で示されたローカル時刻を取得し、前記取得要求の発信時の前記サーバ側内部時計の時刻である送出時刻、当該ローカル時刻、および当該ローカル時刻取得時の前記サーバ側内部時計の時刻である到着時刻を組にして前記クライアント情報記憶手段に格納し、
遅延時間算出手段が、前記クライアント情報記憶手段に格納された前記クライアントそれぞれの前記送出時刻と前記到着時刻とから、前記時刻管理サーバと前記クライアントそれぞれとの間の一方向分の通信における遅延時間を算出し、
障害検出手段が、前記遅延時間算出手段で算出された前記遅延時間によって前記ローカル時刻を補正し、補正された前記ローカル時刻と前記送出時刻または前記到着時刻との差を前記サーバ側内部時計と前記クライアント側内部時計との誤差とし、前記クライアントごとの誤差が所定の閾値以内か否かを判断し、
前記障害検出手段が、全ての前記クライアントの誤差が前記閾値を超えていた場合、前記サーバ側内部時計に障害があると判定し、
前記障害検出手段が、誤差が前記閾値を超えている前記クライアントの数が所定の割合以下の場合、誤差が前記閾値を超えている前記クライアントの前記クライアント側内部時計に障害があると判定する、
ことを特徴とする時刻管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークで接続された複数の装置の時刻管理を行うための時刻管理サーバ、時刻管理プログラム、および時刻管理方法に関し、特に内部時計に障害がある装置を検出可能な時刻管理サーバ、時刻管理プログラム、および時刻管理方法に関する。
【背景技術】
【０００２】
コンピュータを用いて処理を行う場合、処理を実行した時刻をタイムスタンプとして記録する場合がある。たとえば、文書の内容を承認した時刻を示すタイムスタンプを電子署名に付加する場合がある。これにより、タイムスタンプの偽造等が困難となる。
【０００３】
このように、タイムスタンプによって文書内容の信頼性を確保する場合、その前提として、コンピュータの内部時計が正確であることが望まれる。そこで、多くの場合、ネットワーク上に時刻を管理するサーバ（以下、時刻管理サーバと呼ぶ）を設置する。その時刻管理サーバは、正確な時刻を通知する電波を定期的に受信して、内部の時計を正確な時刻に合わせる。時刻を通知する電波としては、たとえば、標準時報局から送信される標準電波（コールサイン：ＪＪＹ）やＧＰＳ（Global positioning system）における衛星から送られる電波がある。時刻管理サーバは正確な内部時計を有しており、取得した時刻情報を基準として、正確な時刻を管理する。そして、時刻管理サーバは他のコンピュータからの要求に応じて、時刻情報を送信する。
【０００４】
時刻管理サーバにネットワークを介して接続された他の  コンピュータは、ＮＴＰ（Network Time Protocol）等の時刻合わせ用のプロトコルを用い、時刻管理サーバから時刻情報を取得する。時刻情報を取得したコンピュータは、自己の内部時計を、時刻管理サーバから取得した時刻に合わせる。
【０００５】
ところが、時刻管理サーバのような特定のサーバで時刻情報を集中管理すると、時刻管理サーバにおける内部時計の異常に対処できない。すなわち、時刻管理サーバの内部時計に異常があっても、他のコンピュータでそれを検出することができない。その結果、ネットワーク上の全てのコンピュータの時刻が狂ってしまう。
【０００６】
そこで、従来は、分散システムにおける全ての通信局が自局の時刻を他の通信局へ送信し、多数決によってシステムの基準時刻を選択することが考えられている（たとえば、特許文献１参照）。
【０００７】
また、外部接続された時計装置から外部時刻データを入力し、外部時刻データを計算機のシステム時刻の取り込み、あるいは異常警報等の異常処理を行う技術がある（たとえば、特許文献２参照）。
【特許文献１】特開平３−７７１１４号公報
【特許文献２】特開平５−１６５５４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１のような多数決方式では、多数のコンピュータの内部時計が同じ特性を有しているとき、過半数のコンピュータの時刻が正確な時刻から同じようにずれる可能性がある。たとえば、時刻が進みがちな内部時計を有するコンピュータが多数ある場合、多数決によって、正確な時刻よりも進んだ時刻が基準時刻として選択される場合が有り得る。
【０００９】
このように、コンピュータシステムの時刻管理では、時刻管理サーバの時計が絶対に狂わないという保証が困難であるとともに、複数のコンピュータの多数決を取ったとしてもその時刻が正しいという保証はない。すなわち、サーバ時計の時刻がずれているか、クライアント時計の時刻がずれているかの判断は困難であった。
【００１０】
しかも、コンピュータシステム全体での時刻情報の同期を頻繁に行っていたのでは、システムの処理効率を低下させてしまう。そのため、各コンピュータがある一定間隔で時刻情報の同期を行う場合、同期を行ってから次の同期タイミングまでは、内部時計によって時刻を管理する必要がある。すると、コンピュータの内部時計が正常に動作していない場合、次の時刻情報の同期までの間に大きく時刻が狂うことがある。その間、そのコンピュータで実行した処理のタイムスタンプは誤った時刻となる。このような事態を回避するには、内部時計が正常に動作していないコンピュータを的確に見つけ出し、そのコンピュータによる業務処理を停止する必要がある。
【００１１】
なお、コンピュータの内部時計が正常に動作していない場合、特許文献２に示したような外部の時計装置との比較により、異常処理を行うことも可能である。ただし、この場合、外部の時計装置が正確であることが前提となっている。すなわち、外部の時計装置が異常動作した場合については、その障害を検出することができない。
【００１２】
このように、時刻情報の同期を取る前提として、時刻同期の基準となる時刻が正確であることの保証に加え、各コンピュータの内部時計が正常に機能していることが必要である。時刻同期の基準となる時刻が正確であることの保証は、基準となる時刻を管理している時刻管理サーバの内部時計が正常に機能していることを確認することで担保できる。従って、誤った時刻のタイムスタンプが設定されることを防止するには、時刻管理サーバとクライアントとを含め、ネットワーク上の各コンピュータのうち内部時計に障害があるコンピュータを的確に検出することが必要となる。
【００１３】
本発明はこのような点に鑑みてなされたものであり、内部時計に障害があるコンピュータを的確に検出することができる時刻管理サーバ、時刻管理プログラム、および時刻管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明では上記課題を解決するために、図１に示すような時刻管理サーバ１が提供される。時刻管理サーバ１は、ネットワークで接続された複数の装置の時刻管理を行うために、サーバ側内部時計１ａ、クライアント情報記憶手段１ｂ、時刻情報収集手段１ｃ、遅延時間算出手段１ｄ、および障害検出手段１ｅを有している。サーバ側内部時計１ａは、時刻同期の基準となる時刻を発生させる。クライアント情報記憶手段１ｂは、管理対象の複数のクライアント２，３，４が登録されている。時刻情報収集手段１ｃは、クライアント情報記憶手段１ｂに登録されたクライアント２，３，４それぞれに対して時刻情報の取得要求を送信し、クライアント２，３，４が有するクライアント側内部時計で示されたローカル時刻を取得し、取得要求の発信時のサーバ側内部時計１ａの時刻である送出時刻、当該ローカル時刻、および当該ローカル時刻取得時の前記サーバ側内部時計の時刻である到着時刻を組にしてクライアント情報記憶手段１ｂに格納する。遅延時間算出手段１ｄは、クライアント情報記憶手段１ｂにクライアント２，３，４ごとに格納された送出時刻と到着時刻とから、時刻管理サーバ１とクライアント２，３，４との間の一方向分の通信における遅延時間を算出する。障害検出手段１ｅは、遅延時間算出手段１ｄで算出された遅延時間によってローカル時刻を補正し、補正されたローカル時刻と送出時刻または到着時刻との差をサーバ側内部時計１ａとクライアント側内部時計との誤差とし、クライアント２，３，４ごとの誤差が所定の閾値以内か否かを判断し、全てのクライアント２，３，４の誤差が閾値を超えていた場合、サーバ側内部時計１ａに障害があると判定し、誤差が閾値を超えているクライアントの数が所定の割合以下の場合、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定する。
【００１５】
このような時刻管理サーバ１によれば、まず、時刻情報収集手段１ｃにより、クライアント２，３，４が有するクライアント側内部時計で示されたローカル時刻が取得され、取得要求の送出時刻、当該ローカル時刻、およびローカル時刻の到着時刻が組にしてクライアント情報記憶手段１ｂに格納される。次に、遅延時間算出手段１ｄにより、クライアント２，３，４ごとの送出時刻と到着時刻とから、時刻管理サーバ１とクライアント２，３，４との間の一方向分の通信における遅延時間が算出される。そして、障害検出手段１ｅにより、遅延時間によってローカル時刻が補正され、クライアント２，３，４ごとに、サーバ側内部時計１ａとクライアント側内部時計との誤差が所定の閾値以内か否かが判断される。全てのクライアント２，３，４の誤差が閾値を超えていた場合、障害検出手段１ｅにより、サーバ側内部時計１ａに障害があると判定される。誤差が閾値を超えているクライアントの数が所定の割合以下の場合、障害検出手段１ｅにより、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定される。
【発明の効果】
【００１６】
本発明では、全てのクライアントの誤差が閾値を超えていた場合、サーバ側内部時計に障害があると判定し、誤差が閾値を超えているクライアントの数が所定の割合以下の場合、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定するようにした。これにより、クライアントの内部時計に障害がある場合に加え、サーバ側内部時計に障害がある場合も、その障害を検出することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、発明の概要を示す図である。時刻管理サーバ１は、ネットワークを介して複数のクライアント２，３，４に接続されている。各クライアント２，３，４は内部時計を有しており、内部時計で示される時刻を用いた処理を実行している。内部時計は、たとえばクライアント２，３，４のマザーボードに実装されたＲＴＣ（Real Time Clock）と呼ばれる時計専用の電子回路である。
【００１８】
時刻管理サーバ１は、ネットワークで接続された複数の装置の時刻管理を行うために、サーバ側内部時計１ａ、クライアント情報記憶手段１ｂ、時刻情報収集手段１ｃ、遅延時間算出手段１ｄ、障害検出手段１ｅ、時刻同期手段１ｆ、およびサービス停止指示手段１ｇを有する。
【００１９】
サーバ側内部時計１ａは、時刻同期の基準となる時刻を発生させる。サーバ側内部時計１ａは、たとえば、標準時報局から送信される標準電波やＧＰＳの衛星からの時刻を通知する電波を定期的に受信して、時刻合わせをする機能を有する。また、サーバ側内部時計１ａは、ルビジウム発信器等の正確な発信器を内蔵した精度の高い時計である。
【００２０】
クライアント情報記憶手段１ｂは、管理対象の複数のクライアント２，３，４が登録されている。たとえば、クライアント情報記憶手段１ｂには、各クライアント２，３，４の識別情報として、ＩＰ（Internet Protocol）アドレスが設定される。
【００２１】
時刻情報収集手段１ｃは、クライアント情報記憶手段１ｂに登録されたクライアント２，３，４それぞれに対して時刻情報の取得要求を送信する。その結果、時刻情報収集手段１ｃは、クライアント２，３，４が有するクライアント側内部時計で示されたローカル時刻を取得する。そして、時刻情報収集手段１ｃは、取得要求発信時のサーバ側内部時計１ａの時刻である送出時刻、当該ローカル時刻、および当該ローカル時刻取得時の前記サーバ側内部時計の時刻である到着時刻を組にしてクライアント情報記憶手段１ｂに格納する。
【００２２】
遅延時間算出手段１ｄは、クライアント情報記憶手段１ｂにクライアント２，３，４ごとに格納された送出時刻と到着時刻とから、時刻管理サーバ１とクライアント２，３，４との間の一方向分の通信における遅延時間を算出する。遅延時間は、クライアント２，３，４が応答パケットを送出してから、その応答パケットを時刻管理サーバ１が受信するまでの時間である。クライアント２，３，４それぞれに対する送出時刻から到着時刻までの時間差の平均を２で割ることで、一方向分の通信の遅延時間をクライアント２，３，４ごとに求めることができる。
【００２３】
なお、遅延時間算出手段１ｄは、クライアント２，３，４ごとの遅延時間の平均値を求め、その平均値を各クライアント２，３，４との間の通信における遅延時間とすることもできる。
【００２４】
障害検出手段１ｅは、遅延時間算出手段１ｄで算出された遅延時間によってローカル時刻を補正し、補正されたローカル時刻と送出時刻または到着時刻との差をサーバ側内部時計１ａとクライアント側内部時計との誤差とする。
【００２５】
ここで、補正されたローカル時刻と送出時刻との差を取る場合、障害検出手段１ｅは、ローカル時刻から遅延時間を減算することで補正を行う。また、補正されたローカル時刻と到着時刻との差を取る場合、障害検出手段１ｅは、ローカル時刻から遅延時間を減算することで補正を行う。このような補正を行うことにより、ネットワーク上のパケット伝送時間も考慮したうえで、サーバ側内部時計とクライアント側内部時計と誤差を正確に計算できる。
【００２６】
さらに、障害検出手段１ｅは、クライアント２，３，４ごとの誤差が所定の閾値以内か否かを判断する。全てのクライアント２，３，４の誤差が閾値を超えていた場合、障害検出手段１ｅは、サーバ側内部時計１ａに障害があると判定する。また、誤差が閾値を超えているクライアントの数が所定の割合以下の場合、障害検出手段１ｅは、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定する。
【００２７】
時刻同期手段１ｆは、障害検出手段１ｅによりサーバ側内部時計１ａが正常と判定された場合、クライアント側内部時計が正常と判定されたクライアントとの間で、時刻を一致させるための時刻同期処理を実行する。図１の例では、時刻同期手段１ｆは、クライアント２，３との間で時刻同期処理を行っている。
【００２８】
サービス停止指示手段１ｇは、障害検出手段１ｅによりクライアント側内部時計に障害があると判定された前記クライアントに対して、クライアント側内部時計を用いたサービスの停止を指示する。図１の例では、サービス停止指示手段１ｇは、クライアント４に対してサービス停止の指示を出している。
【００２９】
このような時刻管理サーバ１によれば、まず、時刻情報収集手段１ｃにより、クライアント２，３，４が有するクライアント側内部時計で示されたローカル時刻が取得される。そして、時刻情報収集手段１ｃにより、取得要求の送出時刻、当該ローカル時刻、およびローカル時刻の到着時刻が組にしてクライアント情報記憶手段１ｂに格納される。
【００３０】
次に、遅延時間算出手段１ｄにより、クライアント２，３，４ごとの送出時刻と到着時刻とから、時刻管理サーバ１とクライアント２，３，４との間の一方向分の通信における遅延時間が算出される。そして、障害検出手段１ｅにより、遅延時間によってローカル時刻が補正され、クライアント２，３，４ごとに、サーバ側内部時計１ａとクライアント側内部時計との誤差が所定の閾値以内か否かが判断される。
【００３１】
全てのクライアント２，３，４の誤差が閾値を超えていた場合、障害検出手段１ｅにより、サーバ側内部時計１ａに障害があると判定される。誤差が閾値を超えているクライアントの数が所定の割合以下の場合、障害検出手段１ｅにより、誤差が閾値を超えているクライアントのクライアント側内部時計に障害があると判定される。
【００３２】
障害検出手段１ｅによりサーバ側内部時計１ａが正常と判定された場合、時刻同期手段１ｆによって、クライアント側内部時計が正常と判定されたクライアントとの間で、時刻同期処理が実行される。また、障害検出手段１ｅによりクライアント側内部時計に障害があると判定された前記クライアントに対しては、サービス停止指示手段１ｇにより、クライアント側内部時計を用いたサービスの停止の指示が出される。
【００３３】
このようにして、クライアント２，３，４の内部時計に障害がある場合に加え、サーバ側内部時計１ａに障害がある場合も、その障害を検出することが可能となる。
次に、本実施の形態の詳細を説明する。なお、以下の説明では、サーバの内部時計の略称をＳＴＳとし、クライアントの内部時計の略称をＳＴＣとする。
【００３４】
図２は、本実施の形態のシステム構成例を示す図である。本実施の形態に係るネットワークシステムでは、ネットワーク１０を介して時刻管理サーバ１００とクライアント２００，２００ａ，・・・，２００ｍが接続されている。
【００３５】
時刻管理サーバ１００は、ネットワークにおける時刻を管理するコンピュータである。時刻管理サーバ１００は、ＧＰＳにおける衛星（ＧＰＳ衛星）２１，２２，２３，・・・から時刻情報を含む電波を受信し、正確な時刻を取得する機能を有する。また、時刻管理サーバ１００は、クライアント２００，２００ａ，・・・，２００ｍから時刻情報（クライアントのローカル時刻）を収集し、時刻管理サーバ１００およびクライアント２００，２００ａ，・・・，２００ｍにおける内部時計の障害の有無を判定する。
【００３６】
そして、時刻管理サーバ１００は、時刻管理サーバ１００自身の内部時計が正常である場合、内部時計が正常であると判定されたクライアントとの間で時刻同期を行う。この時刻同期処理では、各クライアントの内部時計が、時刻管理サーバ１００の内部時計と同じ時刻に修正される。なお、時刻管理サーバ１００は、内部時計に障害があると判定されたクライアントに対しては、内部時計を利用したタイムスタンプ機能のサービス停止を指示する。
【００３７】
クライアント２００，２００ａ，・・・，２００ｍは、内部時計の時刻情報をタイムスタンプとして利用したサービスを実行するコンピュータである。本実施の形態では、時刻情報を利用したサービスとして、ファイルに対する署名処理を行っているものとする。なお、クライアント２００，２００ａ，・・・，２００ｍの内部時計は、システム構築時に時刻管理サーバ１００の内部時計との間で時刻同期が行われ、時刻管理サーバ１００の内部時計と同じ時刻に修正される。
【００３８】
さらに、クライアント２００，２００ａ，・・・，２００ｍは、電源投入時に時刻管理サーバ１００に対して内部時計の時刻情報を送信し、内部時計が正常であることの認証を受ける。クライアント２００，２００ａ，・・・，２００ｍは、時刻管理サーバ１００において内部時計が正常であると判定された場合、時刻管理サーバ１００との間で時刻同期を行い、内部時計を時刻管理サーバ１００から通知された時刻情報に合わせる。また、クライアント２００，２００ａ，・・・，２００ｍは、内部時計に障害がある場合、時刻管理サーバ１００からタイムスタンプ機能のサービス停止指示を受け取り、タイムスタンプを利用した機能を停止する。
【００３９】
なお、本実施の形態では、時刻管理対象のクライアント２００，２００ａ，・・・，２００ｍが全て起動されたときに、内部時計の障害判定および時刻同期が行われる。そのため、システムを運用する管理者は、毎朝、クライアント２００，２００ａ，・・・，２００ｍの電源を投入するものとする。
【００４０】
このようなシステム構成において、本実施の形態では、複数のクライアント２００，２００ａ，・・・，２００ｍそれぞれに内部時計を準備し、システム構築時に時刻同期が行われる。これにより、クライアント２００，２００ａ，・・・，２００ｍの内部時計が、時刻管理サーバ１００の内部時計と同じ時刻に修正される。
【００４１】
その後は、所定のタイミングで時刻管理サーバ１００から複数のクライアント２００，２００ａ，・・・，２００ｍに対して時刻情報（ＳＴＳ送出時刻）を含む時刻情報の取得要求を送る。時刻管理サーバ１００は、応答されてきたクライアントの内部時計の時刻（ＳＴＣローカル時刻）を取得する。また、時刻管理サーバ１００は、各クライアント２００，２００ａ，・・・，２００ｍからＳＴＣローカル時刻を取得したときの時刻情報の取得要求の送出時刻と応答の到着時刻から平均路遅延時間を計算する。さらに、平均遅延時間でＳＴＣローカル時刻を補正して、各クライアントの内部時計の時刻と時刻管理サーバの内部時計の時刻との誤差を求める。
【００４２】
そして、時刻管理サーバ１００は、クライアントごとに求められた誤差が閾値以下か否かによって、時刻管理サーバおよび各クライアントの内部時計が正常か否かの判別処理を行う。全てのクライアントに関する内部時計の誤差が一定の閾値内に収まるのであれば、時刻管理サーバ１００と各クライアント２００，２００ａ，・・・，２００ｍの内部時計が正常である。大多数のクライアントの内部時計の誤差が、一定の閾値内に収まらない場合、時刻管理サーバ１００の内部時計に異常がある。この場合は、たとえば、時刻管理サーバ１００の内部時計に異常があるとの警告を出すことができる。また、少数のクライアントの内部時計の誤差が閾値内に収まらない場合、誤差が閾値を超えるクライアントの内部時計に異常がある。この場合は、該当するクライアントの内部時計に関し、時刻異常と警告を出すことができる。
【００４３】
このようにして、本実施の形態では、複数のクライアント情報およびサーバ時刻情報を使って、信頼性の高い相互の時刻監視システムが提供される。
以下、このような処理を実現するための時刻管理サーバ１００とクライアント２００，２００ａ，・・・，２００ｍとの機能について具体的に説明する。
【００４４】
図３は、本実施の形態に用いる時刻管理サーバのハードウェア構成例を示す図である。時刻管理サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、通信インタフェース１０６、および時刻管理回路１０７が接続されている。
【００４５】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００４６】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００４７】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４８】
時刻管理回路１０７は、誤差の少ない内部時計を有し、時刻情報を管理している。さらに、時刻管理回路１０７にはＧＰＳアンテナ２０が接続されている。時刻管理回路１０７は、定期的に、ＧＰＳ２１，２２，２３，・・・から送信された時刻を示す電波を、ＧＰＳアンテナ２０を介して受信する。時刻管理回路１０７は、受信した電波によって現在の時刻を認識し、内部時計をその時刻に合わせる。
【００４９】
図４は、本実施の形態に用いるクライアントのハードウェア構成例を示す図である。クライアント２００は、ＣＰＵ２０１によって装置全体が制御されている。ＣＰＵ２０１には、バス２０８を介してＲＡＭ２０２、ハードディスクドライブ（ＨＤＤ）２０３、グラフィック処理装置２０４、入力インタフェース２０５、ＰＣカードインタフェース２０６、および通信インタフェース２０７が接続されている。
【００５０】
ＲＡＭ２０２には、ＣＰＵ２０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、ＣＰＵ２０１による処理に必要な各種データが格納される。ＨＤＤ２０３には、ＯＳやアプリケーションプログラムが格納される。
【００５１】
グラフィック処理装置２０４には、モニタ３１が接続されている。グラフィック処理装置２０４は、ＣＰＵ２０１からの命令に従って、画像をモニタ３１の画面に表示させる。入力インタフェース２０５には、キーボード３２とマウス３３とが接続されている。入力インタフェース２０５は、キーボード３２やマウス３３から送られてくる信号を、バス２０８を介してＣＰＵ２０１に送信する。
【００５２】
ＰＣカードインタフェース２０６は、ＰＣカード３４を接続することができる。そして、ＰＣカードインタフェース２０６は、接続されたＰＣカード３４との間でデータの送受信を行う。本実施の形態で使用するＰＣカード３４は、時計回路３４ａを内蔵している。時計回路３４ａは、内部時計によって現在の時刻を管理している。ＰＣカード３４は、クライアント２００からの要求に応じて、時計回路３４ａで示される時刻情報をクライアント２００に渡す。
【００５３】
通信インタフェース２０７は、ネットワーク１０に接続されている。通信インタフェース２０７は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００５４】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図４では、クライアント２００のハードウェア構成のみを示したが、他のクライアント２００ａ，・・・，２００ｍも同様のハードウェア構成で実現することができる。
【００５５】
次に、ネットワークを介した時計監視を行うために時刻管理サーバ１００と各クライアント２００，２００ａ，・・・，２００ｍとが有する機能について説明する。
図５は、時刻管理サーバとクライアントとの機能を示すブロック図である。時刻管理サーバ１００は、クライアント情報記憶部１１０、時刻情報収集部１２０、平均遅延時間算出部１３０、障害判定部１４０、署名管理部１５０、および時刻同期処理部１６０を有している。
【００５６】
クライアント情報記憶部１１０は、時刻監視対処となるクライアントに関する情報が記憶されている。具体的には、クライアント情報記憶部１１０には、時刻監視対象のクライアントのＩＰアドレスが予め登録されている。そして、クライアント情報記憶部１１０には、各クライアントのＩＰアドレスに対応付けて時刻情報の登録領域が設けられている。
【００５７】
時刻情報収集部１２０は、予め決められた時刻になると、クライアント２００，２００ａ，・・・，２００ｍからの時刻情報の収集を開始する。たとえば、時刻情報収集部１２０は、毎日午前７時になると、クライアント２００，２００ａ，・・・，２００ｍが起動されるのを待ち、起動されたクライアントに対して時刻情報の取得要求を送信する。この取得要求には、その取得要求を送信した時刻（ＳＴＳ送出時刻）が含まれる。そして、時刻情報収集部１２０は、取得した時刻通知をクライアントから受け取る。受け取った時刻通知には、ＳＴＳ送出時刻、ＳＴＣその時刻通知をクライアントが応答した時刻（ＳＴＣローカル時刻）、およびＳＴＳ送出時刻が含まれる。時刻情報収集部１２０は、ＳＴＳ送出時刻、ＳＴＣローカル時刻、および時刻通知を取得した時刻（ＳＴＳ到着時刻）を組にして、クライアント情報記憶部１１０内の該当するクライアントのＩＰアドレスに対応付けて登録する。
【００５８】
平均遅延時間算出部１３０は、クライアント２００，２００ａ，・・・，２００ｍから取得した時刻情報に基づいて、時刻管理サーバ１００とクライアント２００，２００ａ，・・・，２００ｍとの間の通信（一方向分）における各平均遅延時間を算出する。具体的には、平均遅延時間算出部１３０は、クライアント情報記憶部１１０を参照し、全てのクライアントのＩＰアドレスに対応付けて、時刻情報が登録されていることを確認する。そして、平均遅延時間算出部１３０は、クライアント情報記憶部１１０に登録された情報に基づいて、時刻管理サーバ１００とクライアント２００，２００ａ，・・・，２００ｍとの間の一方向分の通信における平均遅延時間を算出する。平均遅延時間は、クライアントごとの遅延時間を平均することで算出できる。具体的には、クライアントごとにＳＴＳ送出時刻とＳＴＳ到着時刻との差を２で除算し、クライアントごとの遅延時間を求める。クライアントごとに求められた遅延時間を合算し、時刻管理対象となっているクライアントの総数で除算すれば、通信の一方向分の平均遅延時間となる。
【００５９】
障害判定部１４０は、各クライアント２００，２００ａ，・・・，２００ｍから取得した時刻情報に基づいて、時刻管理サーバ１００自身、あるいはクライアント２００，２００ａ，・・・，２００ｍの中から、内部時刻に障害があるコンピュータを検出する。具体的には、障害判定部１４０は、各クライアント２００，２００ａ，・・・，２００ｍから取得したＳＴＣローカル時刻に平均遅延時間を加算して、値を補正する。そして、障害判定部１４０は、ＳＴＳ到着時刻と、平均遅延時間で補正したＳＴＣローカル時刻との差（誤差）をクライアントごと計算する。さらに、障害判定部１４０は、クライアントごとに計算した誤差が所定の閾値以下か否かを判断する。閾値は、たとえば５０ｍｓ程度とする。
【００６０】
障害判定部１４０は、全てのクライアントにおいて誤差が閾値以下であれば、全てのコンピュータが正常であると判定する。障害判定部１４０は、全てのクライアントにおいて誤差が閾値を超えている場合、時刻管理サーバ１００の内部時計に障害があると判定する。障害判定部１４０は、所定の数以下のクライアントにおいて誤差が閾値を超えていれば、誤差が閾値を超えたクライアントについては内部時計に障害があると判定する。それ以外のクライアントおよび時刻管理サーバ１００については、内部時計が正常であると判断する。障害判定部１４０は、所定の数を超える数（全数の場合を除く）のクライアントにおいて誤差が閾値を超えていれば、システム全体において保証できる正確な時刻が不明であると判断する。障害判定部１４０は、判定結果を署名管理部１５０に渡す。
【００６１】
署名管理部１５０は、障害判定部１４０において内部時計に障害有りと判定されたクライアントに対して、署名機能停止通知を送信する。また、署名管理部１５０は、時刻管理サーバ１００自身の内部時計に障害有りと判定された場合、全てのクライアント２００，２００ａ，・・・，２００ｍに対して、署名機能停止通知を送信する。すなわち、時刻管理サーバ１００の内部時計が信用できない場合、クライアント２００，２００ａ，・・・，２００ｍが時刻管理サーバ１００と時刻同期を行っても、修正された時刻が正しいとは限らない。そのため、クライアント２００，２００ａ，・・・，２００ｍの内部時計の時刻の正確性も保証できなくなる。そのため、時刻管理サーバ１００の内部時計に障害があると判定されたときには、全てのクライアント２００，２００ａ，・・・，２００ｍにおいて、署名処理を停止する必要がある。さらに、署名管理部１５０は、システム全体において保証できる正確な時刻が不明な場合にも、全てのクライアント２００，２００ａ，・・・，２００ｍに対して、署名機能停止通知を送信する。
【００６２】
時刻同期処理部１６０は、障害判定部１４０において内部時計が正常である旨の判定を受けたクライアントとの間で時刻同期処理を行う。具体的には、時刻同期処理部１６０は、内部時計が正常であると判定されたクライアントに対して、その旨を通知する（この通知を、時刻同期許可通知とする）。なお、通知先となるクライアントのＩＰアドレスは、クライアント情報記憶部１１０を参照して判断する。そして、時刻同期処理部１６０は、時刻同期許可通知を送信したクライアントからＳＴＳの取得要求を受け取ると、時刻管理回路１０７で管理されている現在の内部時刻を参照し、その内部時刻をＳＴＳとしてクライアントに送信する。なお、時刻同期処理部１６０が行うクライアントとの通信は、たとえばＮＴＰを用いて行うことができる。
【００６３】
クライアント２００には、時刻情報送信部２１０、署名処理部２２０、および時刻同期処理部２３０を有している。
時刻情報送信部２１０は、時刻管理サーバ１００から時刻情報の取得要求を受け取ると、クライアント２００自身の内部時計を参照し、ＳＴＣを取得する。本実施の形態では、ＰＣカード３４を用いたタイムスタンプ処理を伴うサービスを提供するための時刻管理であるため、ＰＣカード３４内の時計回路３４ａで示される時刻がＳＴＣとして扱われる。時刻情報送信部２１０は、ＳＴＣを取得すると、そのＳＴＣと時刻情報の取得要求に含まれるＳＴＳとを含む応答を時刻管理サーバ１００に対して送信する。
【００６４】
署名処理部２２０は、クライアント２００内で作成される所定のファイルに電子署名を付与する機能を有している。署名処理部２２０は、ファイルに電子署名を付与する際に、電子署名に対してタイムスタンプを施す。具体的には、署名処理部２２０は、操作入力等によりファイルへの署名を付与する処理要求を受け取ると、操作を行ったユーザの電子署名の作成をＰＣカード３４に指示する。この際、署名対象のファイルもＰＣカード３４に渡される。すると、ＰＣカード３４が、ファイルの内容とそのときの時刻（ＳＴＣ）に応じた電子署名を生成し、ファイルに付加する。そして、署名処理部２２０は、電子署名が付加されたファイルをＨＤＤ２０３等に格納する。以後、署名処理部２２０は、ＰＣカード３４を利用して、電子署名が付加されたファイルの改ざんチェック行うことができる。
【００６５】
また、署名処理部２２０は、時刻管理サーバ１００から署名機能停止通知を受け取ると、署名処理を停止する。すなわち、署名処理部２２０は、時刻管理サーバ１００によって、ＰＣカード３４内蔵の時計回路（ＳＴＣ）が異常と判定された場合、署名の付加、改ざんチェック機能を利用停止する。
【００６６】
時刻同期処理部２３０は、時刻管理サーバ１００との間で時刻の同期処理を行う。具体的には、時刻同期処理部２３０は、時刻管理サーバ１００による障害判定により、クライアント２００の内部時計が正常である旨の通知（時刻同期許可通知）を受け取ると、時刻管理サーバ１００と時刻同期処理を行う。時刻同期処理では、まず、時刻同期処理部２３０から時刻管理サーバ１００に内部時刻（ＳＴＳ）の取得要求を送信する。そして、時刻同期処理部２３０は、取得したＳＴＳを用いて、内部時計の時刻を更新する。本実施の形態では、ＰＣカード３４に内蔵された時計回路３４ａが示す時刻を内部時計として取り扱っている。従って、時刻同期処理部２３０は、時計回路３４ａの時刻をＳＴＳに合わせる。
【００６７】
なお、図５の例では、クライアント２００の機能のみを示したが、他のクライアント２００ａ，・・・，２００ｍも同様の機能を有している。
図６は、クライアント情報記憶部のデータ構造例を示す図である。クライアント情報記憶部１１０には、クライアントＩＰアドレスと時刻情報との欄が設けられている。クライアントＩＰアドレスの欄には、管理対象のクライアントのＩＰアドレスが予め設定されている。
【００６８】
時刻情報の欄には、クライアントから取得した時刻情報が格納される。なお、時刻情報の欄は、時刻情報収集開始時点で、時刻情報収集部１２０によって全てクリア（無効なデータに初期化）される。
【００６９】
時刻情報の欄は、ＳＴＳ送出時刻、ＳＴＣローカル時刻、およびＳＴＳ到着時刻の欄に細分化されている。ＳＴＳ送出時刻の欄には、クライアントに対して時刻情報の取得要求を送信した時刻が設定される。ＳＴＣローカル時刻の欄には、取得要求に対してクライアントが応答したときの、クライアントの内部時計の時刻が設定される。ＳＴＳ到着時刻の欄には、取得要求に対するクライアントからの応答を、時刻管理サーバ１００が受信した時刻が設定される。
【００７０】
図６の例では、ＩＰアドレスが「192.168.1.100」のクライアントからは時刻情報の収集が完了しているが、ＩＰアドレスが「192.168.1.101」のクライアントからの時刻情報の収集は未完了である。
【００７１】
次に、時刻管理処理の全体の手順を説明する。
図７は、時刻管理処理の手順を示すシーケンス図である。なお、図７では、代表的に時刻管理サーバ１００とクライアント２００との間の処理を示しているが、他のクライアント２００ａ，・・・，２００ｍと時刻管理サーバ１００との間でも、同様の処理が行われる。以下、図７に示す処理をステップ番号に沿って説明する。
【００７２】
［ステップＳ１１］クライアント２００が起動される。
［ステップＳ１２］時刻管理サーバ１００の時刻情報送信部２１０は、クライアント２００が起動されたことを検知する。たとえば、時刻管理サーバ１００は、管理対象のクライアントのうち、まだ時刻情報を収集していないクライアントに対して定期的に所定のコマンド（たとえば、ping）を送信し、その応答の有無によって、該当するクライアントが起動されたか否かを検知できる。なお、クライアント２００の起動時に、クライアント２００から時刻管理サーバ１００に対して起動した旨の情報を通知することにより、時刻管理サーバ１００においてクライアント２００の起動を認識することもできる。
【００７３】
［ステップＳ１３］時刻情報送信部２１０は、ＳＴＳ送出時刻を含む時刻情報の取得要求をクライアント２００に送信する。
［ステップＳ１４］クライアント２００では、時刻情報の取得要求を時刻情報送信部２１０が受信する。
【００７４】
［ステップＳ１５］時刻情報送信部２１０は、クライアント２００の内部時計（本実施の形態では、ＰＣカード３４の時計回路３４ａ）で示される時刻をＳＴＣローカル時刻として、ＳＴＳ送出時刻とＳＴＣローカル時刻とを含む応答を、時刻管理サーバ１００に対して送信する。
【００７５】
［ステップＳ１６］時刻管理サーバ１００の時刻情報収集部１２０は、クライアント２００から送られた応答を受け取ると、その応答に含まれるＳＴＳ送出時刻、ＳＴＣローカル時刻、および応答受信時の内部時計の時刻（ＳＴＳ到着時刻）をクライアント情報記憶部１１０に格納する。
【００７６】
［ステップＳ１７］平均遅延時間算出部１３０は、管理対象の全てのクライアントから時刻情報を取得すると、平均遅延時間を計算する。
［ステップＳ１８］障害判定部１４０は、時刻管理サーバ１００およびクライアント２００の内部時計が正常か否かを判断する。正常か否かを判断するための障害判定処理の詳細は後述する（図１０等参照）。
【００７７】
［ステップＳ１９］障害判定部１４０は、障害判定により、時刻管理サーバ１００とクライアント２００との内部時計が共に正常か否かを判断する。時刻管理サーバ１００とクライアント２００との内部時計が共に正常であれば、処理がステップＳ２０に進められる。少なくとも一方に異常（システム全体の信用できる時刻情報が不明な場合も含む）が検出された場合、処理がステップＳ２２に進められる。
【００７８】
［ステップＳ２０］時刻管理サーバ１００とクライアント２００との内部時計が正常であれば、時刻同期処理部１６０は、クライアント２００に対して現在の内部時計の時刻を送信する。
【００７９】
［ステップＳ２１］クライアント２００の時刻同期処理部２３０は、時刻管理サーバ１００から送られた時刻に自己の内部時計を合わせる。
［ステップＳ２２］また、時刻管理サーバ１００とクライアント２００との少なくとも一方の内部時計が異常であれば、署名管理部１５０からクライアントに対して署名機能停止通知を送信する。
【００８０】
［ステップＳ２３］クライアント２００の署名処理部２２０は、時刻同期処理部１６０は、クライアント２００に対して現在の内部時計の時刻を送信する。
図７に示した処理が、時刻管理サーバ１００と他のクライアント２００ａ，・・・，２００ｍとの間でも同様に行われる。その結果、時刻管理サーバ１００および各クライアント２００，２００ａ，・・・，２００ｍの内部時計が正常か否かが判定される。そして、内部時計に障害があるクライアントでの電子署名の処理が停止する。また、時刻管理サーバ１００の内部時計に障害があるか、あるいは正しい時刻が不明となったときは、全てのクライアント２００，２００ａ，・・・，２００ｍにおいて、電子署名の処理が停止する。
【００８１】
次に、時刻情報の収集処理について詳細に説明する。
図８は、時刻情報収集処理を示す図である。図８に示すように、時刻管理サーバ１００の時刻情報収集部１２０から各クライアント２００，２００ａ，・・・，２００ｍへ、時刻管理サーバ１００の内部時計（ＳＴＳ）情報を含む時刻情報の取得要求が送信される。図８では、クライアント２００，２００ａ，・・・，２００ｍに対して１，２，・・・，ｎ（ｎは、２以上の整数）の識別番号を付与している。そして、ｉ番目（ｉ＝１，２，・・・，ｎ）のクライアントに対して時刻情報の取得要求を送信したときの時刻管理サーバ１００の内部時計の値（ＳＴＳ送出時刻）を「Ｔst  ｉ」とする。
【００８２】
時刻情報の取得要求を受け取った各クライアント２００，２００ａ，・・・，２００ｍは、クライアント自身の内部時計から時刻（ＳＴＣローカル時刻）を取得し、時刻管理サーバ１００に応答する。その応答には、ＳＴＳ送出時刻とＳＴＣローカル時刻が含まれる。ここで、ｉ番目のクライアントのＳＴＣローカル時刻を「Ｔc  ｉ」とする。
【００８３】
時刻管理サーバ１００の時刻情報収集部１２０では、クライアント２００，２００ａ，・・・，２００ｍからの応答を受け取ると、その応答の受信時の時刻管理サーバ１００の内部時計の時刻（ＳＴＳ到着時刻）を取得する。ここで、ｉ番目のクライアントからの応答の受信時のＳＴＳ到着時刻を「Ｔsr  ｉ」とする。
【００８４】
時刻管理サーバ１００の時刻情報収集部１２０は、ＳＴＳ送出時刻、ＳＴＣローカル時刻、およびＳＴＳ到着時刻を組にして、クライアント情報記憶部１１０に格納する。
図９は、時刻情報収集処理の手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
【００８５】
［ステップＳ３１］時刻情報収集部１２０は、時刻情報収集開始時刻か否かを判断する。時刻情報収集開始時刻は、予め時刻情報収集部１２０に設定され、ＲＡＭ１０２等の記憶媒体に記憶されている。たとえば、月曜日から金曜日の間の毎日７時が、時刻情報収集開始時刻として設定される。
【００８６】
時刻情報収集部１２０は、時刻情報収集開始時刻になった場合、処理をステップＳ３２に進める。時刻情報収集開始時刻になっていなければ、ステップＳ３１の処理が繰り返され、時刻情報収集開始時刻になるのを待つ。
【００８７】
［ステップＳ３２］時刻情報収集部１２０は、クライアント情報記憶部１１０の時刻情報の欄を初期化する。具体的には、時刻情報収集部１２０は、クライアント情報記憶部１１０の時刻情報の欄の全てに、無効なデータを設定する。
【００８８】
［ステップＳ３３］時刻情報収集部１２０は、処理対象クライアントが起動されたか否かを確認する。たとえば、時刻情報収集部１２０は、クライアント情報記憶部１１０のクライアントＩＰアドレスの欄に登録されているＩＰアドレスのうち、時刻情報が未取得のクライアントのＩＰアドレスに対して、ネットワークの疎通を確認するコマンド（ping）をマルチキャストで送信する。時刻情報収集部１２０は、送信したコマンドに対して応答があった場合、管理対象のクライアントが起動されたと判断することができる。
【００８９】
［ステップＳ３４］時刻情報収集部１２０は、時刻情報を未取得のクライアントが新たに起動されたか否かを判断する。新たにクライアントが起動された場合、処理がステップＳ３５に進められる。新たに起動されたクライアントが無い場合、処理がステップＳ３３に進められる。
【００９０】
［ステップＳ３５］時刻情報収集部１２０は、新たに起動されたクライアントに対して、時刻情報の取得要求を送信する。
［ステップＳ３６］時刻情報収集部１２０は、時刻情報の取得要求に対するクライアントからの応答により、クライアントの時刻情報（ＳＴＣローカル時刻）を取得する。
【００９１】
［ステップＳ３７］時刻情報収集部１２０は、クライアント情報記憶部１１０内の時刻情報の欄に、新たに起動されたクライアントのＩＰアドレスに対応付けて時刻情報（ＳＴＳ発信時刻、ＳＴＣローカル時刻、ＳＴＳ到着時刻）を登録する。
【００９２】
［ステップＳ３８］時刻情報収集部１２０は、全ての管理対象のクライアントから時刻情報を収集したか否かを判断する。全ての管理対象のクライアントからの時刻情報の収集が完了していれば、処理が終了する。時刻情報の収集が完了していないクライアントがあれば、処理がステップＳ３３に進められる。
【００９３】
このようにして、各クライアント２００，２００ａ，・・・，２００ｍから時刻情報を収集することができる。このようにして収集した時刻情報に基づいて、平均遅延時間算出部１３０は以下の式により平均遅延時間τAVEを算出する。
【００９４】
【数１】
2009008444.tif 000003
【００９５】
次に、障害判定部１４０が、時刻管理サーバ１００や各クライアント２００，２００ａ，・・・，２００ｍの内部時計が正常か否かを判定する。
障害判定部１４０は、ＳＴＣローカル時刻を平均遅延時間τAVEで補正する。そして、障害判定部１４０は、全てのクライアントに関して、補正されたＳＴＣローカル時刻とＳＴＳ到着時刻との差（誤差）が、所定の閾値ε以下でれば、時刻管理サーバ１００および全てのクライアント２００，２００ａ，・・・，２００ｍの内部時計が正常であると判定する。具体的には、以下の条件が満たされたときには、各コンピュータの内部時計が正常と判定される。
【００９６】
【数２】
2009008444.tif 000004
【００９７】
また、障害判定部１４０は、全てのクライアントに関して、補正されたＳＴＣローカル時刻とＳＴＳ到着時刻との差（誤差）が、所定の閾値εを超えていれば、時刻管理サーバ１００の内部時計が異常であると判定する。具体的には、以下の条件が満たされたときには、各コンピュータの内部時計が正常と判定される。
【００９８】
【数３】
2009008444.tif 000005
【００９９】
さらに、障害判定部１４０は、所定の割合（たとえば、数パーセント）以下のクライアントに関して、補正されたＳＴＣローカル時刻とＳＴＳ到着時刻との差（誤差）が、所定の閾値εを超えていれば、誤差が閾値εを超えたクライアントの内部時計が異常であると判定する。具体的には、以下の条件が満たされたときには、各コンピュータの内部時計が正常と判定される。
【０１００】
【数４】
2009008444.tif 000006
【０１０１】
なお、式（４）における「Ｔsr  ｋ」および「Ｔc  ｋ」の「ｋ」は、１以上ｎ以下の整数である。
次に、障害判定部１４０における障害判定処理を詳細に説明する。
【０１０２】
図１０は、障害判定処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。なお、以下の処理は、平均遅延時間算出部１３０から平均遅延時間を受け取ったときに実行される。
【０１０３】
［ステップＳ４１］障害判定部１４０は、クライアント情報記憶部１１０から未処理のクライアントを１つ選択する。
［ステップＳ４２］障害判定部１４０は、選択したクライアントのＳＴＣローカル時刻を平均遅延時間で補正する。具体的には、ＳＴＣローカル時刻に平均遅延時間を加算する。
【０１０４】
［ステップＳ４３］障害判定部１４０は、補正されたＳＴＣローカル時刻と、対応するＳＴＳ到着時刻との差を計算し、時刻管理サーバ１００と該当するクライアントとの内部時刻の誤差とする。
【０１０５】
［ステップＳ４４］障害判定部１４０は、予め設定されている閾値と、ステップＳ４３で算出した誤差とを比較する。そして、障害判定部１４０は、比較結果をクライアントの識別情報（たとえば、ＩＰアドレス）に対応付けてＲＡＭ１０２内に記憶する。比較結果は、誤差が閾値以下か、あるいは誤差が閾値を超えているかの二通りである。
【０１０６】
［ステップＳ４５］障害判定部１４０は、監視対象の全てのクライアントを選択したか否かを判断する。監視対象の全てのクライアントを選択した場合、処理がステップＳ４６に進められる。未選択のクライアントがある場合、処理がステップＳ４１に進められる。
【０１０７】
［ステップＳ４６］障害判定部１４０は、ステップＳ４４での比較結果に基づいて、各クライアントの誤差が全て閾値以下か否かを判断する。全てのクライアントに関する誤差が閾値以下であれば、処理がステップＳ４７に進められる。少なくとも１台のクライアントの誤差が閾値を超えていれば、処理がステップＳ４８に進められる。
【０１０８】
［ステップＳ４７］障害判定部１４０は、クライアントの誤差が全て閾値以下の場合、時刻管理サーバ１００および監視対象の全てのクライアントの内部時計が正常であると判定する。その後、処理が終了する。
【０１０９】
［ステップＳ４８］障害判定部１４０は、少なくとも１台のクライアントの誤差が閾値を超えていた場合、全てのクライアントの誤差が閾値を超えているか否かを判断する。全てのクライアントの誤差が閾値を超えている場合、処理がステップＳ４９に進められる。少なくとも１台のクライアントの誤差が閾値以下であれば、処理がステップＳ５０に進められる。
【０１１０】
［ステップＳ４９］障害判定部１４０は、全てのクライアントの誤差が閾値を超えている場合、サーバの内部時計に障害があると判定する。その後、処理が終了する。
［ステップＳ５０］障害判定部１４０は、少なくとも１台のクライアントの誤差が閾値以下であれる場合、誤差が閾値を超えるクライアント数が所定の割合以下か否かを判断する。所定の割合を超えるクライアントにおいて誤差が閾値を超えていた場合、処理がステップＳ５１に進められる。誤差が閾値を超えたクライアント数が所定の割合以下の場合、処理がステップＳ５２に進められる。
【０１１１】
［ステップＳ５１］障害判定部１４０は、誤差が閾値を超えるクライアント数が所定の割合を超える場合、システム内での正確な時刻が不明と判定する。その後、処理が終了する。
【０１１２】
［ステップＳ５２］障害判定部１４０は、誤差が閾値を超えるクライアント数が所定の割合以下の場合、誤差が閾値を超えたクライアントの内部時計を異常と判定する。その後、処理が終了する。その後、処理が終了する。
【０１１３】
以上のようにして、異常のある内部時計を有するコンピュータを的確に検出し、サービスを停止させることができる。その結果、誤った時刻がタイムスタンプとして含まれた電子署名が生成されることを未然に防止できる。
【０１１４】
ところで、上記実施の形態では、平均遅延時間によってＳＴＣローカル時刻を補正している。これは、時刻管理サーバ１００とクライアント２００，２００ａ，・・・，２００ｍとの間の通信品質が良好であることが前提となっている。たとえば、ＶｏＩＰ（Voice over IP）に関しては、ネットワーク全体の遅延が１５０ｍｓ未満であれば、加入電話並みの通話品質を保つことができる。本実施の形態のネットワークも、原則として通信の遅延は１５０ｍｓ未満であるものとする。このように、通信の遅延がある程度以下に抑えられているネットワーク環境であれば、全てのクライアントについて計算した遅延時間の平均を取った方が現実の遅延時間に近くなる。
【０１１５】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、時刻管理サーバおよびクライアントが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１６】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１７】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１１８】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【０１１９】
【図１】発明の概要を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いる時刻管理サーバのハードウェア構成例を示す図である。
【図４】本実施の形態に用いるクライアントのハードウェア構成例を示す図である。
【図５】時刻管理サーバとクライアントとの機能を示すブロック図である。
【図６】クライアント情報記憶部のデータ構造例を示す図である。
【図７】時刻管理処理の手順を示すシーケンス図である。
【図８】時刻情報収集処理を示す図である。
【図９】時刻情報収集処理の手順を示すフローチャートである。
【図１０】障害判定処理の手順を示すフローチャートである。
【符号の説明】
【０１２０】
１  時刻管理サーバ
１ａ  サーバ側内部時計
１ｂ  クライアント情報記憶手段
１ｃ  時刻情報収集手段
１ｄ  遅延時間算出手段
１ｅ  障害検出手段
１ｆ  時刻同期手段
１ｇ  サービス停止指示手段
２，３，４  クライアント
【図１】
2009008444.tif 000007
【図２】
2009008444.tif 000008
【図３】
2009008444.tif 000009
【図４】
2009008444.tif 000010
【図５】
2009008444.tif 000011
【図６】
2009008444.tif 000012
【図７】
2009008444.tif 000013
【図８】
2009008444.tif 000014
【図９】
2009008444.tif 000015
【図１０】
2009008444.tif 000016