(57)【要約】【課題】  既存の計算量的安全性に基づく署名アルゴリズムを利用し、かつ署名データの真正性を長期に渡って保証可能な署名データの生成及びその検証を可能にする。【解決手段】  署名対象のメッセージを入力し、そのメッセージに付加情報を付加し、ハッシュ関数及び公開鍵暗号を用いて、付加情報を付加したメッセージの署名データを生成し、署名データを付加情報として、所定回数メッセージへの付加及び署名データの生成を繰り返し、繰り返し生成された署名データ及び付加情報をメッセージと共に出力する。【選択図】      図３
2006109107.tif 000002
【特許請求の範囲】
【請求項１】
署名対象のメッセージを入力する入力工程と、
前記メッセージに付加情報を付加する付加工程と、
ハッシュ関数及び公開鍵暗号を用いて前記付加情報を付加したメッセージの署名データを生成する生成工程と、
前記署名データを付加情報として、前記付加工程及び前記生成工程を所定回数繰り返す工程と、
繰り返し生成された署名データ及び付加情報を前記メッセージと共に出力する出力工程とを有することを特徴とする署名生成方法。
【請求項２】
前記繰り返す工程では、前記ハッシュ関数に異なるアルゴリズムを利用することを特徴とする請求項１に記載の署名生成方法。
【請求項３】
前記繰り返す工程では、前記公開鍵暗号に異なるアルゴリズムを利用することを特徴とする請求項１に記載の署名生成方法。
【請求項４】
前記繰り返す工程では、前記公開鍵暗号で用いる鍵長を順に短くすることを特徴とする請求項１に記載の署名生成方法。
【請求項５】
前記メッセージ、前記付加情報、及び前記署名データを連結して、公開鍵証明書とすることを特徴とする請求項１に記載の署名生成方法。
【請求項６】
前記公開鍵証明書はＩＴＵ−Ｕ勧告Ｘ．５０９ｖ．３で規定されるフォーマットの拡張部分に前記付加情報を格納することを特徴とする請求項５に記載の署名生成方法。
【請求項７】
署名対象のメッセージ、署名データ、及び付加情報を入力する入力工程と、
前記メッセージに前記付加情報を付加する付加工程と、
ハッシュ関数及び前記署名データを用いて前記付加情報が付加されたメッセージを検証する署名検証工程と、
前記検証の結果を出力する出力工程とを有することを特徴とする署名検証方法。
【請求項８】
前記入力工程では、検証のために必要な付加情報を複数個入力し、
前記付加工程及び前記署名検証工程を所定回数繰り返す工程を有することを特徴とする請求項７に記載の署名検証方法。
【請求項９】
前記繰り返す工程では、前記ハッシュ関数に異なるアルゴリズムを利用することを特徴とする請求項８に記載の署名検証方法。
【請求項１０】
前記繰り返す工程では、前記署名検証工程で異なるアルゴリズムを利用することを特徴とする請求項８に記載の署名検証方法。
【請求項１１】
前記繰り返す工程では、前記署名検証工程で用いられる鍵長を順に短くすることを特徴とする請求項８に記載の署名検証方法。
【請求項１２】
前記メッセージ、前記付加情報、及び前記署名データを連結して、公開鍵証明書とすることを特徴とする請求項７に記載の署名検証方法。
【請求項１３】
前記公開鍵証明書はＩＴＵ−Ｕ勧告Ｘ．５０９ｖ．３で規定されるフォーマットの拡張部分に前記付加情報を格納することを特徴とする請求項７に記載の署名検証方法。
【請求項１４】
検証のために公開した第１の公開鍵の他に、前記第１の公開鍵と異なる第２の公開鍵、及び検証のために必要な第２の付加情報を公開することを特徴とする公開鍵配布方法。
【請求項１５】
署名対象のメッセージを入力する入力手段と、
前記メッセージに付加情報を付加する付加手段と、
ハッシュ関数及び公開鍵暗号を用いて前記付加情報を付加したメッセージの署名データを生成する生成手段と、
前記署名データを付加情報として、前記付加手段及び前記生成手段を所定回数繰り返すように制御する制御手段と、
繰り返し生成された署名データ及び付加情報を前記メッセージと共に出力する出力手段とを有することを特徴とする情報処理装置。
【請求項１６】
署名対象のメッセージ、署名データ、及び付加情報を入力する入力手段と、
前記メッセージに前記付加情報を付加する付加手段と、
ハッシュ関数及び前記署名データを用いて前記付加情報が付加されたメッセージを検証する署名検証手段と、
前記検証の結果を出力する出力手段とを有することを特徴とする情報処理装置。
【請求項１７】
請求項１に記載の署名生成方法又は請求項７に記載の署名検証方法をコンピュータに実行させるためのプログラム。
【請求項１８】
請求項１７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力デジタルデータに対して長期間保存が可能な署名データを作成及び検証する技術に関する。
【背景技術】
【０００２】
近年、文書や画像に関するデジタルデータがインターネットなどの広域ネットワークを通して流通する場合、デジタルデータは改変が容易であるため、第三者によってデータが改ざんされる危険性がある。そこで、送信されてきたデータが改ざんされているか否かを受信者が検出するために、改ざん防止用の付加データを検証する方式としてデジタル署名という技術が提案されている。このデジタル署名技術は、データの改ざんだけではなく、インターネット上でのなりすましや否認などを防止する効果も持ち合わせている。
【０００３】
[デジタル署名]
デジタル署名データの生成には、ハッシュ関数と公開鍵暗号とが用いられる。これは、秘密鍵をＫｓ、公開鍵をＫｐとすれば、送信者は、入力データＭにハッシュ処理を施して固定長データＨ（Ｍ）を算出した後、秘密鍵Ｋｓでその固定長データＨ（Ｍ）を変換してデジタル署名データＳを作成し、その後、デジタル署名データＳと入力データＭとを受信者に送信する。
【０００４】
一方、受信者は、そのデジタル署名データＳを公開鍵Ｋｐで変換（復号）したデータと、入力データＭにハッシュ処理を施したデータとが一致するか否かを検証する。ここで、検証結果が一致していなければ、入力データＭに改ざんが行われたと判定する。
【０００５】
デジタル署名にはＲＳＡ，ＤＳＡなど公開鍵暗号方式が用いられおり、署名の安全性は秘密鍵の所有者以外のエンティティが署名を偽造或いは秘密鍵を解読することが計算的に困難であるという事実に基づいている。
【０００６】
図１は、署名作成処理（Sign process）と署名検証処理（Verify process）を表す模式図である。図１に示すように、上述したデジタル署名データを作成する署名作成処理と、デジタル署名データを用いて入力データを検証する署名検証処理が行われる。
【０００７】
[ハッシュ関数]
次に、デジタル署名データの生成を高速化するために用いられるハッシュ関数について説明する。このハッシュ関数は、任意の長さのデータＭに処理を行い、一定の長さの出力データを生成する機能を有する。ここで、出力Ｈ（Ｍ）を平文データＭのハッシュデータと呼ぶ。特に、一方向性ハッシュ関数は、データＭを与えたとき、Ｈ（Ｍ’）＝Ｈ（Ｍ）となる平文データＭ’の算出が計算量的に困難であるという性質を持っている。ここで、一方向性ハッシュ関数としてはＭＤ２、ＭＤ５、ＳＨＡ−１などの標準的なアルゴリズムが存在しており、これらのアルゴリズムは公開されている。
【０００８】
[公開鍵暗号]
次に、公開鍵暗号について説明する。公開鍵暗号は、２つの異なる鍵を利用し、片方の鍵で暗号処理したデータは、もう片方の鍵でしか復号処理できないという性質を持っている。２つの鍵のうち、一方の鍵は公開鍵と呼ばれ、広く公開するようにしている。また、もう片方の鍵は秘密鍵と呼ばれ、本人のみが持つ鍵である。
【０００９】
この公開鍵暗号方式を用いたデジタル署名としては、例えばＤＳＡ署名，ＲＳＡ署名，Schnorr署名などが挙げられる。ここでは一例としてＤＳＡ署名を紹介する。
【００１０】
[ＤＳＡ署名]
非特許文献１に記載の方式を説明する。ｐ，ｑを素数とし，ｐ−１はｑを割り切るものする。ｇをＺ＿ｐ＊（位数ｐの巡回群Ｚ＿ｐから０を省いた乗法群）から任意に選択した、位数ｑの元（生成元）とする。Ｚ＿ｐ＊から任意に選択したｘを秘密鍵とし、それに対する公開鍵ｙをｙ：＝ｇｘ ｍｏｄ ｐとおく。Ｈ（）はハッシュ関数とする。
【００１１】
[ＤＳＡ署名作成]
文書Ｍに対する署名の作成手順
１）αをＺ＿ｑから任意に選択し、Ｔ：＝（ｇα ｍｏｄ ｐ） ｍｏｄ ｑとおく。
２）ｃ：＝Ｈ（Ｍ）とおく。
３）ｓ：＝α−１（ｃ＋ｘＴ） ｍｏｄ ｑとおき，（ｓ，Ｔ）を署名データとする。
【００１２】
[ＤＳＡ署名検証]
文書Ｍに対する署名データ（ｓ，Ｔ）の検証手順
Ｔ＝（ｇＨ（Ｍ）／sｙＴ／ｓ mod ｐ） mod ｑか否かを検証する。
【非特許文献１】Federal Information Processing Standards (FIPS) 186-2, Digital Signature Standard (DSS) , January 2000
【非特許文献２】G. Hanaoka, J. Shikata, Y. Zheng, and H. Imai, Unconditionally secure digital signature schemes admitting transferability, Advances in Cryptology-ASIACRYPT 2000, LNCS 1976, pp.130-142, Springer-Verlag, 2000
【発明の開示】
【発明が解決しようとする課題】
【００１３】
以上のように、デジタル署名技術は、インターネット上でのなりすまし、データ改ざん、否認などを防止する効果がある。また、デジタル署名の安全性は、秘密鍵を所有者以外のエンティティが署名を偽造、或いは秘密鍵を解読することが計算的に困難であることに基づいていることが多い。上述したＤＳＡ署名も計算量的な安全性を持つ署名方式の一つである。
【００１４】
一方、行政や医療などの分野においては、法律により、５年、１０年といった長期的な保存が義務付けられている場合が見受けられる。現在、一般的に利用されているデジタル署名技術では、次のような問題があり、署名の長期保存技術、即ち署名の真正性を長期に渡って保証するための仕組みが必要とされている。特に、電子公証制度、タイムスタンプ制度と組み合わせて利用されることが想定されている。
（１）暗号解読技術の進展及び計算機の性能向上により、１０年単位での長期間の保存に耐えられなくなる
（２）公開鍵証明書の有効期限を過ぎた公開鍵／秘密鍵によるデジタル署名の有効性確認を行う場合が想定される。
【００１５】
上述の問題を解決する一つのアプローチとしては、非特許文献２などで提案されている情報量的安全性に基づく署名方式がある。この方式は、計算量に依存しないで安全であることを証明可能な署名技術である。
【００１６】
しかしながら、実用化に向けて検討段階に入っているに過ぎず、概念登場からの歴史が浅く研究の余地があり、これまでの署名技術と互換性がない等の問題点を抱えている。
【００１７】
本発明は、上述の問題点に鑑みてなされたもので、既存の計算量的安全性に基づく署名アルゴリズムを利用し、かつ署名データの真正性を長期に渡って保証可能な署名データの生成及びその検証を可能にすることを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、署名生成方法であって、署名対象のメッセージを入力する入力工程と、前記メッセージに付加情報を付加する付加工程と、ハッシュ関数及び公開鍵暗号を用いて前記付加情報を付加したメッセージの署名データを生成する生成工程と、前記署名データを付加情報として、前記付加工程及び前記生成工程を所定回数繰り返す工程と、繰り返し生成された署名データ及び付加情報を前記メッセージと共に出力する出力工程とを有することを特徴とする。
【００１９】
また、本発明は、署名検証方法であって、署名対象のメッセージ、署名データ、及び付加情報を入力する入力工程と、前記メッセージに前記付加情報を付加する付加工程と、ハッシュ関数及び前記署名データを用いて前記付加情報が付加されたメッセージを検証する署名検証工程と、前記検証の結果を出力する出力工程とを有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、計算能力の向上により計算量的安全性が崩れてしまう既存の署名アルゴリズム、ハッシュアルゴリズムを利用しても、署名データの真正性を長期に渡って保証できる署名データを生成することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【実施例１】
【００２２】
図２は、実施例１における情報処理装置の構成の一例を示す概略図である。尚、本発明を実現する際に、図２に示される全ての機能を使用することが必須でないことは言うまでもない。
【００２３】
情報処理装置２００は、図２に示すように、モデム２１８、モニタ２０２、ＣＰＵ２０３、ＲＯＭ２０４、ＲＡＭ２０５、ＨＤ（ハードディスク）２０６、ネットワーク接続部２０７、ＣＤ２０８、ＦＤ（フレキシブル・ディスク）２０９、ＤＶＤ（デジタル・ビデオ・ディスク又はDigital Versatile Disk）２１０、プリンタ２１５とのインターフェース（Ｉ／Ｆ）２１７、操作部としてのマウス２１２やキーボード２１３などとのインターフェース（Ｉ／Ｆ）２１１で構成され、バス２１６を介して互いに通信可能に接続されている。以下、情報処理装置２００を構成する各ユニットについて順に説明する。
【００２４】
まずマウス２１２及びキーボード２１３は、情報処理装置２００に対する各種指示等をユーザが入力するための操作部である。この操作部を介して入力された情報（操作情報）は、インターフェース２１１を介して情報処理装置２００内に取り込まれる。
【００２５】
情報処理装置２００での各種情報（文字情報や画像情報等）は、プリンタ２１５により印刷出力できるように構成されている。
【００２６】
モニタ２０２は、ユーザへの各種指示情報や、文字情報或いは画像情報等の各種情報の表示を行う。
【００２７】
ＣＰＵ２０３は、情報処理装置２００全体の動作制御を司るものであり、実施例１では制御手段として機能している。即ち、ＣＰＵ２０３は、ＨＤ（ハードディスク）２０６等から処理プログラム（ソフトウェアプログラム）を読み出して実行することで、情報処理装置２００全体を制御する。
【００２８】
特に、実施例１では、ＣＰＵ２０３はＨＤ２０６等から署名作成機能及び署名検証機能を実現する処理プログラムを読み出して実行することで、詳細は後述する情報変換処理を実施する。
【００２９】
ＲＯＭ２０４は、システムのブートプログラムや各種処理プログラム或いは制御データが格納されている。
【００３０】
ＲＡＭ２０５は、ＣＰＵ２０３での各種処理のために、一時的に処理プログラムや処理対象の情報を格納するための作業用エリア等として使用される。
【００３１】
ＨＤ２０６は、大容量記憶装置の一例としての構成要素であり、各種データ或いは各種処理の実行時にＲＡＭ２０５等へ転送される情報変換処理等のための処理プログラム等を保存する。
【００３２】
ＣＤ（ＣＤドライブ）２０８は、外部記憶媒体の一例としてのＣＤ（ＣＤ−Ｒ）に記憶されたデータを読み込み、また当該ＣＤへデータを書き出す機能を有する。
【００３３】
ＦＤ（ＦＤドライブ）２０９は、上述のＣＤ２０８と同様に、外部記憶媒体の一例としてのＦＤに記憶されたデータを読み出す。また種々のデータを当該ＦＤへ書き込む機能を有している。
【００３４】
ＤＶＤ（ＤＶＤドライブ）２１０は、上述のＣＤ２０８やＦＤ２０９と同様に、外部記憶媒体の一例としてのＤＶＤに記憶されたデータを読み出し、また当該ＤＶＤへデータを書き込む機能を有している。
【００３５】
尚、ＣＤ２０８、ＦＤ２０９、ＤＶＤ２１０等の外部記憶媒体に対して、例えば編集用のプログラム或いはプリンタドライバが記憶されている場合には、これらのプログラムをＨＤ２０６へインストールしておき、必要に応じて、ＲＡＭ２０５へ転送するように構成しても良い。
【００３６】
インターフェース（Ｉ／Ｆ）２１１は、マウス２１２やキーボード２１３によるユーザからの入力を受け付けるためのものである。
【００３７】
モデム２１８は、インターフェース（Ｉ／Ｆ）２１９を介して、例えば公衆回線等を通じて外部の通信ネットワークに接続された通信機器との間で通信を行うための通信モデムである。
【００３８】
ネットワーク接続部２０７は、インターフェース（Ｉ／Ｆ）２１４を介してＬＡＮなどのネットワークへの接続を制御する。
【００３９】
ここで、入力されたメッセージに付加情報（パディングデータ）を付加して署名データを作成する署名作成処理（Sign process）及びその署名データに基づいて入力メッセージを検証する署名検証処理（Verify process）について説明する。
【００４０】
図３は、実施例１における署名作成処理及び署名検証処理を表す模式図である。図３に示すように、実施例１では、入力されたメッセージＭにパディングデータ（乱数）Ｐａｄを付加するものである。まず、図４を用いて署名作成処理の詳細について説明する。
【００４１】
図４は、実施例１における署名作成処理を示すフローチャートである。尚、この処理は図２に示す情報処理装置２００、特にマウス２１２やキーボード２１３からの入力指示によりＨＤ２０６等に格納されている所定のプログラムをＣＰＵ２０３などが実行することによって実現される処理である。
【００４２】
まず、ステップＳ４０１において、署名対象となるメッセージＭを入力し、ステップＳ４０２において、適当な擬似乱数生成器（不図示）を用いて乱数Ｐａｄ＿０を発生させ、パディングデータとしてＨＤ２０６などに格納する。ここで作成されたパディングデータは後述するステップＳ４０３で利用される。
【００４３】
次に、ステップＳ４０３において、ステップＳ４０１で入力されたメッセージＭにステップＳ４０２又は後述するステップＳ４０５で作成されたパディングデータを付加する。即ち、最初はステップＳ４０２で作成されたＰａｄ＿０が付加され、後述するステップＳ４０６で規定回数分処理を実行していない場合は後述するステップＳ４０５で作成されたデジタル署名データがパディングデータ（Ｐａｄ＿（ｉ−１））として付加される。
【００４４】
尚、Ｐａｄ＿（ｉ−１）のパラメータｉは、後述する規定回数をカウントするカウンタ（初期値ｉ＝１とする）と同じ値で、ステップＳ４０６でインクリメントされる。また、規定回数はＨＤ２０６などに格納されているか、ステップＳ４０１でメッセージＭと共に入力されるものとする。
【００４５】
次に、ステップＳ４０４において、ステップＳ４０３でパディングデータ（Ｐａｄ＿（ｉ−１））が付加されたメッセージＭにハッシュ処理を行い、固定長データ（Ｄ＿ｉ）を算出する。そして、ステップＳ４０５において、その固定長データ（Ｄ＿ｉ）を秘密鍵Ｓ＿ｉで変換してデジタル署名データを作成する署名処理を行う。
【００４６】
上述のステップＳ４０３〜Ｓ４０５の処理を数式で表すと次のようになる。尚、数式の左にある括弧内の文字は処理ステップを示している。
（Ｓ４０３）  Ｍ＿ｉ：＝Ｍ || Ｐａｄ＿（ｉ−１）
（Ｓ４０４）  Ｄ＿ｉ：＝Ｈ（Ｍ＿ｉ）  
（Ｓ４０５）  Ｐａｄ＿ｉ：＝Ｓｉｇｎ（Ｓ＿ｉ；Ｄ＿ｉ）
ここで、Ｈ（）はハッシュ関数、Ｓｉｇｎ（Ａ；Ｂ）は秘密鍵ＡによるＢに対する署名処理を表している。また、秘密鍵Ｓ＿ｉはＨＤ２０６などに格納されているか、ステップＳ４０１でメッセージＭと共に入力されるものとする。
【００４７】
次に、ステップＳ４０６において、規定回数上述のステップＳ４０３〜Ｓ４０５の処理を実行したか否かを判定し、カウンタの値が規定回数と等しくなければ、パラメータｉをインクリメントして上述の処理を繰り返し、またカウンタの値が規定回数と等しい場合はステップＳ４０７へ進む。
【００４８】
このステップＳ４０７では、規定回数をＮ回とすると、Ｐａｄ＿０，Ｐａｄ＿１，…，Ｐａｄ＿Ｎを出力する。そして、検証者には、署名データとしてＰａｄ＿Ｎ、パディングデータとしてＰａｄ＿（Ｎ−１）、メッセージＭ、秘密鍵Ｓ＿Ｎに対応する公開鍵Ｐ＿Ｎを送信すれば良い。図５は、規定回数をＮ回とする実施例１における署名作成処理を表す模式図である。
【００４９】
次に、図６を用いて上述の署名作成処理で作成された署名データに基づき、入力されたメッセージを検証する実施例１における署名検証処理の詳細について説明する。
【００５０】
図６は、実施例１における署名検証処理を示すフローチャートである。尚、この処理は図２に示す情報処理装置２００、特にマウス２１２やキーボード２１３からの入力指示によりＨＤ２０６等に格納されている所定のプログラムをＣＰＵ２０３などが実行することによって実現される処理である。
【００５１】
まず、ステップＳ６０１において、検証対象メッセージＭ、パディングデータＰａｄ＿（Ｎ−１）及び署名データＰａｄ＿Ｎを入力する。尚、後述するステップＳ６０４で利用する公開鍵Ｐ＿Ｎを入力する場合もある。
【００５２】
次に、ステップＳ６０２において、ステップＳ６０１で入力された検証対象メッセージＭにパディングデータＰａｄ＿（Ｎ−１）を付加する。そして、ステップＳ６０３では、パディングデータＰａｄ＿（Ｎ−１）が付加されたメッセージＭにハッシュ処理を行い、固定長データ（Ｄ＿Ｎ）を算出する。
【００５３】
次に、ステップＳ６０４において、ステップＳ６０１で入力された署名データＰａｄ＿Ｎを公開鍵Ｐ＿Ｎで変換（復号）したデータと、ステップＳ６０３で入力メッセージＭにハッシュ処理を施したデータとが一致するか否かを検証する。
【００５４】
上述のステップＳ６０２〜Ｓ４０４の処理を数式で表すと次のようになる。尚、数式の左にある括弧内の文字は処理ステップを示している。
（Ｓ６０２）  Ｍ＿Ｎ：＝Ｍ || Ｐａｄ＿（Ｎ−１）
（Ｓ６０３）  Ｄ＿Ｎ：＝Ｈ（Ｍ＿Ｎ）  
（Ｓ６０４）  Ｖｅｒｉｆｙ（Ｐ＿Ｎ；Ｄ＿Ｎ；Ｐａｄ＿Ｎ）
ここで、Ｈ（）はハッシュ関数、Ｖｅｒｉｆｙ（Ａ；Ｂ；Ｃ）は公開鍵ＡによりＢに対する署名データＣを検証する処理を表している。また、このＶｅｒｉｆｙ（Ａ；Ｂ；Ｃ）の処理において、公開鍵Ａは図１のPublick Keyに、メッセージＢは図１のDigest Valueに、署名データＣは図１のSign Dataにそれぞれ対応するものである。尚、公開鍵Ｐ＿ＮはＨＤ２０６などに格納されているか、ステップＳ６０１で入力されるものとする。
【００５５】
そして、ステップＳ６０５において、ステップＳ６０４で検証した検証結果を出力する。図７は、実施例１における署名検証処理を表す模式図である。
【００５６】
［実施例１の変形例］
次に、秘密鍵Ｓ＿Ｎが漏洩した場合にも別の新しい公開鍵を公開することで、署名検証が可能な、実施例１の変形例における署名検証処理について説明する。
【００５７】
図４に示すステップＳ４０７で、検証者には公開鍵Ｐ＿Ｎのみが送信（公開）されている。この公開鍵Ｐ＿Ｎに呼応した秘密鍵Ｓ＿Ｎが漏洩又は脆弱になった場合、以下の２つを新たに公開する。
ａ）公開鍵  Ｐ＿（Ｎ−１）
ｂ）パディングデータ  Ｐａｄ＿（Ｎ−２）
これらを公開することにより、次のような計算によりＰ＿（Ｎ−１）を用いた署名検証が可能となる。
（Ｓ６０２＋）  Ｍ＿（Ｎ−１）：＝Ｍ || Ｐａｄ＿（Ｎ−２）
（Ｓ６０３＋）  Ｄ＿（Ｎ−１）：＝Ｈ（Ｍ＿（Ｎ−１））  
（Ｓ６０４＋）  Ｖｅｒｉｆｙ（Ｐ＿（Ｎ−１）；Ｄ＿（Ｎ−１）；Ｐａｄ＿（Ｎ−１））
即ち、秘密鍵Ｓ＿Ｎが漏洩又は脆弱になるまで、公開鍵Ｐ＿（Ｎ−１）及びパディングデータＰａｄ＿（Ｎ−２）に関するデータは事前に知られていないため、新たな鍵による署名として扱うことができる。更に、秘密鍵Ｓ＿（Ｎ−１）が漏洩又は脆弱になった場合には、公開鍵Ｐ＿（Ｎ−２）及びパディングデータＰａｄ＿（Ｎ−３）を公開するというように逐次公開することで署名の有効期間を長くすることができる。図８は、実施例１の変形例における署名検証処理を表す模式図である。
【００５８】
ここで、図９を用いて実施例１の変形例における署名検証処理をよりシステマティックに説明する。
【００５９】
図９は、実施例１の変形例における署名検証処理を示すフローチャートである。まず、ステップＳ９０１において、検証対象メッセージＭ、パディングデータＰａｄ＿（Ｎ−ｉ−１）及び署名データＰａｄ＿Ｎを入力する。尚、後述するステップＳ９０４で利用する公開鍵Ｐ＿（Ｎ−ｉ）を入力することもある。ここで、パラメータｉは０〜Ｌであり、Ｌは後述する規定回数−１である。また、規定回数はＨＤ２０６などに格納されているか、ステップＳ９０１でメッセージＭと共に入力されるものとする。
【００６０】
次に、ステップＳ９０２において、ステップＳ９０１で入力されたメッセージＭにパディングデータＰａｄ＿（Ｎ−ｉ−１）を付加する。そして、ステップＳ９０３において、パディングデータＰａｄ＿（Ｎ−ｉ−１）が付加されたメッセージＭにハッシュ処理を行い、固定長データ（Ｄ＿（Ｎ−ｉ））を算出する。そして、ステップＳ９０４において、署名データＰａｄ＿（Ｎ−ｉ）を公開鍵Ｐ＿（Ｎ−ｉ）で変換（復号）したデータと、ステップＳ９０３で入力メッセージＭにハッシュ処理を施したデータとが一致するか否かにより、入力されたメッセージＭを検証する。
【００６１】
上述のステップＳ９０２〜Ｓ９０４の処理を数式で表すと次のようになる。尚、数式の左にある括弧内の文字は処理ステップを示している。
（Ｓ９０２）  Ｍ＿（Ｎ−ｉ）：＝Ｍ || Ｐａｄ＿（Ｎ−ｉ−１）
（Ｓ９０３）  Ｄ＿（Ｎ−ｉ）：＝Ｈ（Ｍ＿（Ｎ−ｉ））  
（Ｓ９０４）  Ｖｅｒｉｆｙ（Ｐ＿（Ｎ−ｉ）；Ｄ＿（Ｎ−ｉ）；Ｐａｄ＿（Ｎ−ｉ））
ここで、Ｈ（）はハッシュ関数、Ｖｅｒｉｆｙ（Ａ；Ｂ；Ｃ）は公開鍵ＡによりＢに対する署名データＣを検証する処理を表している。また、公開鍵Ｐ＿（Ｎ−ｉ）はＨＤ１０６などに格納されているか、ステップＳ９０１で入力されるものとする。
【００６２】
次に、ステップＳ９０５において、規定回数上述のステップＳ９０２〜Ｓ９０４の処理を実行したか否かを判定し、実行していなければ上述の処理を繰り返し、実行した場合はステップＳ９０６へ進み、検証結果を出力する。
【００６３】
尚、図１に示した署名作成処理及び署名検証処理を構成するモジュールが存在する場合、入力データにパディングデータを付加することにより、従来のモジュールを再利用することが可能である。
【００６４】
このように、実施例１によれば、計算能力の向上により計算量的安全性が崩れてしまう既存の署名アルゴリズム及びハッシュアルゴリズムを利用しても、署名の真正性を長期に渡って保証することが可能な署名を作成することができる。
【実施例２】
【００６５】
次に、図面を参照しながら本発明に係る実施例２について詳細に説明する。尚、実施例２における情報処理装置の構成は、図２を用いて説明した実施例１の構成と同様であり、その説明は省略する。
【００６６】
実施例１では、図３に示したように、入力メッセージＭにパディングデータを付加しているが、実施例２では図１０に示すように、ハッシュ処理後の固定長データにパディングデータを付加するものである。
【００６７】
図１０は、実施例２における署名作成処理及び署名検証処理を表す模式図である。この実施例２における署名作成処理は、実施例１で説明した図４に示したステップＳ４０３とステップＳ４０４の処理を入れ替えることで実現できる。
【００６８】
即ち、ステップＳ４０４において、メッセージＭにハッシュ処理を行い、固定長データ（Ｄ＿ｉ）を算出し、次のステップＳ４０３でその固定長データ（Ｄ＿ｉ）にステップＳ４０２又はステップＳ４０５で作成されたパディングデータを付加し、ステップＳ４０５で署名作成処理を行う。
【００６９】
また、実施例２における署名検証処理も、実施例１で説明した図６に示したステップＳ６０２とステップＳ６０３の処理を入れ替えることで実現できる。
【００７０】
即ち、ステップＳ６０３において、メッセージＭにハッシュ処理を行い、固定長データ（Ｄ＿Ｎ）を算出し、次のステップＳ６０２でその固定長データ（Ｄ＿Ｎ）にパディングデータＰａｄ＿（Ｎ−１）を付加し、ステップＳ６０４で署名検証処理を行う。
【００７１】
このように、実施例２によれば、計算能力の向上により計算量的安全性が崩れてしまう既存の署名アルゴリズム及びハッシュアルゴリズムを利用しても、署名の真正性を長期に渡って保証することが可能な署名を作成することができる。
【実施例３】
【００７２】
次に、本発明に係る実施例３について詳細に説明する。尚、実施例３における情報処理装置の構成は、図２を用いて説明した実施例１の構成と同様であり、その説明は省略する。
【００７３】
実施例１及び実施例２では、署名を施した秘密鍵が漏洩、或いは脆弱になった場合でも署名を有効に保つ方法について説明したが、実施例３では、署名アルゴリズム、ハッシュアルゴリズム自体が安全でなくなった場合の対処方法について説明する。
【００７４】
実施例１及び実施例２のハッシュ計算処理（ステップＳ４０４、Ｓ６０３、Ｓ９０３）で用いたハッシュ関数Ｈ（）と、署名計算処理（ステップＳ４０５）及び署名検証処理（ステップＳ６０３、Ｓ９０４）で用いた検証アルゴリズムＶｅｒｉｆｙ（）は同一の関数が利用されているが、繰り返しの都度、別々のアルゴリズムに基づく関数を使用することも可能である。
【００７５】
例えば、Ｐ＿１，Ｓ＿１はＲＳＡ用の鍵対、Ｐ＿２，Ｓ＿２はＤＳＡ用の鍵対を用意し、Ｓ＿１を利用した署名を生成する際にはハッシュアルゴリズムＭＤ５を利用、Ｓ＿２を利用した署名を生成する際にはハッシュアルゴリズムＳＨＡ−１を利用するなどの方法が可能である。場合により、ステップＳ４０１、Ｓ６０１、Ｓ９０１の入力処理において、使用アルゴリズムに関するデータを入力するように構成しても良い。
【００７６】
更に、鍵対（Ｐ＿ｉ，Ｓ＿ｉ；１≦ｉ≦Ｎ）の生成時には、降順に鍵長を長くしておき、長年に渡り利用可能になるように鍵長を選択するように構成しても良い。例えば、鍵対（Ｓ＿３，Ｐ＿３）はＲＳＡ１０２４ビット、鍵対（Ｓ＿２，Ｐ＿２）はＲＳＡ２０４８ビット、鍵対（Ｓ＿１，Ｐ＿１）はＲＳＡ４０９６ビットなどとしておく方法である。
【００７７】
このように、実施例３によれば、署名アルゴリズム、ハッシュアルゴリズム自体が安全でなくなった場合も、署名の真正性を長期に渡って保証することが可能な署名を作成することができる。
【実施例４】
【００７８】
次に、図面を参照しながら本発明に係る実施例４について詳細に説明する。尚、実施例４における情報処理装置の構成は、図２を用いて説明した実施例１の構成と同様であり、その説明は省略する。
【００７９】
前述した実施例では、任意のメッセージに対する署名の真正性を長期に渡って保証する方法を説明したが、実施例４では、署名付きメッセージが公開鍵証明書である場合の適用方法について説明する。
【００８０】
クライアント・サーバ間の通信において、サーバのリソースにアクセスする場合、利用者認証が必要であるが、その手段の一つとして、ＩＴＵ−Ｕ勧告のＸ．５０９等の公開鍵証明書がよく用いられている。この公開鍵証明書は、公開鍵とその利用者との結び付けを保証するデータであり、認証機関と呼ばれる信用のおける第３者機関による署名が施されたものである。例えば、多くのブラウザで実装されているＳＳＬ（Secure Sockets Layer）を用いた利用者認証方式は、ユーザの提示してきた公開鍵証明書内に含まれる公開鍵に対応する秘密鍵をユーザが持っているか否かを確認することで行われる。
【００８１】
公開鍵証明書は認証機関による署名が施されていることで、公開鍵証明書内に含まれているユーザやサーバの公開鍵を信頼することができる。そのため、認証機関が署名作成のために用いられる秘密鍵が漏洩、或いは脆弱になった場合、この認証機関から発行された全ての公開鍵証明書は無効になってしまう。認証機関によっては膨大な数の公開鍵証明書が管理されており，電子商取引の世界などに大きな影響を及ぼすことは避けられない。
【００８２】
そこで、署名の真正性を長期に渡って保証することが可能な署名方式を適用することで、そのような事態を回避することができる。
【００８３】
例として、ＩＴＵ−Ｕ勧告のＸ．５０９ｖ．３における適用について示す。Ｘ．５０９ｖ．３ではextensionsというオプショナルなフィールドが設けられ、プリケーション又はプロトコル独自の新しい拡張型を組み込むことが可能である。そこで、実施例で利用するパディングデータをこの拡張部分に格納するものである。これは、図３に示すように署名対象メッセージ内にパディングデータを含む場合と考えて良い。
【００８４】
図１１は、Ｘ．５０９ｖ．３で規定されるフォーマットを示す図である。図１１に示すextensionsというオプショナルなフィールド１１０１は認証機関により署名されるデータに含まれていることがわかる。
【００８５】
ここで、図１２を用いて公開鍵証明書により署名検証を行う方法について説明する。
【００８６】
認証機関の公開鍵証明書ＣｅｒｔＣＡ１２０１に公開鍵Ｐ＿ＣＡ１２０２と、上述したパディングデータ拡張部分にＰａｄ＿ＣＡ１２０３が埋め込まれている場合、公開鍵Ｐ＿ＣＡに呼応する秘密鍵Ｓ＿ＣＡが漏洩しても、Ｐａｄ＿ＣＡに呼応する別の公開鍵Ｐ＿ＣＡ＿ＮＥＷ１２０５が内包された公開鍵証明書ＣｅｒｔＣＡ＿ＮＥＷ１２０４を新しく発行することで、ＣｅｒｔＣＡによって発行されたユーザ公開鍵証明書を無効にすることを防ぐことができる。
【００８７】
ユーザ公開鍵証明書は通常通りの証明書パス検証に加え、Ｐ＿ＣＡ＿ＮＥＷによる署名検証を行う（ユーザ公開鍵証明書にもパディングデータ拡張部分が内包されている）ことで検証可能となる。
【００８８】
[他の実施例]
本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタ等）から構成されるシステムの一部として適用しても、ひとつの機器（例えば、複写機、ファクシミリ装置）からなるものの一部に適用してもよい。
【００８９】
また、本発明は上述した実施例を実現するための装置、方法及び実施例で説明した方法を組み合わせて行う方法のみに限定されるものではなく、上述したシステム又は装置内のコンピュータ（ＣＰＵ又はＭＰＵ）に、上述した実施例を実現するためのソフトウェアのプログラムコードを供給し、このプログラムコードに従って上述したシステム或いは装置のコンピュータが上述の各種デバイスを動作させることにより上述した実施例を実現する場合も本発明の範疇に含まれる。
【００９０】
また、この場合、ソフトウェアのプログラムコード自体が上述した実施例の機能を実現することになり、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、具体的には上記プログラムコードを記録した記録媒体は本発明の範疇に含まれる。
【００９１】
このようなプログラムコードを記録する記録媒体としては、例えばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００９２】
また、上記コンピュータが、供給されたプログラムコードのみに従って各種デバイスを制御することにより、上述した実施例の機能が実現される場合だけではなく、上記プログラムコードがコンピュータ上で稼働しているＯＳ（オペレーティングシステム）、或いは他のアプリケーションソフト等と共同して上述した実施例が実現される場合にも、かかるプログラムコードは本発明の範疇に含まれる。
【００９３】
更に、この供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施例が実現される場合も本発明の範疇に含まれる。
【図面の簡単な説明】
【００９４】
【図１】署名作成処理（Sign process）と署名検証処理（Verify process）を表す模式図である。
【図２】実施例１における情報処理装置の構成の一例を示す概略図である。
【図３】実施例１における署名作成処理及び署名検証処理を表す模式図である。
【図４】実施例１における署名作成処理を示すフローチャートである。
【図５】規定回数をＮ回とする実施例１における署名作成処理を表す模式図である。
【図６】実施例１における署名検証処理を示すフローチャートである。
【図７】実施例１における署名検証処理を表す模式図である。
【図８】実施例１の変形例における署名検証処理を表す模式図である。
【図９】実施例１の変形例における署名検証処理を示すフローチャートである。
【図１０】実施例２における署名作成処理及び署名検証処理を表す模式図である。
【図１１】Ｘ．５０９ｖ．３で規定されるフォーマットを示す図である。
【図１２】公開鍵証明書により署名検証を行う方法を説明するための図である。
【符号の説明】
【００９５】
２００  情報処理装置
２０２  モニタ
２０３  ＣＰＵ
２０４  ＲＯＭ
２０５  ＲＡＭ
２０６  ＨＤ
２０７  ネットワーク接続部
２０８  ＣＤドライブ
２０９  ＦＤドライブ
２１０  ＤＶＤドライブ
２１１  インターフェース
２１２  マウス
２１３  キーボード
２１４  インターフェース
２１５  プリンタ
２１６  バス
２１７  インターフェース
２１８  モデム
２１９  インターフェース
【図１】
2006109107.tif 000003
【図２】
2006109107.tif 000004
【図３】
2006109107.tif 000005
【図４】
2006109107.tif 000006
【図５】
2006109107.tif 000007
【図６】
2006109107.tif 000008
【図７】
2006109107.tif 000009
【図８】
2006109107.tif 000010
【図９】
2006109107.tif 000011
【図１０】
2006109107.tif 000012
【図１１】
2006109107.tif 000013
【図１２】
2006109107.tif 000014