(57)【要約】      （修正有）【課題】ディジタル公証人サービスを行う組織や個人の信頼性に依らずに、ディジタル署名タイムスタンプの真正性を自動的かつ厳密に証明することの出来るシステムの提供を実現する。【解決手段】破ることのできない公開鍵ディジタル署名タイムスタンプが生成され、特定の時間間隔だけ存在する使い捨て秘密暗号化鍵２０１０のコンセプトに基づいて使用される。すなわち、特定の期間内に証明依頼のあったデータに、その期間と関連する秘密鍵を使用してディジタル証明２０３０する。秘密鍵は、期間終了後、直ちに破壊される２０４０。一方、各期間の公開鍵を、ひとつ前の期間の秘密鍵を使用して証明し、その直後に秘密鍵を破壊することによって保証される。【選択図】図２Ａ
2010148098.tif 000002
【特許請求の範囲】
【請求項１】
第１の期間に、秘密鍵と公開鍵からなる鍵のペアを生成するステップと、
証明要求を受け取るステップと、
前記証明要求に応じて、前記秘密鍵を用いて、前記証明要求に関連するデータにディジタル署名するステップと、 前記秘密鍵を消去するステップと、を含むデータ証明方法。
【請求項２】
前記データがディジタル署名されたことを確認するタイムスタンプ証明書を生成するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項３】
前記第１の期間の公開鍵を保管するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項４】
前記ディジタル署名されたデータを、公開鍵を用いて認証するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項５】
前記第１の期間に、別の証明要求があるかどうかを判断するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項６】
前記別の証明要求があった場合に、その証明要求に応じて、前記別の証明要求に付随するデータに自動的にディジタル署名するステップをさらに含み、前記秘密鍵を消去するステップは、前記別の証明要求が処理された後に消去することを特徴とする請求項５に記載のデータ証明方法。
【請求項７】
第１の期間の次の期間に、秘密鍵と公開鍵から成る鍵のペアを生成するステップと、 
次の証明要求を受け取るステップと、
前記次の証明要求に応じて、前記次の期間の秘密鍵を使用して、前記次の証明要求に関連するデータに自動的にディジタル署名するステップと、
前記次の期間の秘密鍵を消去するステップと、
をさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項８】
第１の期間に、第１の公開鍵と第１の秘密鍵から成る第１の鍵のペアを生成するステップと、
第２の期間に、第２の公開鍵と第２の秘密鍵から成る第２の鍵のペアを生成するステップと、
前記第１の秘密鍵を使用して、前記第２の公開鍵を署名するステップと、
前記第１の秘密鍵を消去するステップと、
前記第２の期間に、前記第２の秘密鍵を使用して、証明要求を処理するステップと、
前記第２の秘密鍵を消去するステップと、
を含むことを特徴とするデータ証明方法。
【請求項９】
前記第１の公開鍵を保管するステップをさらに含むことを特徴とする請求項８に記載のデータ証明方法。
【請求項１０】
前記証明要求を処理するステップは、前記証明要求に応じて、前記第２の秘密鍵を用いて前記処理要求に関連するデータに自動的にディジタル署名することを特徴とする請求項８に記載のデータ証明方法。
【請求項１１】
前記データにディジタル署名したことを確認するタイムスタンプ証明書を生成するステップをさらに含むことを特徴とする請求項１０に記載のデータ証明方法。
【請求項１２】
前記タイムスタンプ証明書は、前記ディジタル署名と前記第２の公開鍵を含むことを特徴とする請求項１１に記載のデータ証明方法。
【請求項１３】
前記タイムスタンプ証明書はさらに、前記第１の公開鍵を含むことを特徴とする請求項１２に記載のデータ証明方法。
【請求項１４】
前記第１の公開鍵を使用して、前記ディジタル署名したデータを証明するステップをさらに含むことを特徴とする請求項８に記載のデータ証明方法。
【請求項１５】
汎用コンピュータと、
前記汎用コンピュータに接続されたＩ／Ｏ（入出力装置）と、
を備えるデータ証明システムであって、前記汎用コンピュータは、該汎用コンピュータによって実行可能なプログラムを格納するメモリを有し、前記汎用コンピュータは、前記プログラムの命令に基づいて、
第１の時間間隔で、秘密鍵と公開鍵から成る鍵のペアを生成し、 証明要求を受け取り、
前記証明要求に応じて、前記秘密鍵を使用して前記証明要求がなされたデータに自動的にディジタル署名し、
前記秘密鍵を消去することを特徴とするデータ証明システム。
【請求項１６】
前記汎用コンピュータは、クライアントコンピュータとサーバコンピュータを含むクライアント−サーバアーキテクチャを有することを特徴とする請求項１５に記載のデータ証明システム。
【請求項１７】
汎用コンピュータと、
前記汎用コンピュータに接続されたＩ／Ｏ（入出力装置）と
を備えるデータ証明システムであって、前記汎用コンピュータは、該汎用コンピュータによって実行可能なプログラムを格納するメモリを有し、前記汎用コンピュータは、前記プログラムの命令に基づいて、
第１期間に、第１の秘密鍵と第１の公開鍵とから成る第１の鍵のペアを生成し、
第２期間に、第２の秘密鍵と第２の公開鍵とから成る第２の鍵のペアを生成し、
前記第１の秘密鍵を使用して、前記第２の公開鍵に署名し、 前記第１の秘密鍵を消去し、
前記第２期間に、前記第２の秘密鍵を使用して証明要求を処理し、 処理後に前記第２の秘密鍵を消去することを特著とするデータ証明システム。
【請求項１８】
前記汎用コンピュータは、クライアントコンピュータとサーバコンピュータを含むクライアント−サーバアーキテクチャを有することを特徴とする請求項１７に記載のデータ証明システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのディジタルタイムスタンプ方法に関し、特に、特定の時間間隔で生成される鍵のペアを連鎖させていくことによって、第三者の検証を必要とせずにデータにディジタルタイムスタンプを押す方法およびシステムに関する。
【背景技術】
【０００２】
証拠保存（chain of evidence）の概念は、米国の司法制度の長年の基本原則であった。ある証拠がある時点で存在したこと、そして、その証拠が実質的に変化していないことを証明できるかどうかによって、法的状況が決まることは多々ある。可能性のある証拠のほとんどが重要物件から成る場合、問題の証拠物件の真正性を証言する「一連の証人」による手続きを必要としてきた。歴史的にみても、法廷は、証拠が限られた人数の個人の管理下にあり、かつ、全員が物件の場所および状態について証言し得た場合に、その証拠の信憑性を認めてきた。
【０００３】
もちろん、このような制度は、信頼するに値する証人が存在し、その証人がどんな状況でも証言してくれるかどうかにかかっている。証人はいても信頼するに足りなかったり、信頼はできるが証人になってくれないという事態が、しばしば起きる。特に、ある特定の文書について、いつ作成され、サインされたかという詳細な事実が問題になっている場合にはそうである。したがって、任意の状況で必要な証人を簡単に確保できるシステムが望まれている。
【０００４】
現実の多くの活動分野で証拠認証が重要であるため、職業的な正式な文書認証制度が生まれた。公証人制度がそれである。公証人は、手数料を取って、文書の存在や、文書の所持者あるいはその文書にサインした者の身元を認証するが、文書の実際の内容について知得したことは断言できない。公証人には自分が公証した文書のコピーを永久に保管しておく義務はないからである。そのような義務は非現実的な要請である。公証人制度が信頼に足るとされているのは、公証人の印と署名を捏造したり、公証人を買収するのは非現実的であり、まず起こらないだろうと一般に信じられているからである。しかし、コンピュータグラフィックとデスクトップの印刷技術の発達につれて、文書や署名の偽造がそれほど困難ではなくなってきた。このため、カリフォルニア州を始めとするいくつかの州で、公証人による文書認証をもはや絶対的な証拠としては認めていない。
【０００５】
個人的な取引やビジネスとしての商取引がディジタル方式で行われるようになるにつれて、公証人制度のような認証メカニズムの有用性は失われつつある。情報のほとんどはコンピュータデータベース管理システムを通じて保存され、アクセスされ、管理されている。主要なデータベースシステムはいずれも、記録データにタイムスタンプを押すことを認めている。多くの商業システムや政府のシステムは、データベースのタイムスタンプの真正性を前提としている。この前提は、信用のある組織であれば、そのデータベースのタイムスタンプも信頼できるだろうという考えの上に成り立っているが、実際問題として、この主張は、文学的に言う「疑問はさておく」ことがかなり必要である。組織が信頼できるものではあっても、その組織に含まれる個々の人間すべてが信頼できるとは限らないし、現存のコンピュータデータベースシステムには、不正な個人のタンパリングやハッキングに対する免疫がないことは周知の事実だからである。
【０００６】
この問題を解決するアプローチのひとつとして、公開鍵暗号技術に基づく方法がある。この種の最もよく知られたシステムは、マサチューセッツ工科大学で配布されたプリティ・ゴッド・プライバシー（ＰＧＰ）と呼ばれるプログラムである。このプログラムは、ＲＳＡ（Rivest-Shamir-Adleman）公開鍵暗号システムを利用している。このシステムは、安全な通信と感知可能データの認証の双方を可能にする。公開鍵システムは、暗号化／復号化の各イベントに暗号鍵のペアを用いる。ペアのうちひとつは、鍵所持者によって秘密にされる秘密鍵であり、もうひとつは、公開される公開鍵である。ペアのうちいずれかの鍵によって暗号化されたメッセージは、もう一方の鍵でなければ復号することができない。
【０００７】
ＲＳＡ暗号システムでは、ある者（第１の個人）が、別の者（第２の個人）の公開鍵を使ってデータの暗号化を行い、暗号化したメッセージを安全ではない通信路を介して、第２の個人に送ることができる。この暗号メッセージは、第２の個人が有する秘密鍵を使用しない限り復号化できない。すなわち、暗号前の平文には、前記第２の個人しかアクセスすることができない。
【０００８】
第２の個人の公開鍵を用いて平文データを暗号化する前に、第１の個人は、自分自身の秘密鍵でデータを暗号化し、データにディジタル署名することもできる。受信者は、送信者の公開鍵を使ってデータを解読し、そのメッセージが真に本人からのものだと確認することができる。正しい送信者だけがデータに署名する適正な秘密鍵を使用できるからである。このシステムによって、データの機密性と、送信者の身元の認証メカニズムが同時に達成される。
【０００９】
また、送信者による暗号化以降、メッセージが変更されずにあることも保証される。公開鍵自体は、信頼できる個人の秘密鍵を使用して署名（ディジタル署名）することによって「証明」される。他の者は、その信頼できる個人の公開鍵を用い、公開された公開鍵を認証することによって、公開鍵の信頼性を得ることができる。後に、前記信頼できる個人が、証明された鍵の有効性を失った場合は、自身の秘密鍵で署名したいわゆる撤回証明書を発行して、以前に証明した公開鍵はもはや信頼することはできない旨を他の者に通知する。
【００１０】
公開鍵アルゴリズムは遅いことで有名である。このため、世の中の公開鍵ディジタル署名システムは、「暗号的に強い一方向性ハッシュ関数」を用い、署名されるべきデータから、いわゆる「メッセージダイジェスト」を生成する。メッセージダイジェストは、そのデータに固有の唯一の表現であり、いわばデータの指紋のようなものである。通常、メッセージダイジェストは、もとのデータに比べて随分短い。たとえば、ＰＧＰプログラムが使用するメッセージダイジェストは、わずか１２８ビットの長さである。データを受信者に送信する前に、メッセージダイジェストは送信者の秘密鍵で暗号化される。受信者は送信者の公開鍵を用いて、自動的にメッセージダイジェストを解読し、それが実際にもとのデータであることを検証する。このシステムは、アタッカー（攻撃者）がメッセージダイジェストと同一のメッセージを編み出そうにも計算上実行不可能なので、安全なシステムといえる。ＰＧＰソフトウエアパッケージが用いるアルゴリズムを使って１２８ビットのメッセージダイジェストを模造するには、１０１２年以上かかると言われている。また、わずか１バイト分のメッセージが変わっただけでも、ハッシュ関数はメッセージダイジェストを暗号化前のデータにマッチングさせることはできない。
【００１１】
したがって、公開鍵ディジタル署名は、署名されたデータが本来所定の秘密鍵によって署名されたものであり、署名された時点から変化していないことを紛れもなく証明することができる。ＰＧＰのようなシステムは、暗号鍵ペアの生成時とディジタル署名がされる都度、ルーチンでタイムスタンプを押す。しかしながら、このようなタイムスタンプは使用するコンピュータの内部クロックにのみ頼っている。したがって、ディジタル署名がある特定の時間に生成されたと見せかけるために、故意にコンピュータの時間を変更することによって、容易に偽造される。
【００１２】
このような理由で、公開鍵ディジタル署名により、インターネット上に出されたディジタル情報等を有料で公証する、新しいタイプの公証人が出現している。このような「ディジタル公証人」は、基本的に、認証サービスを行い、オリジナルデータの内容と、それに署名された時間の真正性を証明するものである。これは、従来の公証人の概念からみて大きな進歩である。ディジタル公証人サービスは、公証人によってディジタル方式で署名されたデータがある特定の時間に存在しており、その時依頼、データ変更されていないという事実を立証することができるからである。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、ディジタル公証人サービスの最大の問題点は、ディジタル公証人サービスによって生成されたディジタル署名の信憑性は、ひとえにそのようなサービスを提供する組織または個人の信頼性に頼っている点である。本発明は、この問題を解決するために創案された。
【００１４】
すなわち、本発明は、ディジタル公証人サービスを行う組織や個人の信頼性に依らずに、ディジタル署名タイムスタンプの真正性を自動的かつ厳密に証明することのできるシステムの提供を目的とする。本発明の一実施形態では、トランジエント鍵ディジタル署名によって、この目的を達成する。
【課題を解決するための手段】
【００１５】
本発明の一実施形態によれば、破ることのできない確実な公開鍵ディジタル署名タイムスタンプが生成され、使用される。このタイムスタンプシステムは、たとえば、ある時間間隔においてのみ存在する使い捨て（transient）秘密暗号鍵のコンセプトに基づく。使い捨て秘密鍵は、ある期間においてのみ使用され、その期間中に送られてきたデータにディジタル署名する。その期間が終了すると、この秘密鍵は永久に破壊される。各期間に対応する公開鍵は、将来の認証に備えて保管され、タイムスタンプが押されたデータの内容および、そのデータが作成された時間の認証に用いられる。公開鍵の有効性は、各期間での公開鍵を、ひとつ前の期間での秘密鍵を用いて証明（たとえば署名）することによって保証される。秘密鍵はその直後に破壊される。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態に係るディジタルタイムスタンプ方法の処理手順を示すフローチャートである。
【図２Ａ】本発明の別の実施形態に係るディジタルタイムスタンプ方法の処理手順の一部を示すフローチャートである。
【図２Ｂ】図２Ａに示した処理手順に引き続く部分の処理手順を示すフローチャートである。
【図３Ａ】本発明のタイムスタンプシステムの図であり、タイムスタンプシステムの一例を示す図である。
【図３Ｂ】本発明のタイプスタンプシステムの図であり、タイムスタンプシステムの別の構成例を示す図である。
【発明を実施するための形態】
【００１７】
本発明の一実施形態では、ディジタルタイムスタンプ方法により、１以上のデータが任意の時間間隔において存在したこと、およびそれらのデータがその期間以降変化していないことを確実に証明するメカニズムを提供する。この方法のすぐれた特徴は、反論の余地のない証拠の確実性をユーザに保証できる点にある。実際、本発明のタイムスタンプ方法で生成されたタイムスタンプ証明書の真正性を否定するのは困難である。本発明のシステムは、外部の証明機関やタイムトラッキング（追跡）システムの信頼性、あるいはそのようなシステムの出現に依存するものではない。本発明では、生成されたタイムスタンプの認証に必要とされるのは、タイムスタンプが押されたデータと、タイムスタンプ証明書の署名と、タイムスタンプ証明書が作成された期間における公開鍵と、標準的な公開鍵認証プログラムだけである。公開鍵認証プログラムとしては、たとえばＰＧＰの無料あるいは有料プログラムがある。また、J/CRYPTO Professional Cryptography Classes for Java Developers（http://www.baltimore.ie/products/jcrypto/index.html）などの公開鍵暗号化プログラムも本発明に使用できる。本発明は、どのようなタイプのコンピュータデータの証明にも適用することができる。
【００１８】
本発明の使い捨て鍵（transient-key）ディジタルタイムスタンプ方法を用いたシステムは、たとえばインターネットサーバとして設定して、すべての証明要求に対して無料でタイムスタンプを押すことができる。このようなシステムによれば、感知可能データの機密性を損なうことなく、その情報の作成時と内部状態とを証明することが可能になる。また、本発明のタイムスタンプ方法は、たとえば文書管理システムに適切に適用することができる。また、医療記録や金融取引などの重要機密書類の認証に用いることもできる。本発明の方法は、任意の計算プラットフォームに容易に適応可能であり、特定の公開鍵アルゴリズムに依存することもない。
【００１９】
図１は本発明の一実施形態に係るディジタルタイムスタンプ方法のフローチャートである。まず、ステップ１０１０で、期間ｔnにおける鍵のペアを生成する。周知のように、鍵のペアとは、公開鍵と秘密鍵のペアである。期間は任意の時間間隔に設定することができ、たとえば、１秒間隔、１０秒間隔、１分間隔、１０分間隔などとする。現在の期間をｔnとする。ステップ１０２０で、期間ｔnにタイムスタンプ要求があるかどうかを判断する。期間ｔnにタイムスタンプが要求がない場合は、ｎを１だけインクリメントしてステップ１０１０に戻り、次の期間ｔn+1における鍵のペアを生成する。
【００２０】
期間ｔnでタイムスタンプ要求があった場合は、ステップ１０３０に進み、タイムスタンプ要求に後続するデータに、自動署名する。自動署名は、たとえば従来のように、このデータのメッセージダイジェストを作成し、期間ｔnの秘密鍵を用いてメッセージダイジェストを自動的に暗号化することによって行う。データに署名した結果、タイムスタンプの署名だけを期間ｔnの公開鍵で暗号化することになる。ステップ１０４０で、タイムスタンプ証明書を生成して、タイムスタンプ要求元に配布し、データの一時的存在を示す。ステップ１０５０で、期間ｔnで別のタイムスタンプ要求があるかどうかを判断する。
【００２１】
別のタイムスタンプ要求がない場合は、ステップ１０６０で、期間ｔnの秘密鍵を削除して、ｎを１だけインクリメントしてステップ１０１０に戻り、次の期間ｔn+1の鍵のペアを生成する。別のタイムスタンプ要求があった場合は、ステップ１０３０に戻り、処理を繰り返す。ステップ１０６０に示すように、期間ｔnでの秘密鍵は、この期間の最後に削除され、一方、公開鍵は、たとえばその後にタイムスタンプの解読などに用いられることもあるので、保管される。このように、本発明の特徴として、各期間ごとに異なる秘密鍵を使用して、その期間に受け取られたタイムスタンプ要求と関連するデータに、自動的にタイムスタンプを押す。
【００２２】
すなわち、図１のフローチャートに示す本発明の方法は、従来のタイムスタンプ方法と異なり、各期間ごとに異なる鍵のペアを生成し、その期間に受け取ったタイムスタンプ要求に付随するデータについて、その期間に固有の秘密鍵で自動的に署名し、期間の終了時に、その秘密鍵を消去する。従来のシステムは、すべてのタイムスタンプ要求に対して、単一の秘密鍵を用いて署名し、一般にタイムスタンプを実行するコンピュータシステムに基づいた異なるメカニズムを採用して、データにタイムスタンプを押していた。また、たとえば本件特許出願に参照文献として組み込まれている米国特許第5,136,647号等に開示されるシステムは、本発明のシステムとは異なり、ドキュメントが順次提出されると、各ドキュメントを署名して、タイムスタンプ用に暗号化されたメッセージダイジェストを生成し、メッセージダイジェストを連鎖させていた。
【００２３】
図２Ａは、本発明の別の実施形態に係るディジタルタイムスタンプ方法のフローチャートである。まず、ステップ２０１０で、鍵のペアを生成する。周知のように、鍵のペアは秘密鍵と公開鍵とから成る。鍵のペアは、本実施形態のタイムスタンプ方法の実行システムによって、所定の時間間隔ごとに生成される。タイムスタンプ実行システムは、たとえば、マイクロプロセッサベースのパーソナルコンピュータやサーバなどの既存の汎用コンピュータを含む。本発明の方法は、たとえば、クライアント−サーバコンピュータシステムアーキテクチャを実行するソフトウエアとして実行される。時間間隔は、毎秒、１０秒ごと、毎分、１０分ごとなど、任意に設定することができる。現在の期間をｔn、次の期間をｔn+1とすると、ドキュメントにタイムスタンプを押す目的であれば、分単位程度の精度でもよい。
【００２４】
ステップＳ２０２０で、期間ｔn+１において、別の秘密鍵と公開鍵とから成る次の鍵のペアを生成する。ステップＳ２０１０とＳ２０２０で鍵のペアを生成するには、ＰＧＰ等の既存のタイムスタンプシステムを変更して、所定の時間間隔ごとに鍵のペアを新しく生成するようにすればよい。既存の既存のディジタルタイムスタンプシステムは、ユーザがユーザＩ／Ｏから鍵ペア生成に必要な情報（たとえばＰＧＰに要求されるパスフレーズやランダムシードなど）を入力して、鍵のペアを生成できるように設計されている。そのようなシステムのソースコードを変更して、鍵ペア生成アルゴリズムに送られるパスフレーズとランダムシードを各時間間隔ごとに自動的に生成するように設定すると、通常はユーザによって入力される情報が自動的に与えられることになる。
【００２５】
ステップ２０３０で、期間ｔn+1の公開鍵を、前回の期間ｔnの秘密鍵を用いて署名する。この処理は、たとえば、期間ｔn+1の公開鍵のメッセージダイジェストを、期間ｔnの秘密鍵を用いて暗号化する。この場合、暗号化された期間ｔn+1の公開鍵は、期間ｔnの公開鍵を使用しないと復号できない。期間ｔn+１の公開鍵を期間ｔnの秘密鍵を使用して暗号化するには、たとえば、ＰＧＰソフトウエア（ある鍵が別の鍵を署名することを命令するシングルコマンドライン）などの既存のソフトウエアの制御に基づくスクリプトを用いる。ステップ２０４０で、期間ｔnの秘密鍵を消去する。すなわち、期間ｔnの秘密鍵は、この期間の間と、次の期間ｔn+1でｔn+1の公開鍵を署名するのに必要な時間の間しか存在しない。ステップ２０５０で、以後の使用に備えて期間ｔnの公開鍵を保存する。以後の使用とは、たとえば、期間ｔn+1の公開鍵に押されたタイムスタンプを解読する等である。
【００２６】
ステップ２０６０で、期間ｔn+1にタイムスタンプ要求があるかどうかを判断する。タイムスタンプ要求がない場合は、ステップ２０２０に戻り、ｎの値をさらに１だけインクリメントして、さらに次の期間の鍵のペアを生成する。期間ｔn+1にタイムスタンプ要求がある場合は、図２Ｂに示すようにステップ２０７０に進み、期間ｔn+1の秘密鍵を使用して、そのタイムスタンプ要求に続くデータに署名する。署名は、たとえば公知のように、タイムスタンプを押すべきデータの一般的なメッセージダイジェストを、期間ｔn+1の秘密鍵で暗号化することによって行う。期間ｔn+1の秘密鍵でデータに署名した場合、このタイムスタンプの署名は期間ｔn+1の公開鍵を用いないと解読できない。上述したように、本発明では、期間ｔn+1の公開鍵自体にもタイムスタンプが押されており、ひとつ前の期間ｔnの公開鍵を使用して認証することができる。したがって、２つの連続する期間にわたって鍵が連鎖されたときに、データに押されたタイムスタンプの認証が自動的に確認される。このように、本実施形態では、データ上のタイムスタンプが正確であることを検証する第三者の存在を必要としない。また、期間ｔnの最後に、次の期間ｔn+1のための鍵のペアを生成し、あらかじめ証明しておき、期間ｔn+1の開始時には、すでにこの鍵のペアを使用できる状態にしておく構成としてもよい。
【００２７】
ステップ２０８０で、スタンプ証明書を生成して、証明要求元に配布する。スタンプ証明書は、たとえば、依頼されたデータのディジタル署名と、期間期間ｔnおよびｔn+1の証明済みの公開鍵である。ステップ２０９０で、期間ｔn+1に別のタイムスタンプ要求があるかどうかを判断する。他にタイムスタンプ要求がなければ、図２ＡのＢ点に戻り、さらに次の期間の鍵のペアを生成する。期間ｔn+1に別のタイムスタンプ要求がある場合は、ステップ２１００で、期間ｔn+1の秘密鍵を使用してタイムスタンプ要求に引き続くデータに署名する。その後、ステップ２０９０に戻り、期間ｔn+1に別のタイムスタンプ要求がなくなるまで、このプロセスを繰り返す。
【００２８】
本発明のデータのタイムスタンプ方法は、ソフトウエア、ファームウエア、適切な汎用コンピュータを用いたハードワイヤードロジック等によって実行される。たとえば、本発明のソフトウエアは、任意のプラットフォームで走らせることのできるＪａｖａ(登録商標)プログラム言語で書かれている。
【００２９】
図３Ａは、本発明のタイムスタンプ方法を実行するクライアント−サーバ・アーキテクチャの構成を示す。クライアント−サーバ・アーキテクチャにおいて、タイムスタンププログラムのサーバ部分は、たとえばサーバ３０１０のメモリ３０１５である。タイムスタンププログラムは、メモリ３０１５に接続されたＣＰＵ３０１６で実行される。サーバ３０１０は、ＬＡＮ、ＷＡＮ、インターネットなどのコネクション３０３０を介して、クライアント装置３０２０に接続される。クライアント装置３０２０は、メモリ３０２５と、これに接続されたＣＰＵ３０２６を有する。メモリ３０２５は、本発明のタイムスタンプ方法のクライアント用プログラムを格納し、ＣＰＵ３０２６で、クライアント用プログラムを実行する。Ｉ／Ｏ３０４０は、キーボード、マウスなどであり、これによってユーザは本発明のタイムスタンプ方法にアクセスすることができる。
【００３０】
操作において、ユーザはＩ／Ｏ３０４０からタイムスタンプを押してもらうべきデータを入力する。すると、ＣＰＵ３０２６は、メモリ３０２５に格納されたクライアントアプリケーションプログラムを実行し、周知の方法でこのデータのメッセージダイジェストを生成する。メッセージダイジェストは、コネクション３０３０を介してサーバ３０１０に送信される。サーバのＣＰＵ３０１６は、メモリ３０１５に格納されたアプリケーションプログラムの実行を開始し、メッセージダイジェストにタイムスタンプを押して、コネクション３０３０を介して、クライアント装置３０２０にタイムスタンプ証明書を返送する。この処理は、図１、２Ａおよび２Ｂに示すとおりである。
【００３１】
図３Ａに示すクライアント−サーバ・アーキテクチャを用いた、別の実行例として、クライアント装置３０２０で署名する構成としてもよい。たとえば、Ｉ／Ｏ３０４０を介して、ユーザはタイムスタンプを押すべきデータを入力し、メッセージダイジェストセーを作らずに、コネクション３０３０を介してサーバ３０１０にタイムスタンプ要求を送る。このタイムスタンプ要求に応じて、サーバ３０１０は、現在の期間における鍵のペアを生成する。このとき、本発明の実施形態にしたがって、ひとつ前の期間の鍵のペアを構成する秘密鍵を使用して、現在の公開鍵を署名する。サーバ３０１０は、現在の期間の鍵のペアと、この期間の秘密鍵のパスフレーズと、ひとつ前の期間の公開鍵とをクライアント装置３０２０に送り返す。サーバ３０１０からクライアント装置３０２０への通信の秘密性を確保するために、コネクション３０３０は、たとえばＳＳＬ（Secure Sockets Layer）を使用した安全な通信路を有する。クライアント装置３０２０がサーバ３０１０からの情報を受信したならば、クライアント装置３０２０は受信した現在の秘密鍵を使用して、公知の方法でタイムスタンプ要求のメッセージダイジェストを生成する。タイムスタンプを生成したならば、使用した秘密鍵のクライアント側コピーとパスフレーズとを即座に消去する。
【００３２】
図３Ａのクライアント−サーバ・アーキテクチャのさらに別の実行例として、クライアント装置３０２０は、みずから秘密鍵と公開鍵のペアを生成し、サーバ３０１０が生成した別の鍵のペアを使用して、自身の公開鍵にタイムスタンプを押す。具体的には、クライアント装置３０２０は、生成した公開鍵を、コネクション３０３０を介してサーバ３０１０に送信する。サーバ３０１０は、サーバが生成した現在の鍵のペアのうち、秘密鍵を使用して、クライアント装置３０２０から送られてきた公開鍵に署名する。そして、署名済みの公開鍵と、サーバの公開鍵とを、クライアント装置３０２０に返送する。一方、クライアント装置３０２０で生成された秘密鍵を用いて、データにタイムスタンプが押される。タイムスタンプ生成後、クライアント側の秘密鍵は即座に消去される。クライアント側の公開鍵は、サーバ側の秘密鍵で無効にされ、クライアント側公開鍵の無効証明書が発行される。サーバ３０１０から送られてきた秘密鍵は破壊される。上記の無効証明書は、データの署名、現在のサーバ側公開鍵、前回のサーバ側公開鍵、クライアント側公開鍵とともに、タイムスタンプ証明書に組み込まれる。
【００３３】
図３Ｂは、本発明のタイムスタンプ方法の実行システムの別の構成例を示す図である。図３Ｂのシステムでは、単一のコンピュータシステム３１００で本発明のタイムスタンプ方法を実行する。コンピュータシステム３１００は、たとえばリレイショナル・データベース（保存／検索テーブル付データベース）システム、あるいは金融取引システムなどである。コンピュータシステム３１００は、メモリ３１１５と、これに接続されたＣＰＵ３１１６を有する。コンピュータ３１００に接続されたＩ／Ｏ３１４０は、キーボード、マウスなどであり、ユーザは、これを介してタイムスタンプ方法にアクセスすることができる。メモリ３１１５は、たとえば、タイムスタンプを押すべきデータのメッセージダイジェストを生成する常駐プログラムと、本発明によるタイムスタンププログラムの双方を格納する。
【００３４】
図３Ｂの例では、ユーザはＩ／Ｏ３１４０からタイムスタンプを押すべきデータを入力してもよいし、データベーストランザクションに応じてシステムが自動的にタイムスタンプを押すべきデータを識別する構成としてもよい。タイムスタンプを押すべきデータを識別したならば、ＣＰＵ３１１６はメモリ３１１５に格納された常駐プログラムを実行し、そのデータのメッセージダイジェストを生成する。メッセージダイジェストは、同じくメモリ３１１５に格納されているアプリケーションプログラムに送られ、ＣＰＵ３１１６は、データにタイムスタンプを押して、タイムスタンプ証明書を常駐プログラムに返送する。常駐プログラムは、タイムスタンプ証明書を、ユーザに向けてＩ／Ｏ３１４０へ転送する。
【００３５】
上述したように、本発明によれば、特定の時間間隔で、秘密鍵と公開鍵のペアが生成され、ある期間に発生したタイムスタンプ要求は、この期間の秘密鍵を用いて自動的に実行される。この秘密鍵は、期間終了後に速やかに消去される。別の例では、ひとつ前の期間の秘密鍵を使用して、現在の期間の公開鍵に署名し、署名後に前回の秘密鍵を消去する。特に、本発明の良好な実施形態では、各期間ごとに異なる鍵のペアが生成され、現在の期間の秘密鍵を使用して、次の期間の公開鍵に署名した後で、現在の秘密鍵が消去される。また、鍵のペアはすべての期間に連続して生成される必要はなく、タイムスタンプ要求があった期間にのみ、キューによって生成、選択される構成としてもよい。
【００３６】
本発明のタイムスタンプ方法は、公開鍵暗号方法を新規な方式で利用する。すなわち、鍵のペアを、固定エンティティ（データ、プログラム等）に対応して生成するのではなく、一過的な時間間隔に対応して生成する。次に、これらの鍵と、鍵によって生成されたディジタル署名とを用いて、データが署名された時間を正確に証明し、かつ、そのデータの内容を認証する。上述したように、このシステムの特徴は、特定の期間に用いられる秘密鍵は、有限の時間間隔（一般に非常に短時間）においてしか存在せず、時間の経過とともに、次の期間の異なる秘密鍵へと順次置き換えられていく。本発明に適合するように変更を加えたＰＧＰプログラム等の公開鍵暗号方法を用いて、一定の時間間隔で一連の公開鍵暗号化鍵ペアを自動的に生成する。それぞれの鍵は、通常はその鍵のユーザＩＤの中に指定先を有し、その鍵が使用される特定の期間を識別する。動的に生成される鍵の場合、可能な最小の時間間隔は、鍵のペアを生成し、その鍵のペアを用いて公開鍵を検査確認するのに必要な時間で決定される。上述したように、鍵のペアをひとつ前の機関であらかじめ生成しておくことによって、時間間隔を短縮することが可能である。
【００３７】
以上述べたように、各期間ごとに、その期間の公開鍵をひとつ前の期間の秘密鍵を用いて証明（たとえばディジタル署名）し、その直後にその秘密鍵を消去する方式で署名を「連鎖」させていく。このような連鎖方式により、タイムスタンプの真正性が証明される。
【００３８】
各期間の鍵のペアのうち、公開鍵はその後の使用に備えて保存される。一方，秘密鍵は、その秘密鍵が生成された期間の直後の期間でデータにタイムスタンプを押すために使用される。具体的には、ある期間の秘密鍵は、その期間にシステムに送られてきたすべてのデータにディジタル署名し、タイムスタンプを押すために使用される。換言すると、タイムスタンプを押してもらうためにデータがシステムに送られてくると、送られてきた期間に対応する秘密鍵を用いてデータに署名する。この署名過程で、タイムスタンプ証明書が生成される。各タイムスタンプ証明書は、たとえば、秘密鍵によってされたデータのディジタル署名と、現在の期間における証明済みの公開鍵とを含む。各期間で使用された公開鍵はその後の使用に備えて保管される。本発明によれば、システムによって与えられたタイムスタンプの真正性は、鍵の連鎖によって自動的に証明されているので、将来その真正性を証明する必要はない。しかし、すべてのタイムスタンプ証明書も一応保管して、タイムスタンプ証明書の簡単な認証に使用してもよい。
【００３９】
各期間の最後に、次の期間のための新たな鍵のペアを生成しておくこともできる。この場合、現在の期間における秘密鍵を使用して、新たに生成された鍵を証明（たとえば署名）し、その後直ちに、秘密鍵を消去する。将来の任意の時点でタイムスタンプを検査するには、そのスタンプが押された期間の公開鍵を使用して、タイムスタンプ証明書中のディジタル署名を認証する必要がある。この公開鍵は、ひとつ前の期間の公開鍵を使用して、認証すべき公開鍵上の証明署名を認証することによって検査できる。公開鍵証明署名の「チェイン（鎖）」をたどって所望の時点までさかのぼることができるので、一連の署名の鎖における、各期間のスタンプの時間的ロケーションは、確固とした証拠となり得る。所定の期間内でその鍵が使用されたより具体的な時間については、同じ鍵によって生成されたその他の証明書をトラッキングし、それらの署名と関連するデータの生成時間とをつなげていくことによって、証明することができる。各期間の秘密鍵は、その期間の終了後直ちに破壊されるので、事後、偽のタイムスタンプを作成することは実質不可能である。
【００４０】
本発明のタイムスタンプ方法は上述した実行例に限定されない。たとえば、上述したように、ユーザサイトでメッセージダイジェストを計算し、メッセージダイジェストだけをサーバに送信して署名してもらうこともできる。この 場合は、データの秘密性が確保されるとともに、ネットワークの帯域幅を有効に使用することができる。
【図１】
2010148098.tif 000003
【図２Ａ】
2010148098.tif 000004
【図２Ｂ】
2010148098.tif 000005
【図３Ａ】
2010148098.tif 000006
【図３Ｂ】
2010148098.tif 000007
【手続補正書】
【提出日】平成21年12月24日(2009.12.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
任意の時間間隔である任意の期間におけるタイムスタンプの真正性を証明するデータ証明プログラムを格納するメモリと、前記メモリに格納された前記データ証明プログラムを前記メモリから読み出して実行するＣＰＵとを備える汎用コンピュータと、前記汎用コンピュータに接続されたＩ／Ｏ（入出力装置）とを備えるデータ証明システムによって実行されることによって機能的に実現されるデータ証明方法であって、
前記ＣＰＵが前記メモリから前記プログラムを読み出して実行することにより、
前記任意の期間のうちの第１の期間に、秘密鍵と公開鍵からなる鍵のペアを生成するステップと、
前記第１の期間に、前記Ｉ／Ｏを通してデータの証明要求を受け取るステップと、
前記第１の期間に、前記データの証明要求に応じて、前記第１の期間に生成された秘密鍵を用いて、前記データの証明要求に関連するデータにディジタル署名するステップと、
前記証明要求を処理した結果を前記Ｉ／Ｏを通して出力するステップと、
前記ディジタル署名が終わった後であって前記第１の期間内にて前記秘密鍵を消去するステップと
を含むデータ証明方法。
【請求項２】
前記データがディジタル署名されたことを確認するタイムスタンプ証明書を生成するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項３】
前記第１の期間の公開鍵を保管するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項４】
前記ディジタル署名されたデータを、公開鍵を用いて認証するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項５】
前記第１の期間に、別の証明要求があるかどうかを判断するステップをさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項６】
前記第１の期間に別の証明要求を受信した場合に、その証明要求に応じて、前記第１の期間に生成された秘密鍵を用いて、前記別の証明要求に付随するデータに自動的にディジタル署名するステップをさらに含み、前記秘密鍵を消去するステップは、前記別の証明要求が処理された後に前記秘密鍵を消去することを特徴とする請求項５に記載のデータ証明方法。
【請求項７】
第１の期間の次の期間に、秘密鍵と公開鍵から成る鍵のペアを生成するステップと、
前記次の期間に次の証明要求を受け取るステップと、
前記次の証明要求に応じて、前記次の期間の秘密鍵を使用して、前記次の証明要求に関連するデータに自動的にディジタル署名するステップと、
前記次の期間の秘密鍵を消去するステップと、
をさらに含むことを特徴とする請求項１に記載のデータ証明方法。
【請求項８】
任意の時間間隔である任意の期間におけるタイムスタンプの真正性を証明するデータ証明プログラムを格納するメモリと、前記メモリに格納された前記データ証明プログラムを前記メモリから読み出して実行するＣＰＵとを備える汎用コンピュータと、前記汎用コンピュータに接続されたＩ／Ｏ（入出力装置）とを備えるデータ証明システムによって実行されることによって機能的に実現されるデータ証明方法であって、
前記ＣＰＵが前記メモリから前記プログラムを読み出して実行することにより、
前記任意の期間のうちの第１の期間に、第１の公開鍵と第１の秘密鍵から成る第１の鍵のペアを生成するステップと、
前記任意の期間のうちの前記第１の期間よりも後の第２の期間に、第２の公開鍵と第２の秘密鍵から成る第２の鍵のペアを生成するステップと、
前記第１の秘密鍵を使用して、前記第２の公開鍵を署名するステップと、
前記第１の秘密鍵を消去するステップと、
前記第２の期間に、前記第２の秘密鍵を使用して、証明要求を処理するステップと、
前記証明要求を処理した結果を前記Ｉ／Ｏと通して出力するステップと、
前記第２の秘密鍵を消去するステップと
を含むデータ証明方法。
【請求項９】
前記第１の公開鍵を保管するステップをさらに含むことを特徴とする請求項８に記載のデータ証明方法。
【請求項１０】
前記証明要求を処理するステップは、前記証明要求に応じて、前記第２の秘密鍵を用いて前記処理要求に関連するデータに自動的にディジタル署名することを特徴とする請求項８に記載のデータ証明方法。
【請求項１１】
前記データにディジタル署名したことを確認するタイムスタンプ証明書を生成するステップをさらに含むことを特徴とする請求項１０に記載のデータ証明方法。
【請求項１２】
前記タイムスタンプ証明書は、前記ディジタル署名と前記第２の公開鍵を含むことを特徴とする請求項１１に記載のデータ証明方法。
【請求項１３】
前記タイムスタンプ証明書はさらに、前記第１の公開鍵を含むことを特徴とする請求項１２に記載のデータ証明方法。
【請求項１４】
前記第１の公開鍵を使用して、前記ディジタル署名したデータを証明するステップをさらに含むことを特徴とする請求項８に記載のデータ証明方法。
【外国語明細書】
2010148098.tif 000008
2010148098.tif 000009
2010148098.tif 000010
2010148098.tif 000011
2010148098.tif 000012
2010148098.tif 000013
2010148098.tif 000014
2010148098.tif 000015
2010148098.tif 000016
2010148098.tif 000017
2010148098.tif 000018
2010148098.tif 000019
2010148098.tif 000020
2010148098.tif 000021
2010148098.tif 000022
2010148098.tif 000023
2010148098.tif 000024
2010148098.tif 000025
2010148098.tif 000026
2010148098.tif 000027
2010148098.tif 000028
2010148098.tif 000029
2010148098.tif 000030
2010148098.tif 000031
2010148098.tif 000032
2010148098.tif 000033
2010148098.tif 000034
2010148098.tif 000035
2010148098.tif 000036
2010148098.tif 000037