(57)【要約】【課題】タイムスタンプシステムの時刻発生器の精度を、低コストで高め、外部時刻源へ頻繁な問合せを行わなくても、自機内の時刻発生器を高精度の時刻発生源として使用できるシステムと方法を提供する。【解決手段】外部時刻源を正しい時刻を表示していると信頼し、システム起動時に外部時刻源の時刻と自機の時刻発生器のシステム時刻とを測定する。時刻の測定を繰り返し、外部時刻源と自機の時刻発生器との時刻進度差を求める。複数回求めた差異の平均値を平均時刻進度差とし、平均時刻進度差を自機の時刻発生器の時刻進度に対して一定間隔毎に加減する。これにより、自機の時刻発生器のシステム時刻の時刻進度を外部時刻源の時刻進度と一致させる。【選択図】          図１
2004264992.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末からの依頼に応じてタイムスタンプを行うタイムスタンプシステムであって、
システム時刻を生成する時刻生成器と、
前記時刻生成器により生成されたシステム時刻を読込むシステム時刻読込み部と、
外部時刻源から外部時刻を取込む外部時刻取込み部と、
前記外部時刻と前記システム時刻とを比較する時刻比較部と、
前記外部時刻と前記システム時刻の時刻進度差に基づいて、前記システム時刻進度の補正値を求める時刻進度補正値計算部と、
前記時刻生成器が一定間隔で生成するシステム時刻の時刻進度を前記補正値で補正する時刻進度補正部と、
を備えることを特徴とするタイムスタンプシステム。
【請求項２】
請求項１記載のタイムスタンプシステムにおいて、前記時刻比較部は、前記外部時刻と前記システム時刻との比較を３回以上行って複数の時刻進度差を求め、前記時刻進度補正値計算部は前記複数の時刻進度差を平均して前記時刻進度の補正値を求めるタイムスタンプシステム。
【請求項３】
請求項１記載のタイムスタンプシステムにおいて、一定時間経過後に、再度前記外部時刻と前記システム時刻の時刻進度差を求め、前記時刻生成器が生成するシステム時刻の時刻進度を再度補正するタイムスタンプシステム。
【請求項４】
クライアント端末からの依頼に応じてタイムスタンプを行う方法であって、
時刻生成器によりシステム時刻を生成し、
外部時刻源から外部時刻を取込み、
前記時刻生成器により生成されたシステム時刻を読込み、
前記外部時刻と前記時刻生成器の生成する前記システム時刻とを複数回比較し、
前記外部時刻と前記時刻生成器の生成する前記システム時刻との差から時刻進度差を求め、
前記時刻進度差から前記システム時刻の時刻進度の補正値を求め、
前記時刻生成器が一定間隔で生成するシステム時刻の時刻進度を前記補正値で補正する、
ステップを備えることを特徴とするタイムスタンプシステムのシステム時刻の時刻進度を補正する方法。
【請求項５】
請求項４に記載のシステム時刻補正方法において、前記外部時刻と前記時刻生成器の生成する前記システム時刻との比較を３回以上行って複数の時刻進度差を求め、前記複数の時刻進度差を平均して前記時刻進度の補正値を求める方法。
【請求項６】
請求項４記載のシステム時刻補正方法において、一定時間経過後に、再度前記外部時刻と前記システム時刻の時刻進度差を求め、前記時刻生成器が生成するシステム時刻の時刻進度を再度補正する方法。
【請求項７】
クライアント端末からの依頼に応じてタイムスタンプを行うタイムスタンプシステムをコンピュータ上に実現せしめるタイムスタンプシステムプログラムであって、
システム時刻を生成する時刻生処理と、
前記時刻生成処理により生成されたシステム時刻を読込むシステム時刻読込み処理と、
外部時刻源から外部時刻を取込む外部時刻取込み処理と、
前記外部時刻と前記システム時刻とを比較する時刻比較処理と、
前記外部時刻と前記システム時刻の時刻進度差に基づいて、前記システム時刻進度の補正値を求める時刻進度補正値計算処理と、
前記時刻生成処理によって一定間隔で生成されるシステム時刻の時刻進度を前記補正値で補正する時刻進度補正処理と、
を備えることを特徴とするタイムスタンプシステムプログラム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、タイムスタンプシステムとそのシステム時刻補正方法に関し、特に高精度かつ低コストで信頼できるシステム時刻を確立するためのシステムと方法に関する。
【０００２】
【従来の技術】
従来タイムスタンプシステム等の計算機システムでは、システム内の時計が刻むシステム時刻に基づいて、各種タスクの制御を行っている。しかし、汎用パーソナルコンピュータ（ＰＣ）で使用されている時刻発生器の精度は、外部時刻源と比較して劣っている。汎用ＰＣで実行されるタイムスタンプシステムのシステム時刻が実際の正確な時刻と大きく異なると、不正確な時刻を記録することになり、タイムスタンプシステムにとって不都合である。
【０００３】
そのため、従来のタイムスタンプシステムは、外部時刻源を信頼できるものであると仮定して、外部時刻源から時刻を獲得し、タイムスタンプシステムのシステム時刻を外部時刻源に一致させるように修正し、修正したシステム時刻をタイムスタンプシステムで使用している。
【０００４】
しかし、一般に時刻発生器のシステム時刻の精度が劣るので、頻繁に外部時刻源に問合せを行なって時刻の修正を行わなければ時刻精度を維持することができない。
また、タイムスタンプシステムの自機の時刻発生器の時刻と外部時刻源の時刻が大きく異なったとしても、自機の時刻発生器は精度が劣るので、自機の時刻発生器の異常か、外部時刻源に異常が発生しているのか区別することが困難である。
【０００５】
特開２００２−７３２０４号で開示された時刻修正技術では、システム時刻を生成するためにインターバルタイマによる割込み処理を行い、インターバルタイマの周期を変更することにより、外部時刻に対して計算機システムのシステム時刻を補正している。
しかし、特開２００２−７３２０４号に開示されたインターバルタイマの周期変更による割込み制御は、複雑な制御を必要とし、汎用ＰＣでは簡単に実現することはできない。所定の一定間隔（固定値）ごとのインターバルタイマの割込みによって時刻を補正する方法が望ましい。
【０００６】
【特許文献１】
特開２００２−７３２０４号
【０００７】
【発明が解決しようとする課題】
本発明は、このような問題点を解決するためなされたものであり、タイムスタンプシステムの時刻発生器の精度を、低コストで外部時刻源に近い精度まで高め、外部時刻源へ頻繁な問合せを行わなくても、自機内の時刻発生器を高精度の時刻発生源として使用することができるシステムと方法を提供しようとするものである。
【０００８】
【課題を解決するための手段】
本発明は１態様において、クライアント端末からの依頼に応じてタイムスタンプを行うタイムスタンプシステムにおいて、システム時刻を生成する時刻生成器と、前記時刻生成器により生成されたシステム時刻を読込むシステム時刻読込み部と、外部時刻源から外部時刻を取込む外部時刻取込み部と、前記外部時刻と前記システム時刻とを比較する時刻比較部と、前記外部時刻と前記システム時刻の時刻進度差に基づいて、前記システム時刻進度の補正値を求める時刻進度補正値計算部と、前記時刻生成器が一定間隔で生成するシステム時刻の時刻進度を前記補正値で補正する時刻進度補正部と、を備える。
【０００９】
前記時刻比較部は、前記外部時刻と前記システム時刻との比較を３回以上行って複数の時刻進度差を求め、前記時刻進度補正値計算部は前記複数の時刻進度差を平均して前記時刻進度の補正値を求めても良い。
【００１０】
一定時間経過後に、再度前記外部時刻と前記システム時刻の時刻進度差を求め、前記時刻生成器が生成するシステム時刻の時刻進度を再度補正しても良い。
【００１１】
本発明はまた、クライアント端末からの依頼に応じてタイムスタンプを行う方法において、時刻生成器によりシステム時刻を生成し、外部時刻源から外部時刻を取込み、前記時刻生成器により生成されたシステム時刻を読込み、前記外部時刻と前記時刻生成器の生成する前記システム時刻とを複数回比較し、前記外部時刻と前記時刻生成器の生成する前記システム時刻と差から時刻進度差を求め、前記時刻進度差から前記システム時刻の時刻進度の補正値を求め、前記時刻生成器が一定間隔で生成するシステム時刻の時刻進度を前記補正値で補正する、ステップを備える。
【００１２】
本発明はまた、クライアント端末からの依頼に応じてタイムスタンプを行うタイムスタンプシステムをコンピュータ上に実現せしめるタイムスタンプシステムプログラムであって、システム時刻を生成する時刻生処理と、前記時刻生成処理により生成されたシステム時刻を読込むシステム時刻読込み処理と、外部時刻源から外部時刻を取込む外部時刻取込み処理と、前記外部時刻と前記システム時刻とを比較する時刻比較処理と、前記外部時刻と前記システム時刻の時刻進度差に基づいて、前記システム時刻進度の補正値を求める時刻進度補正値計算処理と、前記時刻生成処理によって一定間隔で生成されるシステム時刻の時刻進度を前記補正値で補正する時刻進度補正処理と、を備える。
【００１３】
本発明では、外部時刻源を正しい時刻を表示していると信頼し、システム起動時に外部時刻源の時刻と自機の時刻発生器のシステム時刻とを測定する。時刻の測定を繰り返し、外部時刻源と自機の時刻発生器との時刻進度差を求める。複数回求めた時刻進度差の平均値を平均時刻進度差とし、平均時刻進度差を自機の時刻発生器の時刻進度に対して一定間隔毎に加減する。これにより、自機の時刻発生器のシステム時刻の時刻進度を外部時刻源の時刻進度と一致させる。
【００１４】
即ち、自機の時刻発生器は、ＣＰＵ周波数などの固定的周波数発生源を基準にして固定した時間間隔で割込みを行い、割込み時に時間増加値を平均時刻進度差の分だけ加減することでシステム時刻の時刻進度の補正を行う。これにより、時刻が正確で高い信頼性を持つタイムスタンプシステムを得ることができる。
【００１５】
また、システム起動後は、定期的に外部時刻源から時刻を取得し、外部時刻源の時刻進度をタイムスタンプシステムの時刻発生器の時刻進度と比較して、時刻発生器の時刻進度を再度補正することにより、更に時刻進度の精度を高めることが出来る。
【００１６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態による自機で時刻キャリブレーションを行うタイムスタンプシステム５と、外部時刻源１と、クライアント端末６を含むシステムの概要を示す。外部時刻源１は、高精度の時刻発生器２を有し、高精度の信頼できる時刻を発生する。この外部時刻源１は、ＬＡＮ３に接続されている。タイムスタンプシステム４は、自機内に時刻発生器５を有し、システム時刻を生成する。また、ＬＡＮ３に接続されている。外部時刻源１の時刻発生器２は、タイムスタンプシステム４からの要求により、タイムスタンプシステム４に対してＬＡＮ３経由で時刻発生器２の時刻を供給することができる。
【００１７】
ＬＡＮ３には、クライアント端末６が接続されている。クライアント端末６はタイムスタンプシステム４にタイムスタンプ証明書を要求することができ、タイムスタンプシステム４は、クライアント端末６にタイムスタンプ証明書を発行することができる。
【００１８】
タイムスタンプシステム４は、システム起動時に外部時刻源１の時刻発生器２と自機の時刻発生器５との時刻進度差を補正する。補正された時刻で電子文書に対してタイムスタンプを押印し、クライアント端末６にタイムスタンプ証明書を発行する。
【００１９】
図２により、タイムスタンプシステム４の構成を説明する。外部時刻取込み部１１は、外部時刻源１に時刻を問合わせ、外部時刻源１の時刻発生器２から、高精度の時刻を受領する。システム時刻読取り部１２は自機内の時刻発生器５からシステム時刻を読み取る。時刻比較部１３は、外部時刻源５からの時刻進度と、自機内の時刻発生器５からのシステム時刻の時刻進度とを比較する。時刻補正値計算部１４は、時刻比較部１３における比較結果をもとに、自機内の時刻発生器５のシステム時刻の進度補正値を計算する。時刻補正部１５は、計算した補正値だけ時刻発生器５の進度を補正する。タイムスタンプ発行部１８は、クライアント端末６からタイムスタンプの依頼を受けると、システム時刻読取り部１２から時刻を読み取り、タイムスタンプ証明書を生成して、クライアント端末６に送信する。
【００２０】
図３により、本システムの実施の形態によるタイムスタンプシステムの時刻進度補正ステップを説明する。この例では、タイムスタンプシステム４は、汎用ＰＣサーバを使用し、ＯＳはマイクロソフト社製Ｗｉｎｄｏｗｓ（登録商標）２０００である。
【００２１】
ステップＳ１では、汎用ＰＣにてタイムスタンプシステム４のプログラムを起動する。特にシステム導入時には、ステップＳ２〜Ｓ６の手順で、ＰＣで実施されるタイムスタンプシステム４のシステム時刻の時刻進度の補正を行う。
ステップＳ２では、タイムスタンプシステム４は、外部時刻取込み部１１により、外部時刻源１にＲＦＣ２０３０に規定されたネットワーク経由の時刻問合わせプロトコルを用いて、時刻の問合わせを行う。
【００２２】
ステップＳ３では、外部時刻源１は、タイムスタンプシステム４からの時刻問合わせを受けて、時刻発生器２から高精度の時刻を取出し、ＲＦＣに規定された応答プロトコルによりタイムスタンプシステム４へ時刻を通知する。
ステップＳ４では、タイムスタンプシステム４は、外部時刻取込み部１１で外部時刻源１から時刻の通知を受領し、自機の時刻発生器５のシステム時刻を外部時刻源１の高精度の時刻に合わせこみ、同時に、システム時刻読取り部１２において、自機の時刻発生器５のシステム時刻を読み取る。
【００２３】
予め定めた所定間隔後、例えば、１時間後にタイムスタンプシステムは、外部時刻源１に２回目の時刻問合せを行い、タイムスタンプシステム４は、外部時刻源１から時刻の通知を受領する。同時に、自機の時刻発生器５のシステム時刻を読み取る。
タイムスタンプシステムは、ステップＳ２〜Ｓ４の手順を予め定めた所定の回数だけ繰り返し、所定の回数だけ外部時刻源１からの時刻と、自機の時刻発生器５のシステム時刻とを読み取る。例えば、１時間毎に時刻問合せ及び時刻合わせを行い、これを２４回行い、すなわち、２４時間かけてステップＳ２〜Ｓ４の手順を行う。
【００２４】
次に、ステップＳ５では、時刻比較部１３で、１回目に測定した外部時刻源１の時刻と自機の時刻発生器５のシステム時刻との差異を算出する。
次に、２回目に測定した外部時刻源１の時刻と自機のシステム時刻との差異を算出する。３回目以降もそれぞれの回数の測定について外部時刻源１の時刻と自機のシステム時刻との差異を算出する。
【００２５】
次に、時刻補正値計算部１４で、１回目〜２４回目の時刻問合せ及び時刻合わせ時の差異を平均して平均差異を求めて、これに基づいて外部時刻源１の時刻進度と、自機の時刻発生器５のシステム時刻の時刻進度との時刻進度差を求める。ここで、時刻進度差は後述する割込み時間間隔ＣＴでの差異のファクターであり、例えば、平均差異を測定間隔と割込み時間間隔ＣＴとで割ったものとする。
【００２６】
以上のように時刻合わせをしながら繰り返し求めた外部時刻源１の時刻と時刻発生器５のシステム時刻との差異を平均した平均差異に基づいて時刻進度差を算出し、これをシステム時刻の時刻進度の補正値とするが、これに限らず、各時刻問合せの際に時刻合わせをせず、各時刻問合せの差異を比較し、例えば１回目と２回目との差異を比較して時刻進度差を求め、これらに基づいて平均時刻進度差を求めても良い。
【００２７】
ステップＳ６では、時刻進度補正部１５により、まず通常の方法により、自機の時刻発生器５のシステム時刻を外部時刻源１の時刻に合わせる。
次に、ステップＳ５で算出された外部時刻源１の時刻進度と時刻発生器５の時刻進度の差異を調整するために、一定間隔の割込み時ごとに、時刻発生器５の時刻進度に平均時刻進度差だけ補正を加える。
【００２８】
ここで、本発明の実施の形態による時刻進度補正方法を更に詳しく説明する。
本発明の実施の形態によるシステムは、ＣＰＵ周波数等を基準とする固定値である割込み時間間隔ＣＴをインターバルとして割込みが発生し、時刻生成を行う。即ち、システムの初期時刻Ｔ０に対して、次は、
Ｔ１  ＝  Ｔ０  ＋  ＣＴ                  （式１）
で時刻生成を行う（これは汎用ＰＣでは一般的である）。
【００２９】
割込み時間間隔ＣＴにおける時刻発生器１と時刻発生器５の平均の時刻進度差をｄＴとすると、Ｔ１における補正された時刻は、
Ｔ１  ＝  Ｔ０  ＋  ＣＴ  ＋  ｄＴ              （式２）
として生成される。
ここに、タイムスタンプシステム４の時刻発生器５の時刻進度が、外部時刻源１の時刻発生器２の時刻進度より速い場合は、ｄＴはマイナスの値であり、時刻発生器５の時刻進度が、時刻発生器２の時刻進度より遅い場合は、ｄＴはプラスの値である。
【００３０】
同様にして、システム始動後の運用時においては、ある時刻生成時の時刻をＴｎ−１として、時刻発生器５は、次の時刻生成時Ｔｎにおいては、
Ｔｎ  ＝  Ｔｎ−１  ＋  ＣＴ  ＋  ｄＴ            （式３）
によりｄＴだけ補正された時刻を生成する。即ち、時間間隔ＣＴごとにｄＴだけ時刻進度に補正を加える。
【００３１】
Ｗｉｎｄｏｗｓ（登録商標）２０００環境下おいてはＯＳ標準の時刻調整関数を利用することで、ｎｓオーダーでの微調整を行うことができる。通常は時刻発生器５の進度誤差は日差数秒程度であるが、本発明の実施の形態によれば、典型的な場合では、時刻発生器１と時刻発生器５との時刻進度の差異は、日差１０ｍｓ程度まで縮小される。
【００３２】
以上のように、ステップＳ２〜Ｓ４の差異の測定を所定回数行い、適当な平均時刻進度差が確定し、時刻発生器５の進度補正が一旦終了した後には、タイムスタンプシステム４の時刻は適当な精度に維持されたものとなり、タイムスタンプシステム４はタイムスタンプ処理を開始する。ステップＳ７では、クライアント端末６において電子文書が発生し、これにタイムスタンプを押印する要求が生じる。
ステップＳ８では、クライアント端末６は、電子文書をタイムスタンプシステム４に送信し、タイムスタンプを要求する。
【００３３】
ステップＳ９では、タイムスタンプシステム４は、クライアント端末６からタイムスタンプ要求を受けて、システム時刻読取り部１２により、時刻発生器５から現在のシステム時刻を取得する。
ステップＳ１０では、タイムスタンプシステム４は、タイムスタンプ証明書発行部１８において、電子文書に電子署名を行いタイムスタンプ証明書を添付する。この電子署名を行った電子文書をクライアント端末６に送信する。
ステップＳ１１では、クライアント端末６は、電子文書とタイムスタンプ証明書を受領する。
【００３４】
タイムスタンプシステム４は、定期的に時刻進度のチェックを行うために、次のような時刻進度の補正を行う。すなわち、システム導入時に一旦適当な平均時刻進度差が得られた後も、所定の間隔（例えば、１日に４回）で時刻問合せを行い、進度補正を行う。これをステップＳ１２〜Ｓ１６に示す。ステップＳ１２では、システム起動後予め定めた所定時間後に外部時刻源１に対してＲＦＣ２０３０で規程された手順で時刻問合せを行う。
【００３５】
ステップＳ１３では、外部時刻源１は時刻発生器２から時刻を取得し、タイムスタンプシステム４に時刻を通知する。
ステップＳ１４では、タイムスタンプシステム４は、外部時刻源１から時刻の通知を受領し、同時に時刻発生器５のシステム時刻を読み取る。
【００３６】
ステップＳ１５では、外部時刻源１の時刻と自機の時刻発生器５のシステム時刻との差異を求め、時刻進度チェック間隔Ｔ及び割込み時間間隔ＣＴに基づき、時間間隔ＣＴ当りの差異のファクターを求める。このファクターに時刻の進み、遅れを相殺するための値を加えて差異ｄｃＴとする。この値は、例えば、差異のファクターの１／２であり、しかも急激な時刻の進み遅れの変動を抑えるため１時間当り３ｍｓを超えないものとする。また、この値は差異のファクターそのままの値であっても良い。
【００３７】
タイムスタンプシステム４は、時刻発生器１と時刻発生器５の時刻進度差を再度評価し、差異が異常に大きければ、タイムスタンプシステム５の管理者に警告を行い、タイムスタンプシステム５を停止する。差異が、予め定めた通常の範囲ないであれば、次のステップＳ１６に進む。
【００３８】
ステップＳ１６では、ステップＳ５で算出された補正値ｄＴで補正されている時刻に、ステップＳ１５で算出された差異ｄｃＴを加えて、時刻発生器５に与える時刻進度の補正値  ｄＴ  ＋  ｄｃＴとし、ステップＳ６で示す（式３）を更に補正して、
Ｔｎ  ＝  Ｔｎ−１  ＋  ＣＴ  ＋  ｄＴ  ＋  ｄｃＴ        （式４）
とし、一定間隔で時刻発生器５が発生する時刻をさらに微調整する。
【００３９】
時刻発生器５の時刻精度は、システム起動時のステップＳ２〜Ｓ４の補正によって十分に高められているため、ステップＳ１２〜Ｓ１５による時刻補正の頻度が一日に数回程度でも、ステップＳ１５では、時刻発生器２と時刻発生器５との間の時刻進度差（ｄｃＴ）は極めて小さい値として算出される。
【００４０】
もし、ｄｃＴの絶対値が所定の値を超えて異常に大きい場合は、外部時刻源１又は、タイムスタンプシステム４の時刻発生器５のいずれか、あるいはその時刻問合せ機構に何らかの問題があると考えられるので、タイムスタンプシステム５の管理者に警告を行い、タイムスタンプシステム５を停止する。
【００４１】
なお、タイムスタンプシステム４は、一旦適当な平均時刻進度差が得られていれば、シャットダウンされて再起動された場合は、図示しない記憶装置に格納された平均時刻進度差を用いて進度補正を行えば良く、再起動時に所定回数の進度補正を必要としない。
従来は、自機の時刻発生器５の時刻精度が十分に高くなかったので、ｄｃＴの値に対する客観的な評価を下すことが出来なかった。本発明により、自機の時刻発生器５の精度が飛躍的に高まることにより、ｄｃＴの値は極めて小さい値となるので、この値によりシステムの異常に対する評価を行うことが可能となる。
【００４２】
【発明の効果】
以上説明したように、本発明では、タイムスタンプシステムの起動時に、時刻発生器の生成するシステム時刻を外部時刻源と比較して時刻進度の補正値を求め、一定間隔で時刻進度を補正することで時刻発生器のシステム時刻の時刻進度の精度を高める。
そのため、自機の時刻発生器の精度を、外部時刻源に近い精度まで簡単に高めることができ、外部時刻源への頻繁な問合せを行わなくても高精度の時刻発生源として使用することができる。また、外部時刻源が継続して信頼できるかどうかを判定することができる。これは、汎用ＰＣを用いて高精度の時刻で運用する必要があるタイムスタンプシステムに特に有効である。
【図面の簡単な説明】
【図１】本発明の実施の形態によるシステムの概略図。
【図２】本発明の実施の形態によるタイムスタンプシステムの構成図。
【図３】本発明の実施の形態によるタイムスタンプシステムの時刻進度調整ステップの概略図。
【符号の説明】
１  外部時刻源
２  時刻発生器
３  ＬＡＮ
４  タイムスタンプシステム
５  時刻発生器
６  クライアント端末
１１  外部時刻取込み部
１２  システム時刻読取り部
１３  時刻比較部
１４  時刻進度補正値計算部
１５  時刻進度補正部
１８  タイムスタンプ証明書発行部
【図１】
2004264992.tif 000003
【図２】
2004264992.tif 000004
【図３】
2004264992.tif 000005