説明

多重署名システム及び検証システム及び多重署名方法及び多重署名プログラム

【課題】メッシュ構造を表現した電子署名を行うことができる多重署名システム及び検証システム及び多重署名方法及び多重署名プログラムを提供すること。
【解決手段】多重署名システムAは、複数の一般ノードBがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報及び検証鍵情報を演算により生成する。そして、多重署名システムAは、複数の一般ノードBを統括する代表ノードCにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開し、また、検証鍵情報の総和をメッシュ構造全体の公開検証鍵情報として公開する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子署名を利用した電子データの多重署名システム及び検証システム及び多重署名方法及び多重署名プログラムに関する。
【背景技術】
【0002】
現在、さまざまな電子情報がネットワークやメディアを介して送信されている。会社やコミュニティーのような組織においても、報告書やレポート、稟議書、連絡簿等さまざまな情報が電子化され、社員又はメンバー間でネットワークを経由して回覧されている。
【0003】
その情報の発信源あるいは閲覧済みであることを保証する仕組みとして電子署名がある。この電子署名を利用することにより、特定の人しか知りえない署名鍵と電子情報を入力値として署名の演算を行い、検証者が検証鍵と言われる公開された情報と署名されたデータを入力値として検証演算を行うことで、その特定の人がそのデータの発信源であることを確認することが可能となる。ここで、検証鍵から署名鍵を導出することは、計算量的に不可能であることから、他の人がその特定者に成りすまして署名を行うことができないため、その署名の正当性が保証される。
【0004】
また、組織における電子情報の回覧においては、複数の人が介在して署名を行うケースが想定され、例えば、電子データの回覧や会社における承認システムがそれに該当する。複数人の署名を行う方式としては、それぞれの署名者を検証できる多重署名(例えば、非特許文献1を参照)や、特定のグループに所属している人の誰かが署名したことを保証できるグループ署名(例えば、特許文献1を参照)が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−166687号公報
【特許文献2】特開平09−270787号公報
【特許文献3】特開2002−040935号公報
【非特許文献】
【0006】
【非特許文献1】新保 淳、「多重署名に適したElGamal署名の一変形方式」、暗号と情報セキュリティシンポジウム(CSS)、SCIS94−2C、電子情報通信学会、1994
【発明の概要】
【発明が解決しようとする課題】
【0007】
ここで、これらの多重署名やグループ署名では署名者が全て等価な関係で表現される。したがって、一例として示した多重署名システムにおいて電子データがどのように流通してきたのかを、この署名方式だけで表現することができない。
【0008】
これに対し、順序や上下関係を証明する方式としては順序付き多重署名方式(例えば、特許文献2、3を参照)があげられる。これにより署名者の順番が保証され、個人の上下関係が表現できる。しかしながら、これらは、各署名者の前と後の使用者が一人ずつの場合のみで行える方式であり、例えば、使用者のつながりがメッシュ構造で構成されている場合、既存の署名方式ではそのメッシュ構造を表現することができない。
【0009】
本発明は、上記課題を解決するため、メッシュ構造を表現した電子署名を行うことができる多重署名システム及び検証システム及び多重署名方法及び多重署名プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明では、以下のような解決手段を提供する。
【0011】
(1)本発明に係る多重署名システムは、上記課題を解決するために、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う多重署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成部と、隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成部と、を備え、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成部と、を備える。
【0012】
このような構成によれば、多重署名システムは、複数の一般ノードがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報及び検証鍵情報を演算により生成する。そして、多重署名システムは、複数の一般ノードを統括する代表ノードにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開し、また、検証鍵情報の総和をメッシュ構造全体の公開検証鍵情報として公開する。
【0013】
よって、多重署名システムは、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の積で表し、それらを代表ノードで加算することにより、メッシュ構造を表現することができる。
【0014】
(2)また、上記多重署名システムでは、前記代表ノードは、予め固有署名鍵と固有検証鍵が割り当てられており、前記電子データに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、前記公開検証鍵情報生成部は、前記代表ノードの固有検証鍵を含んで前記公開検証鍵情報を生成することを特徴とする。
【0015】
このような構成によれば、多重署名システムは、代表ノードにおいて、代表ノード署名情報を多重署名情報の総和に加算したものをメッシュ構造全体の公開多重署名情報として公開し、また、代表ノードの固有検証鍵を検証鍵情報の総和に加算したものをメッシュ構造全体の公開検証鍵情報として公開する。
【0016】
よって、多重署名システムは、メッシュ構造上において連続(隣接)する二つの一般ノード間の関係を署名鍵の積で表し、それらを代表ノードで総和し、さらに代表ノードの署名鍵を加算することにより、代表ノードを含んだメッシュ構造を表現することができる。
【0017】
(3)また、上記多重署名システムでは、前記固有署名鍵は、所定の自然数からなり、前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなることを特徴とする。
【0018】
このように構成されることにより、多重署名システムは、固有署名鍵を知らない第三者がGDHグループの要素である楕円曲線上の点から固有署名鍵を求めることを、計算量的に困難にすることができる。また、メッシュ構造において一般ノードの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードで生成される公開多重署名情報と公開検証鍵情報である。これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0019】
(4)本発明に係る検証システムは、上記課題を解決するために、上記多重署名システムにより生成された公開多重署名情報を検証する検証システムであって、前記電子データに一方向性ハッシュ関数演算の行う検証ノード一方向性ハッシュ関数演算部と、前記電子データの署名を行った全てのノードの固有検証鍵を収集する収集部と、前記収集部により収集された前記全てのノードの固有検証鍵に基づいて前記公開検証鍵情報の正当性を検証する第1の検証部と、前記第1の検証部により正当性が検証された前記公開検証鍵情報に基づいて前記公開多重署名情報の正当性を検証する第2の検証部と、を備えることを特徴とする。
【0020】
このような構成によれば、検証システムは、第1の検証部により全てのノードの固有検証鍵に基づいて公開検証鍵情報の正当性を検証し、正当性が検証された公開検証鍵情報に基づいて、第2の検証部により公開多重署名情報の正当性を検証する。
【0021】
よって、検証システムでは、一般ノードにて生成される個々の検証鍵情報や多重署名情報等を検証することなく、これらの総和として生成される公開検証鍵情報と公開多重署名情報とを検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証システムでは、検証ノードの処理負荷を低減して検証作業を実行することができる。
【0022】
(5)本発明に係る多重署名方法は、上記課題を解決するために、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う多重署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成工程と、を備え、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成工程と、を備える。
【0023】
このような構成によれば、多重署名方法は、複数の一般ノードがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報及び検証鍵情報を演算により生成する。そして、多重署名方法は、複数の一般ノードを統括する代表ノードにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開し、また、検証鍵情報の総和をメッシュ構造全体の公開検証鍵情報として公開する。
【0024】
よって、多重署名方法は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の積で表し、それらを代表ノードで加算することにより、メッシュ構造を表現することができる。
【0025】
(6)本発明に係る多重署名プログラムは、上記課題を解決するために、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う方法をコンピュータによって実現するための多重署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行される。
【0026】
このような構成によれば、多重署名プログラムは、複数の一般ノードがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報及び検証鍵情報を演算により生成する。そして、多重署名プログラムは、複数の一般ノードを統括する代表ノードにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開し、また、検証鍵情報の総和をメッシュ構造全体の公開検証鍵情報として公開する。
【0027】
よって、多重署名プログラムは、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の積で表し、それらを代表ノードで加算することにより、メッシュ構造を表現することができる。
【発明の効果】
【0028】
本発明によれば、メッシュ構造を表現した電子署名を行うことができる。
【図面の簡単な説明】
【0029】
【図1】第1実施形態に係る多重署名システムの構成を示すブロック図である。
【図2】第1実施形態に係る多重署名システムにおける一般ノードの構成を示すブロック図である。
【図3】第1実施形態に係る多重署名システムにおける代表ノードの構成を示すブロック図である。
【図4】第1実施形態に係る検証システムにおける検証ノードの構成を示すブロック図である。
【図5】第1実施形態において、隣接する一般ノード間に固有の多重署名情報と検証鍵情報を生成する方法についての説明に供するフローチャートである。
【図6】第1実施形態において、公開多重署名情報と公開検証鍵情報を生成する方法についての説明に供するフローチャートである。
【図7】第1実施形態において、公開多重署名情報の正当性を検証する方法についての説明に供するフローチャートである。
【図8】第1実施形態において、メッシュ構造の一例での多重署名システムの動作についての説明に供する図である。
【図9】第2実施形態に係る多重署名システムにおける代表ノードの構成を示すブロック図である。
【図10】第2実施形態に係る検証システムにおける検証ノードの構成を示すブロック図である。
【図11】第2実施形態において、公開多重署名情報と公開検証鍵情報を生成する方法についての説明に供するフローチャートである。
【図12】第2実施形態において、メッシュ構造の一例での多重署名システムの動作についての説明に供する図である。
【発明を実施するための形態】
【0030】
<第1実施形態>
以下、本発明の実施形態の一例である第1実施形態について説明する。本実施形態に係る多重署名システムAは、図1に示すように、複数の一般ノードBがメッシュ構造状に構成され、当該複数の一般ノードB間で多重署名を行って電子データ(メッセージ)を回覧し、代表ノードCによりメッシュ構造を表現した電子署名を公開する。さらに、検証システムにおける検証ノードDは、代表ノードCにより公開された電子署名の正当性を検証する。これにより、検証ノードDは、エンティティ間でどのように署名がなされてきたかを確認し、メッシュ構造により関係性が構築されているエンティティの配置を確認することができる。
【0031】
ところで、各一般ノードBには、予め重複しない固有署名鍵と固有検証鍵が認証局(CA)によってそれぞれ割り当てられている。固有署名鍵は、所定の自然数(x)からなり、固有検証鍵は、GDH(GAP−Diffie−Hellman)グループ(G)の要素である楕円曲線上の点(g)と固有署名鍵(x)とに基づいて生成される楕円曲線上の点(v=xg)からなることが好ましい。このように構成されることにより、固有署名鍵(x)を知らない第三者が「v」や「g」の値から固有署名鍵(x)を求めることは計算量的に困難となる。
【0032】
ここで、本実施形態で採用される具体的な署名方式について説明する。多重署名システムAでは、ベースとなる署名方式としてGAP−Diffie−Hellman(GDH)署名を採用する。GDH署名とは、Decision−Diffie−Hellman(DDH)問題をペアリングと呼ばれるある種のブラックボックス関数e(P,Q)を用いることで、解くことが可能であることを利用した署名である。
【0033】
次に、ペアリング演算を用いたGDH署名について説明する。楕円曲線上のDiffie−Hellman問題に関連して、GDHグループが定義されている。GDHグループについて簡単に説明する。Gをある楕円曲線上の点の集合とする。「g」を集合Gの要素としたとき、集合Gにおける楕円曲線上のDecisional Diffie−Hellman(DDH)問題とComputational Diffie−Hellman(CDH)問題が以下のように定義される。
【0034】
DDH問題:あるa、b、cという自然数があり、g、ag、bg、cgが与えられた時、c=abかどうかを判定する問題。
CDH問題:あるa、b、cという自然数があり、g、ag、bgが与えられた時、abgを計算する問題。
【0035】
このとき、DDH問題は、計算量的に簡単であるが、CDH問題は、計算量的に難問である場合、この集合GをGDHグループと定義する。
【0036】
これに対し、ある楕円曲線上の点をP,Qとし、そのP,Qによっては次にあげる性質を持つことができるペアリングと呼ばれるブラックボックス関数e(P,Q)を定義できるものが存在する。
e(aP,bQ)=e(bP,aQ)=e(abP,Q)=e(P,abQ)=e(P,Q)ab ・・・(1)
【0037】
よって、gがペアリング演算の可能な楕円曲線上の点である場合には、上記の性質から、(1)式にg、ag、bg、cgを入力すると、
e(ag,bg)=e(g,g)ab ・・・(2)
e(g,cg)=e(g,g) ・・・(3)
となり、両者の値が一致するかどうかにより、「ab=c」であるかどうかを判定でき、gはGDHグループGの要素となりうる。
【0038】
この性質を利用してGDH署名が構成される。集合Gは、GDHグループであり、gは集合Gの要素となる点とする。また、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データが固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する(例えば、sをSHA−1(plaintext)のように通常使用される一方向性ハッシュ関数としたとき、sgとして表される式は、ここで定義する一方向性ハッシュ関数Hの条件を満たす)。
【0039】
このとき、GDH署名は以下のように定義される。
鍵生成:自然数xを選び、gからv=xgを計算する。xを署名鍵、楕円曲線上の点vを検証鍵とする。
署名:署名者は、メッセージ「m∈{0,1}」に対しh=H(m)を計算し、さらに自分の署名鍵を用いてσ=xhを計算する。σをmに対する署名として公開する。
検証:検証者は、メッセージmからh=H(m)を計算し、g、v、h、σを準備する。e(g,σ)とe(v,h)を計算し、両者の値が一致したら、署名σは、正しい署名と判定する。
【0040】
このとき、hの値は集合Gの要素となるので、ある自然数yを用いてh=ygと表現できる。その結果、正しく署名が行われていれば(g,v,h,σ)=(g,xg,yg,xyg)となる。したがって、正当な署名であれば上記の検証でのペアリング演算は、e(g,σ)=e(g,xyg)=e(g,g)xy=e(xg,yg)=e(v,h)となり、値が一致することから、検証可能となる。なお、GDHグループの条件であるCDH問題の困難性から、署名鍵xを知らない第三者がg、v、hの値から署名σを導出することは不可能である。
【0041】
メッシュ構造における一般ノードBは、図2に示すように、記憶部B1と、一般ノード一方向性ハッシュ関数演算部B2と、一般ノード署名情報生成部B3と、多重署名情報生成部B4と、検証鍵情報生成部B5とを備える。
【0042】
記憶部B1は、自身(署名者uのノード)に割り当てられている固有署名鍵(x)と固有検証鍵(v)を記憶する。一般ノード一方向性ハッシュ関数演算部B2は、回覧されてきた電子データ(M)に一方向性ハッシュ関数演算を行う。一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算部B2により演算されたハッシュ値(h=H(M))に自身の固有署名鍵(x)により演算を行い、署名情報(σ=xh)を生成する。そして、一般ノード署名情報生成部B3は、生成した署名情報(σ)を隣接する他の一般ノードBへ送信する。
【0043】
多重署名情報生成部B4は、メッシュ構造において、隣接する一般ノードB(署名者uのノード)によって生成された署名情報(σ)に対して、自身の固有署名鍵(x)により演算を行い、隣接する一般ノードB間(u−u間)に固有の多重署名情報(σp−q)を生成する。そして、多重署名情報生成部B4は、生成した多重署名情報(σp−q)を代表ノードCへ送信する。
【0044】
検証鍵情報生成部B5は、メッシュ構造において、隣接する一般ノードB(署名者uのノード)の固有検証鍵(v)に対して、自身の固有署名鍵(x)により演算を行い、隣接する一般ノードB間(u−u間)に固有の検証鍵情報(vmp−q)を生成する。そして、検証鍵情報生成部B5は、生成した検証鍵情報(vmp−q)を代表ノードCへ送信する。
【0045】
ここで、多重署名情報及び検証鍵情報は、メッシュ構造において、隣接する一般ノードBの全ての組合せのそれぞれに対して生成され、これらが代表ノードCに送信される。なお、多重署名情報(σp−q)及び検証鍵情報(vmp−q)は、隣接する一般ノードBのいずれか一方(u又はu)において生成されるものとし、代表ノードCへ送信される情報は重複しないものとする。
【0046】
また、メッシュ構造に構成された一般ノードBを統括する代表ノードCは、図3に示すように、公開多重署名情報生成部C1と、公開検証鍵情報生成部C2とを備える。
【0047】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σ)を検証ノードDへ送信する。
【0048】
公開検証鍵情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の検証鍵情報を総和し、公開検証鍵情報(vm)を生成する。そして、公開検証鍵情報生成部C2は、生成した公開検証鍵情報(vm)を検証ノードDへ送信する。
【0049】
このように、多重署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(u−u間)において、いずれかのノードが多重署名情報(σp−q)及び/又は検証鍵情報(vmp−q)を演算により生成する。そして、多重署名システムAは、全ての一般ノードB間に対して生成された多重署名情報と検証鍵情報とを代表ノードCで総和し(多重署名情報の総和をΣσp−qとし、検証鍵情報の総和をΣvmp−qとする)、これらを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)及び公開検証鍵情報(vm=Σvmp−q)として公開する。
【0050】
よって、多重署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードB間の関係を署名鍵の積で表し、それを代表ノードCで総和することにより、メッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)と公開検証鍵情報(vm)である。これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0051】
次に、公開多重署名情報を検証する検証システムについて説明する。検証システムが有する検証ノードDは、図4に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、第1の検証部D3と、第2の検証部D4とを備える。
【0052】
検証ノード一方向性ハッシュ関数演算部D1は、電子データ(M)に一方向性ハッシュ関数演算を行う(h=H(M))。収集部D2は、電子データの署名を行った全ての一般ノードBの固有検証鍵(v、v、・・・)を収集する。第1の検証部D3は、収集部D2により収集された全ての一般ノードBの固有検証鍵に基づいて公開検証鍵情報(vm)の正当性を検証する。第2の検証部D4は、第1の検証部D3により正当性が検証された公開検証鍵情報(vm)に基づいて公開多重署名情報(σ)の正当性を検証する。
【0053】
具体的には、第1の検証部D3は、収集部D2によって収集した一般ノードBの固有検証鍵から、全ての隣接した一般ノードBの組合せ(u,u)について「Πe(v,v)」を計算し、この計算結果と「e(g,vm)」の値が一致することを確認することによって、公開検証鍵情報(vm)の正当性を検証する。
【0054】
また、第2の検証部D4は、第1の検証部D3によって正当性が確認された公開検証鍵情報(vm)を利用して、「e(g,σ)」と「e(vm,h)」を計算し、両者が一致するか否かを確認することによって、公開多重署名情報(σ)の正当性を検証する。
【0055】
このようにして検証ノードDは、第1の検証部D3により全ての一般ノードBの固有検証鍵に基づいて公開検証鍵情報の正当性を検証し、正当性が検証された公開検証鍵情報に基づいて、第2の検証部D4により公開多重署名情報の正当性を検証する。
【0056】
したがって、検証システムでは、一般ノードBにて生成される個々の検証鍵情報や多重署名情報等を検証することなく、これらの総和として生成される公開検証鍵情報と公開多重署名情報とを検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。なお、検証ノードDは、検証専用のノードであってもよいし、多重署名システムAのメッシュ構造上に配置されるいずれかの一般ノードBや代表ノードCであってもよい。
【0057】
次に、多重署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報と公開検証鍵情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0058】
一般ノードB(署名者u及びu)は、図5に示すように、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3と、検証鍵情報生成工程ST4とにより、隣接する一般ノードB間(u−u間)に固有の多重署名情報(σp−q)と、隣接する一般ノードB間に固有の検証鍵情報(vmp−q)を生成する。
【0059】
一般ノード一方向性ハッシュ関数演算工程ST1において、署名者uのノードにおける一般ノード一方向性ハッシュ関数演算部B2は、電子データ(M)に一方向性ハッシュ関数演算を行う。
【0060】
一般ノード署名情報生成工程ST2において、署名者uのノードにおける一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算工程ST1により演算されたハッシュ値に自身の固有署名鍵(x)により演算を行い、署名情報(σ)を生成する。
【0061】
多重署名情報生成工程ST3において、署名者uのノードにおける多重署名情報生成部B4は、一般ノード署名情報生成工程ST2により生成された署名情報(σ)に対して、自身の固有署名鍵(x)により演算を行い、隣接する一般ノードB間(u−u間)に固有の多重署名情報(σp−q)を生成する。
【0062】
検証鍵情報生成工程ST4において、署名者uのノードにおける検証鍵情報生成部B5は、署名者uのノードの固有検証鍵(v)に対して、自身の固有署名鍵(x)により演算を行い、隣接する一般ノードB間(u−u間)に固有の検証鍵情報(vmp−q)を生成する。
【0063】
また、代表ノードCは、図6に示すように、公開多重署名情報生成工程ST11と、公開検証鍵情報生成工程ST12とにより、公開多重署名情報(σ)と、公開検証鍵情報(vm)を生成する。
【0064】
公開多重署名情報生成工程ST11において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。
【0065】
公開検証鍵情報生成工程ST12において、公開検証鍵情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の検証鍵情報を総和し、公開検証鍵情報(vm)を生成する。
【0066】
このように、多重署名システムAに係る多重署名方法によれば、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(u−u間)において、いずれかのノードが多重署名情報(σp−q)及び/又は検証鍵情報(vmp−q)を演算により生成する。そして、多重署名システムAに係る多重署名方法は、全ての一般ノードB間に対して生成された多重署名情報と検証鍵情報とを代表ノードCで総和し(多重署名情報の総和をΣσp−qとし、検証鍵情報の総和をΣvmp−qとする)、これらを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)及び公開検証鍵情報(vm=Σvmp−q)として公開する。
【0067】
よって、多重署名システムAに係る多重署名方法によれば、メッシュ構造上において連続(隣接)する二つの一般ノードB間の関係を署名鍵の積で表し、それを代表ノードCで総和することにより、メッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)と公開検証鍵情報(vm)である。これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0068】
また、検証ノードDは、図7に示すように、検証ノード一方向性ハッシュ関数演算工程ST21と、収集工程ST22と、第1の検証工程ST23と、第2の検証工程ST24とにより、公開多重署名情報(σ)の正当性を検証する。
【0069】
検証ノード一方向性ハッシュ関数演算工程ST21において、検証ノード一方向性ハッシュ関数演算部D1は、電子データ(M)に一方向性ハッシュ関数演算を行う。
【0070】
収集工程ST22において、収集部D2は、電子データ(M)の署名を行った全ての一般ノードBの固有検証鍵を収集する。
【0071】
第1の検証工程ST23において、第1の検証部D3は、収集工程ST22により収集された全ての一般ノードBの固有検証鍵に基づいて公開検証鍵情報の正当性を検証する。
【0072】
第2の検証工程ST24において、第2の検証部D4は、第1の検証工程ST23により正当性が検証された公開検証鍵情報に基づいて公開多重署名情報の正当性を検証する。
【0073】
このようにして、第1の検証工程ST23により全ての一般ノードBの固有検証鍵に基づいて公開検証鍵情報の正当性を検証し、第1の検証工程ST23により正当性が検証された公開検証鍵情報に基づいて、第2の検証工程ST24により公開多重署名情報の正当性を検証する。
【0074】
したがって、検証システムに係る検証方法では、一般ノードBにて生成される個々の検証鍵情報や多重署名情報等を検証することなく、これらの総和として生成される公開検証鍵情報と公開多重署名情報とを検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、第1の検証工程ST23や第2の検証工程の処理負荷を低減して検証作業を実行することができる。
【0075】
[実施例]
ここで、多重署名システムAの動作について、図8に示すメッシュ構造を一例として具体的に説明する。なお、この例では、ノード1からノード7の七つの一般ノードBがメッシュ構造状に配置され、ノード1とノード2、ノード2とノード3、ノード3とノード4、ノード4とノード5、ノード5とノード6、ノード6とノード7、ノード7とノード1、ノード2とノード6、ノード3とノード5、ノード3とノード7がそれぞれ隣接するノードとして相互に多重署名を行う。
【0076】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7には、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード2:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード3:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード4:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード5:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード6:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード7:(署名鍵,検証鍵)=(x,v)=(x,xg)
【0077】
まず、各ノードは、電子データ(例えば、メッシュ構造の確認情報としてのメッセージm)に対してハッシュ値(h=H(m))を求める。
【0078】
次に、全ての隣接するノード間において、多重署名情報と検証鍵情報とを生成する。
具体的には、例えば、ノード1(署名者u)は、ハッシュ値hに自身の署名鍵(x)をかけて署名情報(σ=xh)を生成し、検証鍵(v)と共にノード2に送信する。そして、ノード2(署名者u)は、ノード1から受信した署名情報(σ)に対して自身の署名鍵(x)をかけて、(4)式により多重署名情報を生成する。
σ1−2=x(xh)+xh ・・・(4)
また同様に、ノード2は、ノード1から受信した検証鍵(v)に対して自身の署名鍵(x)をかけて、(5)式により検証鍵情報を生成する。
vm1−2=x(xg)+xg ・・・(5)
【0079】
なお、(4)式及び(5)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(σ=xh)を生成した後に検証鍵(v)と共にノード1へ送信し、ノード1が多重署名情報(σ1−2)及び検証鍵情報(vm1−2)を生成してもよい。
【0080】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び検証鍵情報(vm2−3、vm3−4、vm4−5、vm5−6、vm6−7、vm7−1、vm2−6、vm3−5、vm3−7)を生成する。
【0081】
隣接する全てのノード間で多重署名情報及び検証鍵情報が生成されると、代表ノードC(代表者u)は、これらの多重署名情報(σp−q)及び検証鍵情報(vmp−q)を回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)を足し合わせ、(6)〜(7)式により公開多重署名情報(σ)を生成する。
σ=Σp,qσp−q ・・・(6)
=σ1−2+σ2−3+σ3−4+σ4−5+σ5−6+σ6−7+σ7−1
+σ2−6+σ3−5+σ3−7 ・・・(7)
また、代表ノードCは、回収した全ての検証鍵情報(vmp−q)を足し合わせ、(8)〜(9)式により公開検証鍵情報(vm)を生成する。
vm=Σp,qvmp−q ・・・(8)
=vm1−2+vm2−3+vm3−4+vm4−5+vm5−6+vm6−7
+vm7−1+vm2−6+vm3−5+vm3−7 ・・・(9)
【0082】
そして、代表ノードCは、生成した公開多重署名情報(σ)と公開検証鍵情報(vm)を公開情報として公開する。
【0083】
また、検証ノードDは、以下の検証過程1から検証過程4により公開多重署名情報(σ)の正当性を検証する。
【0084】
(検証過程1)検証ノードDは、電子データ(上記のメッセージm)に対してハッシュ値(h=H(m))を求める。
(検証過程2)検証ノードDは、電子データの署名を行った全ての一般ノードBの検証鍵(v、v、v、v、v、v、v)を収集する。
【0085】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開検証鍵情報(vm)の正当性を検証する。具体的には、検証ノードDは、収集した全ての一般ノードBの検証鍵から(10)式及び(11)式に示す演算を行い、(11)式と「e(g,vm)」とが一致することを確認し、これらの値が一致した場合には、公開検証鍵情報(vm)が正当であると判断する。
Πp,qe(v,v) ・・・(10)
=e(v,v)・e(v,v)・e(v,v)・e(v,v
・e(v,v)・e(v,v)・e(v,v)・e(v,v
・e(v,v)・e(v,v) ・・・(11)
【0086】
(検証過程4)検証ノードDは、正当性が検証された公開検証鍵情報(vm)に基づいて公開多重署名情報(σ)の正当性を検証する。検証ノードDは、具体的には、「e(g,σ)」と「e(vm,h)」を計算し、これらの値が一致することを確認し、これらの一致した場合には、公開多重署名情報(σ)が正当であると判断する。
【0087】
ここで、(検証過程3)における「e(g,vm)」の演算過程について説明する。
なお、便宜上「x」は、(12)式と置く。
x=x+x+x+x+x+x
+x+x+x ・・・(12)
【0088】
【数1】

【0089】
なお、署名の過程が正しく行われていれば、(11)式と(17)式は、一致する。
また、公開検証鍵情報(vm)を一つの検証鍵と見なせば、(検証過程4)による検証は、GDH署名の検証と同じ検証を行っていることになり、公開多重署名情報(σ)の検証が可能となる。
【0090】
また、(12)式の右辺に着目すると、任意の隣接する一般ノードB(uとu)に対応して「x」という積になっており、ノード間がどのような関係により署名されてきたかが表されている。
【0091】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、メッシュ構造上の署名者の配置を把握することができる。
【0092】
また、(12)式については、CDH問題や楕円曲線上の離散対数問題から秘密情報である署名鍵を知らない第三者が、右辺の各項(x)を任意に入れ替えることができないため、第三者による順序の入れ替えは不可能である。
【0093】
すなわち、検証システム(検証ノードD)が採用する本検証方式は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の積で表し、それを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0094】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開検証鍵情報(vm)と公開多重署名情報(σ)であり、これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0095】
<第2実施形態>
以下、本発明の実施形態の一例である第2実施形態について説明する。本実施形態に係る多重署名システムAは、第1実施形態とは代表ノードCの構成が異なり、代表ノードCにおいても署名を行う。また検証システムにおける検証ノードDの構成も異なっている。なお、第1実施形態と同様の構成については同一の符号を付し、説明を省略又は簡略化する。
【0096】
メッシュ構造に構成された一般ノードBを統括する代表ノードCは、図9に示すように、公開多重署名情報生成部C1と、公開検証鍵情報生成部C2と、記憶部C3と、代表ノード一方向性ハッシュ関数演算部C4と、代表ノード署名情報生成部C5とを備える。
【0097】
記憶部C3は、割り当てられている固有署名鍵(xr)と固有検証鍵(vr)を記憶する。代表ノード一方向性ハッシュ関数演算部C4は、電子データ(M)に一方向性ハッシュ関数演算を行う(h=H(M))。
【0098】
代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算部C4により演算されたハッシュ値に自身の固有署名鍵により演算を行って、代表ノード署名情報(σ)を生成する。
【0099】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報生成部C5により生成された代表ノード署名情報(σ)を含んで(加算して)、公開多重署名情報(σ)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σ)を検証ノードDへ送信する。
【0100】
公開検証鍵情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の検証鍵情報を総和し、さらに代表ノードの固有検証鍵(v)を含んで(加算して)、公開検証鍵情報(vm)を生成する。そして、公開検証鍵情報生成部C2は、生成した公開検証鍵情報(vm)を検証ノードDへ送信する。
【0101】
このように、多重署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(u−u間)において、いずれかのノードが多重署名情報(σp−q)及び/又は検証鍵情報(vmp−q)を演算により生成する。そして、多重署名システムAは、全ての一般ノードB間に対して生成された多重署名情報と検証鍵情報とを代表ノードCで総和する。さらに、代表ノードCは、代表ノードCを示す代表ノード署名情報(σ=xh)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σ=σ+Σσp−q)として公開する。また、代表ノードCは、代表ノードCの固有検証鍵(v=xg)を検証鍵情報の総和に加算したものを、メッシュ構造全体の公開検証鍵情報(vm=v+Σvmp−q)として公開する。
【0102】
よって、多重署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードB間の関係を署名鍵の積で表し、それらを代表ノードCで総和し、さらに代表ノードCの署名鍵を加算することにより、代表ノードCを含んだメッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)と公開検証鍵情報(vm)である。これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0103】
また、公開多重署名情報を検証する検証システムが有する検証ノードDは、図10に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、第1の検証部D3と、第2の検証部D4とを備える。
【0104】
検証ノード一方向性ハッシュ関数演算部D1は、電子データ(M)に一方向性ハッシュ関数演算を行う(h=H(M))。収集部D2は、電子データの署名を行った全ての一般ノードBの固有検証鍵(v、v、・・・)と、代表ノードCの固有検証鍵(v)とを収集する。第1の検証部D3は、収集部D2により収集された全ての一般ノードBの固有検証鍵と代表ノードCの固有検証鍵とに基づいて公開検証鍵情報(vm)の正当性を検証する。第2の検証部D4は、第1の検証部D3により正当性が検証された公開検証鍵情報(vm)に基づいて公開多重署名情報(σ)の正当性を検証する。
【0105】
具体的には、第1の検証部D3は、収集部D2によって収集した一般ノードBの固有検証鍵と代表ノードCの固有検証鍵とから、全ての隣接した一般ノードBの組合せ(u,u)について「e(g,v)(Πe(v,v))」を計算し、この計算結果と「e(g,vm)」の値が一致することを確認することによって、公開検証鍵情報(vm)の正当性を検証する。
【0106】
また、第2の検証部D4は、第1の検証部D3によって正当性が確認された公開検証鍵情報(vm)を利用して、「e(g,σ)」と「e(vm,h)」を計算し、両者が一致するか否かを確認することによって、公開多重署名情報(σ)の正当性を検証する。
【0107】
このようにして検証ノードDは、第1の検証部D3により全ての一般ノードBの固有検証鍵と代表ノードCの固有検証鍵とに基づいて公開検証鍵情報の正当性を検証し、正当性が検証された公開検証鍵情報に基づいて、第2の検証部D4により公開多重署名情報の正当性を検証する。
【0108】
したがって、検証システムでは、一般ノードBにて生成される個々の検証鍵情報や多重署名情報等を検証することなく、これらの総和を含んで生成される公開検証鍵情報と公開多重署名情報とを検証することにより、代表ノードCを含んだメッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。
【0109】
次に、多重署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報と公開検証鍵情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0110】
一般ノードB(署名者u及びu)は、第1実施形態と同様に(図5参照)、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3と、検証鍵情報生成工程ST4とにより、隣接する一般ノードB間(u−u間)に固有の多重署名情報(σp−q)と、隣接する一般ノードB間に固有の検証鍵情報(vmp−q)を生成する。
【0111】
また、代表ノードCは、図11に示すように、代表ノード一方向性ハッシュ関数演算工程ST31と、代表ノード署名情報生成工程ST32と、公開多重署名情報生成工程ST33と、公開検証鍵情報生成工程ST34とにより、公開多重署名情報(σ)と、公開検証鍵情報(vm)を生成する。
【0112】
代表ノード一方向性ハッシュ関数演算工程ST31において、代表ノード一方向性ハッシュ関数演算部C4は、電子データ(M)に一方向性ハッシュ関数演算を行う。
【0113】
代表ノード署名情報生成工程ST32において、代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算工程ST31により演算されたハッシュ値に自身の固有署名鍵により演算を行って得られた演算値からなる代表ノード署名情報(σ)を生成する。
【0114】
公開多重署名情報生成工程ST33において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報を加算して公開多重署名情報(σ)を生成する。
【0115】
公開検証鍵情報生成工程ST34において、公開検証鍵情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の検証鍵情報を総和し、さらに代表ノードCの固有検証鍵を加算して公開検証鍵情報(vm)を生成する。
【0116】
このように、多重署名システムAに係る多重署名方法によれば、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(u−u間)において、いずれかのノードが多重署名情報(σp−q)及び/又は検証鍵情報(vmp−q)を演算により生成する。そして、多重署名システムAに係る多重署名方法は、全ての一般ノードB間に対して生成された多重署名情報と検証鍵情報とを代表ノードCで総和する。さらに、多重署名システムAに係る多重署名方法は、代表ノードCを示す代表ノード署名情報(σ=xh)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σ=σ+Σσp−q)として、また、代表ノードCの固有検証鍵(v=xg)を検証鍵情報の総和に加算したものを、メッシュ構造全体の公開検証鍵情報(vm=v+Σvmp−q)として公開する。
【0117】
よって、多重署名システムAに係る多重署名方法によれば、メッシュ構造上において連続(隣接)する二つの一般ノードB間の関係を署名鍵の積で表し、それらを代表ノードCで総和し、さらに代表ノードCの署名鍵を加算することにより、代表ノードCを含んだメッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)と公開検証鍵情報(vm)である。これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0118】
[実施例]
ここで、多重署名システムAの動作について、図12に示すメッシュ構造を一例として具体的に説明する。なお、この例では、第1実施形態と同様に、ノード1からノード7の七つの一般ノードBがメッシュ構造状に配置され、ノード1とノード2、ノード2とノード3、ノード3とノード4、ノード4とノード5、ノード5とノード6、ノード6とノード7、ノード7とノード1、ノード2とノード6、ノード3とノード5、ノード3とノード7がそれぞれ隣接するノードとして相互に多重署名を行う。
【0119】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7と代表ノードCには、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード2:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード3:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード4:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード5:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード6:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノード7:(署名鍵,検証鍵)=(x,v)=(x,xg)
ノードC:(署名鍵,検証鍵)=(x,v)=(x,xg)
【0120】
まず、各ノード(ノード1〜ノード7、代表ノードC)は、電子データ(例えば、メッシュ構造の確認情報としてのメッセージm)に対してハッシュ値(h=H(m))を求める。
【0121】
次に、全ての隣接するノード間において、多重署名情報と検証鍵情報とを生成する。
具体的には、例えば、ノード1(署名者u)は、ハッシュ値hに自身の署名鍵(x)をかけて署名情報(σ=xh)を生成し、検証鍵(v)と共にノード2に送信する。そして、ノード2(署名者u)は、ノード1から受信した署名情報(σ)に対して自身の署名鍵(x)をかけて、(18)式により多重署名情報を生成する。
σ1−2=x(xh)+xh ・・・(18)
また同様に、ノード2は、ノード1から受信した検証鍵(v)に対して自身の署名鍵(x)をかけて、(19)式により検証鍵情報を生成する。
vm1−2=x(xg)+xg ・・・(19)
【0122】
なお、(18)式及び(19)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(σ=xh)を生成した後に検証鍵(v)と共にノード1へ送信し、ノード1が多重署名情報(σ1−2)及び検証鍵情報(vm1−2)を生成してもよい。
【0123】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び検証鍵情報(vm2−3、vm3−4、vm4−5、vm5−6、vm6−7、vm7−1、vm2−6、vm3−5、vm3−7)を生成する。
【0124】
隣接する全てのノード間で多重署名情報及び検証鍵情報が生成されると、代表ノードC(代表者u)は、これらの多重署名情報(σp−q)及び検証鍵情報(vmp−q)を回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)と代表ノードCの署名情報(σ)とを足し合わせ、(20)〜(21)式により公開多重署名情報(σ)を生成する。
σ=xh+Σp,qσp−q ・・・(20)
=xh+σ1−2+σ2−3+σ3−4+σ4−5+σ5−6+σ6−7
+σ7−1+σ2−6+σ3−5+σ3−7 ・・・(21)
また、代表ノードCは、回収した全ての検証鍵情報(vmp−q、v)を足し合わせ、(22)〜(23)式により公開検証鍵情報(vm)を生成する。
vm=v+Σp,qvmp−q ・・・(22)
=v+vm1−2+vm2−3+vm3−4+vm4−5+vm5−6
+vm6−7+vm7−1+vm2−6+vm3−5+vm3−7 ・・・(23)
【0125】
そして、代表ノードCは、生成した公開多重署名情報(σ)と公開検証鍵情報(vm)を公開情報として公開する。
【0126】
また、検証ノードDは、以下の検証過程1から検証過程4により公開多重署名情報(σ)の正当性を検証する。
【0127】
(検証過程1)検証ノードDは、電子データ(上記のメッセージm)に対してハッシュ値(h=H(m))を求める。
(検証過程2)検証ノードDは、電子データの署名を行った全ての一般ノードBと代表ノードCの検証鍵(v、v、v、v、v、v、v、v)を収集する。
【0128】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開検証鍵情報(vm)の正当性を検証する。具体的には、検証ノードDは、収集した全ての一般ノードBと代表ノードCの検証鍵から(24)式及び(25)式に示す演算を行い、(25)式と「e(g,vm)」とが一致することを確認し、これらの値が一致した場合には、公開検証鍵情報(vm)が正当であると判断する。
e(g,v)(Πp,qe(v,v)) ・・・(24)
=e(g,v)・e(v,v)・e(v,v)・e(v,v
・e(v,v)・e(v,v)・e(v,v)・e(v,v
・e(v,v)・e(v,v)・e(v,v) ・・・(25)
【0129】
(検証過程4)検証ノードDは、正当性が検証された公開検証鍵情報(vm)に基づいて公開多重署名情報(σ)の正当性を検証する。検証ノードDは、具体的には、「e(g,σ)」と「e(vm,h)」を計算し、これらの値が一致することを確認し、これらの一致した場合には、公開多重署名情報(σ)が正当であると判断する。
【0130】
ここで、(検証過程3)における「e(g,vm)」の演算過程について説明する。
なお、便宜上「x」は、(26)式と置く。
x=x+x+x+x+x+x+x
+x+x+x ・・・(26)
【0131】
【数2】

【0132】
なお、署名の過程が正しく行われていれば、(25)式と(31)式は、一致する。
また、公開検証鍵情報(vm)を一つの検証鍵と見なせば、(検証過程4)による検証は、GDH署名の検証と同じ検証を行っていることになり、公開多重署名情報(σ)の検証が可能となる。
【0133】
また、(26)式の右辺に着目すると、任意の隣接する一般ノードB(uとu)に対応して「x」という積になっており、ノード間がどのような関係により署名されてきたかが表されている。さらに、右辺第1項は、代表ノードCの署名鍵(x)のみで構成されている。よって、代表ノードCの署名者はuであることが分かる。
【0134】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、代表ノードCを含んだメッシュ構造上の署名者の配置を把握することができる。
【0135】
また、(26)式については、CDH問題や楕円曲線上の離散対数問題から秘密情報である署名鍵を知らない第三者が、右辺の各項(x及びx)を任意に入れ替えることができないため、第三者による順序の入れ替えは不可能である。
【0136】
すなわち、検証システム(検証ノードD)が採用する本検証方式は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の積で表し、それを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0137】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開検証鍵情報(vm)と公開多重署名情報(σ)であり、これらは楕円曲線上の点であるため、各情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に多重電子署名を生成することができる。
【0138】
以上で説明した各実施形態における多重署名システムA及び検証システムは、例えば駅改札のネットワーク等、PtoP(Peer to Peer)の限定された範囲のネットワークの管理に利用することができる。すなわち、各ノード間にて署名された多重署名情報及び検証鍵情報を収集して正当性を検証することにより、限定された範囲のネットワークから外れた所に情報が漏洩していないかどうかを検証することができる。
【0139】
また、多重署名システムA及び検証システムによる一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【0140】
A 多重署名システム
B 一般ノード
B1 記憶部
B2 一般ノード一方向性ハッシュ関数演算部
B3 一般ノード署名情報生成部
B4 多重署名情報生成部
B5 検証鍵情報生成部
C 代表ノード
C1 公開多重署名情報生成部
C2 公開検証鍵情報生成部
C3 記憶部
C4 代表ノード一方向性ハッシュ関数演算部
C5 代表ノード署名情報生成部
D 検証ノード、検証システム
D1 検証ノード一方向性ハッシュ関数演算部
D2 収集部
D3 第1の検証部
D4 第2の検証部

【特許請求の範囲】
【請求項1】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う多重署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、
前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成部と、
隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、
隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成部と、を備え、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、
前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成部と、を備える多重署名システム。
【請求項2】
前記代表ノードは、
予め固有署名鍵と固有検証鍵が割り当てられており、
前記電子データに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、
前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、
前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、
前記公開検証鍵情報生成部は、前記代表ノードの固有検証鍵を含んで前記公開検証鍵情報を生成することを特徴とする請求項1に記載の多重署名システム。
【請求項3】
前記固有署名鍵は、所定の自然数からなり、
前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなることを特徴とする請求項1から請求項3のいずれかに記載の多重署名システム。
【請求項4】
請求項1に記載の多重署名システムにより生成された前記公開多重署名情報を検証する検証システムであって、
前記電子データに一方向性ハッシュ関数演算の行う検証ノード一方向性ハッシュ関数演算部と、
前記電子データの署名を行った全てのノードの固有検証鍵を収集する収集部と、
前記収集部により収集された前記全てのノードの固有検証鍵に基づいて前記公開検証鍵情報の正当性を検証する第1の検証部と、
前記第1の検証部により正当性が検証された前記公開検証鍵情報に基づいて前記公開多重署名情報の正当性を検証する第2の検証部と、を備えることを特徴とする検証システム。
【請求項5】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う多重署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、
隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成工程と、を備え、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成工程と、を備える多重署名方法。
【請求項6】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間で多重署名を行う方法をコンピュータによって実現するための多重署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、
電子データに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程により演算されたハッシュ値に自身の固有署名鍵により演算を行い、隣接する一般ノードへ送信するための署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、
隣接する一般ノードから受信した前記固有検証鍵に自身の固有署名鍵により演算を行い、隣接する一般ノード間に固有の検証鍵情報を生成する検証鍵情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
前記メッシュ構造における隣接する一般ノード間に固有の検証鍵情報の総和からなる公開検証鍵情報を生成する公開検証鍵情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行される多重署名プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2011−29784(P2011−29784A)
【公開日】平成23年2月10日(2011.2.10)
【国際特許分類】
【出願番号】特願2009−171391(P2009−171391)
【出願日】平成21年7月22日(2009.7.22)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】