(57)【要約】【課題】署名者がどの階層に属しているかを表現できる多重署名生成システム、多重署名生成方法、および多重署名生成プログラムを提供すること。【解決手段】署名を行う署名者ごとにノードを設け、これら複数のノードを複数層のヒエラルキーを形成して配置する。同一のメッセージに対して各署名者が自身のノードを用いて署名を行い、これら署名を集めた多重署名σを、メッセージｍのハッシュｈに対して各署名者の署名鍵と、ノードが属する階層ごとに異なる所定値と、でべき乗演算を行うことで表す。【選択図】図１
2010087588.tif 000002
【特許請求の範囲】
【請求項１】
署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置され、各署名者が同一のメッセージに対して署名を行う多重署名生成システムであって、
前記複数の署名生成装置のそれぞれは、
互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する鍵格納部と、
前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する署名生成部と、
前記署名生成部により生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行うべき乗演算部と、
を備え、
前記複数の署名生成装置のうち所定の署名生成装置は、前記べき乗演算部による演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する多重署名生成部をさらに備えることを特徴とする多重署名生成システム。
【請求項２】
前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする請求項１に記載の多重署名生成システム。
【請求項３】
前記多重署名を検証する署名検証装置をさらに備え、
前記署名検証装置は、
前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する全体検証鍵生成部と、
前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する多重署名検証部と、
を備えることを特徴とする請求項１または２に記載の多重署名生成システム。
【請求項４】
署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置された多重署名生成システムにおいて、各署名者が同一のメッセージに対して署名を行う多重署名生成方法であって、
前記複数の署名生成装置のそれぞれにより、互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する第１のステップと、
前記複数の署名生成装置のそれぞれにより、前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する第２のステップと、
前記複数の署名生成装置のそれぞれにより、前記第２のステップにより生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う第３のステップと、
前記複数の署名生成装置のうち所定の署名生成装置により、前記第３のステップによる演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する第４のステップと、
を備えることを特徴とする多重署名生成方法。
【請求項５】
前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする請求項４に記載の多重署名生成方法。
【請求項６】
前記多重署名を検証する署名検証装置がさらに配置された前記多重署名生成システムにおける多重署名生成方法であって、
前記署名検証装置により、前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する第５のステップと、
前記署名検証装置により、前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する第６のステップと、
を備えることを特徴とする請求項４または５に記載の多重署名生成方法。
【請求項７】
署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置された多重署名生成システムにおいて、各署名者が同一のメッセージに対して署名を行う多重署名生成方法を、コンピュータに実行させるための多重署名生成プログラムであって、
前記複数の署名生成装置のそれぞれにより、互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する第１のステップと、
前記複数の署名生成装置のそれぞれにより、前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する第２のステップと、
前記複数の署名生成装置のそれぞれにより、前記第２のステップにより生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う第３のステップと、
前記複数の署名生成装置のうち所定の署名生成装置により、前記第３のステップによる演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する第４のステップと、
をコンピュータに実行させるための多重署名生成プログラム。
【請求項８】
前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする請求項７に記載の多重署名生成プログラム。
【請求項９】
前記多重署名を検証する署名検証装置がさらに配置された前記多重署名生成システムにおける多重署名生成プログラムであって、
前記署名検証装置により、前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する第５のステップと、
前記署名検証装置により、前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する第６のステップと、
をコンピュータに実行させるための請求項７または８に記載の多重署名生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重署名生成システム、多重署名生成方法、および多重署名生成プログラムに関する。
【背景技術】
【０００２】
従来、様々な電子情報がネットワークやメディアを介して送信されているが、電子情報の発信源を保証する仕組みとして、電子署名がある。電子署名とは、特定の人しか知り得ない署名鍵と電子情報とを入力値として署名の演算を行い、検証者が検証鍵と言われる公開された情報と署名されたデータとを入力値として検証演算を行うことで、上述の特定の人がデータの発信源であるか否かを確認できるものである。この電子署名によれば、検証鍵から署名鍵を導出することが計算量的に困難であるため、特定の人ではない人が特定の人に成りすまして署名を行うことができず、署名の正当性を保証できる。
【０００３】
ここで、電子情報によっては、複数の人が介在して署名を行うケースが想定される。このケースとしては、例えば、電子データの回覧や、会社における承認システムが該当する。そこで、複数人の署名を行う方式として、多重署名（非特許文献１）やグループ署名（特許文献１）が提案されている。
【０００４】
ところが、上述の多重署名やグループ署名では、署名者が全て等価な関係で表現されるため、署名者の順序や上下関係を証明できない。そこで、署名者の順序や上下関係を証明できる方式として、順序付き多重署名（特許文献２および３）が提案されている。この順序付き多重署名によれば、署名者の順序を保証して、各署名者の上下関係を表現できる。
【非特許文献１】新保、「多重署名に適したＥｌＧａｍａｌ署名の一変形方式」、暗号と情報セキュリティシンポジウム（ＣＳＳ）、２Ｃ、電子情報通信学会、１９９４
【特許文献１】特開２００１−１６６６８７号公報
【特許文献２】特開平９−２７０７８７号公報
【特許文献３】特開２００２−４０９３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の順序付き多重署名では、全ての署名者に順序または上下関係が規定されていることが前提であり、署名者がどの階層に属しているかを表現できなかった。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、署名者がどの階層に属しているかを表現できる多重署名生成システム、多重署名生成方法、および多重署名生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【０００８】
（１）本発明は、署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置され、各署名者が同一のメッセージに対して署名を行う多重署名生成システムであって、前記複数の署名生成装置のそれぞれは、互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する鍵格納部と、前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する署名生成部と、前記署名生成部により生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行うべき乗演算部と、を備え、前記複数の署名生成装置のうち所定の署名生成装置は、前記べき乗演算部による演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する多重署名生成部をさらに備えることを特徴とする多重署名生成システムを提案している。
【０００９】
この発明によれば、複数の署名生成装置のそれぞれは、署名生成部により、メッセージのハッシュに対して自身の秘密鍵でべき乗演算を行って、署名を生成する。そして、べき乗演算部により、署名生成部により生成された署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う。そして、複数の署名生成装置のうち所定の署名生成装置は、多重署名生成部により、べき乗演算部による演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する。
【００１０】
このため、多重署名は、メッセージのハッシュに対して、各自の秘密鍵と、所定値と、でべき乗演算が行われた構造で表される。そして、この所定値は、自身が属する階層ごとに異なる値である。したがって、多重署名を表す数式の指数の構造により、署名生成装置がどの階層に属するのかを表現できる。よって、各署名者が互いに異なる署名生成装置を用いることで、署名者がどの階層に属するのかを表現できる。
【００１１】
（２）本発明は、（１）の多重署名生成システムについて、前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする多重署名生成システムを提案している。
【００１２】
この発明によれば、所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値で表される。このため、多重署名を表す数式の指数のうち、特定値により、署名生成装置がどの階層に属するのかを表現できる。
【００１３】
（３）本発明は、（１）または（２）の多重署名生成システムについて、前記多重署名を検証する署名検証装置をさらに備え、前記署名検証装置は、前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する全体検証鍵生成部と、前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する多重署名検証部と、を備えることを特徴とする多重署名生成システムを提案している。
【００１４】
この発明によれば、署名検証装置は、全体検証鍵生成部により、公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する。そして、多重署名検証部により、所定のパラメータ、全体検証鍵、メッセージのハッシュ、および多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、多重署名の正当性を検証する。
【００１５】
ここで、以下に、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算について説明する。ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ（ＧＤＨ）署名とは、Ｄｅｃｉｓｉｏｎ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ（ＤＤＨ）問題をペアリングと呼ばれるある種のブラックボックス関数ｅ（Ｐ，Ｑ）を用いることで解けることを利用した署名である。
【００１６】
まず、ＤＤＨ問題について説明する。ＤＤＨ問題とは、ｇ、ｇａ、ｇｂ、ｇｃが与えられたときにａｂ＝ｃを満たすか否かを判定する問題のことである。この問題に対して、関数ｅ（Ｐ，Ｑ）には、以下の性質がある。
【００１７】
【数１】
2010087588.tif 000003
【００１８】
数１に示す性質から、関数ｅ（Ｐ，Ｑ）にｇ、ｇａ、ｇｂ、ｇｃを入力すると、数２、３のようになる。
【００１９】
【数２】
2010087588.tif 000004
【００２０】
【数３】
2010087588.tif 000005
【００２１】
このため、数２の値と数３の値とが一致するか否かにより、上述のａｂ＝ｃを満たすか否かを判定できる。
【００２２】
次に、ＧＤＨ署名の手順について説明する。ＧＤＨ署名では、鍵を生成し、この生成した鍵を用いて署名を行う。
【００２３】
鍵を生成する際には、Ｚｐ＊からランダムにｘを選択し、ｖ＝ｇｘとなるｖを算出する。そして、ｖを公開鍵とし、ｘを秘密鍵とする。
【００２４】
署名を行う際には、秘密鍵ｘとメッセージｍとを用意する。そして、メッセージｍからハッシュｈを算出し、ハッシュｈに対してｘ乗したものを署名σとする。
【００２５】
署名σを検証する際には、以下のように行う。ここで、ＧＤＨ署名はＧ＊の元を用いるため、ハッシュｈもＧ＊の元となり、その結果、ｈ＝ｇａが成り立つ。このため、署名σが正しければ、以下の式が成り立つ。
【００２６】
【数４】
2010087588.tif 000006
【００２７】
また、（ｇ，ｖ，ｈ，σ）を関数ｅ（Ｐ，Ｑ）に入力すると、以下の式が成り立つ。
【００２８】
【数５】
2010087588.tif 000007
【００２９】
【数６】
2010087588.tif 000008
【００３０】
上述のように、署名σが正しければ、数５の値と数６の値とは一致する。このため、数５の値と数６の値とが一致するか否かにより、署名σを検証できる。
【００３１】
以上によれば、全体検証鍵を、既に認定されている公開鍵から生成できる。すなわち、正当性が保証された全体検証鍵を鍵発行機関によらず生成できるので、鍵発行機関が新たに全体検証鍵を生成する必要性がなくなり、鍵発行機関の負荷を軽減できる。
【００３２】
また、ＧＤＨ署名の演算が行われる回数は、生成された全体検証鍵および署名の数で決まり、署名生成装置の数や階層数に関係なく、１回となる。このため、多重署名の検証を、署名生成装置の数より非常に少ない回数のＧＤＨ署名の演算で行うことができる。
【００３３】
（４）本発明は、署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置された多重署名生成システムにおいて、各署名者が同一のメッセージに対して署名を行う多重署名生成方法であって、前記複数の署名生成装置のそれぞれにより、互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する第１のステップと、前記複数の署名生成装置のそれぞれにより、前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する第２のステップと、前記複数の署名生成装置のそれぞれにより、前記第２のステップにより生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う第３のステップと、前記複数の署名生成装置のうち所定の署名生成装置により、前記第３のステップによる演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する第４のステップと、を備えることを特徴とする多重署名生成方法を提案している。
【００３４】
この発明によれば、複数の署名生成装置のそれぞれでは、メッセージのハッシュに対して自身の秘密鍵でべき乗演算を行って、署名を生成する。そして、生成した署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う。そして、複数の署名生成装置のうち所定の署名生成装置では、べき乗演算の演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する。
【００３５】
このため、多重署名は、メッセージのハッシュに対して、各自の秘密鍵と、所定値と、でべき乗演算が行われた構造で表される。そして、この所定値は、自身が属する階層ごとに異なる値である。したがって、多重署名を表す数式の指数の構造により、署名生成装置がどの階層に属するのかを表現できる。よって、各署名者が互いに異なる署名生成装置を用いることで、署名者がどの階層に属するのかを表現できる。
【００３６】
（５）本発明は、（４）の多重署名生成方法について、前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする多重署名生成方法を提案している。
【００３７】
この発明によれば、所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値で表される。このため、多重署名を表す数式の指数のうち、特定値により、署名生成装置がどの階層に属するのかを表現できる。
【００３８】
（６）本発明は、（４）または（５）の多重署名生成方法について、前記多重署名を検証する署名検証装置がさらに配置された前記多重署名生成システムにおける多重署名生成方法であって、前記署名検証装置により、前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する第５のステップと、前記署名検証装置により、前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する第６のステップと、を備えることを特徴とする多重署名生成方法を提案している。
【００３９】
この発明によれば、署名検証装置では、公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する。そして、所定のパラメータ、全体検証鍵、メッセージのハッシュ、および多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、多重署名の正当性を検証する。
【００４０】
このため、全体検証鍵を、既に認定されている公開鍵から生成できる。すなわち、正当性が保証された全体検証鍵を鍵発行機関によらず生成できるので、鍵発行機関が新たに全体検証鍵を生成する必要性がなくなり、鍵発行機関の負荷を軽減できる。
【００４１】
また、ＧＤＨ署名の演算が行われる回数は、生成された全体検証鍵および署名の数で決まり、署名生成装置の数や階層数に関係なく、１回となる。このため、多重署名の検証を、署名生成装置の数より非常に少ない回数のＧＤＨ署名の演算で行うことができる。
【００４２】
（７）本発明は、署名者が署名を行うために用いる署名生成装置が複数階層の階層構造を形成して複数配置された多重署名生成システムにおいて、各署名者が同一のメッセージに対して署名を行う多重署名生成方法を、コンピュータに実行させるための多重署名生成プログラムであって、前記複数の署名生成装置のそれぞれにより、互いに異なる秘密鍵と、所定のパラメータに対して自身の前記秘密鍵でべき乗演算した公開鍵と、を格納する第１のステップと、前記複数の署名生成装置のそれぞれにより、前記メッセージのハッシュに対して自身の前記秘密鍵でべき乗演算を行って、署名を生成する第２のステップと、前記複数の署名生成装置のそれぞれにより、前記第２のステップにより生成された前記署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う第３のステップと、前記複数の署名生成装置のうち所定の署名生成装置により、前記第３のステップによる演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する第４のステップと、をコンピュータに実行させるための多重署名生成プログラムを提案している。
【００４３】
この発明によれば、多重署名生成プログラムをコンピュータに実行させることで、メッセージのハッシュに対して自身の秘密鍵でべき乗演算を行って、署名を生成する。そして、生成した署名に対して、自身が属する階層ごとに異なる所定値でべき乗演算を行う。そして、べき乗演算の演算結果の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、多重署名を生成する。
【００４４】
このため、多重署名は、メッセージのハッシュに対して、各自の秘密鍵と、所定値と、でべき乗演算が行われた構造で表される。そして、この所定値は、自身が属する階層ごとに異なる値である。したがって、多重署名を表す数式の指数の構造により、署名生成装置がどの階層に属するのかを表現できる。よって、各署名者が互いに異なる署名生成装置を用いることで、署名者がどの階層に属するのかを表現できる。
【００４５】
（８）本発明は、（７）の多重署名生成プログラムについて、前記所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値であることを特徴とする多重署名生成プログラムを提案している。
【００４６】
この発明によれば、多重署名生成プログラムをコンピュータに実行させることで、所定値は、自身が属する階層と、最下位層と、の階層数の差だけ特定値をべき乗演算した値で表される。このため、多重署名を表す数式の指数のうち、特定値により、署名生成装置がどの階層に属するのかを表現できる。
【００４７】
（９）本発明は、（７）または（８）の実行順序検証プログラムについて、前記多重署名を検証する署名検証装置がさらに配置された前記多重署名生成システムにおける多重署名生成プログラムであって、前記署名検証装置により、前記公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する第５のステップと、前記署名検証装置により、前記所定のパラメータ、前記全体検証鍵、前記メッセージのハッシュ、および前記多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、前記多重署名の正当性を検証する第６のステップと、をコンピュータに実行させるための多重署名生成プログラムを提案している。
【００４８】
この発明によれば、多重署名生成プログラムをコンピュータに実行させることで、公開鍵の総和を階層ごとに算出し、階層ごとの算出結果を乗算して、全体検証鍵を生成する。そして、所定のパラメータ、全体検証鍵、メッセージのハッシュ、および多重署名を入力として、ＧＡＰ−Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ署名の演算を行って、多重署名の正当性を検証する。
【００４９】
このため、全体検証鍵を、既に認定されている公開鍵から生成できる。すなわち、正当性が保証された全体検証鍵を鍵発行機関によらず生成できるので、鍵発行機関が新たに全体検証鍵を生成する必要性がなくなり、鍵発行機関の負荷を軽減できる。
【００５０】
また、ＧＤＨ署名の演算が行われる回数は、生成された全体検証鍵および署名の数で決まり、署名生成装置の数や階層数に関係なく、１回となる。このため、多重署名の検証を、署名生成装置の数より非常に少ない回数のＧＤＨ署名の演算で行うことができる。
【発明の効果】
【００５１】
この発明によれば、多重署名は、メッセージのハッシュに対して、各自の秘密鍵と、所定値と、でべき乗演算が行われた構造で表される。そして、この所定値は、自身が属する階層ごとに異なる値である。したがって、多重署名を表す数式の指数の構造により、署名生成装置がどの階層に属するのかを表現できる。よって、各署名者が互いに異なる署名生成装置を用いることで、署名者がどの階層に属するのかを表現できる。
【発明を実施するための最良の形態】
【００５２】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００５３】
多重署名システムは、署名を行う署名者ごとに設けられた複数のノードと、複数のノードで生成された署名を検証する署名検証装置と、を備える。各ノードは、署名鍵（秘密鍵）および検証鍵（公開鍵）を格納する鍵格納部と、署名を生成する署名生成部と、署名生成部により生成された署名に対して自身が属する階層ごとに異なる所定値でべき乗演算を行うべき乗演算部と、を備える。また、これらノードのうち所定のノードは、多重署名を生成する多重署名生成部を備える。署名検証装置は、全体検証鍵を生成する全体検証鍵生成部と、多重署名の正当性を検証する多重署名検証部と、を備える。
【００５４】
図１に示すように、複数のノードは、ｄ層（ｄは、４≦ｄを満たす整数）のヒエラルキーを形成して配置される。最上位層である第１層には、ｐ台（ｐは、１≦ｐを満たす整数）のノードが配置され、第（ｄ−２）層には、ｏ台（ｏは、１≦ｏを満たす整数）のノードが配置され、第（ｄ−１）層には、ｎ台（ｎは、１≦ｎを満たす整数）のノードが配置され、最下位層である第ｄ層には、ｍ台（ｍは、１≦ｍを満たす整数）のノードが配置される。なお、本実施形態では、各署名者は、各自のノードを用いて同一のメッセージに対して署名を行う。
【００５５】
＜ｄ階層のヒエラルキーが形成されている場合における多重署名の生成＞
以下に、図１のノードにより多重署名を生成する場合について説明する。
【００５６】
ここで、署名鍵（秘密鍵）および検証鍵（公開鍵）のペアは、第１層のノード（１−ｌ）のものを数７のように、第（ｄ−２）層のノード（（ｄ−２）―ｋ）のものを数８のように、第（ｄ−１）層のノード（（ｄ−１）―ｊ）のものを数９のように、第ｄ層のものを数１０のように表す。なお、数７において、ｌは、１≦ｌ≦ｐを満たす整数とし、数８において、ｋは、１≦ｋ≦ｏを満たす整数とし、数９において、ｊは、１≦ｊ≦ｎを満たす整数とし、数１０において、ｉは、１≦ｉ≦ｍを満たす整数とする。
【００５７】
【数７】
2010087588.tif 000009
【００５８】
【数８】
2010087588.tif 000010
【００５９】
【数９】
2010087588.tif 000011
【００６０】
【数１０】
2010087588.tif 000012
【００６１】
まず、第ｄ層の各ノード（ｄ−ｉ）は、数１１に示すように、ＧＤＨ署名を行って、メッセージｍのハッシュｈに対して自身の署名鍵ｘｄ−ｉでべき乗演算を行って、第ｄ層に属する自身の署名σｄ−ｉとする。
【００６２】
【数１１】
2010087588.tif 000013
【００６３】
次に、第（ｄ−１）層の各ノード（（ｄ−１）−ｊ）は、数１２に示すように、ＧＤＨ署名を行って、メッセージｍのハッシュｈに対して自身の署名鍵ｘ（ｄ−１）−ｊでべき乗演算を行った後に、さらに第１の値でべき乗演算を行って、第（ｄ−１）層に属する自身の署名σ（ｄ−１）−ｊとする。ここで、第１の値は、第（ｄ−１）層と、最下位層である第ｄ層と、の階層数の差に等しい「１」回だけ「２」をべき乗した値である「２（＝２１）」とする。
【００６４】
【数１２】
2010087588.tif 000014
【００６５】
次に、第（ｄ−２）層の各ノード（（ｄ−２）−ｋ）は、数１３に示すように、ＧＤＨ署名を行って、メッセージｍのハッシュｈに対して自身の署名鍵ｘ（ｄ−２）−ｋでべき乗演算を行った後に、さらに第２の値でべき乗演算を行って、第（ｄ−２）層に属する自身の署名σ（ｄ−２）−ｋとする。ここで、第２の値は、第（ｄ−２）層と、最下位層である第ｄ層と、の階層数の差に等しい「２」回だけ「２」をべき乗した値である「４（＝２２）」とする。
【００６６】
【数１３】
2010087588.tif 000015
【００６７】
第（ｄ−２）層よりも上位の階層に属する各ノードについても、上述の数１２、１３と同様に、署名を順次生成する。
【００６８】
例えば、第（ｄ−２）層よりも上位の層である第１層の各ノード（１−ｌ）は、数１４に示すように、ＧＤＨ署名を行って、メッセージｍのハッシュｈに対して自身の署名鍵ｘ１−ｌでべき乗演算を行った後に、さらに所定の値でべき乗演算を行って、第１層に属する自身の署名σ１−ｌとする。ここで、所定の値は、第１層と、最下位層である第ｄ層と、の階層数の差に等しい「ｄ−１」回だけ「２」をべき乗した値である「２ｄ−１」とする。
【００６９】
【数１４】
2010087588.tif 000016
【００７０】
次に、全ての階層の全てのノードが自身の署名を生成した後、最後に自身の署名を生成したノードといった所定のノードは、数１５に示すように、全ての階層の全てのノードの署名を集め、これらを乗算したものを多重署名σとする。
【００７１】
【数１５】
2010087588.tif 000017
【００７２】
次に、（ｇ，ｈ，σ）を公開する。
【００７３】
＜ｄ階層のヒエラルキーが形成されている場合に行われた多重署名の検証＞
以下に、図１のノードで生成された多重署名を検証する場合について説明する。
【００７４】
まず、署名検証装置は、数１６に示すように、全ての階層の全てのノードの検証鍵を集め、これらを乗算したものを、多重署名σ用の全体検証鍵ｖとする。
【００７５】
【数１６】
2010087588.tif 000018
【００７６】
次に、署名検証装置は、数１７、１８に示すように、（ｇ，ｖ，ｈ，σ）を関数ｅ（Ｐ，Ｑ）に入力して、ＧＤＨ署名の演算を行う。
【００７７】
【数１７】
2010087588.tif 000019
【００７８】
【数１８】
2010087588.tif 000020
【００７９】
数１７の値と数１８の値とが一致するか否かを検証して、多重署名σを検証する。具体的には、数１７の値と数１８の値とが一致すれば、多重署名σが正しいと判定し、数１７の値と数１８の値とが一致しなければ多重署名σが正しくないと判定する。
【００８０】
以上によれば、数１５に示すように、メッセージｍのハッシュｈに対して所定値でべき乗演算を行うことで、多重署名σを表すことができる。ここで、この所定値は、ノードが属する階層ごとに異なる値で各自の署名鍵を乗算したもので表される。
【００８１】
全体検証鍵ｖを表す数式の指数についても、多重署名σを表す数式の指数と同様に、数１６に示すように、ノードが属する階層ごとに異なる値で各自の署名鍵を乗算したもので表される。
【００８２】
効果
そして、このノードが属する階層ごとに異なる値は、第ｄ層では「１」であり、第（ｄ−１）層では「２」であり、第（ｄ−２）層では「４」であり、第１層では「２ｄ−１」となる。このため、署名鍵の倍数により、ノードの属する階層を区別できる。したがって、多重署名σや全体検証鍵ｖを表す数式の指数の構造により、各階層に属するノードを区別できるので、署名者がどの階層に属するのかを表現できる。
【００８３】
また、既に認定されている検証鍵から、全体検証鍵ｖを生成できる。すなわち、正当性が保証された全体検証鍵ｖを鍵発行機関によらず生成できるので、鍵発行機関が新たに全体検証鍵ｖを生成する必要性がなくなり、鍵発行機関の負荷を軽減できる。
【００８４】
また、ＧＤＨ署名の演算が行われる回数は、生成された全体検証鍵および署名の数で決まり、ノード数や階層数に関係なく、１回となる。このため、多重署名σの検証を、ノードの数より非常に少ない回数のＧＤＨ署名の演算で行うことができる。
【００８５】
なお、本発明のノードおよび署名検証装置のそれぞれの処理をコンピュータ読み取り可能な記録媒体に記憶し、これら記録媒体に記録されたプログラムをノードおよび署名検証装置（いずれもコンピュータシステム）に読み込ませ、実行することによって、本発明を実現できる。
【００８６】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上述のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００８７】
また、上述のプログラムは、上述の機能の一部を実現するためのものであってもよい。さらに、上述の機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００８８】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施形態に係る複数のノードの配置を示す図である。
【符号の説明】
【００９０】
ｘ１−ｌ、ｘ（ｄ−１）―ｊ、ｘ（ｄ−２）−ｋ、ｘｄ−ｉ・・・署名鍵（秘密鍵）
ｖ１−ｌ、ｖ（ｄ−１）―ｊ、ｖ（ｄ−２）−ｋ、ｖｄ−ｉ・・・検証鍵（公開鍵）
σ・・・多重署名
ｖ・・・全体検証鍵
【図１】
2010087588.tif 000021