アグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラム
【課題】メッシュ構造を表現できるアグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラムを提供すること。
【解決手段】アグリゲート署名システムAは、複数の一般ノードBがメッシュ構造状に構成され、メッシュ構造上で隣接する二つの一般ノードB間において多重署名情報を演算により生成する。そして、アグリゲート署名システムAは、複数の一般ノードBを統括する代表ノードCにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムAは、隣接する一般ノードBの組み合わせ、及び隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報を公開する。
【解決手段】アグリゲート署名システムAは、複数の一般ノードBがメッシュ構造状に構成され、メッシュ構造上で隣接する二つの一般ノードB間において多重署名情報を演算により生成する。そして、アグリゲート署名システムAは、複数の一般ノードBを統括する代表ノードCにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムAは、隣接する一般ノードBの組み合わせ、及び隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報を公開する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子署名を利用したアグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラムに関する。
【背景技術】
【0002】
現在、さまざまな電子情報がネットワークやメディアを介して送信されている。会社やコミュニティーのような組織においても、報告書やレポート、稟議書、連絡簿等さまざまな情報が電子化され、社員又はメンバー間でネットワークを経由して回覧されている。
【0003】
その情報の発信源あるいは閲覧済みであることを保証する仕組みとして電子署名がある。この電子署名を利用することにより、特定の人しか知りえない署名鍵と電子情報を入力値として署名の演算を行い、検証者が検証鍵と言われる公開された情報と署名されたデータを入力値として検証演算を行うことで、その特定の人がそのデータの発信源であることを確認することが可能となる。ここで、検証鍵から署名鍵を導出することは、計算量的に不可能であることから、他の人がその特定者に成りすまして署名を行うことができないため、その署名の正当性が保証される。
【0004】
また、組織における電子情報の回覧においては、複数の人が介在して署名を行うケースが想定され、例えば、電子データの回覧や会社における承認システムがそれに該当する。複数人の署名を行う方式としては、それぞれの署名者を検証できる多重署名(例えば、非特許文献1を参照)やアグリゲート署名(例えば、非特許文献2を参照)、特定のグループに所属している人の誰かが署名したことを保証できるグループ署名(例えば、特許文献1を参照)が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−166687号公報
【特許文献2】特開平09−270787号公報
【特許文献3】特開2002−040935号公報
【非特許文献】
【0006】
【非特許文献1】新保 淳、「多重署名に適したElGamal署名の一変形方式」、暗号と情報セキュリティシンポジウム(CSS)、SCIS94−2C、電子情報通信学会、1994
【非特許文献2】D.Boneh, C.Gentry, B.Lynn, and H.Shacham, “Aggregate and Verifiably Encrypted Signatures from Bilinear Maps,” Advances in Cryptoloty−EUROCRYPT 2003, LNCS 2656, pp.416−432, Springer−Verlag, 2003
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、これらの多重署名やアグリゲート署名、グループ署名では署名者が全て等価な関係で表現される。したがって、署名システムにおいて電子データがどのように流通してきたのかを、これらの署名方式だけで表現することができない。
【0008】
これに対し、順序や上下関係を証明する方式としては順序付き多重署名方式(例えば、特許文献2、3を参照)があげられる。これにより署名者の順番が保証され、個人の上下関係が表現できる。しかしながら、これらは、各署名者の前と後の使用者が一人ずつの場合のみで行える方式であり、例えば、使用者のつながりが1対多、又は多対多で関係性が構成されるメッシュ構造になっている場合、既存の署名方式ではこの構造を表現することができなかった。また、これらの署名方式は、同一のメッセージに対して複数人が署名を行う方式であるため、各署名者がそれぞれ異なるメッセージを対象とするアグリゲート署名を行うことができなかった。
【0009】
本発明は、上記課題を解決するため、メッシュ構造を表現できるアグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明では、以下のような解決手段を提供する。
【0011】
(1)本発明に係るアグリゲート署名システムは、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成部と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、を備え、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成部と、を備える。
【0012】
このような構成によれば、アグリゲート署名システムは、複数の一般ノードがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報を演算により生成する。そして、アグリゲート署名システムは、複数の一般ノードを統括する代表ノードにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムは、隣接する一般ノードの組み合わせ、及び隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を公開する。
【0013】
よって、アグリゲート署名システムは、メッシュ構造上において連続(隣接)する二つのノード間の関係を表す多重署名情報を生成し、これらを代表ノードで総和することにより、メッシュ構造を表現することができる。
【0014】
(2)また、上記アグリゲート署名システムでは、前記代表ノードは、予め固有署名鍵と固有検証鍵が割り当てられており、自身の署名対象であるメッセージに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、前記公開リスト情報生成部は、前記代表ノード、及び当該代表ノードとメッセージとの対応関係を示す情報を含んで前記公開リスト情報を生成する。
【0015】
このような構成によれば、アグリゲート署名システムは、代表ノードにおいて、代表ノード署名情報を多重署名情報の総和に加算したものをメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムは、隣接する一般ノードの組み合わせ、及び隣接する一般ノードとメッセージとの対応関係に加えて、代表ノードとメッセージとの対応関係を示す情報を含んで公開リスト情報を公開する。
【0016】
よって、アグリゲート署名システムは、メッシュ構造上において連続(隣接)する二つの一般ノード間の関係を表す多重署名情報を生成して、これらを代表ノードで総和し、さらに代表ノードの署名情報を加算することにより、代表ノードを含んだメッシュ構造を表現することができる。
【0017】
(3)また、上記アグリゲート署名システムでは、前記多重署名情報生成部は、隣接する一般ノードの一方のみで、当該隣接する一般ノード間に固有の多重署名情報を生成する。
【0018】
このような構成によれば、アグリゲート署名システムは、生成される多重署名情報の重複を回避できるので、演算回数及び通信回数が減少し、処理負荷が低減される。
【0019】
(4)また、上記アグリゲート署名システムでは、前記固有署名鍵は、所定の自然数からなり、前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなる。
【0020】
このような構成によれば、アグリゲート署名システムは、固有署名鍵を知らない第三者がGDHグループの要素である楕円曲線上の点から固有署名鍵を求めることを、計算量的に困難にすることができる。また、メッシュ構造において一般ノードの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードで生成される公開多重署名情報である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報を生成することができる。
【0021】
(5)本発明に係る検証システムは、上記アグリゲート署名システムにより生成された前記公開多重署名情報を検証する検証システムであって、前記公開リスト情報に含まれるメッセージに一方向性ハッシュ関数演算を行う検証ノード一方向性ハッシュ関数演算部と、前記公開リスト情報に含まれる全てのノードの固有検証鍵を収集する収集部と、前記検証ノード一方向性ハッシュ関数演算部により演算されたハッシュ値、前記収集部により収集された前記全てのノードの固有検証鍵、及び前記公開リスト情報に基づいて、前記公開多重署名情報の正当性を検証する検証部と、を備える。
【0022】
このような構成によれば、検証システムは、公開されている全てのノードの固有検証鍵に基づいて、検証部により公開多重署名情報の正当性を検証する。
【0023】
よって、検証システムでは、一般ノードにて生成される個々の多重署名情報等を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証システムでは、検証ノードの処理負荷を低減して検証作業を実行することができる。
【0024】
(6)本発明に係るアグリゲート署名方法は、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、を実行し、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、を実行する。
【0025】
このような構成によれば、アグリゲート署名方法を各ノードが実行することにより、(1)と同様の効果が期待できる。
【0026】
(7)本発明に係るアグリゲート署名プログラムは、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行う方法をコンピュータによって実現するためのアグリゲート署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行される。
【0027】
このような構成によれば、アグリゲート署名プログラムを各ノードに実行させることにより、(1)と同様の効果が期待できる。
【発明の効果】
【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がメッシュ構造状に構成される。そして、アグリゲート署名システムAは、当該複数の一般ノード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)c ・・・(3)
となり、両者の値が一致するかどうかにより、「ab=c」であるかどうかを判定でき、gはGDHグループGの要素となりうる。
【0038】
この性質を利用してGDH署名が構成される。集合Gは、GDHグループであり、gは集合Gの要素となる点とする。また、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データが固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する。
【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とを備える。
【0042】
記憶部B1は、自身(署名者uqのノード)に割り当てられている固有署名鍵(xq)と固有検証鍵(vq)とを記憶する。
一般ノード一方向性ハッシュ関数演算部B2は、隣接する一般ノード(署名者upのノード)との関係や付随情報を表す署名対象のメッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0043】
一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算部B2により演算されたハッシュ値(hp−q=H(mp−q))に自身の固有署名鍵(xq)により演算を行い、自身の署名情報(xqhp−q)を生成する。そして、一般ノード署名情報生成部B3は、生成した署名情報(xqhp−q)を隣接する他の一般ノードBへ送信する。
【0044】
多重署名情報生成部B4は、メッシュ構造において、隣接する一般ノードB(署名者upのノード)によって生成された署名情報(xphp−q)と、自身の署名情報(xqhp−q)とを加算して、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q=(xp+xq)hp−q)を生成する。そして、多重署名情報生成部B4は、生成した多重署名情報(σp−q)を代表ノードCへ送信する。
【0045】
ここで、多重署名情報は、メッシュ構造において、隣接する一般ノードBの全ての組み合わせのそれぞれに対して生成され、これらが代表ノードCに送信される。なお、多重署名情報(σp−q)は、隣接する一般ノードBのいずれか一方(up又はuq)において生成されるものとし、代表ノードCへ送信される情報は重複しないものとする。
【0046】
また、メッシュ構造に構成された一般ノードBを統括する代表者urの代表ノードCは、図3に示すように、公開多重署名情報生成部C1と、公開リスト情報生成部C2とを備える。
【0047】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σ)を検証ノードDへ送信する。
【0048】
公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報(L={(up,uq,mp−q)})を生成する。そして、公開リスト情報生成部C2は、生成した公開リスト情報(L)を検証ノードDへ送信する。
【0049】
このように、アグリゲート署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAは、全ての一般ノードB間に対して生成された多重署名情報(σp−q)を代表ノードCで総和し、これを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)として公開する。
【0050】
よって、アグリゲート署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードBに対応して、「hp−q」及び「xp+xq」という値から署名処理を行っているため、ノード間がどのような関係により署名されてきたかが分かる。その結果、メッシュ構造における一般ノードBの配置が分かる。また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵(xp又はxq)を知らない第三者が多重署名情報(σ又はσp−q)を作成することは不可能である。
【0051】
また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)である。この公開多重署名情報(σ)は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0052】
次に、公開多重署名情報を検証する検証システムについて説明する。検証システムが有する検証ノードDは、図4に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、検証部D3とを備える。
【0053】
検証ノード一方向性ハッシュ関数演算部D1は、公開リスト情報(L)に含まれている署名対象となったメッセージ(mp−q)に一方向性ハッシュ関数演算を行う(hp−q=H(mp−q))。
【0054】
収集部D2は、公開リスト情報(L)に含まれている全てのノード、すなわち、メッセージの署名を行った全ての一般ノードBの固有検証鍵(vp、vq、・・・)を収集する。
【0055】
検証部D3は、検証ノード一方向性ハッシュ関数演算部D1により演算されたハッシュ値(hp−q)、収集部D2により収集された全ての一般ノードBの固有検証鍵(vp、vq)、及び公開リスト情報(L)に基づいて、公開多重署名情報(σ)の正当性を検証する。
【0056】
具体的には、検証部D3は、公開リスト情報(L)から得られる全ての隣接した一般ノードBの組み合わせ(up,uq)について「Πe(vp+vq,hp−q)」を計算し、この計算結果と「e(g,σ)」の値が一致することを確認することによって、公開多重署名情報(σ)の正当性を検証する。
【0057】
このようにして検証ノードDは、公開されている全ての一般ノードBの固有検証鍵に基づいて、検証部D3により公開多重署名情報の正当性を検証する。
【0058】
したがって、検証システムでは、一般ノードBにて生成される個々の多重署名情報を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。なお、検証ノードDは、検証専用のノードであってもよいし、アグリゲート署名システムAのメッシュ構造上に配置されるいずれかの一般ノードBや代表ノードCであってもよい。
【0059】
ここで、検証ノードDは、隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBと署名を行ったメッセージとの対応関係を示す公開リスト情報を、必ずしも入手しなくてもよいが、代表ノードCから入手するようにしておくことが好ましい。検証ノードDが公開リスト情報を入手しない場合でも、検証部D3は、隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBと署名を行ったメッセージとの対応関係に関して、全ての組み合わせを演算することにより、公開署名情報の正当性を検証することが可能である。しかし、検証ノードDが公開リスト情報を入手し検証部D3へ受け渡すようにしておくと、この情報がない場合に比べて検証部D3の演算量が少なくてすむ。
【0060】
次に、アグリゲート署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0061】
一般ノードB(署名者up及びuq)は、図5に示すように、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3とにより、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0062】
一般ノード一方向性ハッシュ関数演算工程ST1において、署名者upのノードにおける一般ノード一方向性ハッシュ関数演算部B2は、メッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0063】
一般ノード署名情報生成工程ST2において、署名者upのノードにおける一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算工程ST1において演算されたハッシュ値(hp−q)に自身の固有署名鍵(xp)により演算を行い、署名情報(xphp−q)を生成する。
【0064】
多重署名情報生成工程ST3において、署名者uqのノードにおける多重署名情報生成部B4は、一般ノード署名情報生成工程ST2において生成された署名情報(xphp−q)に対して、自身の署名情報(xqhp−q)を加算し、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0065】
また、代表ノードCは、図6に示すように、公開多重署名情報生成工程ST11と、公開リスト情報生成工程ST12とにより、公開多重署名情報(σ)と、公開リスト情報(L)とを生成する。
【0066】
公開多重署名情報生成工程ST11において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。
【0067】
公開リスト情報生成工程ST12において、公開リスト情報生成部C2は、メッシュ構造における隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報(L)を生成する。
【0068】
このように、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAに係るアグリゲート署名方法は、全ての一般ノードB間に対して生成された多重署名情報を代表ノードCで総和し、これを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)として公開する。
【0069】
よって、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間の関係を、署名鍵の和を用いた多重署名情報で表し、これらを代表ノードCで総和することにより、メッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0070】
また、検証ノードDは、図7に示すように、検証ノード一方向性ハッシュ関数演算工程ST21と、収集工程ST22と、検証工程ST23とにより、公開多重署名情報(σ)の正当性を検証する。
【0071】
検証ノード一方向性ハッシュ関数演算工程ST21において、検証ノード一方向性ハッシュ関数演算部D1は、メッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0072】
収集工程ST22において、収集部D2は、メッセージ(mp−q)の署名を行った全ての一般ノードBの固有検証鍵(vp、vq)を収集する。
【0073】
検証工程ST23において、検証部D3は、検証ノード一方向性ハッシュ関数演算工程ST21において演算されたハッシュ値(hp−q)、収集工程ST22において収集された全ての一般ノードBの固有検証鍵(vp、vq)、及び公開リスト情報(L)に基づいて、公開多重署名情報(σ)の正当性を検証する。
【0074】
このようにして検証ノードDは、公開されている全ての一般ノードBの固有検証鍵に基づいて、検証工程ST23により公開多重署名情報の正当性を検証する。
【0075】
したがって、検証システムに係る検証方法では、一般ノードBにて生成される個々の多重署名情報等を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証工程ST23の処理負荷を低減して検証作業を実行することができる。
【0076】
[実施例]
ここで、アグリゲート署名システム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がそれぞれ隣接するノードとして相互に多重署名を行う。
【0077】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7には、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x1,v1)=(x1,x1g)
ノード2:(署名鍵,検証鍵)=(x2,v2)=(x2,x2g)
ノード3:(署名鍵,検証鍵)=(x3,v3)=(x3,x3g)
ノード4:(署名鍵,検証鍵)=(x4,v4)=(x4,x4g)
ノード5:(署名鍵,検証鍵)=(x5,v5)=(x5,x5g)
ノード6:(署名鍵,検証鍵)=(x6,v6)=(x6,x6g)
ノード7:(署名鍵,検証鍵)=(x7,v7)=(x7,x7g)
【0078】
まず、各ノードは、隣接するノードとの関係や付随情報を表すメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。
【0079】
次に、全ての隣接するノード間において、多重署名情報を生成する。
具体的には、例えば、ノード1(署名者u1)は、ハッシュ値h1−2に自身の署名鍵(x1)をかけて署名情報(x1h1−2)を生成し、ノード2に送信する。そして、ノード2(署名者u2)は、ノード1から受信した署名情報(x1h1−2)に対して、自身の署名情報(x2h1−2)を加算して、(4)式により多重署名情報を生成する。
σ1−2=x1h1−2+x2h1−2=(x1+x2)h1−2 ・・・(4)
【0080】
なお、(4)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(x2h1−2)を生成した後にノード1へ送信し、ノード1が多重署名情報(σ1−2)を生成してもよい。
【0081】
また、ノード1又はノード2において、隣接するノードの組み合わせと、署名対象のメッセージとの対応関係を示す公開リスト情報の元データ{(u1,u2,m1−2)}を生成する。
【0082】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び公開リスト情報の元データを生成する。
【0083】
隣接する全てのノード間で多重署名情報及び公開リスト情報の元データが生成されると、代表ノードC(代表者ur)は、これらの多重署名情報(σp−q)及び公開リスト情報の元データを回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)を足し合わせ、(5)〜(6)式により公開多重署名情報(σ)を生成する。
【数1】
【0084】
また、代表ノードCは、回収した全ての公開リスト情報の元データを合成し、(7)式により公開リスト情報(L)を生成する。
【数2】
【0085】
そして、代表ノードCは、生成した公開多重署名情報(σ)と公開リスト情報(L)とを公開情報として公開する。
【0086】
また、検証ノードDは、以下の検証過程1から検証過程3により公開多重署名情報(σ)の正当性を検証する。
【0087】
(検証過程1)検証ノードDは、公開リスト情報(L)に含まれる全てのメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。
(検証過程2)検証ノードDは、公開リスト情報(L)に含まれるメッセージの署名を行った全ての一般ノードBの検証鍵(v1、v2、v3、v4、v5、v6、v7)を収集する。
【0088】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開多重署名情報(σ)の正当性を検証する。具体的には、検証ノードDは、ハッシュ値(hp−q=H(mp−q))、検証鍵(v1、v2、v3、v4、v5、v6、v7)、及び公開リスト情報(L)に基づいて、(8)式〜(10)式に示す演算を行い、(10)式と「e(g,σ)」とが一致することを確認し、これらの値が一致した場合には、公開多重署名情報(σ)が正当であると判断する。
【数3】
【0089】
ここで、(検証過程3)における「e(g,σ)」は、(6)式とペアリングの性質とにより、
【数4】
となる。署名の過程が正しく行われていれば、(10)式と(12)式は、一致する。このことにより、公開されている検証鍵から、公開多重署名情報(σ)の検証が可能となる。
【0090】
また、(11)式に着目すると、任意の隣接する一般ノードB(upとuq)に対応して、「hp−q」及び「xp+xq」という値から署名処理が行われているため、ノード間がどのような関係により署名されてきたかが表されている。
【0091】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、メッシュ構造上の署名者の配置を把握することができる。
【0092】
また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない第三者が、σ又はσp−qを生成することは不可能である。
【0093】
すなわち、検証システム(検証ノードD)が採用する本検証方法は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の和を用いて表し、これらを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0094】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)であり、これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報が生成される。
【0095】
<第2実施形態>
以下、本発明の実施形態の一例である第2実施形態について説明する。本実施形態に係るアグリゲート署名システムAは、第1実施形態とは代表ノードCの構成が異なり、代表ノードCにおいても署名を行う。また検証システムにおける検証ノードDの構成も異なっている。なお、第1実施形態と同様の構成については同一の符号を付し、説明を省略又は簡略化する。
【0096】
メッシュ構造に構成された一般ノードBを統括する代表者urの代表ノードCは、図9に示すように、公開多重署名情報生成部C1と、公開リスト情報生成部C2と、記憶部C3と、代表ノード一方向性ハッシュ関数演算部C4と、代表ノード署名情報生成部C5とを備える。
【0097】
記憶部C3は、割り当てられている固有署名鍵(xr)と固有検証鍵(vr)とを記憶する。
代表ノード一方向性ハッシュ関数演算部C4は、自身のみの署名対象であるメッセージ(mr)に一方向性ハッシュ関数演算を行う(hr=H(mr))。
【0098】
代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算部C4により演算されたハッシュ値(hr)に自身の固有署名鍵(xr)により演算を行って、代表ノード署名情報(σr=xrhr)を生成する。
【0099】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報生成部C5により生成された代表ノード署名情報(σr)を含んで(加算して)、公開多重署名情報(σwith−root)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σwith−root)を検証ノードDへ送信する。
【0100】
公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示すリスト情報(L={(up,uq,mp−q)})を生成する。さらに、公開リスト情報生成部C2は、このリスト情報(L)に、代表ノードCとメッセージとの対応関係を示す情報を合成し、公開リスト情報(Lwith−root={(ur,null,mr)}∪L)を生成する。そして、公開リスト情報生成部C2は、生成した公開リスト情報(Lwith−root)を検証ノードDへ送信する。
【0101】
このように、アグリゲート署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAは、全ての一般ノードB間に対して生成された多重署名情報(σp−q)を代表ノードCで総和する。さらに、代表ノードCは、代表ノードCを示す代表ノード署名情報(σr=xrhr)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σwith−root=σr+Σσp−q)として公開する。
【0102】
よって、アグリゲート署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードBに対応して、「hp−q」及び「xp+xq」という値から署名処理を行い、さらに、代表ノードCに固有の「hr」及び「xr」という値から署名処理を行っている。このため、アグリゲート署名システムAは,ノード間がどのような関係により署名されてきたかが分かる。その結果、メッシュ構造における一般ノードB及び代表ノードCの配置が分かる。また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵(xp、xq又はxr)を知らない第三者が多重署名情報(σp−q、σr又はσwith−root)を作成することは不可能である。
【0103】
また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)である。この公開多重署名情報(σwith−root)は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0104】
また、公開多重署名情報を検証する検証システムが有する検証ノードDは、図10に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、検証部D3とを備える。
【0105】
検証ノード一方向性ハッシュ関数演算部D1は、公開リスト情報(Lwith−root)に含まれている署名対象となったメッセージ(mp−q及びmr)に一方向性ハッシュ関数演算を行う。
【0106】
収集部D2は、公開リスト情報(Lwith−root)に含まれている全てのノード、すなわち、メッセージの署名を行った全ての一般ノードB及び代表ノードCの固有検証鍵(vp、vq、vr)を収集する。
【0107】
検証部D3は、検証ノード一方向性ハッシュ関数演算部D1により演算されたハッシュ値(hp−q及びhr)、収集部D2により収集された全ての固有検証鍵(vp、vq、vr)、及び公開リスト情報(Lwith−root)に基づいて、公開多重署名情報(σwith−root)の正当性を検証する。
【0108】
具体的には、検証部D3は、公開リスト情報(Lwith−root)から得られる全ての隣接した一般ノードBの組み合わせ(up,uq)及び代表ノードC(ur)について「e(vr,hr)Πe(vp+vq,hp−q)」を計算し、この計算結果と「e(g,σwith−root)」の値が一致することを確認することによって、公開多重署名情報(σwith−root)の正当性を検証する。
【0109】
このようにして検証ノードDは、公開されている全ての一般ノードB及び代表ノードCの固有検証鍵に基づいて、検証部D3により公開多重署名情報の正当性を検証する。
【0110】
したがって、検証システムでは、一般ノードBにて生成される個々の多重署名情報等を検証することなく、これらの総和を含んで生成される公開多重署名情報を検証することにより、代表ノードCを含んだメッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。
【0111】
次に、アグリゲート署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0112】
一般ノードB(署名者up及びuq)は、第1実施形態と同様に(図5参照)、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3とにより、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0113】
また、代表ノードCは、図11に示すように、代表ノード一方向性ハッシュ関数演算工程ST31と、代表ノード署名情報生成工程ST32と、公開多重署名情報生成工程ST33と、公開リスト情報生成工程ST34とにより、公開多重署名情報(σwith−root)と、公開リスト情報(Lwith−root)とを生成する。
【0114】
代表ノード一方向性ハッシュ関数演算工程ST31において、代表ノード一方向性ハッシュ関数演算部C4は、自身のみの署名対象であるメッセージ(mr)に一方向性ハッシュ関数演算を行う。
【0115】
代表ノード署名情報生成工程ST32において、代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算工程ST31において演算されたハッシュ値(hr)に自身の固有署名鍵(xr)により演算を行って得られた演算値からなる代表ノード署名情報(σr=xrhr)を生成する。
【0116】
公開多重署名情報生成工程ST33において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報を加算して公開多重署名情報(σwith−root)を生成する。
【0117】
公開リスト情報生成工程ST34において、公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係、さらに、代表ノードCとメッセージとの対応関係を示す公開リスト情報(Lwith−root)を生成する。
【0118】
このように、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAに係るアグリゲート署名方法は、全ての一般ノードB間に対して生成された多重署名情報を代表ノードCで総和する。さらに、アグリゲート署名システムAに係るアグリゲート署名方法は、代表ノードCを示す代表ノード署名情報(σr=xrhr)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σwith−root=σr+Σσp−q)として公開する。
【0119】
よって、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間の関係を、署名鍵の和を用いた多重署名情報で表し、これらを代表ノードCで総和し、さらに代表ノードCの署名情報を加算することにより、代表ノードCを含んだメッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0120】
[実施例]
ここで、アグリゲート署名システム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がそれぞれ隣接するノードとして相互に多重署名を行う。
【0121】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7と代表ノードCには、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x1,v1)=(x1,x1g)
ノード2:(署名鍵,検証鍵)=(x2,v2)=(x2,x2g)
ノード3:(署名鍵,検証鍵)=(x3,v3)=(x3,x3g)
ノード4:(署名鍵,検証鍵)=(x4,v4)=(x4,x4g)
ノード5:(署名鍵,検証鍵)=(x5,v5)=(x5,x5g)
ノード6:(署名鍵,検証鍵)=(x6,v6)=(x6,x6g)
ノード7:(署名鍵,検証鍵)=(x7,v7)=(x7,x7g)
ノードC:(署名鍵,検証鍵)=(xr,vr)=(xr,xrg)
【0122】
まず、ノード1〜ノード7は、隣接するノードとの関係や付随情報を表すメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。また、代表ノードCは、代表ノードCに固有の情報を表すメッセージ(mr)に対してハッシュ値(hr=H(mr))を求める。
【0123】
次に、全ての隣接するノード間において、多重署名情報を生成する。
具体的には、例えば、ノード1(署名者u1)は、ハッシュ値h1−2に自身の署名鍵(x1)をかけて署名情報(x1h1−2)を生成し、ノード2に送信する。そして、ノード2(署名者u2)は、ノード1から受信した署名情報(x1h1−2)に対して自身の署名情報(x2h1−2)を加算して、(13)式により多重署名情報を生成する。
σ1−2=x1h1−2+x2h1−2=(x1+x2)h1−2 ・・・(13)
【0124】
なお、(13)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(x2h1−2)を生成した後にノード1へ送信し、ノード1が多重署名情報(σ1−2)を生成してもよい。
【0125】
また、ノード1又はノード2において、隣接するノードの組み合わせと、署名対象のメッセージとの対応関係を示す公開リスト情報の元データ{(u1,u2,m1−2)}を生成する。
【0126】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び公開リスト情報の元データを生成する。
【0127】
隣接する全てのノード間で多重署名情報及び公開リスト情報の元データが生成されると、代表ノードC(代表者ur)は、これらの多重署名情報(σp−q)及び公開リスト情報の元データを回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)と代表ノードCの署名情報(σr)とを足し合わせ、(14)〜(15)式により公開多重署名情報(σwith−root)を生成する。
【数5】
【0128】
また、代表ノードCは、回収した全ての公開リスト情報の元データを合成し、(16)式により公開リスト情報(Lwith−root)を生成する。
【数6】
【0129】
そして、代表ノードCは、生成した公開多重署名情報(σwith−root)と公開リスト情報(Lwith−root)とを公開情報として公開する。
【0130】
また、検証ノードDは、以下の検証過程1から検証過程3により公開多重署名情報(σwith−root)の正当性を検証する。
【0131】
(検証過程1)検証ノードDは、公開リスト情報(Lwith−root)に含まれる全てのメッセージ(mp−q及びmr)に対してハッシュ値(hp−q=H(mp−q)及びhr=H(mr))を求める。
(検証過程2)検証ノードDは、公開リスト情報(Lwith−root)に含まれるメッセージの署名を行った全ての一般ノードBと代表ノードCの検証鍵(v1、v2、v3、v4、v5、v6、v7、vr)を収集する。
【0132】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開多重署名情報(σwith−root)の正当性を検証する。具体的には、検証ノードDは、ハッシュ値(hp−q=H(mp−q)及びhr=H(mr))、検証鍵(v1、v2、v3、v4、v5、v6、v7、vr)、及び公開リスト情報(Lwith−root)に基づいて、(17)式〜(19)式に示す演算を行い、(19)式と「e(g,σwith−root)」とが一致することを確認し、これらの値が一致した場合には、公開多重署名情報(σwith−root)が正当であると判断する。
【数7】
【0133】
ここで、(検証過程3)における「e(g,σwith−root)」は、(15)式とペアリングの性質とにより、
【数8】
となる。署名の過程が正しく行われていれば、(19)式と(21)式は、一致する。このことにより、公開されている検証鍵から、公開多重署名情報(σwith−root)の検証が可能となる。
【0134】
また、(20)式に着目すると、任意の隣接する一般ノードB(upとuq)に対応して、「hp−q」及び「xp+xq」という値から署名処理が行われているため、ノード間がどのような関係により署名されてきたかが表されている。さらに、第1項は、代表ノードCの署名鍵(xr)のみで構成されている。よって、代表ノードCの署名者はurであることが分かる。
【0135】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、代表ノードCを含んだメッシュ構造上の署名者の配置を把握することができる。
【0136】
また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない第三者が、σwith−root、σp−q又はσrを生成することは不可能である。
【0137】
すなわち、検証システム(検証ノードD)が採用する本検証方法は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の和を用いて表し、これらを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0138】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)であり、これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報が生成される。
【0139】
以上で説明した各実施形態におけるアグリゲート署名システムAでは、隣接する一般ノードBのいずれか一方が多重署名情報(σp−q)を生成して代表ノードCへ送信したが、本発明はこれには限られない。すなわち、隣接する一般ノードBの双方が多重署名情報を生成して代表ノードCへ送信してもよい。
この場合、代表ノードCは、公開リスト情報の元データとして、隣接する一般ノードBの組み合わせ情報を受け取る必要がなくなる。すなわち、代表ノードCは、同一の多重署名情報を受け取った一般ノードBの組み合わせが隣接しており、互いに多重署名を行ったと判断し、この組み合わせに基づいて公開リスト情報を生成できる。
【0140】
また、前述の実施形態において、ペアリング関数への入力である2つの引数は、ペアリングの演算が可能な楕円曲線上の点gのスカラー倍として表されるが、この楕円曲線は、第1引数と第2引数とで共通でなくてもよい。すなわち、ペアリング関数の第1引数用と第2引数用とに、それぞれ異なる楕円曲線(G1又はG2)上の2点(g1又はg2)が与えられていてもよい。
この場合、前述の実施形態の説明におけるペアリング関数の第1引数に表れるgはg1に、第2引数に表れるgはg2に読み替えられる。また、楕円曲線上の点を用いて生成される前述の各種公開情報(固有検証鍵、ハッシュ値、署名情報)は、ペアリング関数の第1引数又は第2引数のいずれに入力されるかに応じて、G1若しくはG2のいずれかを用いて1種類、又は双方を用いて2種類生成される。
このことにより、公開情報の数、すなわち演算回数が増加する場合があるが、ペアリング関数の演算において並列して処理できるため、計算時間の短縮が期待できる。
【0141】
また、アグリゲート署名システムA及び検証システムによる一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【0142】
A アグリゲート署名システム
B 一般ノード
B1 記憶部
B2 一般ノード一方向性ハッシュ関数演算部
B3 一般ノード署名情報生成部
B4 多重署名情報生成部
C 代表ノード
C1 公開多重署名情報生成部
C2 公開リスト情報生成部
C3 記憶部
C4 代表ノード一方向性ハッシュ関数演算部
C5 代表ノード署名情報生成部
D 検証ノード、検証システム
D1 検証ノード一方向性ハッシュ関数演算部
D2 収集部
D3 検証部
【技術分野】
【0001】
本発明は、電子署名を利用したアグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラムに関する。
【背景技術】
【0002】
現在、さまざまな電子情報がネットワークやメディアを介して送信されている。会社やコミュニティーのような組織においても、報告書やレポート、稟議書、連絡簿等さまざまな情報が電子化され、社員又はメンバー間でネットワークを経由して回覧されている。
【0003】
その情報の発信源あるいは閲覧済みであることを保証する仕組みとして電子署名がある。この電子署名を利用することにより、特定の人しか知りえない署名鍵と電子情報を入力値として署名の演算を行い、検証者が検証鍵と言われる公開された情報と署名されたデータを入力値として検証演算を行うことで、その特定の人がそのデータの発信源であることを確認することが可能となる。ここで、検証鍵から署名鍵を導出することは、計算量的に不可能であることから、他の人がその特定者に成りすまして署名を行うことができないため、その署名の正当性が保証される。
【0004】
また、組織における電子情報の回覧においては、複数の人が介在して署名を行うケースが想定され、例えば、電子データの回覧や会社における承認システムがそれに該当する。複数人の署名を行う方式としては、それぞれの署名者を検証できる多重署名(例えば、非特許文献1を参照)やアグリゲート署名(例えば、非特許文献2を参照)、特定のグループに所属している人の誰かが署名したことを保証できるグループ署名(例えば、特許文献1を参照)が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−166687号公報
【特許文献2】特開平09−270787号公報
【特許文献3】特開2002−040935号公報
【非特許文献】
【0006】
【非特許文献1】新保 淳、「多重署名に適したElGamal署名の一変形方式」、暗号と情報セキュリティシンポジウム(CSS)、SCIS94−2C、電子情報通信学会、1994
【非特許文献2】D.Boneh, C.Gentry, B.Lynn, and H.Shacham, “Aggregate and Verifiably Encrypted Signatures from Bilinear Maps,” Advances in Cryptoloty−EUROCRYPT 2003, LNCS 2656, pp.416−432, Springer−Verlag, 2003
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、これらの多重署名やアグリゲート署名、グループ署名では署名者が全て等価な関係で表現される。したがって、署名システムにおいて電子データがどのように流通してきたのかを、これらの署名方式だけで表現することができない。
【0008】
これに対し、順序や上下関係を証明する方式としては順序付き多重署名方式(例えば、特許文献2、3を参照)があげられる。これにより署名者の順番が保証され、個人の上下関係が表現できる。しかしながら、これらは、各署名者の前と後の使用者が一人ずつの場合のみで行える方式であり、例えば、使用者のつながりが1対多、又は多対多で関係性が構成されるメッシュ構造になっている場合、既存の署名方式ではこの構造を表現することができなかった。また、これらの署名方式は、同一のメッセージに対して複数人が署名を行う方式であるため、各署名者がそれぞれ異なるメッセージを対象とするアグリゲート署名を行うことができなかった。
【0009】
本発明は、上記課題を解決するため、メッシュ構造を表現できるアグリゲート署名システム、検証システム、アグリゲート署名方法及びアグリゲート署名プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明では、以下のような解決手段を提供する。
【0011】
(1)本発明に係るアグリゲート署名システムは、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成部と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、を備え、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成部と、を備える。
【0012】
このような構成によれば、アグリゲート署名システムは、複数の一般ノードがメッシュ構造状に構成され、メッシュ構造上で連続(隣接)する二つの一般ノード間において多重署名情報を演算により生成する。そして、アグリゲート署名システムは、複数の一般ノードを統括する代表ノードにおいて、多重署名情報の総和をメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムは、隣接する一般ノードの組み合わせ、及び隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を公開する。
【0013】
よって、アグリゲート署名システムは、メッシュ構造上において連続(隣接)する二つのノード間の関係を表す多重署名情報を生成し、これらを代表ノードで総和することにより、メッシュ構造を表現することができる。
【0014】
(2)また、上記アグリゲート署名システムでは、前記代表ノードは、予め固有署名鍵と固有検証鍵が割り当てられており、自身の署名対象であるメッセージに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、前記公開リスト情報生成部は、前記代表ノード、及び当該代表ノードとメッセージとの対応関係を示す情報を含んで前記公開リスト情報を生成する。
【0015】
このような構成によれば、アグリゲート署名システムは、代表ノードにおいて、代表ノード署名情報を多重署名情報の総和に加算したものをメッシュ構造全体の公開多重署名情報として公開する。また、アグリゲート署名システムは、隣接する一般ノードの組み合わせ、及び隣接する一般ノードとメッセージとの対応関係に加えて、代表ノードとメッセージとの対応関係を示す情報を含んで公開リスト情報を公開する。
【0016】
よって、アグリゲート署名システムは、メッシュ構造上において連続(隣接)する二つの一般ノード間の関係を表す多重署名情報を生成して、これらを代表ノードで総和し、さらに代表ノードの署名情報を加算することにより、代表ノードを含んだメッシュ構造を表現することができる。
【0017】
(3)また、上記アグリゲート署名システムでは、前記多重署名情報生成部は、隣接する一般ノードの一方のみで、当該隣接する一般ノード間に固有の多重署名情報を生成する。
【0018】
このような構成によれば、アグリゲート署名システムは、生成される多重署名情報の重複を回避できるので、演算回数及び通信回数が減少し、処理負荷が低減される。
【0019】
(4)また、上記アグリゲート署名システムでは、前記固有署名鍵は、所定の自然数からなり、前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなる。
【0020】
このような構成によれば、アグリゲート署名システムは、固有署名鍵を知らない第三者がGDHグループの要素である楕円曲線上の点から固有署名鍵を求めることを、計算量的に困難にすることができる。また、メッシュ構造において一般ノードの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードで生成される公開多重署名情報である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報を生成することができる。
【0021】
(5)本発明に係る検証システムは、上記アグリゲート署名システムにより生成された前記公開多重署名情報を検証する検証システムであって、前記公開リスト情報に含まれるメッセージに一方向性ハッシュ関数演算を行う検証ノード一方向性ハッシュ関数演算部と、前記公開リスト情報に含まれる全てのノードの固有検証鍵を収集する収集部と、前記検証ノード一方向性ハッシュ関数演算部により演算されたハッシュ値、前記収集部により収集された前記全てのノードの固有検証鍵、及び前記公開リスト情報に基づいて、前記公開多重署名情報の正当性を検証する検証部と、を備える。
【0022】
このような構成によれば、検証システムは、公開されている全てのノードの固有検証鍵に基づいて、検証部により公開多重署名情報の正当性を検証する。
【0023】
よって、検証システムでは、一般ノードにて生成される個々の多重署名情報等を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証システムでは、検証ノードの処理負荷を低減して検証作業を実行することができる。
【0024】
(6)本発明に係るアグリゲート署名方法は、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、前記メッシュ構造における各一般ノードは、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、を実行し、前記複数の一般ノードを統括する代表ノードは、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、を実行する。
【0025】
このような構成によれば、アグリゲート署名方法を各ノードが実行することにより、(1)と同様の効果が期待できる。
【0026】
(7)本発明に係るアグリゲート署名プログラムは、複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行う方法をコンピュータによって実現するためのアグリゲート署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行される。
【0027】
このような構成によれば、アグリゲート署名プログラムを各ノードに実行させることにより、(1)と同様の効果が期待できる。
【発明の効果】
【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がメッシュ構造状に構成される。そして、アグリゲート署名システムAは、当該複数の一般ノード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)c ・・・(3)
となり、両者の値が一致するかどうかにより、「ab=c」であるかどうかを判定でき、gはGDHグループGの要素となりうる。
【0038】
この性質を利用してGDH署名が構成される。集合Gは、GDHグループであり、gは集合Gの要素となる点とする。また、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データが固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する。
【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とを備える。
【0042】
記憶部B1は、自身(署名者uqのノード)に割り当てられている固有署名鍵(xq)と固有検証鍵(vq)とを記憶する。
一般ノード一方向性ハッシュ関数演算部B2は、隣接する一般ノード(署名者upのノード)との関係や付随情報を表す署名対象のメッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0043】
一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算部B2により演算されたハッシュ値(hp−q=H(mp−q))に自身の固有署名鍵(xq)により演算を行い、自身の署名情報(xqhp−q)を生成する。そして、一般ノード署名情報生成部B3は、生成した署名情報(xqhp−q)を隣接する他の一般ノードBへ送信する。
【0044】
多重署名情報生成部B4は、メッシュ構造において、隣接する一般ノードB(署名者upのノード)によって生成された署名情報(xphp−q)と、自身の署名情報(xqhp−q)とを加算して、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q=(xp+xq)hp−q)を生成する。そして、多重署名情報生成部B4は、生成した多重署名情報(σp−q)を代表ノードCへ送信する。
【0045】
ここで、多重署名情報は、メッシュ構造において、隣接する一般ノードBの全ての組み合わせのそれぞれに対して生成され、これらが代表ノードCに送信される。なお、多重署名情報(σp−q)は、隣接する一般ノードBのいずれか一方(up又はuq)において生成されるものとし、代表ノードCへ送信される情報は重複しないものとする。
【0046】
また、メッシュ構造に構成された一般ノードBを統括する代表者urの代表ノードCは、図3に示すように、公開多重署名情報生成部C1と、公開リスト情報生成部C2とを備える。
【0047】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σ)を検証ノードDへ送信する。
【0048】
公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報(L={(up,uq,mp−q)})を生成する。そして、公開リスト情報生成部C2は、生成した公開リスト情報(L)を検証ノードDへ送信する。
【0049】
このように、アグリゲート署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAは、全ての一般ノードB間に対して生成された多重署名情報(σp−q)を代表ノードCで総和し、これを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)として公開する。
【0050】
よって、アグリゲート署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードBに対応して、「hp−q」及び「xp+xq」という値から署名処理を行っているため、ノード間がどのような関係により署名されてきたかが分かる。その結果、メッシュ構造における一般ノードBの配置が分かる。また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵(xp又はxq)を知らない第三者が多重署名情報(σ又はσp−q)を作成することは不可能である。
【0051】
また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)である。この公開多重署名情報(σ)は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0052】
次に、公開多重署名情報を検証する検証システムについて説明する。検証システムが有する検証ノードDは、図4に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、検証部D3とを備える。
【0053】
検証ノード一方向性ハッシュ関数演算部D1は、公開リスト情報(L)に含まれている署名対象となったメッセージ(mp−q)に一方向性ハッシュ関数演算を行う(hp−q=H(mp−q))。
【0054】
収集部D2は、公開リスト情報(L)に含まれている全てのノード、すなわち、メッセージの署名を行った全ての一般ノードBの固有検証鍵(vp、vq、・・・)を収集する。
【0055】
検証部D3は、検証ノード一方向性ハッシュ関数演算部D1により演算されたハッシュ値(hp−q)、収集部D2により収集された全ての一般ノードBの固有検証鍵(vp、vq)、及び公開リスト情報(L)に基づいて、公開多重署名情報(σ)の正当性を検証する。
【0056】
具体的には、検証部D3は、公開リスト情報(L)から得られる全ての隣接した一般ノードBの組み合わせ(up,uq)について「Πe(vp+vq,hp−q)」を計算し、この計算結果と「e(g,σ)」の値が一致することを確認することによって、公開多重署名情報(σ)の正当性を検証する。
【0057】
このようにして検証ノードDは、公開されている全ての一般ノードBの固有検証鍵に基づいて、検証部D3により公開多重署名情報の正当性を検証する。
【0058】
したがって、検証システムでは、一般ノードBにて生成される個々の多重署名情報を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。なお、検証ノードDは、検証専用のノードであってもよいし、アグリゲート署名システムAのメッシュ構造上に配置されるいずれかの一般ノードBや代表ノードCであってもよい。
【0059】
ここで、検証ノードDは、隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBと署名を行ったメッセージとの対応関係を示す公開リスト情報を、必ずしも入手しなくてもよいが、代表ノードCから入手するようにしておくことが好ましい。検証ノードDが公開リスト情報を入手しない場合でも、検証部D3は、隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBと署名を行ったメッセージとの対応関係に関して、全ての組み合わせを演算することにより、公開署名情報の正当性を検証することが可能である。しかし、検証ノードDが公開リスト情報を入手し検証部D3へ受け渡すようにしておくと、この情報がない場合に比べて検証部D3の演算量が少なくてすむ。
【0060】
次に、アグリゲート署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0061】
一般ノードB(署名者up及びuq)は、図5に示すように、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3とにより、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0062】
一般ノード一方向性ハッシュ関数演算工程ST1において、署名者upのノードにおける一般ノード一方向性ハッシュ関数演算部B2は、メッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0063】
一般ノード署名情報生成工程ST2において、署名者upのノードにおける一般ノード署名情報生成部B3は、一般ノード一方向性ハッシュ関数演算工程ST1において演算されたハッシュ値(hp−q)に自身の固有署名鍵(xp)により演算を行い、署名情報(xphp−q)を生成する。
【0064】
多重署名情報生成工程ST3において、署名者uqのノードにおける多重署名情報生成部B4は、一般ノード署名情報生成工程ST2において生成された署名情報(xphp−q)に対して、自身の署名情報(xqhp−q)を加算し、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0065】
また、代表ノードCは、図6に示すように、公開多重署名情報生成工程ST11と、公開リスト情報生成工程ST12とにより、公開多重署名情報(σ)と、公開リスト情報(L)とを生成する。
【0066】
公開多重署名情報生成工程ST11において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、公開多重署名情報(σ)を生成する。
【0067】
公開リスト情報生成工程ST12において、公開リスト情報生成部C2は、メッシュ構造における隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示す公開リスト情報(L)を生成する。
【0068】
このように、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAに係るアグリゲート署名方法は、全ての一般ノードB間に対して生成された多重署名情報を代表ノードCで総和し、これを、メッシュ構造全体の公開多重署名情報(σ=Σσp−q)として公開する。
【0069】
よって、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間の関係を、署名鍵の和を用いた多重署名情報で表し、これらを代表ノードCで総和することにより、メッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0070】
また、検証ノードDは、図7に示すように、検証ノード一方向性ハッシュ関数演算工程ST21と、収集工程ST22と、検証工程ST23とにより、公開多重署名情報(σ)の正当性を検証する。
【0071】
検証ノード一方向性ハッシュ関数演算工程ST21において、検証ノード一方向性ハッシュ関数演算部D1は、メッセージ(mp−q)に一方向性ハッシュ関数演算を行う。
【0072】
収集工程ST22において、収集部D2は、メッセージ(mp−q)の署名を行った全ての一般ノードBの固有検証鍵(vp、vq)を収集する。
【0073】
検証工程ST23において、検証部D3は、検証ノード一方向性ハッシュ関数演算工程ST21において演算されたハッシュ値(hp−q)、収集工程ST22において収集された全ての一般ノードBの固有検証鍵(vp、vq)、及び公開リスト情報(L)に基づいて、公開多重署名情報(σ)の正当性を検証する。
【0074】
このようにして検証ノードDは、公開されている全ての一般ノードBの固有検証鍵に基づいて、検証工程ST23により公開多重署名情報の正当性を検証する。
【0075】
したがって、検証システムに係る検証方法では、一般ノードBにて生成される個々の多重署名情報等を検証することなく、これらの総和として生成される公開多重署名情報を検証することにより、メッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証工程ST23の処理負荷を低減して検証作業を実行することができる。
【0076】
[実施例]
ここで、アグリゲート署名システム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がそれぞれ隣接するノードとして相互に多重署名を行う。
【0077】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7には、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x1,v1)=(x1,x1g)
ノード2:(署名鍵,検証鍵)=(x2,v2)=(x2,x2g)
ノード3:(署名鍵,検証鍵)=(x3,v3)=(x3,x3g)
ノード4:(署名鍵,検証鍵)=(x4,v4)=(x4,x4g)
ノード5:(署名鍵,検証鍵)=(x5,v5)=(x5,x5g)
ノード6:(署名鍵,検証鍵)=(x6,v6)=(x6,x6g)
ノード7:(署名鍵,検証鍵)=(x7,v7)=(x7,x7g)
【0078】
まず、各ノードは、隣接するノードとの関係や付随情報を表すメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。
【0079】
次に、全ての隣接するノード間において、多重署名情報を生成する。
具体的には、例えば、ノード1(署名者u1)は、ハッシュ値h1−2に自身の署名鍵(x1)をかけて署名情報(x1h1−2)を生成し、ノード2に送信する。そして、ノード2(署名者u2)は、ノード1から受信した署名情報(x1h1−2)に対して、自身の署名情報(x2h1−2)を加算して、(4)式により多重署名情報を生成する。
σ1−2=x1h1−2+x2h1−2=(x1+x2)h1−2 ・・・(4)
【0080】
なお、(4)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(x2h1−2)を生成した後にノード1へ送信し、ノード1が多重署名情報(σ1−2)を生成してもよい。
【0081】
また、ノード1又はノード2において、隣接するノードの組み合わせと、署名対象のメッセージとの対応関係を示す公開リスト情報の元データ{(u1,u2,m1−2)}を生成する。
【0082】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び公開リスト情報の元データを生成する。
【0083】
隣接する全てのノード間で多重署名情報及び公開リスト情報の元データが生成されると、代表ノードC(代表者ur)は、これらの多重署名情報(σp−q)及び公開リスト情報の元データを回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)を足し合わせ、(5)〜(6)式により公開多重署名情報(σ)を生成する。
【数1】
【0084】
また、代表ノードCは、回収した全ての公開リスト情報の元データを合成し、(7)式により公開リスト情報(L)を生成する。
【数2】
【0085】
そして、代表ノードCは、生成した公開多重署名情報(σ)と公開リスト情報(L)とを公開情報として公開する。
【0086】
また、検証ノードDは、以下の検証過程1から検証過程3により公開多重署名情報(σ)の正当性を検証する。
【0087】
(検証過程1)検証ノードDは、公開リスト情報(L)に含まれる全てのメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。
(検証過程2)検証ノードDは、公開リスト情報(L)に含まれるメッセージの署名を行った全ての一般ノードBの検証鍵(v1、v2、v3、v4、v5、v6、v7)を収集する。
【0088】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開多重署名情報(σ)の正当性を検証する。具体的には、検証ノードDは、ハッシュ値(hp−q=H(mp−q))、検証鍵(v1、v2、v3、v4、v5、v6、v7)、及び公開リスト情報(L)に基づいて、(8)式〜(10)式に示す演算を行い、(10)式と「e(g,σ)」とが一致することを確認し、これらの値が一致した場合には、公開多重署名情報(σ)が正当であると判断する。
【数3】
【0089】
ここで、(検証過程3)における「e(g,σ)」は、(6)式とペアリングの性質とにより、
【数4】
となる。署名の過程が正しく行われていれば、(10)式と(12)式は、一致する。このことにより、公開されている検証鍵から、公開多重署名情報(σ)の検証が可能となる。
【0090】
また、(11)式に着目すると、任意の隣接する一般ノードB(upとuq)に対応して、「hp−q」及び「xp+xq」という値から署名処理が行われているため、ノード間がどのような関係により署名されてきたかが表されている。
【0091】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、メッシュ構造上の署名者の配置を把握することができる。
【0092】
また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない第三者が、σ又はσp−qを生成することは不可能である。
【0093】
すなわち、検証システム(検証ノードD)が採用する本検証方法は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の和を用いて表し、これらを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0094】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σ)であり、これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報が生成される。
【0095】
<第2実施形態>
以下、本発明の実施形態の一例である第2実施形態について説明する。本実施形態に係るアグリゲート署名システムAは、第1実施形態とは代表ノードCの構成が異なり、代表ノードCにおいても署名を行う。また検証システムにおける検証ノードDの構成も異なっている。なお、第1実施形態と同様の構成については同一の符号を付し、説明を省略又は簡略化する。
【0096】
メッシュ構造に構成された一般ノードBを統括する代表者urの代表ノードCは、図9に示すように、公開多重署名情報生成部C1と、公開リスト情報生成部C2と、記憶部C3と、代表ノード一方向性ハッシュ関数演算部C4と、代表ノード署名情報生成部C5とを備える。
【0097】
記憶部C3は、割り当てられている固有署名鍵(xr)と固有検証鍵(vr)とを記憶する。
代表ノード一方向性ハッシュ関数演算部C4は、自身のみの署名対象であるメッセージ(mr)に一方向性ハッシュ関数演算を行う(hr=H(mr))。
【0098】
代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算部C4により演算されたハッシュ値(hr)に自身の固有署名鍵(xr)により演算を行って、代表ノード署名情報(σr=xrhr)を生成する。
【0099】
公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報生成部C5により生成された代表ノード署名情報(σr)を含んで(加算して)、公開多重署名情報(σwith−root)を生成する。そして、公開多重署名情報生成部C1は、生成した公開多重署名情報(σwith−root)を検証ノードDへ送信する。
【0100】
公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係を示すリスト情報(L={(up,uq,mp−q)})を生成する。さらに、公開リスト情報生成部C2は、このリスト情報(L)に、代表ノードCとメッセージとの対応関係を示す情報を合成し、公開リスト情報(Lwith−root={(ur,null,mr)}∪L)を生成する。そして、公開リスト情報生成部C2は、生成した公開リスト情報(Lwith−root)を検証ノードDへ送信する。
【0101】
このように、アグリゲート署名システムAは、メッシュ構造状に構成されている複数の一般ノードBと、代表ノードCとによって構成され、メッシュ構造上において連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAは、全ての一般ノードB間に対して生成された多重署名情報(σp−q)を代表ノードCで総和する。さらに、代表ノードCは、代表ノードCを示す代表ノード署名情報(σr=xrhr)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σwith−root=σr+Σσp−q)として公開する。
【0102】
よって、アグリゲート署名システムAは、メッシュ構造上において連続(隣接)する二つの一般ノードBに対応して、「hp−q」及び「xp+xq」という値から署名処理を行い、さらに、代表ノードCに固有の「hr」及び「xr」という値から署名処理を行っている。このため、アグリゲート署名システムAは,ノード間がどのような関係により署名されてきたかが分かる。その結果、メッシュ構造における一般ノードB及び代表ノードCの配置が分かる。また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵(xp、xq又はxr)を知らない第三者が多重署名情報(σp−q、σr又はσwith−root)を作成することは不可能である。
【0103】
また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)である。この公開多重署名情報(σwith−root)は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0104】
また、公開多重署名情報を検証する検証システムが有する検証ノードDは、図10に示すように、検証ノード一方向性ハッシュ関数演算部D1と、収集部D2と、検証部D3とを備える。
【0105】
検証ノード一方向性ハッシュ関数演算部D1は、公開リスト情報(Lwith−root)に含まれている署名対象となったメッセージ(mp−q及びmr)に一方向性ハッシュ関数演算を行う。
【0106】
収集部D2は、公開リスト情報(Lwith−root)に含まれている全てのノード、すなわち、メッセージの署名を行った全ての一般ノードB及び代表ノードCの固有検証鍵(vp、vq、vr)を収集する。
【0107】
検証部D3は、検証ノード一方向性ハッシュ関数演算部D1により演算されたハッシュ値(hp−q及びhr)、収集部D2により収集された全ての固有検証鍵(vp、vq、vr)、及び公開リスト情報(Lwith−root)に基づいて、公開多重署名情報(σwith−root)の正当性を検証する。
【0108】
具体的には、検証部D3は、公開リスト情報(Lwith−root)から得られる全ての隣接した一般ノードBの組み合わせ(up,uq)及び代表ノードC(ur)について「e(vr,hr)Πe(vp+vq,hp−q)」を計算し、この計算結果と「e(g,σwith−root)」の値が一致することを確認することによって、公開多重署名情報(σwith−root)の正当性を検証する。
【0109】
このようにして検証ノードDは、公開されている全ての一般ノードB及び代表ノードCの固有検証鍵に基づいて、検証部D3により公開多重署名情報の正当性を検証する。
【0110】
したがって、検証システムでは、一般ノードBにて生成される個々の多重署名情報等を検証することなく、これらの総和を含んで生成される公開多重署名情報を検証することにより、代表ノードCを含んだメッシュ構造により関係性が構築されているノードの状況を証明することができる。すなわち、検証ノードDの処理負荷を低減して検証作業を実行することができる。
【0111】
次に、アグリゲート署名システムAにおいて、一般ノードBと代表ノードCにより公開多重署名情報を生成する方法と、検証システムにおいて、検証ノードDにより公開多重署名情報の正当性を検証する方法について説明する。
【0112】
一般ノードB(署名者up及びuq)は、第1実施形態と同様に(図5参照)、一般ノード一方向性ハッシュ関数演算工程ST1と、一般ノード署名情報生成工程ST2と、多重署名情報生成工程ST3とにより、隣接する一般ノードB間(up−uq間)に固有の多重署名情報(σp−q)を生成する。
【0113】
また、代表ノードCは、図11に示すように、代表ノード一方向性ハッシュ関数演算工程ST31と、代表ノード署名情報生成工程ST32と、公開多重署名情報生成工程ST33と、公開リスト情報生成工程ST34とにより、公開多重署名情報(σwith−root)と、公開リスト情報(Lwith−root)とを生成する。
【0114】
代表ノード一方向性ハッシュ関数演算工程ST31において、代表ノード一方向性ハッシュ関数演算部C4は、自身のみの署名対象であるメッセージ(mr)に一方向性ハッシュ関数演算を行う。
【0115】
代表ノード署名情報生成工程ST32において、代表ノード署名情報生成部C5は、代表ノード一方向性ハッシュ関数演算工程ST31において演算されたハッシュ値(hr)に自身の固有署名鍵(xr)により演算を行って得られた演算値からなる代表ノード署名情報(σr=xrhr)を生成する。
【0116】
公開多重署名情報生成工程ST33において、公開多重署名情報生成部C1は、メッシュ構造における一又は複数の隣接する一般ノードB間に固有の多重署名情報を総和し、さらに代表ノード署名情報を加算して公開多重署名情報(σwith−root)を生成する。
【0117】
公開リスト情報生成工程ST34において、公開リスト情報生成部C2は、メッシュ構造における一又は複数の隣接する一般ノードBの組み合わせ、及びこの隣接する一般ノードBとメッセージとの対応関係、さらに、代表ノードCとメッセージとの対応関係を示す公開リスト情報(Lwith−root)を生成する。
【0118】
このように、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間(up−uq間)において、いずれかのノードが多重署名情報(σp−q)を演算により生成する。そして、アグリゲート署名システムAに係るアグリゲート署名方法は、全ての一般ノードB間に対して生成された多重署名情報を代表ノードCで総和する。さらに、アグリゲート署名システムAに係るアグリゲート署名方法は、代表ノードCを示す代表ノード署名情報(σr=xrhr)を多重署名情報の総和に加算したものを、メッシュ構造全体の公開多重署名情報(σwith−root=σr+Σσp−q)として公開する。
【0119】
よって、アグリゲート署名システムAに係るアグリゲート署名方法によれば、メッシュ構造上で連続(隣接)する二つの一般ノードB間の関係を、署名鍵の和を用いた多重署名情報で表し、これらを代表ノードCで総和し、さらに代表ノードCの署名情報を加算することにより、代表ノードCを含んだメッシュ構造を表現することができる。また、メッシュ構造において一般ノードBの数や結び付き(隣接)の数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)である。これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができるので、アグリゲート署名システムAは、効率的に署名情報を生成することができる。
【0120】
[実施例]
ここで、アグリゲート署名システム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がそれぞれ隣接するノードとして相互に多重署名を行う。
【0121】
また、認証局(CA)は、予め各ノードに重複しない固有署名鍵(以下、署名鍵という)と固有検証鍵(以下、検証鍵という)を付与している。具体的には、ノード1からノード7と代表ノードCには、それぞれ他のノードとは重複しない署名鍵と検証鍵が以下のように付与されている。
ノード1:(署名鍵,検証鍵)=(x1,v1)=(x1,x1g)
ノード2:(署名鍵,検証鍵)=(x2,v2)=(x2,x2g)
ノード3:(署名鍵,検証鍵)=(x3,v3)=(x3,x3g)
ノード4:(署名鍵,検証鍵)=(x4,v4)=(x4,x4g)
ノード5:(署名鍵,検証鍵)=(x5,v5)=(x5,x5g)
ノード6:(署名鍵,検証鍵)=(x6,v6)=(x6,x6g)
ノード7:(署名鍵,検証鍵)=(x7,v7)=(x7,x7g)
ノードC:(署名鍵,検証鍵)=(xr,vr)=(xr,xrg)
【0122】
まず、ノード1〜ノード7は、隣接するノードとの関係や付随情報を表すメッセージ(mp−q)に対してハッシュ値(hp−q=H(mp−q))を求める。また、代表ノードCは、代表ノードCに固有の情報を表すメッセージ(mr)に対してハッシュ値(hr=H(mr))を求める。
【0123】
次に、全ての隣接するノード間において、多重署名情報を生成する。
具体的には、例えば、ノード1(署名者u1)は、ハッシュ値h1−2に自身の署名鍵(x1)をかけて署名情報(x1h1−2)を生成し、ノード2に送信する。そして、ノード2(署名者u2)は、ノード1から受信した署名情報(x1h1−2)に対して自身の署名情報(x2h1−2)を加算して、(13)式により多重署名情報を生成する。
σ1−2=x1h1−2+x2h1−2=(x1+x2)h1−2 ・・・(13)
【0124】
なお、(13)式の計算は、ノード1又はノード2のいずれが行ってもよい。すなわち、ノード2が署名情報(x2h1−2)を生成した後にノード1へ送信し、ノード1が多重署名情報(σ1−2)を生成してもよい。
【0125】
また、ノード1又はノード2において、隣接するノードの組み合わせと、署名対象のメッセージとの対応関係を示す公開リスト情報の元データ{(u1,u2,m1−2)}を生成する。
【0126】
他の隣接するノード間においても同様に、多重署名情報(σ2−3、σ3−4、σ4−5、σ5−6、σ6−7、σ7−1、σ2−6、σ3−5、σ3−7)及び公開リスト情報の元データを生成する。
【0127】
隣接する全てのノード間で多重署名情報及び公開リスト情報の元データが生成されると、代表ノードC(代表者ur)は、これらの多重署名情報(σp−q)及び公開リスト情報の元データを回収する。そして、代表ノードCは、回収した全ての多重署名情報(σp−q)と代表ノードCの署名情報(σr)とを足し合わせ、(14)〜(15)式により公開多重署名情報(σwith−root)を生成する。
【数5】
【0128】
また、代表ノードCは、回収した全ての公開リスト情報の元データを合成し、(16)式により公開リスト情報(Lwith−root)を生成する。
【数6】
【0129】
そして、代表ノードCは、生成した公開多重署名情報(σwith−root)と公開リスト情報(Lwith−root)とを公開情報として公開する。
【0130】
また、検証ノードDは、以下の検証過程1から検証過程3により公開多重署名情報(σwith−root)の正当性を検証する。
【0131】
(検証過程1)検証ノードDは、公開リスト情報(Lwith−root)に含まれる全てのメッセージ(mp−q及びmr)に対してハッシュ値(hp−q=H(mp−q)及びhr=H(mr))を求める。
(検証過程2)検証ノードDは、公開リスト情報(Lwith−root)に含まれるメッセージの署名を行った全ての一般ノードBと代表ノードCの検証鍵(v1、v2、v3、v4、v5、v6、v7、vr)を収集する。
【0132】
(検証過程3)検証ノードDは、代表ノードCによって公開された公開多重署名情報(σwith−root)の正当性を検証する。具体的には、検証ノードDは、ハッシュ値(hp−q=H(mp−q)及びhr=H(mr))、検証鍵(v1、v2、v3、v4、v5、v6、v7、vr)、及び公開リスト情報(Lwith−root)に基づいて、(17)式〜(19)式に示す演算を行い、(19)式と「e(g,σwith−root)」とが一致することを確認し、これらの値が一致した場合には、公開多重署名情報(σwith−root)が正当であると判断する。
【数7】
【0133】
ここで、(検証過程3)における「e(g,σwith−root)」は、(15)式とペアリングの性質とにより、
【数8】
となる。署名の過程が正しく行われていれば、(19)式と(21)式は、一致する。このことにより、公開されている検証鍵から、公開多重署名情報(σwith−root)の検証が可能となる。
【0134】
また、(20)式に着目すると、任意の隣接する一般ノードB(upとuq)に対応して、「hp−q」及び「xp+xq」という値から署名処理が行われているため、ノード間がどのような関係により署名されてきたかが表されている。さらに、第1項は、代表ノードCの署名鍵(xr)のみで構成されている。よって、代表ノードCの署名者はurであることが分かる。
【0135】
このように、検証システム(検証ノードD)は、メッシュ構造上、どのような関係の下に署名されてきたのかを把握することができ、その結果として、代表ノードCを含んだメッシュ構造上の署名者の配置を把握することができる。
【0136】
また、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない第三者が、σwith−root、σp−q又はσrを生成することは不可能である。
【0137】
すなわち、検証システム(検証ノードD)が採用する本検証方法は、メッシュ構造上において連続(隣接)する二つのノード間の関係を署名鍵の和を用いて表し、これらを代表ノードCで全て集めることにより、メッシュ構造を表現することができる。
【0138】
また、ノードの数が増えても、公開されるのは、代表ノードCで生成される公開多重署名情報(σwith−root)であり、これは楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制することができ、効率的に署名情報が生成される。
【0139】
以上で説明した各実施形態におけるアグリゲート署名システムAでは、隣接する一般ノードBのいずれか一方が多重署名情報(σp−q)を生成して代表ノードCへ送信したが、本発明はこれには限られない。すなわち、隣接する一般ノードBの双方が多重署名情報を生成して代表ノードCへ送信してもよい。
この場合、代表ノードCは、公開リスト情報の元データとして、隣接する一般ノードBの組み合わせ情報を受け取る必要がなくなる。すなわち、代表ノードCは、同一の多重署名情報を受け取った一般ノードBの組み合わせが隣接しており、互いに多重署名を行ったと判断し、この組み合わせに基づいて公開リスト情報を生成できる。
【0140】
また、前述の実施形態において、ペアリング関数への入力である2つの引数は、ペアリングの演算が可能な楕円曲線上の点gのスカラー倍として表されるが、この楕円曲線は、第1引数と第2引数とで共通でなくてもよい。すなわち、ペアリング関数の第1引数用と第2引数用とに、それぞれ異なる楕円曲線(G1又はG2)上の2点(g1又はg2)が与えられていてもよい。
この場合、前述の実施形態の説明におけるペアリング関数の第1引数に表れるgはg1に、第2引数に表れるgはg2に読み替えられる。また、楕円曲線上の点を用いて生成される前述の各種公開情報(固有検証鍵、ハッシュ値、署名情報)は、ペアリング関数の第1引数又は第2引数のいずれに入力されるかに応じて、G1若しくはG2のいずれかを用いて1種類、又は双方を用いて2種類生成される。
このことにより、公開情報の数、すなわち演算回数が増加する場合があるが、ペアリング関数の演算において並列して処理できるため、計算時間の短縮が期待できる。
【0141】
また、アグリゲート署名システムA及び検証システムによる一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【0142】
A アグリゲート署名システム
B 一般ノード
B1 記憶部
B2 一般ノード一方向性ハッシュ関数演算部
B3 一般ノード署名情報生成部
B4 多重署名情報生成部
C 代表ノード
C1 公開多重署名情報生成部
C2 公開リスト情報生成部
C3 記憶部
C4 代表ノード一方向性ハッシュ関数演算部
C5 代表ノード署名情報生成部
D 検証ノード、検証システム
D1 検証ノード一方向性ハッシュ関数演算部
D2 収集部
D3 検証部
【特許請求の範囲】
【請求項1】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、
前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成部と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、を備え、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成部と、を備えるアグリゲート署名システム。
【請求項2】
前記代表ノードは、
予め固有署名鍵と固有検証鍵が割り当てられており、
自身の署名対象であるメッセージに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、
前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、
前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、
前記公開リスト情報生成部は、前記代表ノード、及び当該代表ノードとメッセージとの対応関係を示す情報を含んで前記公開リスト情報を生成する請求項1に記載のアグリゲート署名システム。
【請求項3】
前記多重署名情報生成部は、隣接する一般ノードの一方のみで、当該隣接する一般ノード間に固有の多重署名情報を生成する請求項1又は請求項2に記載のアグリゲート署名システム。
【請求項4】
前記固有署名鍵は、所定の自然数からなり、
前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなる請求項1から請求項3のいずれかに記載のアグリゲート署名システム。
【請求項5】
請求項1から請求項4のいずれかに記載のアグリゲート署名システムにより生成された前記公開多重署名情報を検証する検証システムであって、
前記公開リスト情報に含まれるメッセージに一方向性ハッシュ関数演算を行う検証ノード一方向性ハッシュ関数演算部と、
前記公開リスト情報に含まれる全てのノードの固有検証鍵を収集する収集部と、
前記検証ノード一方向性ハッシュ関数演算部により演算されたハッシュ値、前記収集部により収集された前記全てのノードの固有検証鍵、及び前記公開リスト情報に基づいて、前記公開多重署名情報の正当性を検証する検証部と、を備える検証システム。
【請求項6】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、を実行し、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、を実行するアグリゲート署名方法。
【請求項7】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行う方法をコンピュータによって実現するためのアグリゲート署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行されるアグリゲート署名プログラム。
【請求項1】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名システムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算部と、
前記一般ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成部と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成部と、を備え、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成部と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成部と、を備えるアグリゲート署名システム。
【請求項2】
前記代表ノードは、
予め固有署名鍵と固有検証鍵が割り当てられており、
自身の署名対象であるメッセージに一方向性ハッシュ関数演算を行う代表ノード一方向性ハッシュ関数演算部と、
前記代表ノード一方向性ハッシュ関数演算部により演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、代表ノード署名情報を生成する代表ノード署名情報生成部と、を備え、
前記公開多重署名情報生成部は、前記代表ノード署名情報を含んで前記公開多重署名情報を生成し、
前記公開リスト情報生成部は、前記代表ノード、及び当該代表ノードとメッセージとの対応関係を示す情報を含んで前記公開リスト情報を生成する請求項1に記載のアグリゲート署名システム。
【請求項3】
前記多重署名情報生成部は、隣接する一般ノードの一方のみで、当該隣接する一般ノード間に固有の多重署名情報を生成する請求項1又は請求項2に記載のアグリゲート署名システム。
【請求項4】
前記固有署名鍵は、所定の自然数からなり、
前記固有検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記固有署名鍵とに基づいて生成される、当該楕円曲線上の点からなる請求項1から請求項3のいずれかに記載のアグリゲート署名システム。
【請求項5】
請求項1から請求項4のいずれかに記載のアグリゲート署名システムにより生成された前記公開多重署名情報を検証する検証システムであって、
前記公開リスト情報に含まれるメッセージに一方向性ハッシュ関数演算を行う検証ノード一方向性ハッシュ関数演算部と、
前記公開リスト情報に含まれる全てのノードの固有検証鍵を収集する収集部と、
前記検証ノード一方向性ハッシュ関数演算部により演算されたハッシュ値、前記収集部により収集された前記全てのノードの固有検証鍵、及び前記公開リスト情報に基づいて、前記公開多重署名情報の正当性を検証する検証部と、を備える検証システム。
【請求項6】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行うアグリゲート署名方法であって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
前記メッシュ構造における各一般ノードは、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、を実行し、
前記複数の一般ノードを統括する代表ノードは、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、を実行するアグリゲート署名方法。
【請求項7】
複数の一般ノードがメッシュ構造状に構成され、当該複数の一般ノード間でアグリゲート署名を行う方法をコンピュータによって実現するためのアグリゲート署名プログラムであって、各一般ノードには予め重複しない固有署名鍵と固有検証鍵とがそれぞれ割り当てられており、
隣接する一般ノード間の署名対象であるメッセージに一方向性ハッシュ関数演算を行う一般ノード一方向性ハッシュ関数演算工程と、
前記一般ノード一方向性ハッシュ関数演算工程において演算されたハッシュ値に対して、自身の固有署名鍵により演算を行い、自身の署名情報を生成する一般ノード署名情報生成工程と、
隣接する一般ノードから受信した前記署名情報、及び自身の署名情報により、隣接する一般ノード間に固有の多重署名情報を生成する多重署名情報生成工程と、が前記メッシュ構造における各一般ノードによって実行され、
前記メッシュ構造における隣接する一般ノード間に固有の多重署名情報の総和からなる公開多重署名情報を生成する公開多重署名情報生成工程と、
隣接する一般ノードの組み合わせ、及び当該隣接する一般ノードとメッセージとの対応関係を示す公開リスト情報を生成する公開リスト情報生成工程と、が前記複数の一般ノードを統括する代表ノードによって実行されるアグリゲート署名プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−60620(P2012−60620A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2010−204933(P2010−204933)
【出願日】平成22年9月13日(2010.9.13)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願日】平成22年9月13日(2010.9.13)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】
[ Back to top ]