説明

回覧システム及び回覧方法及び回覧プログラム

【課題】回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる回覧システム及び回覧方法及び回覧プログラムを提供すること。
【解決手段】リーフノード31から送信されてくる固有検証鍵と、リーフノード署名情報とリーフノード確認検証鍵とを受信し、中間ノード21から送信されてくる固有検証鍵と、中間ノード経由検証鍵とを受信するルートノード受信部15と、中間ノード経由検証鍵に対して、中間ノード21の固有検証鍵と、ルートノード11の固有検証鍵とを用いて正当性を検証し、リーフノード確認検証鍵に対して、リーフノード31の固有検証鍵と、中間ノード経由検証鍵とを用いて正当性を検証する第1の検証部16と、正当性が検証されたリーフノード確認検証鍵と中間ノード経由検証鍵に基づいて、リーフノード署名情報の正当性を検証する第2の検証部17を備える。

【発明の詳細な説明】
【技術分野】
【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)本発明に係る回覧システムは、上記課題を解決するために、電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧するツリー構造化された回覧システムであって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、前記ルートノードは、前記回覧物にハッシュ演算を行うハッシュ演算部と、前記ハッシュ演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成部と、前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信部と、ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信部と、前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証部と、正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証部を備えることを特徴とする。
【0012】
このような構成によれば、回覧システムは、ツリー構造における最下層の下位ノードであるリーフノードから当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵がルートノードに送信される。また、回覧システムでは、ルートノードとリーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵もルートノードに受信される。また、回覧システムでは、第1の検証部により、中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、ルートノードの固有検証鍵とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵に対して、リーフノードの固有検証鍵と、正当性が検証された中間ノード経由検証鍵とを用いて正当性を検証する。また、回覧システムでは、第2の検証部により、正当性が検証されたリーフノード確認検証鍵に基づいて、リーフノード署名情報の正当性が検証される。
【0013】
したがって、回覧システムでは、回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる。
【0014】
(2)また、上記回覧システムでは、前記中間ノードは、ツリー構造における一階層上のノードから送信されてくる前記回覧物と第1の送信署名情報と第1の送信検証鍵を受信し、ツリー構造における一階層下のノードから送信されてくる第2の送信署名情報と第2の送信検証鍵を受信する中間ノード受信部と、前記第1の送信署名情報に中間ノードの固有署名鍵で暗号化を行って中間ノード署名情報を生成する中間ノード署名情報生成部と、前記第1の送信検証鍵に前記中間ノードの固有署名鍵で暗号化を行って前記中間ノード署名情報の検証鍵である前記中間ノード経由検証鍵を生成する中間ノード経由検証鍵生成部と、前記ツリー構造における一階層上のノードに対して、前記第2の送信署名情報と、前記第2の送信検証鍵と、前記中間ノード経由検証鍵と、中間ノードの固有検証鍵を送信し、前記ツリー構造における一階層下のノードに対して、前記回覧物とともに前記中間ノード経由検証鍵と前記中間ノード署名情報を送信する中間ノード送信部とを備えることが好ましい。
【0015】
このような構成によれば、回覧システムでは、ルートノードとリーフノードの間に他の下位ノードである中間ノードが存在する場合には、中間ノードにおいて、受信した第1の送信署名情報(例えば、ルートノード署名情報)に中間ノードの固有署名鍵で暗号化を行って中間ノード署名情報を生成し、第1の送信検証鍵(例えば、ルートノードの固有検証鍵)に中間ノードの固有署名鍵で暗号化を行って中間ノード署名情報の検証鍵である中間ノード経由検証鍵を生成する。そして、中間ノードは、ツリー構造における一階層上のノードに対して、第2の送信署名情報(例えば、リーフノード署名情報)と、第2の送信検証鍵(例えば、リーフノードの固有検証鍵及びリーフノード確認検証鍵)と、中間ノード経由検証鍵と、中間ノードの固有検証鍵を送信し、ツリー構造における一階層下のノードに対して、回覧物とともに中間ノード経由検証鍵と中間ノード署名情報を送信する。
【0016】
したがって、回覧システムでは、ルートノードは、中間ノードが生成した中間ノード経由検証鍵と中間ノードの固有検証鍵を受信するので、第1の検証部により、中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、ルートノードの固有検証鍵とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵に対して、リーフノードの固有検証鍵と、正当性が検証された中間ノード経由検証鍵を用いて正当性を検証することができる。
【0017】
(3)また、上記回覧システムでは、リーフノードは、ツリー構造における一階層上のノードから送信されてくる前記回覧物と第3の送信署名情報と第3の送信検証鍵を受信するリーフノード受信部と、前記第3の送信署名情報にリーフノードの固有署名鍵で暗号化を行って前記リーフノード署名情報を生成するリーフノード署名情報生成部と、前記第3の送信検証鍵に前記リーフノードの固有署名鍵で暗号化を行って前記リーフノード署名情報の検証鍵である前記リーフノード確認検証鍵を生成するリーフノード確認検証鍵生成部と、前記ツリー構造における一階層上のノードに対して、前記リーフノード署名情報と、前記リーフノード確認検証鍵と、前記リーフノードの固有検証鍵を送信するリーフノード送信部とを備えることが好ましい。
【0018】
このような構成によれば、回覧システムでは、リーフノードにおいて、第3の送信署名情報(例えば、中間ノード署名情報)にリーフノードの固有署名鍵で暗号化を行ってリーフノード署名情報を生成し、第3の送信検証鍵(例えば、中間ノード経由検証鍵)にリーフノードの固有署名鍵で暗号化を行ってリーフノード署名情報の検証鍵であるリーフノード確認検証鍵を生成する。そして、リーフノードは、ツリー構造における一階層上のノード(中間ノード又はルートノード)に対して、リーフノード署名情報と、リーフノード確認検証鍵と、リーフノードの固有検証鍵を送信する。
【0019】
したがって、回覧システムでは、ルートノードは、リーフノードの固有検証鍵と、リーフノード署名情報と、リーフノード確認検証鍵と、中間ノードの固有検証鍵と、中間ノード経由検証鍵とを受信するので、第1の検証部により、中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、ルートノードの固有検証鍵とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵に対して、リーフノードの固有検証鍵と、正当性が検証された中間ノード経由検証鍵とを用いて正当性を検証し、つぎに、第2の検証部により、正当性が検証されたリーフノード確認検証鍵と中間ノード経由検証鍵に基づいて、前記リーフノード署名情報の正当性を検証するので、回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる。
【0020】
(4)本発明に係る回覧方法は、上記課題を解決するために、ツリー構造化された回覧システムにおいて、電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧する回覧方法であって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵が割り当てられており、前記ルートノードは、前記回覧物にハッシュ演算を行うハッシュ演算工程と、前記ハッシュ演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成工程と、前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信工程と、ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信工程と、前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証工程と、正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証工程とを備えることを特徴とする。
【0021】
このような構成によれば、回覧方法は、ツリー構造における最下層の下位ノードであるリーフノードから当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵がルートノードに送信される。また、回覧方法では、ルートノードとリーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵もルートノードに受信される。また、回覧方法では、第1の検証工程により、中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、ルートノードの固有検証鍵とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵に対して、リーフノードの固有検証鍵と、正当性が検証された中間ノード経由検証鍵とを用いて正当性を検証する。また、回覧システムでは、第2の検証工程により、正当性が検証されたリーフノード確認検証鍵に基づいて、リーフノード署名情報の正当性が検証される。
【0022】
したがって、回覧方法では、回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる。
【0023】
(5)本発明に係る回覧プログラムは、上記課題を解決するために、ツリー構造化された回覧システムにおいて、電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧する方法をコンピュータによって実現するための回覧プログラムであって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵が割り当てられており、前記回覧物にハッシュ演算を行うハッシュ演算工程と、前記ハッシュ演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成工程と、前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信工程と、ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信工程と、前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証工程と、正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証工程とが前記ルートノードによって実行されるようにコンピュータによって実現するためのものである。
【0024】
このような構成によれば、回覧プログラムは、ツリー構造における最下層の下位ノードであるリーフノードから当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵がルートノードに送信される。また、回覧プログラムでは、ルートノードとリーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵もルートノードに受信される。また、回覧プログラムでは、第1の検証工程により、中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、ルートノードの固有検証鍵とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵に対して、リーフノードの固有検証鍵と、正当性が検証された中間ノード経由検証鍵とを用いて正当性を検証する。また、回覧システムでは、第2の検証工程により、正当性が検証されたリーフノード確認検証鍵に基づいて、リーフノード署名情報の正当性が検証される。
【0025】
したがって、回覧プログラムでは、回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる。
【発明の効果】
【0026】
本発明によれば、回覧物がどの中間ノード及びリーフノードに流通し、誰が回覧したのかを知ることができる。
【図面の簡単な説明】
【0027】
【図1】本発明に係る回覧システムの構成を模式的に示す図である。
【図2】本発明に係る回覧システムにより回覧物が回覧される手順についての説明に供するフローチャートである。
【図3】回覧物(M)の流通と署名の作成についての説明に供する図である。
【図4】2分木4階層によるツリー構造を模式的に示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態の一例について図1を参照しながら説明する。本発明の実施形態に係る回覧システム1は、電子的な回覧物を発信するルートノード11からルートノード11よりも下位の階層に属する下位ノード(中間ノード21、リーフノード31)へ段階的に回覧物を回覧するツリー構造化されたシステムである。なお、ルートノード11と下位ノード(中間ノード21、リーフノード31)には、認証局(CA、Certificate Authority)により予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられている。また、以下では、一つのルートノード11から、一つの中間ノード21を経由して一つのリーフノード31へ回覧物(M)が回覧される場合を想定して説明する。なお、回覧物(M)とは、電子データにより構成される情報を表す概念である。
【0029】
ルートノード11は、図1に示すように、一方向性ハッシュ関数演算部12と、ルートノード署名情報生成部13と、ルートノード送信部14と、ルートノード受信部15と、第1の検証部16と、第2の検証部17とを備える。
【0030】
一方向性ハッシュ関数演算部12は、電子的な回覧物(M)に一方向性ハッシュ関数演算を行う。一方向性ハッシュ関数演算が行われた回覧物(M)は、以降、単にハッシュ(h)という。
【0031】
ルートノード署名情報生成部13は、ハッシュ(h)にルートノード11の固有署名鍵(x)で暗号化を行ってルートノード署名情報(xh(=axg))を生成する。なお、詳細は後述するが、gは、GDH(GAP−Diffie−Hellman)グループと呼ばれるある特定の楕円曲線上の点の集合Gの要素である。
ここで、一方向性ハッシュ関数演算部12による演算においては、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データを固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する(例えば、sをSHA−1(plaintext)のように通常使用される一方向性ハッシュ関数としたとき、sgとして表される式は、ここで定義する一方向性ハッシュ関数Hの条件を満たす)。また、集合Gは、GDH(GAP−Diffie−Hellman)グループを示し、gは、集合Gの要素となる点を示している。なお、一方向性ハッシュ関数Hについての詳細は後述する。
【0032】
ルートノード送信部14は、回覧物(M)と、ルートノード署名情報(xh)と、ルートノード11の固有検証鍵(xg)をツリー構造における一階層下の下位ノード(例えば、中間ノード21)に送信する。
【0033】
また、ルートノード受信部15は、ツリー構造における最下層の下位ノードであるリーフノード31から送信されてくる当該リーフノード31の固有検証鍵(x111g)と、当該リーフノード31で生成されるリーフノード署名情報(σcirc−111(=x111(xh)))とリーフノード確認検証鍵(vcirc−111(=x111(xg)))とを受信し、ルートノード11とリーフノード31の間に他の下位ノードである中間ノード21が存在する場合には、当該中間ノード21から送信されてくる当該中間ノード21の固有検証鍵(xg)と、当該中間ノード21で生成される中間ノード経由検証鍵(vpass−1(=x(xg)))とを受信する。
【0034】
第1の検証部16は、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)とを用いて正当性を検証し、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)とを用いて正当性を検証する。
【0035】
第2の検証部17は、正当性が検証されたリーフノード確認検証鍵(vcirc−111)に基づいて、リーフノード署名情報(σcirc−111(=x111(x11g)))の正当性を検証する。
【0036】
このような構成によれば、回覧システム1では、ツリー構造における最下層の下位ノードであるリーフノード31から送信されてくる当該リーフノード31の固有検証鍵(x111g)と、当該リーフノード31で生成されるリーフノード署名情報(σcirc−111)とリーフノード確認検証鍵(vcirc−111)がルートノード11に受信される。
【0037】
また、回覧システム1では、ルートノード11とリーフノード31の間に他の下位ノードである中間ノード21が存在する場合には、当該中間ノード21から送信されてくる当該中間ノード21の固有検証鍵(xg)と、当該中間ノード21で生成される中間ノード経由検証鍵(vpass−1)もルートノード11に受信される。
【0038】
また、回覧システム1では、第1の検証部16により、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)とを用いて正当性を検証される。また、回覧システム1では、第2の検証部17により、正当性が検証されたリーフノード確認検証鍵(vcirc−111)に基づいて、リーフノード署名情報(σcirc−111)の正当性が検証される。
【0039】
したがって、回覧システム1では、回覧物(M)がどの中間ノード21及びリーフノード31に流通し、誰が回覧したのかを知ることができる。
【0040】
また、中間ノード21は、図1に示すように、中間ノード受信部22と、中間ノード署名情報生成部23と、中間ノード経由検証鍵生成部24と、中間ノード送信部25とを備える。
【0041】
中間ノード受信部22は、ツリー構造における一階層上のノードから送信されてくる回覧物(M)と第1の送信署名情報と第1の送信検証鍵を受信し、ツリー構造における一階層下のノードから送信されてくる第2の送信署名情報(例えば、σcirc−111)と第2の送信検証鍵を受信する。なお、第2の送信検証鍵には、一階層下のノード自身の固有検証鍵(例えば、x111g)と、リーフノード確認検証鍵(例えば、vcirc−111)が含まれている。
【0042】
中間ノード署名情報生成部23は、第1の送信署名情報に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)を生成する。中間ノード経由検証鍵生成部24は、第1の送信検証鍵に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)の検証鍵である中間ノード経由検証鍵(vpass−1)を生成する。
【0043】
中間ノード送信部25は、ツリー構造における一階層上のノードに対して、第2の送信署名情報(例えば、σcirc−111)と、第2の送信検証鍵(例えば、x111gと、vcirc−111)と、中間ノード経由検証鍵(vpass−1)と、中間ノード21の固有検証鍵(xg)を送信し、ツリー構造における一階層下のノードに対して、回覧物(M)とともに中間ノード経由検証鍵(vpass−1)と中間ノード署名情報(σpass−1)を送信する。
【0044】
このような構成によれば、回覧システム1では、ルートノード11とリーフノード31の間に他の下位ノードである中間ノード21が存在する場合には、中間ノード21において、受信した第1の送信署名情報(例えば、ルートノード署名情報(xh))に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)を生成し、第1の送信検証鍵(例えば、ルートノード11の固有検証鍵(xg))に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)の検証鍵である中間ノード経由検証鍵(vpass−1)を生成する。
【0045】
そして、中間ノード21は、ツリー構造における一階層上のノード(例えば、ルートノード11)に対して、第2の送信署名情報(例えば、リーフノード署名情報(σcirc−111))と、第2の送信検証鍵(例えば、リーフノード31の固有検証鍵(x111g)及びリーフノード確認検証鍵(例えば、vcirc−111))と、中間ノード経由検証鍵(vpass−1)と、中間ノード21の固有検証鍵(xg)を送信し、ツリー構造における一階層下のノードに対して、回覧物(M)とともに中間ノード経由検証鍵(vpass−1)と中間ノード署名情報(σpass−1)を送信する。
【0046】
したがって、回覧システム1では、ルートノード11は、中間ノード21が生成した中間ノード経由検証鍵(vpass−1)と中間ノード21の固有検証鍵(xg)を受信するので、第1の検証部16により、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)を用いて正当性を検証することができる。
【0047】
また、リーフノード31は、図1に示すように、リーフノード受信部32と、リーフノード署名情報生成部33と、リーフノード確認検証鍵生成部34と、リーフノード送信部35とを備える。
【0048】
リーフノード受信部32は、ツリー構造における一階層上のノードから送信されてくる回覧物(M)と第3の送信署名情報(例えば、σpass−1)と第3の送信検証鍵を受信する。リーフノード署名情報生成部33は、第3の送信署名情報にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)を生成する。
【0049】
リーフノード確認検証鍵生成部34は、第3の送信検証鍵にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)の検証鍵であるリーフノード確認検証鍵(vcirc−111)を生成する。リーフノード送信部35は、ツリー構造における一階層上のノードに対して、リーフノード署名情報(σcirc−111)と、リーフノード確認検証鍵(vcirc−111)と、リーフノード31の固有検証鍵(x111g)を送信する。
【0050】
このような構成によれば、回覧システム1では、リーフノード31において、第3の送信署名情報(例えば、中間ノード署名情報(σpass−1))にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)を生成し、第3の送信検証鍵(例えば、中間ノード経由検証鍵(vpass−1))にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)の検証鍵であるリーフノード確認検証鍵(vcirc−111)を生成する。
【0051】
そして、リーフノード31は、ツリー構造における一階層上のノード(中間ノード21又はルートノード11)に対して、リーフノード署名情報(σcirc−111)と、リーフノード確認検証鍵(vcirc−111)と、リーフノード31の固有検証鍵(x111g)を送信する。
【0052】
したがって、回覧システム1では、ルートノード11は、リーフノード31の固有検証鍵(x111g)と、リーフノード署名情報(σcirc−111)と、リーフノード確認検証鍵(vcirc−111)と、中間ノード21の固有検証鍵(xg)と、中間ノード経由検証鍵(vpass−1)を受信するので、第1の検証部16により、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)を用いて正当性を検証する。つぎに、第1の検証部16は、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)とを用いて正当性を検証する。
【0053】
そして、第2の検証部17は、正当性が検証されたリーフノード確認検証鍵(vcirc−111)に基づいて、前記リーフノード署名情報(σcirc−111)の正当性を検証する。よって、回覧システム1は、回覧物(M)がどの中間ノード21及びリーフノード31に流通し、誰が回覧したのかを知ることができる。
【0054】
つぎに、回覧システム1において、回覧物(M)をルートノード11から下位ノードへ段階的に回覧する回覧方法について図2に示すフローチャートを参照しながら説明する。また、以下では、一つのルートノード11から、一つの中間ノード21を経由して一つのリーフノード31へ回覧物(M)が回覧される場合を想定して説明する。
【0055】
一方向性ハッシュ関数演算工程ST1において、一方向性ハッシュ関数演算部12は、電子的な回覧物(M)に一方向性ハッシュ関数演算を行う。
【0056】
ルートノード署名情報生成工程ST2において、ルートノード署名情報生成部13は、ハッシュ(h)にルートノード11の固有署名鍵(x)で暗号化を行ってルートノード署名情報(xh(=axg))を生成する。なお、gは、楕円曲線上の点の集合Gの要素であり、詳細は後述する。
【0057】
ルートノード送信工程ST3において、ルートノード送信部14は、回覧物(M)と、ルートノード署名情報(xh)と、ルートノード11の固有検証鍵(xg)をツリー構造における一階層下の下位ノード(本実施例においては、中間ノード21)に送信する。
【0058】
中間ノード受信工程ST4において、中間ノード受信部22は、ツリー構造における一階層上のノード(本実施例においては、ルートノード11)から送信されてくる回覧物(M)と、第1の送信署名情報(例えば、ルートノード署名情報(xh))と、第1の送信検証鍵(例えば、ルートノード11の固有検証鍵(xg))を受信する。
【0059】
中間ノード署名情報生成工程ST5において、中間ノード署名情報生成部23は、第1の送信署名情報に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)を生成する。
【0060】
中間ノード経由検証鍵生成工程ST6において、中間ノード経由検証鍵生成部24は、第1の送信検証鍵に中間ノード21の固有署名鍵(x)で暗号化を行って中間ノード署名情報(σpass−1)の検証鍵である中間ノード経由検証鍵(vpass−1)を生成する。
【0061】
中間ノード送信工程ST7において、中間ノード送信部25は、ツリー構造における一階層下のノード(本実施例においては、リーフノード31)に対して、回覧物(M)とともに中間ノード経由検証鍵(vpass−1)と中間ノード署名情報(σpass−1)を送信する。
【0062】
リーフノード受信工程ST8において、リーフノード受信部32は、ツリー構造における一階層上のノード(本実施例においては、中間ノード21)から送信されてくる回覧物(M)と、第3の送信署名情報(例えば、σpass−1)と、第3の送信検証鍵(例えば、中間ノード経由検証鍵(vpass−1))を受信する。
【0063】
リーフノード署名情報生成工程ST9において、リーフノード署名情報生成部33は、第3の送信署名情報にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)を生成する。
【0064】
リーフノード確認検証鍵生成工程ST10において、リーフノード確認検証鍵生成部34は、第3の送信検証鍵にリーフノード31の固有署名鍵で暗号化を行ってリーフノード署名情報(σcirc−111)の検証鍵であるリーフノード確認検証鍵(vcirc−111)を生成する。
【0065】
リーフノード送信工程ST11において、リーフノード送信部35は、ツリー構造における一階層上のノード(本実施例においては、中間ノード21)に対して、リーフノード署名情報(σcirc−111)と、リーフノード確認検証鍵(vcirc−111)と、リーフノード31の固有検証鍵(x111g)を送信する。
【0066】
中間ノード受信工程ST12において、中間ノード受信部22は、ツリー構造における一階層下のノード(本実施例においては、リーフノード31)から送信されてくる第2の送信署名情報(例えば、リーフノード署名情報(σcirc−111))と第2の送信検証鍵(例えば、リーフノード確認検証鍵(vcirc−111)とリーフノード31の固有検証鍵(x111g))を受信する。
【0067】
中間ノード送信工程ST13において、中間ノード送信部25は、ツリー構造における一階層上のノード(本実施例においては、ルートノード11)に対して、第2の送信署名情報と、第2の送信検証鍵と、中間ノード経由検証鍵(vpass−1)と、中間ノード21の固有検証鍵(xg)を送信する。
【0068】
ルートノード受信工程ST14において、ルートノード受信部15は、ツリー構造における最下層の下位ノードであるリーフノード31の固有検証鍵(x111g)と、当該リーフノード31で生成されるリーフノード署名情報(σcirc−111(=x111(xh)))と、リーフノード確認検証鍵(vcirc−111(=x111(xg)))とを受信する。また、本実施例では、ルートノード11とリーフノード31の間に他の下位ノードである中間ノード21が存在するので、ルートノード受信部15は、中間ノード21の固有検証鍵(xg)と、当該中間ノード21で生成される中間ノード経由検証鍵(vpass−1(=x(xg)))とを受信する。
【0069】
第1の検証工程ST15において、第1の検証部16は、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)とを用いて正当性を検証し、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)とを用いて正当性を検証する。なお、本工程では、すべての正当性が検証されたことを条件として第2の検証工程ST16に進む。
【0070】
第2の検証工程ST16において、第2の検証部17は、正当性が検証されたリーフノード確認検証鍵(vcirc−111)に基づいて、リーフノード署名情報(σcirc−111(=x111(xg)))の正当性を検証する。
【0071】
このようにして、回覧システム1では、第1の検証部16により、中間ノード経由検証鍵(vpass−1)に対して、当該中間ノード経由検証鍵(vpass−1)を送信してきた中間ノード21の固有検証鍵(xg)と、ルートノード11の固有検証鍵(xg)とを用いて正当性を検証し、つぎに、リーフノード確認検証鍵(vcirc−111)に対して、リーフノード31の固有検証鍵(x111g)と、正当性が検証された中間ノード経由検証鍵(vpass−1)とを用いて正当性を検証される。また、回覧システム1では、第2の検証部17により、正当性が検証されたリーフノード確認検証鍵(vcirc−111)に基づいて、リーフノード署名情報(σcirc−111)の正当性が検証される。
【0072】
したがって、本実施形態に係る回覧方法によれば、回覧物(M)がどの中間ノード21及びリーフノード31に流通し、誰が回覧したのかを知ることができる。
【0073】
<署名方式について>
つぎに、上述した本発明によって採用される具体的な署名方式について説明する。回覧システム1では、ベースとなる署名方式としてGAP−Diffie−Hellman(GDH)署名を採用する。GDH署名とは、Decision−Diffie−Hellman(DDH)問題をペアリングと呼ばれるある種のブラックボックス関数e(P,Q)を用いることで、解くことが可能であることを利用した署名である。
【0074】
つぎに、ペアリング演算を用いたGDH署名について説明する。楕円曲線上のDiffie−Hellman問題に関連して、GDHグループが定義されている。GDHグループについて簡単に説明する。Gをある楕円曲線上の点の集合とする。gを集合Gの要素としたとき、集合Gにおける楕円曲線上のDecisional Diffie−Hellman(DDH)問題とComputational Diffie−Hellman(CDH)問題が以下のように定義される。
【0075】
DDH問題:あるa、b、cという自然数があり、g、ag、bg、cgが与えられた時、c=abかどうかを判定する問題
CDH問題:あるa、b、cという自然数があり、g、ag、bgが与えられた時、abgを計算する問題
【0076】
このとき、DDH問題は、計算量的に簡単であるが、CDH問題は、計算量的に難問である場合、この集合GをGDHグループと定義する。
【0077】
これに対し、ある楕円曲線上の点をP,Qとし、そのP,Qによっては次にあげる性質を持つことができるペアリングと呼ばれるブラックボックス関数e(P,Q)を定義できるものが存在する。
e(aP,bQ)=e(bP,aQ)=e(abP,Q)=e(P,abQ)=e(P,Q)ab・・・(1)
【0078】
よって、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の要素となりうる。
【0079】
この性質を利用してGDH署名が構成される。集合Gは、GDHグループであり、gは集合Gの要素となる点とする。また、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データを固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する(例えば、sをSHA−1(plaintext)のように通常使用される一方向性ハッシュ関数としたとき、sgとして表される式は、ここで定義する一方向性ハッシュ関数Hの条件を満たす)。
【0080】
このとき、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)を計算し、両者の値が一致したら、署名σは、正しい署名と判定する。
【0081】
このとき、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の値から署名σを導出することは不可能である。
【0082】
また、本実施例における検証方式の手順の概要は以下の通りである。なお、以下では、説明の便宜上、図4に示す中間ノード21aから21fを中間ノード21といい、リーフノード31aから31hをリーフノード31という。
【0083】
(手順1)組織内のグループ又は部署の関係を木構造(ツリー構造)とする。その際に、ルートノード11が配置される最上位層Aには、回覧物(M)の発信者がおり、中間ノード21が配置される中位層Bには、回覧物(M)の責任仲介者(グループ又は部署の責任者)がおり、リーフノード31が配置される最下位層Cには一般メンバーがいる。
【0084】
(手順2)ルートノード11は、回覧物(M)のハッシュ(楕円曲線上の点)を作成し、それに署名鍵をかけて署名を作成する。回覧物、署名、公開鍵を直下のノードに送信する。
【0085】
(手順3)ルートノード11の直下にある中間ノード21は、受信した署名に自分の署名鍵をかけたものを作成し、これをこの中間ノード21までの経由署名とする。また、受信したルートノード11の検証鍵に自分の署名鍵をかけたものを作成し、これをこの中間ノードまでの経由署名の検証鍵(以後、経由検証鍵という。)とする。回覧物(M)、経由署名、経由検証鍵を直下のノードに送る。
【0086】
(手順4)以後、中間ノード21は、直上のノードから受信した経由署名に自分の署名鍵をかけたものを作成し、これをこの中間ノード21までの新たな経由署名とする。また、受信した直上のノードの経由検証鍵に自分の署名鍵をかけたものを作成し、これをこの中間ノード21までの新たな経由検証鍵とする。回覧物(M)、この中間ノード21で作成した経由署名、経由検証鍵を直下のノードに送る。
【0087】
(手順5)リーフノード31は、直上のノードから受信した経由署名に自分の署名鍵をかけたものを作成し、これをリーフノード31の回覧確認署名とする。また、受信した直上のノードの経由検証鍵に自分の署名鍵をかけたものを作成し、これをリーフノード31の回覧確認署名の検証鍵(以後、回覧確認検証鍵という。)とする。このリーフノード31が作成した回覧確認署名、回覧確認検証鍵を直上のノードに送信する。
【0088】
(手順6)リーフノード31の直上にある中間ノード21は、直下のリーフノードから受信した回覧確認署名をリーフノード31から自分までの回覧確認署名として、ルートノード11に送信する。自分の直下のリーフノード31で作成した回覧確認検証鍵とこの中間ノード21で作成した回覧確認署名と経由検証鍵(手順3及び手順4)を直上のノードに送る。なお、中間ノード21の直下にリーフノード31が2つ配置されている場合には、中間ノード21は、直下のリーフノード31から受信した全回覧確認署名を足し合わせて、これをリーフノード31から自分までの回覧確認署名として、ルートノード11に送信する。
【0089】
(手順7)以後、中間ノード21は、直下のノードから受信したその直下のノードで作成された全回覧確認署名を足し合わせて、これをそれぞれリーフノード31から自分までの回覧確認署名とする。自分のノードからたどれるリーフノード31すべての回覧確認検証鍵と自分のノードからたどれる下位の中間ノード21すべての経由検証鍵(手順3及び手順4)と、この中間ノード21で作成した回覧確認署名を直上のノードに送る。
【0090】
(手順8)ルートノード11は、直下の中間ノード21から受信した回覧確認署名を検証することで、回覧物(M)がどの中間ノード21及びリーフノード31に流通しているかを確認する。
ここで、回覧確認署名の検証は、以下の通りに実行する。
(a)ルートノード11直下の中間ノード21が作成した経由検証鍵に対し、それに対応するルートノード11及びルートノード11直下の検証鍵を用いて、ペアリング演算によるDDH判定にて正当性を検証する。
【0091】
(b)以後、途中の中間ノード21で作成された経由検証鍵に対し、正当性が保証された直上の中間ノード21で作成された経由検証鍵と、正当性を検証しようとしている経由検証鍵を作成した中間ノード21の検証鍵を用いて、ペアリング演算によるDDH判定にて正当性を検証する。これを順にリーフノード31直上の中間ノード21で作成された経由検証鍵まで繰り返す。
【0092】
(c)リーフノード31直上の中間ノード21で作成された経由検証鍵まで正当性が保証されたら、その経由検証鍵とリーフノード31の検証鍵を用いて、ペアリング演算によるDDH判定にて回覧確認検証鍵の正当性を検証する。
【0093】
(d)そして、回覧確認検証鍵を使って、回覧確認署名を検証する。
【0094】
<実施例>
つぎに、上述した本発明を利用して、回覧物(M)の流通と署名の作成について、図3を参照しながら具体的に説明する。図3(a)には、各ノードにおいて行われる回覧物(M)の流通と署名の作成の様子を模式的に示し、図3(b)には、ルートノード11において実行される署名の検証方法について模式的に示し、図3(c)には、署名鍵と検証鍵が認証局(CA)によって重複しないように各ノードに付与されている様子を模式的に示している。また、図3には、一部のノードの動作のみを示し、他のノードの動作を省略しているが、他のノードにおいても図示したノードと同様の動作が行われる。
【0095】
また、以下の説明では、2分木4階層によるツリー構造であって、図4に示すように、ルートノード11が属する最上位層Aと、複数の中間ノード21が属する中位層Bと、複数のリーフノード31が属する最下位層Cとにより構成されているものとする。また、中位層Bは、ルートノード11の直下の階層に配置される中間ノード21aと中間ノード21bと、中間ノード21aの直下の階層に配置される中間ノード21cと中間ノード21dと、中間ノード21bの直下の階層に配置される中間ノード21eと中間ノード21fとにより構成される。また、最下位層Cは、中間ノード21cの直下に配置されるリーフノード31aとリーフノード31bと、中間ノード21dの直下に配置されるリーフノード31cとリーフノード31dと、中間ノード21eの直下に配置されるリーフノード31eとリーフノード31fと、中間ノード21fの直下に配置されるリーフノード31gとリーフノード31hとにより構成される。
【0096】
また、中位層Bにおいて、ルートノード11の直下に配置される中間ノード21a、21bは、第1中間ノードといい、第1中間ノードの直下に配置される中間ノード21cから21fは、第2中間ノードという。
【0097】
(過程1)認証局(CA)によって付与される、回覧物発信者(ルートノード11)、責任仲介者(中間ノード21aから21f)及び一般メンバー(リーフノード31aから31h)の署名鍵と検証鍵は以下の通りとする。
ルートノード:(x,v)=(x,xg)
第1中間ノード:(x,v)=(x,xg)
第2中間ノード:(xmn,vmn)=(xmn,xmng)
リーフノード:(xmno,vmno)=(xmno,xmnog)
(ただし、m,n,oは、1≦m,n,o≦2となる整数の符号である。)
【0098】
(過程2)ルートノード11は、回覧物(M)に対しし、そのハッシュ値h=Hash(M)(=ag)を求める。このハッシュ値hに自分の署名鍵(x)をかけて、
h(=axg)・・・(4)
を求め、これを署名とする。この署名(xh)に回覧物(M)、自分の検証鍵(v)を直下のノード(中間ノード21a及び中間ノード21b)に送信する。
【0099】
(過程3)第1中間ノード(中間ノード21aと中間ノード21b)は、ルートノード11から受け取った署名(xh)に自分の署名鍵(x)をかけて、
σpass−m=x(xh)=xh・・・(5)
を作成し、σpass−mをこの第1中間ノードまでの経由署名とする。
【0100】
また、ルートノード11から受け取った検証鍵vに自分の署名鍵xをかけて
pass−m=x(xg)=xg・・・(6)
を作成し、vpass−mをこの第1中間ノードまでの経由検証鍵とする。
【0101】
回覧物(M)、この第1中間ノードで作成した経由署名σpass−mと経由検証鍵vpass−mを直下の第2中間ノード(中間ノード21cから21f)に送信する。
【0102】
(過程4)第2中間ノードは、第1中間ノードから受け取った経由署名σpass−mに自分の署名鍵xmnをかけて
σpass−mn=xmn(xh)=xmnh・・・(7)
を作成し、σpass−mnをこの第2中間ノードまでの経由署名とする。
【0103】
また、第1中間ノードから受け取った経由検証鍵vpass−mに自分の署名鍵xmnをかけて
pass−mn=xmn(xg)=xmng・・・(8)
を作成し、vpass−mnをこの第2中間ノードまでの経由検証鍵とする。
【0104】
回覧物(M)、この第2中間ノードで作成した経由署名σpass−mnと経由検証鍵vpass−mnを直下のリーフノード31に送信する。
【0105】
(過程5)リーフノード31(31aから31h)は、第2中間ノードから受け取った経由署名σpass−mnに自分の署名鍵xmnoをかけて
σcirc−mno=xmno(xmnh)=xmnmnoh・・・(9)
を作成し、σcirc−mnoをこのリーフノードまでの回覧確認署名とする。
【0106】
また、第2中間ノードから受け取った経由検証鍵vpass−mnに自分の署名鍵xmnoをかけて
circ−mno=xmno(xmng)=xmnmnog・・・(10)
を作成し、vcirc−mnoをこのリーフノードまでの回覧確認検証鍵とする。
【0107】
このリーフノードで作成した回覧確認署名σcirc−mnoと経由検証鍵vcirc−mnoを直上の第2中間ノード(中間ノード21cから21f)に送信する。
【0108】
(過程6)第2中間ノード(中間ノード21cから21f)のそれぞれは、直下のリーフノードから受信した回覧確認署名σcirc−mnoを足し合わせた
σcirc−mn=xmn(xmn1+xmn2)h・・・(11)
を作成し、σcirc−mnをリーフノードからこの第2中間ノードまでの回覧確認署名とする。なお、本実施例では、第2中間ノードの直下には2つのリーフノードが配置されている構成を想定しているが、3つ以上のリーフノードが配置される構成の場合には、第2中間ノードは、リーフノードから送信されてくる3つ以上の回覧確認署名を足し合わせて「σcirc−mn」を作成する。
【0109】
また、第2中間ノードは、自分の直下で作成した回覧確認検証鍵vcirc−mnoと、自身で作成した回覧確認署名σcirc−mn及び経由検証鍵vpass−mnを直上の第1中間ノードに送信する。
【0110】
(過程7)第1中間ノードは、直下の第2中間ノードから受信したすべての回覧確認署名σcirc−mnを足し合わせた
σcirc−m=x(xm1(xm11+xm12)+xm2(xm21+xm22))h・・・(12)
を作成し、σcirc−mをリーフノードからこの第1中間ノードまでの回覧確認署名とする。
【0111】
第1中間ノードのそれぞれは、自分からたどれるリーフノードで作成した回覧確認検証鍵vcirc−mnoと、自身で作成した回覧確認署名σcirc−m及び経由検証鍵vpass−m、自分の配下すべての経由検証鍵vpass−mnを直上のルートノード11に送信する。
【0112】
<ルートノード11による検証>
ルートノード11は、検証を次のように行う。
(検証1)ルートノード11は、第1中間ノード(中間ノード21a及び中間ノード21b)の検証鍵vと、第1中間ノードが作成した経由検証鍵vpass−mと自分の検証鍵v(とg)を使って、e(g,vpass−m)とe(v,v)を計算する。両者の値が一致した場合には、第1中間ノードが作成した経由検証鍵vpass−mは、正当性が検証されたことになる。なお、本工程においては、第1中間ノードは、2つの中間ノード(中間ノード21a及び中間ノード21b)により構成されているので、2つの経由検証鍵vpass−mについて正当性を検証する。
【0113】
具体的には、
【数1】

と、
【数2】

となり、正当な過程(ノード)を経由していれば両者の値が一致する。
【0114】
(検証2)ルートノード11は、第2中間ノード(中間ノード21cから21f)の検証鍵vmnと、第2中間ノードが作成した経由検証鍵vpass−mnと、上記(1)で正当性が検証された第1中間ノード作成の経由検証鍵vpass−m(とg)を使って、e(g,vpass−mn)とe(vpass−m,vmn)を計算する。両者の値が一致した場合には、第2中間ノードが作成した経由検証鍵vpass−mnは、正当性が検証されたことになる。なお、本工程においては、第2中間ノードは、4つの中間ノード(中間ノード21cから21f)により構成されているので、4つの経由検証鍵vpass−mnについて正当性を検証する。
【0115】
具体的には、
【数3】

と、
【数4】

となり、正当な過程(ノード)を経由していれば両者の値が一致する。
【0116】
(検証3)ルートノード11は、リーフノード31の検証鍵vmnoと、リーフノード31が作成した回覧確認検証鍵vcirc−mnoと、上記(2)で正当性が検証された第2中間ノードによって作成された経由検証鍵vpass−mn(とg)を使って、e(g,vcirc−mno)とe(vpass−mn,vmno)を計算する。両者の値が一致した場合には、リーフノードが作成したvcirc−mnoは、正当性が検証されたことになる。なお、本工程においては、リーフノードは、8つのノード(リーフノード31aから31h)により構成されているので、8つの経由検証鍵vpass−mnoについて正当性を検証する。
【0117】
具体的には、
【数5】

と、
【数6】

となり、正当な過程(ルート)を経由していれば両者の値が一致する。
【0118】
(検証4)ルートノード11は、正当性が検証された8つの経由検証鍵vcirc−mnoとルートノードが受信した2つの回覧確認署名σcirc−mとハッシュh(とg)を使って、
【数7】

【数8】

を計算する。両者の値が一致した場合には、受信した回覧確認署名の正当性が検証されることになる。
【0119】
本工程では、vcirc−mnoの正当性が検証されれば、これを検証鍵と見立ててGDH署名の検証と同じことをしており、これにより多重署名の検証が可能となる。
【0120】
また、上述した回覧物(M)の流通と署名作成の(過程2)から(過程4)において、同時に上位のノードから送信されてきている経由検証鍵も下位のノードが共有できるように配布(例えば、回覧物(M)と一緒に配布)しておくことで、(検証1)から(検証4)と同様の手順により、どのノードにおいても自分の手元にある経由署名や回覧確認署名を検証することが可能となる。これにより、流通過程の正当性の保証や、中間ノードの段階での回覧状況確認が可能となる。
【0121】
また、本実施形態に係る回覧システム1では、全署名(経由署名や回覧確認署名)及び全検証鍵(経由検証鍵や回覧確認検証鍵)は、署名鍵の入れ子構造による式で演算されており、これにより流通過程が把握できる。当該式については、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない者が、式中の任意の署名鍵を排除や改ざんすることができないため、第三者による不正は困難であると言える。
【0122】
このようにして、本実施形態に係る回覧システム1では、ツリー構造によってメンバー構成を示すことが可能な電子署名を用いることによって、例えば、会社の組織状況に合わせて、回覧物(M)がどのように流通し、誰が回覧したかを確認することができる。
【0123】
なお、本実施例においては、2分木4階層によるツリー構造における回覧物(M)の回覧方法について説明したが、これに限らず、本発明に係る回覧システム1は、3分木3階層等の多分木多階層によるツリー構造においても適用可能である。
【0124】
また、上述で説明した回覧システム1による一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されても良いし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されても良い。
【符号の説明】
【0125】
1 回覧システム
11 ルートノード
12 一方向性ハッシュ関数演算部
13 ルートノード署名情報生成部
14 ルートノード送信部
15 ルートノード受信部
16 第1の検証部
17 第2の検証部
21 中間ノード
22 中間ノード受信部
23 中間ノード署名情報生成部
24 中間ノード経由検証鍵生成部
25 中間ノード送信部
31 リーフノード
32 リーフノード受信部
33 リーフノード署名情報生成部
34 リーフノード確認検証鍵生成部
35 リーフノード送信部

【特許請求の範囲】
【請求項1】
電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧するツリー構造化された回覧システムであって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵がそれぞれ割り当てられており、
前記ルートノードは、
前記回覧物に一方向性ハッシュ関数演算を行う一方向性ハッシュ関数演算部と、
前記一方向性ハッシュ関数演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成部と、
前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信部と、
ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報と、リーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信部と、
前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証部と、
正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証部を備えることを特徴とする回覧システム。
【請求項2】
前記中間ノードは、
ツリー構造における一階層上のノードから送信されてくる前記回覧物と第1の送信署名情報と第1の送信検証鍵を受信し、ツリー構造における一階層下のノードから送信されてくる第2の送信署名情報と第2の送信検証鍵を受信する中間ノード受信部と、
前記第1の送信署名情報に中間ノードの固有署名鍵で暗号化を行って中間ノード署名情報を生成する中間ノード署名情報生成部と、
前記第1の送信検証鍵に前記中間ノードの固有署名鍵で暗号化を行って前記中間ノード署名情報の検証鍵である前記中間ノード経由検証鍵を生成する中間ノード経由検証鍵生成部と、
前記ツリー構造における一階層上のノードに対して、前記第2の送信署名情報と、前記第2の送信検証鍵と、前記中間ノード経由検証鍵と、中間ノードの固有検証鍵を送信し、前記ツリー構造における一階層下のノードに対して、前記回覧物とともに前記中間ノード経由検証鍵と前記中間ノード署名情報を送信する中間ノード送信部とを備えることを特徴とする請求項1記載の回覧システム。
【請求項3】
前記リーフノードは、
ツリー構造における一階層上のノードから送信されてくる前記回覧物と第3の送信署名情報と第3の送信検証鍵を受信するリーフノード受信部と、
前記第3の送信署名情報にリーフノードの固有署名鍵で暗号化を行って前記リーフノード署名情報を生成するリーフノード署名情報生成部と、
前記第3の送信検証鍵に前記リーフノードの固有署名鍵で暗号化を行って前記リーフノード署名情報の検証鍵である前記リーフノード確認検証鍵を生成するリーフノード確認検証鍵生成部と、
前記ツリー構造における一階層上のノードに対して、前記リーフノード署名情報と、前記リーフノード確認検証鍵と、前記リーフノードの固有検証鍵を送信するリーフノード送信部とを備えることを特徴とする請求項1又は2記載の回覧システム。
【請求項4】
ツリー構造化された回覧システムにおいて、電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧する回覧方法であって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵が割り当てられており、
前記ルートノードは、
前記回覧物に一方向性ハッシュ関数演算を行う一方向性ハッシュ関数演算工程と、
前記一方向性ハッシュ関数演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成工程と、
前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信工程と、
ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信工程と、
前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証工程と、
正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証工程とを備えることを特徴とする回覧方法。
【請求項5】
ツリー構造化された回覧システムにおいて、電子的な回覧物を発信するルートノードから前記ルートノードよりも下位の階層に属する下位ノードへ段階的に前記回覧物を回覧する方法をコンピュータによって実現するための回覧プログラムであって、前記ルートノードと前記下位ノードには予め重複しない固有署名鍵と固有検証鍵が割り当てられており、
前記回覧物に一方向性ハッシュ関数演算を行う一方向性ハッシュ関数演算工程と、
前記一方向性ハッシュ関数演算が行われた回覧物にルートノードの固有署名鍵で暗号化を行ってルートノード署名情報を生成するルートノード署名情報生成工程と、
前記回覧物と、前記ルートノード署名情報と、ルートノードの固有検証鍵をツリー構造における一階層下の前記下位ノードに送信するルートノード送信工程と、
ツリー構造における最下層の下位ノードであるリーフノードから送信されてくる当該リーフノードの固有検証鍵と、当該リーフノードで生成されるリーフノード署名情報とリーフノード確認検証鍵とを受信し、前記ルートノードと前記リーフノードの間に他の下位ノードである中間ノードが存在する場合には、当該中間ノードから送信されてくる当該中間ノードの固有検証鍵と、当該中間ノードで生成される中間ノード経由検証鍵とを受信するルートノード受信工程と、
前記中間ノード経由検証鍵に対して、当該中間ノード経由検証鍵を送信してきた中間ノードの固有検証鍵と、一階層上の中間ノードの前記中間ノード経由検証鍵又は前記ルートノードの固有検証鍵とを用いて正当性を検証し、前記リーフノード確認検証鍵に対して、前記リーフノードの固有検証鍵と、前記正当性が検証された一階層上の前記中間ノード経由検証鍵又はルートノードの固有検証鍵とを用いて正当性を検証する第1の検証工程と、
正当性が検証された前記リーフノード確認検証鍵に基づいて、前記リーフノード署名情報の正当性を検証する第2の検証工程とが前記ルートノードによって実行されるようにコンピュータによって実現するための回覧プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


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