以下に、図面を参照して、本発明にかかる署名制御方法、署名制御プログラム、および情報処理装置の実施の形態を詳細に説明する。
(実施の形態にかかる署名制御方法の一実施例)
図1は、実施の形態にかかる署名制御方法の一実施例を示す説明図である。情報処理装置100は、文書情報に付与する署名情報を生成するためのコンピュータである。情報処理装置100は、サーバ、または、PC(Personal Computer)などである。
署名情報は、文書情報の改ざん防止のため、または、文書情報の内容の証明、確認、承認、あるいは、同意などの意思を表明するために利用されている。例えば、ビジネス上、法人が作成し、法人外に出される最終版の文書情報に、法人を代表する署名情報を付与し、法人外に出すことが考えられる。法人外の検証者は、最終版の文書情報に付与された、法人を代表する署名情報を検証し、最終版の文書情報が改ざんされておらず、正当であるのかを確認しようとする。EU圏では、法人を代表する署名情報として、e-Sealと呼ばれる署名情報が利用される傾向がある。
具体的には、法人内で、承認フローに従い、複数の承認者が、文書情報を改版しつつ、文書情報に個人の署名情報を付与していき、文書情報が最終版になった後、サーバが、最終版の文書情報に、法人を代表する署名情報を付与するユースケースが考えられる。かかるユースケースにおいて、サーバは、文書情報が最終版になるまでに、それぞれの承認者によって文書情報に付与されてきた署名情報がすべて正当であることが確認された場合にのみ、文書情報に法人を代表する署名情報を付与するようにする。
しかしながら、かかるユースケースにおいて、不正な文書情報に対して、誤って法人を代表する署名情報が付与されてしまうことがある。不正な文書情報は、例えば、法人に対する攻撃者が作成した文書情報、改ざんされた文書情報、または、承認フローに反し、少なくともいずれかの承認者によって承認されていない文書情報などである。
例えば、かかるユースケースにおいて、最終版の文書情報に、法人を代表する署名情報を付与するサーバがクラッキングされた結果、不正な文書情報に対して、法人を代表する署名情報が付与されてしまう場合がある。この場合、法人外の検証者は、法人を代表する署名情報に基づいて、不正な文書情報を、誤って正当な文書情報であると判断してしまうことになる。また、この場合、法人外の検証者は、承認フローに従い、複数の承認者が、文書情報を承認し、文書情報に個人の署名情報を付与してきた過程を検証することができず、文書情報が正当であるか否かを検証することが困難である。
ここで、不正な文書情報に対して、誤って法人を代表する署名情報が付与されてしまうようなリスクについては、具体的には、総務省が開示する下記非特許文献1に記載された内容を参考にすることができる。
非特許文献1 : 西山 晃、 “日本におけるeシールのユースケースと課題”、 [online]、 2019年3月19日、 Japan Trust Service Forum、 [2020年6月26日検索]、 インターネット< URL :https://www.soumu.go.jp/main_content/000607659.pdf>
このため、承認フローに従い、複数の承認者が、文書情報に個人の署名情報を付与してきた過程を検証可能にし、かつ、正当な文書情報に対してのみ、正しく法人を代表する署名情報を付与可能にすることが望まれる。換言すれば、不正な文書情報に対して、誤って法人を代表する署名情報が付与されてしまうリスクを回避することが望まれる。
これに対し、アグリゲートシグネチャと呼ばれる技術が存在する。アグリゲートシグネチャは、例えば、複数の秘密鍵情報を利用して、それぞれ異なる複数の文書情報に対して付与された複数の署名情報を、単一の署名情報に集約する技術である。ここで、アグリゲートシグネチャの実装方式は、例えば、BLS署名ベースの実装方式、または、格子暗号ベースの実装方式などがある。
このアグリゲートシグネチャを、上述したユースケースに適用し、複数の承認者が、それぞれ異なる版の文書情報に対して付与してきた署名情報を、単一の署名情報に集約しておき、最終版の文書情報に付与するという手法が考えられる。この手法によれば、法人外の検証者は、複数の秘密鍵情報に対応する複数の公開鍵情報に基づいて、単一の署名情報を検証することにより、承認フローに従い、複数の承認者が、文書情報に個人の署名情報を付与してきた過程を検証可能であると考えられる。数学的には、単一の署名情報を検証することが、集約元となる複数の署名情報を検証することに相当する。
一方で、この手法では、複数の秘密鍵情報に対応する複数の公開鍵情報を、法人外の検証者が参照可能に、公開用のストレージ装置に登録しておくことになる。ここで、承認者の数が増加すれば、ストレージ装置に登録しておく公開鍵情報の数も増加することになる。このため、公開鍵情報を管理する際にかかる管理コストの増大化を招くことになる。また、単一の署名情報を検証する際にかかる処理コストの増大化を招くことになる。
そこで、本実施の形態では、署名情報の正当性を検証する際に用いられる公開鍵情報の数の低減化を図ることにより、署名情報の正当性を検証する際にかかる管理コスト、および、処理コストの低減化を図ることができる署名制御方法について説明する。
図1において、情報処理装置100は、署名集約アルゴリズムを有する。署名集約アルゴリズムは、複数の署名情報を集約した1つの集約署名情報を生成する方法を規定する。情報処理装置100は、鍵集約アルゴリズムを有する。鍵集約アルゴリズムは、複数の公開鍵情報を集約した1つの集約公開鍵情報を生成する方法を規定する。
(1-1)情報処理装置100は、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得する。文書情報は、例えば、契約書、または、ソースコードなどといった、複数人によって改版される文書情報である。図1の例では、情報処理装置100は、文書1~3と、文書1~3に対応する署名1~3とを取得する。
(1-2)情報処理装置100は、取得した複数の文書情報に基づいて、取得した複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成する。図1の例では、情報処理装置100は、署名集約アルゴリズムに従って、文書1~3に基づいて、文書1~3に対応する署名1~3を集約した集約署名情報110を生成する。
(1-3)情報処理装置100は、取得した複数の文書情報のそれぞれの文書情報に対応する公開鍵情報に基づいて、それぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する。図1の例では、情報処理装置100は、鍵集約アルゴリズムに従って、公開鍵束120に基づいて、公開鍵束120を集約した集約公開鍵情報121を生成する。
(1-4)情報処理装置100は、生成した集約署名情報を、生成した集約公開鍵情報と、複数の文書情報とに対応付けて出力する。情報処理装置100は、集約署名情報を、集約公開鍵情報と、複数の文書情報との対応関係が特定可能に出力する。集約署名情報を、複数の文書情報に対応付けるとは、例えば、集約署名情報を、最終版の文書情報と、最終版以外の文書情報のハッシュ値とに対応付けることである。
図1の例では、情報処理装置100は、文書1~3と対応付けて、生成した集約署名情報110と、生成した集約公開鍵情報121とを出力する。情報処理装置100は、具体的には、文書1~3と対応付けて、生成した集約署名情報110と、生成した集約公開鍵情報121とを、他のコンピュータで参照可能に出力する。他のコンピュータは、例えば、検証者に対応するコンピュータである。
これにより、情報処理装置100は、検証者に対応するコンピュータで参照する公開鍵情報の数の低減化を図ることができ、公開鍵情報を管理する際にかかる管理コスト、および、公開鍵情報を利用する際にかかる処理コストの低減化を図ることができる。また、情報処理装置100は、検証者側で、集約署名情報に基づいて、集約署名情報の集約元となる複数の署名情報が生成された経過を検証可能にすることができる。このため、情報処理装置100は、検証者側で、不正な文書情報を、誤って正当な文書情報であると判断してしまう事態を防止することができる。
(1-5)他のコンピュータは、1鍵検証アルゴリズムを有する。他のコンピュータは、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを受け付ける。他のコンピュータは、例えば、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを、情報処理装置100から受信する。
(1-6)他のコンピュータは、複数の文書情報と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証する。他のコンピュータは、例えば、複数の文書情報のそれぞれの文書情報に対応するハッシュ値を取得する。そして、他のコンピュータは、例えば、1鍵検証アルゴリズムに従って、取得したハッシュ値と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証する。
これにより、他のコンピュータは、集約署名情報に基づいて、集約署名情報の集約元となる複数の署名情報が生成された経過を検証することができる。このため、他のコンピュータは、不正な文書情報を、誤って正当な文書情報であると判断してしまう事態を回避することができる。
ここでは、情報処理装置100が、それぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する場合について説明したが、これに限らない。例えば、情報処理装置100とは別に、それぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する生成装置が存在する場合があってもよい。この場合、生成装置が、検証者側に、集約公開鍵情報を提供する。情報処理装置100は、生成した集約署名情報を、集約公開鍵情報と対応することを特定可能に、検証者側に提供する。
(署名制御システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、署名制御システム200の一例について説明する。
図2は、署名制御システム200の一例を示す説明図である。図2において、署名制御システム200は、作成者に対応する署名側端末201と、承認者に対応する署名側端末202と、決裁者に対応する署名側端末203と、プライベートCAサーバ204と、文書管理サーバ205とを含む。さらに、署名制御システム200は、パブリックCAサーバ206と、検証者に対応する検証側端末207とを含む。
署名制御システム200において、それぞれの署名側端末201~203と、プライベートCAサーバ204とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
また、署名制御システム200において、それぞれの署名側端末201~203と、文書管理サーバ205とは、有線または無線のネットワーク210を介して接続される。また、署名制御システム200において、プライベートCAサーバ204と、パブリックCAサーバ206とは、有線または無線のネットワーク210を介して接続される。
また、署名制御システム200において、文書管理サーバ205と、検証側端末207とは、有線または無線のネットワーク210を介して接続される。また、署名制御システム200において、パブリックCAサーバ206と、検証側端末207とは、有線または無線のネットワーク210を介して接続される。
署名側端末201は、文書情報を作成する作成者によって用いられるコンピュータである。署名側端末201は、作成者の操作入力に基づき、新たな文書情報を生成する。署名側端末201は、秘密鍵情報と公開鍵情報との鍵情報ペアを生成する。署名側端末201は、生成した鍵情報ペアの秘密鍵情報に基づいて、生成した新たな文書情報に付与する署名情報を生成する。署名側端末201は、生成した新たな文書情報と、生成した署名情報とを対応付けて、文書管理サーバ205に送信する。署名側端末201は、生成した鍵情報ペアの公開鍵情報を、プライベートCAサーバ204に送信する。署名側端末201は、例えば、サーバ、PC、タブレット端末、または、スマートフォンなどである。
署名側端末202は、文書情報を承認する承認者によって用いられるコンピュータである。署名側端末202は、承認者の操作入力に基づき、署名情報が付与された文書情報を、文書管理サーバ205から取得する。署名側端末202は、承認者の操作入力に基づき、取得した文書情報を改版し、新たな文書情報を生成する。署名側端末202は、秘密鍵情報と公開鍵情報との鍵情報ペアを生成する。署名側端末202は、生成した鍵情報ペアの秘密鍵情報に基づいて、生成した新たな文書情報に付与する署名情報を生成する。署名側端末202は、生成した新たな文書情報と、生成した署名情報とを対応付けて、文書管理サーバ205に送信する。署名側端末202は、生成した鍵情報ペアの公開鍵情報を、プライベートCAサーバ204に送信する。署名側端末202は、例えば、サーバ、PC、タブレット端末、または、スマートフォンなどである。
署名側端末203は、文書情報を決裁する決裁者によって用いられるコンピュータである。署名側端末203は、決裁者の操作入力に基づき、署名情報が付与された文書情報を、文書管理サーバ205から取得する。署名側端末203は、決裁者の操作入力に基づき、取得した文書情報を改版し、新たな文書情報を生成する。署名側端末203は、秘密鍵情報と公開鍵情報との鍵情報ペアを生成する。署名側端末203は、生成した鍵情報ペアの秘密鍵情報に基づいて、生成した新たな文書情報に付与する署名情報を生成する。署名側端末203は、生成した新たな文書情報と、生成した署名情報とを対応付けて、文書管理サーバ205に送信する。署名側端末203は、生成した鍵情報ペアの公開鍵情報を、プライベートCAサーバ204に送信する。署名側端末203は、例えば、サーバ、PC、タブレット端末、または、スマートフォンなどである。
プライベートCAサーバ204は、公開鍵情報を管理するコンピュータである。プライベートCAサーバ204は、図1に示した情報処理装置100としての機能を有する。プライベートCAサーバ204は、複数の公開鍵情報を集約した集約公開鍵情報を生成する。プライベートCAサーバ204は、生成した集約公開鍵情報を、パブリックCAサーバ206に送信する。プライベートCAサーバ204は、例えば、サーバ、または、PCなどである。
文書管理サーバ205は、文書情報と対応付けられた署名情報を管理するコンピュータである。文書管理サーバ205は、図1に示した情報処理装置100としての機能を有する。文書管理サーバ205は、複数の署名情報を集約した集約署名情報を生成する。文書管理サーバ205は、生成した集約署名情報を、図4に後述する制御情報管理テーブル400に記憶する。文書管理サーバ205は、生成した集約署名情報を、検証側端末207に送信する。文書管理サーバ205は、例えば、サーバ、または、PCなどである。
パブリックCAサーバ206は、集約公開鍵情報を管理するコンピュータである。パブリックCAサーバ206は、集約公開鍵情報を、プライベートCAサーバ204から受信する。パブリックCAサーバ206は、受信した集約公開鍵情報を、検証側端末207に送信する。パブリックCAサーバ206は、例えば、サーバ、または、PCなどである。
検証側端末207は、検証者によって用いられるコンピュータである。検証側端末207は、集約署名情報を、文書管理サーバ205から受信する。検証側端末207は、集約公開鍵情報を、パブリックCAサーバ206から受信する。検証側端末207は、受信した集約公開鍵情報に基づいて、受信した集約署名情報が正当であるか否かを検証する。検証側端末207は、例えば、サーバ、または、PCなどである。
ここでは、署名制御システム200が、承認者に対応する署名側端末202を1つ含む場合について説明したが、これに限らない。例えば、署名制御システム200が、承認者に対応する署名側端末202を複数含む場合があってもよい。ここでは、プライベートCAサーバ204と、文書管理サーバ205とが異なる装置である場合について説明したが、これに限らない。例えば、プライベートCAサーバ204と、文書管理サーバ205とが一体である場合があってもよい。
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、プライベートCAサーバ204、および、文書管理サーバ205に適用される情報処理装置100のハードウェア構成例について説明する。
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(制御情報管理テーブル400の記憶内容)
次に、図4を用いて、制御情報管理テーブル400の記憶内容の一例について説明する。制御情報管理テーブル400は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図4は、制御情報管理テーブル400の記憶内容の一例を示す説明図である。図4に示すように、制御情報管理テーブル400は、署名者と、文書情報と、署名対象と、秘密鍵と、公開鍵と、署名情報とのフィールドを有する。制御情報管理テーブル400は、署名者ごとに各フィールドに情報を設定することにより、制御情報がレコード400-aとして記憶される。aは、任意の整数である。
署名者のフィールドには、文書情報に署名情報を付与する署名者を識別する識別情報が設定される。署名者は、例えば、法人を含む。文書情報のフィールドには、署名情報が付与される文書情報が設定される。文書情報は、文責者、または、決裁者を示す承認フロー情報を含んでもよい。文責者は、例えば、作成者、または、承認者である。承認フロー情報は、文書情報に付与された集約署名情報の正当性が、いずれの公開鍵情報を集約した集約公開鍵情報に基づき検証可能であるのかを特定可能にする。署名対象のフィールドには、文書情報に対応するハッシュ値が設定される。秘密鍵のフィールドには、署名情報を生成する際に用いる秘密鍵情報が設定される。公開鍵のフィールドには、秘密鍵情報に対応する公開鍵情報が設定される。署名情報のフィールドには、文書情報に付与された署名情報が設定される。
(検証側端末207のハードウェア構成例)
次に、図5を用いて、検証側端末207のハードウェア構成例について説明する。
図5は、検証側端末207のハードウェア構成例を示すブロック図である。図5において、検証側端末207は、CPU501と、メモリ502と、ネットワークI/F503と、記録媒体I/F504と、記録媒体505とを有する。また、各構成部は、バス500によってそれぞれ接続される。
ここで、CPU501は、検証側端末207の全体の制御を司る。メモリ502は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU501のワークエリアとして使用される。メモリ502に記憶されるプログラムは、CPU501にロードされることにより、コーディングされている処理をCPU501に実行させる。
ネットワークI/F503は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F503は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F503は、例えば、モデムやLANアダプタなどである。
記録媒体I/F504は、CPU501の制御に従って記録媒体505に対するデータのリード/ライトを制御する。記録媒体I/F504は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体505は、記録媒体I/F504の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体505は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体505は、検証側端末207から着脱可能であってもよい。
検証側端末207は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、検証側端末207は、記録媒体I/F504や記録媒体505を複数有していてもよい。また、検証側端末207は、記録媒体I/F504や記録媒体505を有していなくてもよい。
(署名制御システム200の機能的構成例)
次に、図6を用いて、署名制御システム200の機能的構成例について説明する。
図6は、署名制御システム200の機能的構成例を示すブロック図である。署名制御システム200において、情報処理装置100は、第1記憶部600と、第1取得部601と、第1生成部602と、修正部603と、解析部604と、第2生成部605と、第1出力部606とを含む。
第1記憶部600は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、第1記憶部600が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、第1記憶部600が、情報処理装置100とは異なる装置に含まれ、第1記憶部600の記憶内容が情報処理装置100から参照可能である場合があってもよい。
第1取得部601~第1出力部606は、情報処理装置100の制御部の一例として機能する。第1取得部601~第1出力部606は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
第1記憶部600は、各機能部の処理において参照され、または更新される各種情報を記憶する。第1記憶部600は、複数の文書情報を記憶する。文書情報は、例えば、契約書、または、ソースコードなどといった、複数人によって改版される文書情報である。複数の文書情報は、例えば、第1の文書の複数の版のそれぞれの版を示す文書情報を含む。
第1記憶部600は、署名者ごとに鍵ペアを記憶する。鍵ペアは、秘密鍵情報と公開鍵情報とを含む。署名者は、例えば、法人を含む。第1記憶部600は、所定の承認フローに従って、所定の署名者ごとに鍵ペアを記憶する。第1記憶部600が記憶する鍵ペアの公開鍵情報は、第1記憶部600が記憶するいずれの文書情報にも対応しない公開鍵情報を含んでもよい。
第1記憶部600は、文書情報に対応付けて、文書情報に付与された署名情報を記憶する。第1記憶部600は、例えば、予め定められた署名者ごとに、文書情報と、公開鍵情報と、署名情報とを対応付けて記憶する。第1記憶部600は、具体的には、図4に示した制御情報管理テーブル400を記憶する。
第1取得部601は、各機能部の処理に用いられる各種情報を取得する。第1取得部601は、取得した各種情報を、第1記憶部600に記憶し、または、各機能部に出力する。また、第1取得部601は、第1記憶部600に記憶しておいた各種情報を、各機能部に出力してもよい。第1取得部601は、例えば、利用者の操作入力に基づき、各種情報を取得する。第1取得部601は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
第1取得部601は、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得する。第1取得部601は、例えば、文書情報と、文書情報に対応する署名情報とを、それぞれの署名側端末201~203から収集することにより、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得する。第1取得部601は、例えば、利用者の操作入力に基づき、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得してもよい。
第1取得部601は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第1取得部601は、例えば、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得したことを、第1生成部602~第2生成部605の処理を開始する開始トリガーとして受け付けてもよい。
第1生成部602は、取得した複数の文書情報に基づいて、取得した複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成する。
第1生成部602は、取得した複数の文書情報のそれぞれの文書情報に対応するハッシュ値に基づいて、集約署名情報を生成する。第1生成部602は、例えば、シェノア署名アルゴリズムを利用する。第1生成部602が生成した集約署名情報の正当性は、取得した複数の文書情報と、第1生成部602が生成した集約署名情報と、第2生成部605が生成した集約公開鍵情報とに基づいて検証可能になる。これにより、第1生成部602は、検証者側で、文書情報の正当性を検証可能にする集約署名情報を得ることができる。
第1生成部602は、安全素数と、取得した複数の文書情報のそれぞれの文書情報に対応するハッシュ値とに基づいて、集約署名情報を生成する。第1生成部602は、例えば、安全素数と、取得した複数の文書情報のそれぞれの文書情報に対応するハッシュ値とに基づいて、パラメータを設定する。そして、第1生成部602は、設定したパラメータに基づいて、集約署名情報を生成する。これにより、第1生成部602は、集約署名情報を生成する際にかかる処理量の低減化を図ることができる。
第1生成部602は、シードと、前記第1の文書のそれぞれの版に対応するハッシュ値とから形成されるハッシュチェーンに基づいて、チェックハッシュ値を生成する。これにより、第1生成部602は、検証者側で、文書情報の正当性をより精度よく検証可能にするチェックハッシュ値を得ることができる。
第2生成部605は、取得した複数の文書情報のそれぞれの文書情報に対応する公開鍵情報に基づいて、それぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する。文書情報に対応する公開鍵情報は、文書情報に対応する署名情報を生成する際に用いられた秘密鍵情報に対応する公開鍵情報である。これにより、第2生成部605は、検証者側で、集約署名情報の正当性を検証する際に用いられる公開鍵情報の数の低減化を図ることができ、集約署名情報の正当性を検証する際にかかるコストの低減化を図ることができる。
第2生成部605は、取得した複数の文書情報のそれぞれの文書情報に対応する公開鍵情報と、取得した複数の文書情報のいずれの文書情報にも対応しない公開鍵情報とを集約した集約公開鍵情報を生成する。第2生成部605は、例えば、第1記憶部600が、いずれの文書情報にも対応しない公開鍵情報を記憶していても、第1記憶部600が記憶する公開鍵情報を集約した集約公開鍵情報を生成する。これにより、第2生成部605は、所定の承認フローに従って、集約公開鍵情報を得ることができる。
修正部603は、いずれの文書情報にも対応しない公開鍵情報に基づいて、生成した集約署名情報を修正した修正署名情報を生成する。これにより、修正部603は、所定の承認フローに反して、いずれかの秘密鍵情報に基づく署名情報が生成されていなくても、集約公開鍵情報に基づいて検証可能な修正署名情報を得ることができる。
解析部604は、複数の文書情報と対応付けて出力した集約署名情報が正当ではないと判定された場合、集約元となる複数の署名情報のいずれの署名情報が正当ではないのかを特定する。解析部604は、例えば、集約元となる複数の署名情報のそれぞれの署名情報が正当であるか否かを検証する。
解析部604は、例えば、集約署名情報が正当ではないと判定された場合、集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を取得する。そして、解析部604は、取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証する。これにより、解析部604は、集約元となる複数の署名情報のいずれの署名情報が正当ではないのかを特定することができ、検証者側で把握可能にすることができる。
さらに、例えば、取得した2つの集約署名情報の少なくともいずれかの集約署名情報が正当ではないと判定された場合が考えられる。この場合、解析部604は、例えば、正当ではないと判定されたいずれかの集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を新たに取得する。そして、解析部604は、新たに取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証する。これにより、解析部604は、集約元となる複数の署名情報のいずれの署名情報が正当ではないのかを特定することができ、検証者側で把握可能にすることができる。
第1出力部606は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、第1出力部606は、少なくともいずれかの機能部の処理結果を利用者に通知可能にすることができる。
第1出力部606は、生成した集約署名情報を出力する。第1出力部606は、例えば、承認フローを示し、集約公開鍵情報を特定可能にする情報と共に、生成した集約署名情報を、複数の文書情報に対応付けて、検証者宛てに出力する。これにより、第1出力部606は、検証者側で、文書情報の正当性を検証可能にすることができる。
第1出力部606は、生成した集約公開鍵情報を出力する。第1出力部606は、例えば、生成した集約公開鍵情報を、検証者宛てに出力する。第1出力部606は、具体的には、生成した集約公開鍵情報を、検証者が参照可能にパブリックCAサーバ206に登録する。これにより、第1出力部606は、検証者側で、文書情報の正当性を検証可能にすることができる。
第1出力部606は、生成した集約署名情報を、生成した集約公開鍵情報と、複数の文書情報とに対応付けて出力する。第1出力部606は、例えば、生成した集約署名情報を、生成した集約公開鍵情報と、取得した複数の文書情報とに対応付けて、取得した複数の文書情報についての検証者宛てに出力する。集約署名情報は、例えば、複数の文書情報の最終版の文書情報と、最終版以外の文書情報に対応するハッシュ値と対応付けられることにより、複数の文書情報に対応付けられる。集約署名情報は、例えば、集約署名情報と対応付けられた最終版の文書情報に含まれる文責者および決裁者を識別する情報により、集約公開鍵情報と対応付けられる。これにより、第1出力部606は、検証者側で、文書情報の正当性を検証可能にすることができる。
第1出力部606は、取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を出力する。第1出力部606は、例えば、取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を、利用者が参照可能に出力する。これにより、第1出力部606は、利用者が、いずれの署名情報が正当ではなく、いずれの承認者による承認行為に問題があるのかを把握可能にすることができる。
第1出力部606は、生成した修正署名情報を出力する。第1出力部606は、例えば、承認フローを示し、集約公開鍵情報を特定可能にする情報と共に、生成した修正署名情報を、複数の文書情報に対応付けて、検証者宛てに出力する。これにより、第1出力部606は、検証者側で、文書情報の正当性を検証可能にすることができる。
第1出力部606は、生成した修正署名情報を、生成した集約公開鍵情報と、複数の文書情報とに対応付けて出力する。第1出力部606は、例えば、生成した修正署名情報を、生成した集約公開鍵情報と、複数の文書情報とに対応付けて、検証者宛てに出力する。これにより、修正部603は、所定の承認フローに反して、いずれかの秘密鍵情報に基づく署名情報が生成されていなくても、検証者側で、文書情報の正当性を検証可能にすることができる。
第1出力部606は、例えば、チェックハッシュ値を、集約署名情報に対応付けて出力する。これにより、第1出力部606は、検証者側で、文書情報の正当性をより精度よく検証可能にすることができる。
署名制御システム200において、検証側端末207は、第2記憶部610と、第2取得部611と、検証部612と、第2出力部613とを含む。
第2記憶部610は、例えば、図5に示したメモリ502や記録媒体505などの記憶領域によって実現される。以下では、第2記憶部610が、検証側端末207に含まれる場合について説明するが、これに限らない。例えば、第2記憶部610が、検証側端末207とは異なる装置に含まれ、第2記憶部610の記憶内容が検証側端末207から参照可能である場合があってもよい。
第2取得部611~第2出力部613は、検証側端末207の制御部の一例として機能する。第2取得部611~第2出力部613は、具体的には、例えば、図5に示したメモリ502や記録媒体505などの記憶領域に記憶されたプログラムをCPU501に実行させることにより、または、ネットワークI/F503により、その機能を実現する。各機能部の処理結果は、例えば、図5に示したメモリ502や記録媒体505などの記憶領域に記憶される。
第2記憶部610は、各機能部の処理において参照され、または更新される各種情報を記憶する。第2記憶部610は、複数の文書情報に対応付けられた、複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報と、複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報とを記憶する。第2記憶部610は、例えば、複数の文書情報のうちの最終版の文書情報と、複数の文書情報のうちの最終版以外の文書情報に対応するハッシュ値との組み合わせに対応付けられた、集約署名情報と、集約公開鍵情報とを記憶する。
第2取得部611は、各機能部の処理に用いられる各種情報を取得する。第2取得部611は、取得した各種情報を、記憶部に記憶し、または、各機能部に出力する。また、第2取得部611は、記憶部に記憶しておいた各種情報を、各機能部に出力してもよい。第2取得部611は、例えば、利用者の操作入力に基づき、各種情報を取得する。第2取得部611は、例えば、検証側端末207とは異なる装置から、各種情報を受信してもよい。
第2取得部611は、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを取得する。第2取得部611は、例えば、集約署名情報を生成する装置から、複数の文書情報に対応付けられた集約署名情報を取得する。第2取得部611は、例えば、集約公開鍵情報を生成する装置から、複数の文書情報に対応付けられた集約公開鍵情報を取得する。
第2記憶部610は、例えば、最終版の文書情報と、最終版以外の文書情報に対応するハッシュ値との組み合わせに対応付けられた、集約署名情報と、集約公開鍵情報とを、情報処理装置100から受信することにより取得する。第2記憶部610は、例えば、検証者の操作入力に基づき、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを受け付けてもよい。
第2取得部611は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第2取得部611は、例えば、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを取得したことを、検証部612の処理を開始する開始トリガーとして受け付ける。
検証部612は、複数の文書情報と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証する。検証部612は、例えば、複数の文書情報のそれぞれの文書情報に対応するハッシュ値と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証する。これにより、検証部612は、集約署名情報の正当性を検証することができ、文書情報の正当性を検証することができる。
第2出力部613は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F503による外部装置への送信、または、メモリ502や記録媒体505などの記憶領域への記憶である。これにより、第2出力部613は、少なくともいずれかの機能部の処理結果を利用者に通知可能にすることができる。第2出力部613は、例えば、検証部612が検証した結果を出力する。
ここでは、情報処理装置100が、検証部612を有さない場合について説明したが、これに限らない。例えば、情報処理装置100が、検証部612を有する場合があってもよい。また、ここでは、情報処理装置100が、第2生成部605を有する場合について説明したが、これに限らない。例えば、情報処理装置100が、第2生成部605を有さず、第2生成部605を有する他のコンピュータが存在する場合があってもよい。
(署名制御システム200の具体的な機能的構成例)
次に、図7~図11を用いて、署名制御システム200の具体的な機能的構成例について説明する。例えば、図7~図11を用いて、署名制御システム200に含まれる各種装置の具体的な機能的構成例について説明する。
まず、図7を用いて、作成者に対応する署名側端末201の具体的な機能的構成例について説明する。
図7は、作成者に対応する署名側端末201の具体的な機能的構成例を示すブロック図である。署名制御システム200において、作成者に対応する署名側端末201は、鍵ペア生成部700と、データ受信部701と、シード値生成部702と、文書作成部703と、ハッシュ値計算部704と、署名生成部705と、データ送信部706とを含む。
また、作成者に対応する署名側端末201は、秘密鍵記憶部710と、公開鍵記憶部720とを含む。秘密鍵記憶部710は、署名側端末201で生成された秘密鍵を記憶する。公開鍵記憶部720は、署名側端末201で生成された公開鍵を記憶する。
鍵ペア生成部700は、秘密鍵と公開鍵との鍵ペアを生成し、秘密鍵を秘密鍵記憶部710に記憶し、公開鍵を公開鍵記憶部720に記憶する。データ受信部701は、メッセージを生成するためのデータを受信する。シード値生成部702は、シードを生成する。文書作成部703は、受信したデータに基づいて、メッセージを生成する。ハッシュ値計算部704は、生成したメッセージに対応するハッシュ値を計算する。署名生成部705は、計算したハッシュ値に基づいて、メッセージに付与する署名を生成する。
データ送信部706は、生成した署名を付与した署名付きメッセージを、文書管理サーバ205に送信する。文書管理サーバ205では、図11に後述する署名付き文書記憶部1110に、生成した署名を付与した署名付きメッセージが記憶される。データ送信部706は、公開鍵を、プライベートCAサーバ204に送信する。プライベートCAサーバ204では、図10に後述する個人公開鍵記憶部1010に、公開鍵が記憶される。
次に、図8を用いて、承認者に対応する署名側端末202の具体的な機能的構成例について説明する。
図8は、承認者に対応する署名側端末202の具体的な機能的構成例を示すブロック図である。署名制御システム200において、承認者に対応する署名側端末202は、鍵ペア生成部800と、データ受信部801と、文書作成部802と、ハッシュ値計算部803と、署名生成部804と、データ送信部805とを含む。
また、承認者に対応する署名側端末202は、秘密鍵記憶部810と、公開鍵記憶部820とを含む。秘密鍵記憶部810は、署名側端末202で生成された秘密鍵を記憶する。公開鍵記憶部820は、署名側端末202で生成された公開鍵を記憶する。
鍵ペア生成部800は、秘密鍵と公開鍵との鍵ペアを生成し、秘密鍵を秘密鍵記憶部810に記憶し、公開鍵を公開鍵記憶部820に記憶する。データ受信部801は、署名付きメッセージを文書管理サーバ205から受信する。データ受信部801は、受信した署名付きメッセージを改版し、新たなメッセージを生成するためのデータを受信する。文書作成部802は、受信した署名付きメッセージと、受信したデータとに基づいて、新たなメッセージを生成する。ハッシュ値計算部803は、生成したメッセージに対応するハッシュ値を計算する。署名生成部804は、計算したハッシュ値に基づいて、メッセージに付与する署名を生成する。
データ送信部805は、生成した署名を付与した署名付きメッセージを、文書管理サーバ205に送信する。文書管理サーバ205では、図11に後述する署名付き文書記憶部1110に、生成した署名を付与した署名付きメッセージが記憶される。データ送信部805は、公開鍵を、プライベートCAサーバ204に送信する。プライベートCAサーバ204では、図10に後述する個人公開鍵記憶部1010に、公開鍵が記憶される。
また、決裁者に対応する署名側端末203の具体的な機能的構成例は、例えば、承認者に対応する署名側端末202の具体的な機能的構成例と同様である。
次に、図9を用いて、検証側端末207の具体的な機能的構成例について説明する。
図9は、検証側端末207の具体的な機能的構成例を示すブロック図である。署名制御システム200において、検証側端末207は、データ受信部901と、ハッシュチェーン検証部902と、集約署名検証部903とを含む。また、検証側端末207は、集約署名付き文書記憶部910を含む。一方で、パブリックCAサーバ206は、組織公開鍵記憶部900を含む。組織公開鍵記憶部900は、集約公開鍵を記憶する。
集約署名付き文書記憶部910は、集約署名付きメッセージを記憶する。集約署名付きメッセージは、例えば、文書管理サーバ205から送信される。データ受信部901は、集約署名の正当性を検証する際に用いられる集約公開鍵を、パブリックCAサーバ206から受信する。ハッシュチェーン検証部902は、集約署名付きメッセージに付与されたチェックハッシュ値に基づいて、集約署名付きメッセージに対応するハッシュチェーンの正当性を検証する。ハッシュチェーン検証部902は、集約署名付きメッセージに対応するハッシュチェーンが正当であれば、集約署名付きメッセージを集約署名検証部903に渡す。集約署名検証部903は、集約公開鍵に基づいて、集約署名付きメッセージに付与された集約署名の正当性を検証する。
次に、図10を用いて、プライベートCAサーバ204の具体的な機能的構成例について説明する。
図10は、プライベートCAサーバ204の具体的な機能的構成例を示すブロック図である。署名制御システム200において、プライベートCAサーバ204は、集約公開鍵生成部1001と、公開鍵登録申請部1002とを含む。また、プライベートCAサーバ204は、個人公開鍵記憶部1010を含む。個人公開鍵記憶部1010は、それぞれの署名側端末201~203で生成された公開鍵を記憶する。
集約公開鍵生成部1001は、個人公開鍵記憶部1010に記憶された、それぞれの署名側端末201~203で生成された公開鍵を集約し、集約公開鍵を生成する。公開鍵登録申請部1002は、生成した集約公開鍵を、パブリックCAサーバ206に送信する。パブリックCAサーバ206では、図9に示した組織公開鍵記憶部900に、生成した集約公開鍵が記憶される。
次に、図11を用いて、文書管理サーバ205の具体的な機能的構成例について説明する。
図11は、文書管理サーバ205の具体的な機能的構成例を示す説明図である。署名制御システム200において、文書管理サーバ205は、集約署名生成部1101と、データ送信部1102とを含む。また、文書管理サーバ205は、署名付き文書記憶部1110を含む。署名付き文書記憶部1110は、それぞれの署名側端末201~203で生成された署名付きメッセージを記憶する。
集約署名生成部1101は、署名付き文書記憶部1110に記憶された、署名付きメッセージに付与された署名を集約し、集約署名を生成する。集約署名生成部1101は、生成した集約署名を、最終版のメッセージに付与し、集約署名付きメッセージを生成する。データ送信部1102は、生成した集約署名付きメッセージを、検証側端末207に送信する。検証側端末207では、図9に示した集約署名付き文書記憶部910に、生成した集約署名付きメッセージが記憶される。
(署名制御システム200の動作の一例)
次に、図12を用いて、署名制御システム200の動作の一例について説明する。
図12は、署名制御システム200の動作の一例を示す説明図である。図12において、位数は、pとする。秘密鍵を生成する際、または、署名を生成する際などに用いられる剰余群は、Zp=Z/Zpとする。公開鍵を生成する際、または、署名を生成する際などに用いられる値は、gとする。暗号学的ハッシュ関数は、H(x)とする。H(x)は、例えば、SHA256、または、SHA-3などのSecure Hash Algorithmを利用する。
署名側端末201~203は、剰余群Zpから一様ランダムにxを選択し、秘密鍵に設定する。署名側端末201~203は、X:=gxを、秘密鍵xに対応する公開鍵に設定する。署名側端末201~203は、メッセージmに対して、秘密鍵xに基づいて署名を生成する。署名側端末201~203は、例えば、剰余群Zpから一様ランダムにrを選択し、署名要素R:=grを設定する。
署名側端末201~203は、例えば、メッセージハッシュc:=H(R||m)を設定する。署名側端末201~203は、署名要素s:=r+xc(mod(p-1))を設定する。署名側端末201~203は、署名要素s,Rを、メッセージmに対する署名(s,R)に設定し、文書管理サーバ205に送信する。
図12の例では、メッセージm1,m2,m3が存在するとする。文書管理サーバ205は、メッセージm1,m2,m3と、それぞれメッセージm1,m2,m3に対応する3つの署名(s1,R1),(s2,R2),(s3,R3)を有する。
文書管理サーバ205は、3つの署名(s1,R1),(s2,R2),(s3,R3)を単一の集約署名(s’,R’)に集約する。文書管理サーバ205は、例えば、補助パラメータd={di=(Π[j∈[1,2,3]-[i]]cj)}={d1=c2×c3,d2=c3×c1,d3=c1×c2}(mod(p-1))を設定する。文書管理サーバ205は、例えば、署名要素s’:=s1×d1+s2×d2+s3×d3(mod(p-1))を設定する。文書管理サーバ205は、例えば、署名要素R’:=R1
(d1)×R2
(d2)×R3
(d3)を設定する。文書管理サーバ205は、単一の集約署名(s’,R’)を設定する。
文書管理サーバ205は、3つの公開鍵X1,X2,X3を単一の集約公開鍵X’に集約する。文書管理サーバ205は、例えば、単一の集約公開鍵X’=X1×X2×X3を設定する。これにより、文書管理サーバ205は、単一の集約署名(s’,R’)の正当性を検証する際に、3つの公開鍵X1,X2,X3を用いずに済ませることができ、単一の集約公開鍵X’を用いればよくすることができる。このため、文書管理サーバ205は、単一の集約署名(s’,R’)の正当性を検証する際に用いられる公開鍵の数の低減化を図り、単一の集約署名(s’,R’)の正当性を検証する際にかかるコストの低減化を図ることができる。
検証側端末207は、集約公開鍵X’に基づいて、集約署名(s’,R’)の正当性を検証する。検証側端末207は、メッセージハッシュc1:=H(R1||m1),c2:=H(R2||m2),c3:=H(R3||m3)を設定する。検証側端末207は、c’:=c1×c2×c3を算出し、g(s’)とR’×(X’)(c’)が一致するか否
かを判定する。検証側端末207は、一致すると判定した場合、単一の集約署名(s’,R’)が正当であると判定する。一方で、検証側端末207は、一致しないと判定した場合、単一の集約署名(s’,R’)が正当ではないと判定する。
これにより、検証側端末207は、単一の集約署名(s’,R’)の正当性を検証し、メッセージm1,m2,m3が正当であるか否かを判断することができる。また、検証側端末207は、単一の集約署名(s’,R’)の正当性を検証し、3つの署名(s1,R1),(s2,R2),(s3,R3)が正当であるか否かを判断することができる。このため、検証側端末207は、セキュリティの向上を図ることができる。検証側端末207は、署名の数に依らず、単一の集約公開鍵X’に基づいて、単一の集約署名(s’,R’)の正当性を検証することができ、検証にかかる処理量の低減化を図ることができる。
(署名制御システム200の動作の具体例)
次に、図13~図15を用いて、署名制御システム200の動作の具体例について説明する。
図13~図15は、署名制御システム200の動作の具体例を示す説明図である。具体例では、署名制御システム200は、複数版の文書のうち、最終版以外の文書を検証者から秘匿しつつ、最終版の文書の内容に基づいて、複数版の文書が生成された過程を検証可能とする。
図13において、作成者が、文書第1版を作成する。承認者が、文書第1版に基づく文書第2版を作成する。決裁者が、文書第2版に基づく文書第3版を作成する。文書第3版が、文書最終版として確定される。このように、文書が段階的に修正される状況である。
文書管理サーバ205は、作成者により署名側端末201で生成された、文書第1版と、文書第1版に対応する署名1:=(s1,R1)とを取得する。文書管理サーバ205は、承認者により署名側端末202で生成された、文書第1版に基づく文書第2版と、文書第2版に対応する署名2:=(s2,R2)とを取得する。文書管理サーバ205は、決裁者により署名側端末203で生成された、文書第2版に基づく文書第3版と、文書第3版に対応する署名3:=(s3,R3)とを取得する。文書管理サーバ205は、文書第3版に基づく文書最終版を取得する。
文書管理サーバ205は、署名1:=(s1,R1)と、署名2:=(s2,R2)と、署名3:=(s3,R3)とを、単一の集約署名(s’,R’)に集約する。単一の集約署名(s’,R’)は、法人を代表するe-Sealとなる。
文書管理サーバ205は、例えば、補助パラメータd={di=(Π[j∈[1,2,3]-[i]]cj)}={d1=c2×c3,d2=c3×c1,d3=c1×c2}(mod(p-1))を設定する。補助パラメータdを設定する一例については、具体的には、図17および図18を用いて後述する。
文書管理サーバ205は、例えば、署名要素s’:=s1×d1+s2×d2+s3×d3(mod(p-1))を設定する。文書管理サーバ205は、例えば、署名要素R’:=R1
(d1)×R2
(d2)×R3
(d3)を設定する。文書管理サーバ205は、単一の集約署名(s’,R’)を生成する。
プライベートCAサーバ204は、公開鍵X1,X2,X3を集約し、集約公開鍵X’=X1・X2・X3を生成する。プライベートCAサーバ204は、集約公開鍵X’を、社外に存在するパブリックCAサーバ206に送信する。ここで、一旦、図14の説明に移行する。
図14において、文書管理サーバ205は、ハッシュチェーン1400を生成し、チェックハッシュ値chkhashを生成する。文書管理サーバ205は、例えば、シード値と、文書各版のメッセージハッシュhsiとから形成されるハッシュチェーン1400に基づいて、チェックハッシュ値chkhashを生成する。
文書管理サーバ205は、具体的には、ハッシュ関数を利用して、シード値と、文書第1版のメッセージハッシュhs1とに基づいて、第1ハッシュ値を算出する。文書管理サーバ205は、具体的には、ハッシュ関数を利用して、算出した第1ハッシュ値と、文書第2版のメッセージハッシュhs2とに基づいて、第2ハッシュ値を算出する。文書管理サーバ205は、具体的には、ハッシュ関数を利用して、算出した第2ハッシュ値と、文書第3版のメッセージハッシュhs3とに基づいて、第3ハッシュ値を算出する。
文書管理サーバ205は、第3ハッシュ値を、チェックハッシュ値chkhashに設定する。文書管理サーバ205は、シード値と、文書第1版のメッセージハッシュhs1と、文書第2版のメッセージハッシュhs2と、文書最終版=文書第3版と、チェックハッシュ値chkhashとの組み合わせを、検証用情報として纏めておく。
図13の説明に戻り、文書管理サーバ205は、纏められた検証用情報と、生成された単一の集約署名(s’,R’)とを対応付けて、検証側端末207に送信する。検証側端末207は、纏められた検証用情報と、生成された単一の集約署名(s’,R’)とを受信する。検証側端末207は、生成された集約公開鍵X’を、パブリックCAサーバ206から取得する。ここで、一旦、図15の説明に移行する。
図15において、検証側端末207は、ハッシュチェーン1500を生成し、チェックハッシュ値chkhashを生成する。検証側端末207は、例えば、シード値と、文書第1版のメッセージハッシュhs1と、文書第2版のメッセージハッシュhs2と、文書最終版とから形成されるハッシュチェーン1500に基づいて、チェックハッシュ値chkhashを生成する。
検証側端末207は、具体的には、ハッシュ関数を利用して、シード値と、文書第1版のメッセージハッシュhs1とに基づいて、第1ハッシュ値を算出する。検証側端末207は、具体的には、ハッシュ関数を利用して、算出した第1ハッシュ値と、文書第2版のメッセージハッシュhs2とに基づいて、第2ハッシュ値を算出する。検証側端末207は、具体的には、ハッシュ関数を利用して、文書最終版=文書第3版のメッセージハッシュhs3を算出する。検証側端末207は、具体的には、ハッシュ関数を利用して、算出した第2ハッシュ値と、文書第3版のメッセージハッシュhs3とに基づいて、第3ハッシュ値を算出する。
検証側端末207は、第3ハッシュ値を、チェックハッシュ値chkhashに設定する。検証側端末207は、設定したチェックハッシュ値chkhashが、受信した検証用情報に含まれるチェックハッシュ値chkhashと一致するか否かを判定する。ここで、検証側端末207は、一致すると判定した場合、ハッシュチェーン1500が正当であると判定する。一方で、検証側端末207は、一致しないと判定した場合、ハッシュチェーン1500が正当ではなく、文書最終版が正当ではないと判定する。
図13の説明に戻り、検証側端末207は、ハッシュチェーン1500が正当であると判定した場合、受信した集約公開鍵X’に基づいて、受信した単一の集約署名(s’,R’)の正当性を検証する。検証側端末207は、例えば、メッセージハッシュc1=H(R1||m1),c2=H(R2||m2),c3=H(R3||m3)を取得し、c’=c1c2c3を算出する。ここで、検証側端末207は、g(s’)≡R’(X’)c′
であれば、単一の集約署名(s’,R’)が正当であると判定する。一方で、検証側端末207は、g(s’)≡R’(X’)c′でなければ、単一の集約署名(s’,R’)が正
当ではなく、文書最終版が正当ではないと判定する。
検証側端末207は、ハッシュチェーン1500が正当、かつ、単一の集約署名(s’,R’)が正当であれば、文書最終版が正当であると判定する。これにより、検証側端末207は、検証者が、不正な文書を、誤って正当な文書と認識してしまうことを防止することができる。検証側端末207は、複数の公開鍵を取得せずとも、単一の集約公開鍵X’を取得すれば、単一の集約署名(s’,R’)の正当性を検証することができる。このため、検証側端末207は、単一の集約署名(s’,R’)の正当性を検証する際にかかるコストの低減化を図ることができる。検証側端末207は、ハッシュチェーン1500の正当性を検証するため、文書第1版、および、文書第2版が、改ざん、または、置き換えされていないことを確認することができる。このため、検証側端末207は、セキュリティの向上を図ることができる。
(署名を検証する一例)
次に、図16を用いて、単一の集約署名(s’,R’)が正当ではないと判定された場合に、文書管理サーバ205が、署名を検証する一例について説明する。
図16は、署名を検証する一例を示す説明図である。図16において、文書管理サーバ205は、単一の集約署名(s’,R’)が正当ではないと判定され、検証失敗したことを検出する。文書管理サーバ205は、例えば、単一の集約署名(s’,R’)が検証失敗したことの通知を、検証側端末207から受信する。この場合、単一の集約署名(s’,R’)の集約元となる少なくともいずれかの署名に、検証失敗した原因が存在すると考えられる。
このため、文書管理サーバ205が、検証失敗した原因となる署名を発見し、署名側端末201~203に、検証失敗した原因となる署名を生成し直させるようにすることが望まれる。文書管理サーバ205は、例えば、集約元となるN個の署名のそれぞれの署名j(j=1~N)の正当性を検証することにより、検証失敗した原因となる署名を発見する。これにより、文書管理サーバ205は、署名側端末201~203に、検証失敗した原因となる署名を生成し直させることができる。
ここでは、文書管理サーバ205が、集約元となるN個の署名のそれぞれの署名j(j=1~N)の正当性を検証し、検証失敗した原因となる署名を発見する場合について説明したが、これに限らない。例えば、文書管理サーバ205が、さらに、検証失敗した原因となる署名を発見する際にかかる処理量の低減化を図る場合があってもよい。
この場合、文書管理サーバ205は、予め、単一の集約署名s1,1=(s’,R’)を生成するにあたり、集約元となるj+1個の署名のうち、一部の署名を集約した集約署名sx,yを生成し、リストに登録しておく。文書管理サーバ205は、例えば、番号順に並べたj+1個の署名のうち、隣り合う署名同士を集約し、段x=kに属する集約署名sx=k,yを生成し、リストに登録しておく。例えば、y=1,2,3,・・・である。
文書管理サーバ205は、下段x=i+1に属する集約署名sx=i+1,yのうち、隣り合う署名同士を集約し、上段x=iに属する集約署名sx=i,yを生成し、集約元と集約先との関係を特定可能に、リストに登録しておくことを、再帰的に繰り返す。最終的に、文書管理サーバ205は、単一の集約署名s1,1=(s’,R’)を生成する。
文書管理サーバ205は、単一の集約署名(s’,R’)が検証失敗したことを検出すると、リストを読み出す。文書管理サーバ205は、リストのうち、段x=2に属する集約署名sx=2,yの正当性を検証する。文書管理サーバ205は、上段x=iに属する集約署名sx=i,yのうち、正当ではないと判定された集約署名sx=i,yの集約元となった、下段x=i+1に属する集約署名sx=i+1,yの正当性を検証することを繰り返す。これにより、文書管理サーバ205は、正当ではない署名jを発見することができる。また、文書管理サーバ205は、検証失敗した原因となる署名を発見する際にかかる処理量を、O(log(N))に抑制することができる。
(補助パラメータdを設定する一例)
次に、図17および図18を用いて、文書管理サーバ205が、補助パラメータdを設定する一例について説明する。
図17および図18は、補助パラメータdを設定する一例を示す説明図である。文書管理サーバ205は、剰余の性質を利用して、補助パラメータdを効率的に算出する。文書管理サーバ205は、例えば、位数pを安全素数に設定する。安全素数は、p=2q+1のqを素数にするpである。
(17-1)文書管理サーバ205は、2k除算アルゴリズムにより、それぞれのメッセージハッシュciを2進数展開し、数式1711~171nに示す「ci’←2^(-ti)・ci」の形式に変形する。
(17-2)文書管理サーバ205は、tiソートアルゴリズムにより、数式1711~171nに示す「ci’←2^(-ti)・ci」の形式を、t1≦t2≦・・・≦tNの順にソートする。
(17-3)文書管理サーバ205は、C計算アルゴリズムにより、数式1720に示すCを算出する。
(17-4)文書管理サーバ205は、逆数計算アルゴリズムにより、それぞれのci’について、数式1731~173nに示す逆数yiを算出する。
(17-5)文書管理サーバ205は、d計算アルゴリズムにより、算出したCに基づいて、それぞれの逆数yiに基づいて、数式1741~174nに示すdiを算出する。
(17-6)文書管理サーバ205は、算出したdiを纏め、数式1750に示す補助パラメータdを設定する。次に、図18の説明に移行する。
図18の表1800は、補助パラメータdを設定する際にかかる処理時間を示す。表1800は、例えば、図17に示した手法で、補助パラメータdを設定する際にかかる処理時間を示す。また、表1800は、例えば、比較例として、d={di=Пj∈[N]-[i]cj}(mod(p-1))を算出する手法で、補助パラメータdを設定する際にかかる処理時間を示す。
表1800に示すように、文書管理サーバ205は、図17に示した手法によれば、比較例とする手法よりも、補助パラメータdを設定する際にかかる処理時間を低減することができる。文書管理サーバ205は、例えば、処理時間を、O(N2)ではなくO(N)にすることができる。文書管理サーバ205は、図17に示した手法によれば、署名の数が増加しても、比較的短い処理時間で、補助パラメータdを設定することができる。
(集約署名を修正する一例)
次に、図19および図20を用いて、集約署名を修正する一例について説明する。
図19および図20は、集約署名を修正する一例を示す説明図である。例えば、承認フローに定められた、いずれかの承認者が、文書を承認することができず、署名側端末201~203を操作することができず、文書に署名を付与することができない場合がある。具体的には、いずれかの承認者が、休暇中、または、出張中などの状態で、不在であり、署名側端末201~203を操作することができず、文書に署名を付与することができない場合がある。
しかしながら、いずれかの承認者が、休暇中、または、出張中などの状態にある場合、署名制御システム200において、集約公開鍵により検証可能な集約署名を生成することができないとすれば、署名制御システム200の利便性の低下を招くことになる。従って、署名制御システム200において、一時的に公開鍵を無効化し、いずれかの承認者により、文書に署名が付与されていなくても、集約公開鍵により検証可能な集約署名を生成可能にすることが望まれる。また、承認者が、休暇中、または、出張中などの状態にある場合、承認フローを変更し、集約公開鍵を配布し直すことは、作業コストの観点などから好ましくない。
図19において、文書管理サーバ205は、メッセージmiと、いずれかの承認者に対応する無効化する公開鍵pkrevとに基づいて、いずれかの承認者に対応する署名が集約されなかった集約署名を修正し、修正署名を生成する。修正署名は、いずれかの承認者に対応する公開鍵pkrevが集約された集約公開鍵X’により検証可能な署名である。例えば、i=1,2,3である。ここで、図20の説明に移行し、文書管理サーバ205が、集約署名を修正する具体例について説明する。
図20において、文書管理サーバ205は、無効化する公開鍵X2の指定を受け付ける。ここで、生成済みの集約署名(S”=s1c3+s3c1,R”=R1
(c3)R3
(c2))であり、公開鍵X2によって検証可能な署名(s2,R2)が集約されていない情報である。文書管理サーバ205は、集約署名(S”,R”)を修正し、集約公開鍵X’=X1X2X3により検証可能な修正署名を生成する。修正署名は、集約公開鍵X’=X1X2X3により検証可能にするため、下記式(1)が成立するように生成されればよい。
g(s’)≡R’(X’)(c’)(mod(p))
∵g(s’)≡R”(X1X3)(c1c3)
≡X2
(-c1c3)R”(X1X2X3)(c1c3)
≡R’(X’)(c’) ・・・(1)
文書管理サーバ205は、具体的には、上記式(1)が成立するよう、集約署名(S”,R”)を修正する。文書管理サーバ205は、より具体的には、集約署名(S”,R”)と、メッセージm1,m3と、無効化する公開鍵pk2=X2とに基づいて、集約公開鍵X’=X1X2X3により検証可能な修正署名s’=(s”,R’=X2
(-c1c3)R”)を生成する。これにより、文書管理サーバ205は、承認者が不在であっても、集約公開鍵Xにより検証可能な修正署名s’を生成することができる。このため、文書管理サーバ205は、一時的に公開鍵を無効化することができ、署名制御システム200の利便性の向上を図ることができる。
(署名制御システム200による効果)
次に、図21を用いて、署名制御システム200による効果について説明する。
図21は、署名制御システム200による効果を示す説明図である。図21の表2100は、プライベートCAサーバ204で管理する公開鍵の数、および、パブリックCAサーバ206で管理する公開鍵の数を示す。表2100は、例えば、署名制御システム200において、プライベートCAサーバ204で管理する公開鍵の数、および、パブリックCAサーバ206で管理する公開鍵の数を示す。また、表2100は、例えば、従来のプライベートCAサーバ204で管理する公開鍵の数、および、従来のパブリックCAサーバ206で管理する公開鍵の数を示す。
表2100に示すように、署名制御システム200は、パブリックCAサーバ206で管理する公開鍵の数を、従来に比べて、N個から1個に低減することができる。このため、署名制御システム200は、公開鍵を管理する際にかかるコスト、および、公開鍵を利用する際にかかるコストの低減化を図ることができる。
具体的には、公開鍵のデータ長が、2048[bit]であれば、従来のパブリックCAサーバ206には、承認者が100人存在する場合、2048×100[bit]の情報が記憶されることになる。このため、従来では、集約署名の正当性を検証する際にかかる処理コストは、O(N)となる。
一方で、署名制御システム200は、集約署名の正当性を検証する際、単一の集約公開鍵を利用すればよいため、集約署名の正当性を検証する際にかかる処理コストを、O(1)に低減することができる。署名制御システム200は、承認者の数によらず、パブリックCAサーバ206で管理する情報を、2048[bit]に固定することができる。
(鍵生成処理手順)
次に、図22を用いて、署名制御システム200が実行する、鍵生成処理手順の一例について説明する。鍵生成処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図22は、鍵生成処理手順の一例を示すフローチャートである。図22において、プライベートCAサーバ204は、鍵生成要求を、作成者、承認者、および、決裁者に対応する署名側端末201~203に送信する(ステップS2201)。
一方で、署名側端末201~203は、鍵生成要求を受信すると、秘密鍵xiと、公開鍵Xiとの鍵ペアを生成する(ステップS2202)。次に、署名側端末201~203は、生成した秘密鍵xiを記憶する(ステップS2203)。そして、署名側端末201~203は、生成した公開鍵Xiを記憶する(ステップS2204)。そして、署名側端末201~203は、生成した公開鍵Xiを、プライベートCAサーバ204に送信する(ステップS2205)。
一方で、プライベートCAサーバ204は、公開鍵Xiを、それぞれの署名側端末201~203から受信する(ステップS2206)。i=1,2,3である。次に、プライベートCAサーバ204は、公開鍵Xiを集約した集約公開鍵X’を生成して記憶する(ステップS2207)。そして、プライベートCAサーバ204は、集約公開鍵X’を含めた、集約公開鍵X’のデジタル証明書の作成依頼を、パブリックCAサーバ206に送信する(ステップS2208)。
一方で、パブリックCAサーバ206は、集約公開鍵X’のデジタル証明書の作成依頼を受け付けると、集約公開鍵X’のデジタル証明書を作成し、プライベートCAサーバ204に送信する(ステップS2209)。
一方で、プライベートCAサーバ204は、受信した集約公開鍵X’のデジタル証明書を記憶する(ステップS2210)。次に、プライベートCAサーバ204は、公開鍵Xiのデジタル証明書を作成して記憶する(ステップS2211)。その後、署名制御システム200は、鍵生成処理を終了する。
(文書作成処理手順)
次に、図23を用いて、署名制御システム200が実行する、文書作成処理手順の一例について説明する。文書作成処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図23は、文書作成処理手順の一例を示すフローチャートである。図23において、署名側端末201は、シードを生成し、文書管理サーバ205に送信する(ステップS2301)。
一方で、文書管理サーバ205は、シードを受信する(ステップS2302)。
一方で、署名側端末201は、文書m1を生成する(ステップS2303)。次に、署名側端末201は、シードと文書m1とに基づいて、ハッシュ値hs1を生成する(ステップS2304)。そして、署名側端末201は、秘密鍵x1を取得する(ステップS2305)。
次に、署名側端末201は、秘密鍵x1に基づいて、文書m1に対する署名σ1を生成する(ステップS2306)。そして、署名側端末201は、文書m1と、ハッシュ値hs1と、署名σ1とを、文書管理サーバ205に送信する(ステップS2307)。
一方で、文書管理サーバ205は、文書m1と、ハッシュ値hs1と、署名σ1とを、署名側端末201から受信する(ステップS2308)。次に、文書管理サーバ205は、受信したハッシュ値hs1が、受信したシードと、受信した文書m1とに対応するか否かを判定する(ステップS2309)。
ここで、受信したハッシュ値hs1が、受信したシードと、受信した文書m1とに対応しない場合(ステップS2309:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末201に送信する。そして、署名側端末201は、ステップS2312の処理に移行する。一方で、受信したハッシュ値hs1が、受信したシードと、受信した文書m1とに対応する場合(ステップS2309:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2310,S2311の処理に移行する。
文書管理サーバ205は、公開鍵X1を取得する(ステップS2310)。そして、文書管理サーバ205は、公開鍵X1に基づいて、受信した署名σ1が正当であるか否かを判定する(ステップS2311)。
ここで、受信した署名σ1が正当ではない場合(ステップS2311:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末201に送信する。そして、署名側端末201は、ステップS2312の処理に移行する。一方で、受信した署名σ1が正当である場合(ステップS2311:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2313の処理に移行する。
ステップS2312では、署名側端末201は、検証失敗の通知を受け付けると、署名σ1を生成し直す(ステップS2312)。そして、署名側端末201は、ステップS2301の処理に戻る。
ステップS2313では、文書管理サーバ205は、受信した文書m1と、受信したハッシュ値hs1と、受信した署名σ1とを、自装置が有する制御情報管理テーブル400に記憶する(ステップS2313)。次に、文書管理サーバ205は、文書m1を登録したことの通知を、署名側端末201に送信する(ステップS2314)。
一方で、署名側端末201は、文書m1を登録したことの通知を受信する(ステップS2315)。その後、署名制御システム200は、文書作成処理を終了する。
(文書承認処理手順)
次に、図24を用いて、署名制御システム200が実行する、文書承認処理手順の一例について説明する。文書承認処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図24は、文書承認処理手順の一例を示すフローチャートである。図24において、文書管理サーバ205は、記憶した文書m1と、ハッシュ値hs1と、署名σ1とを、承認者に対応する署名側端末202に送信する(ステップS2401)。
一方で、署名側端末201は、文書m1と、ハッシュ値hs1と、署名σ1とを受信する(ステップS2402)。次に、署名側端末202は、文書m2を生成する(ステップS2403)。そして、署名側端末202は、ハッシュ値hs1と文書m2とに基づいて、ハッシュ値hs2を生成する(ステップS2404)。
次に、署名側端末202は、秘密鍵x2を取得する(ステップS2405)。そして、署名側端末202は、秘密鍵x2に基づいて、文書m2に対する署名σ2を生成する(ステップS2406)。そして、署名側端末202は、文書m2と、ハッシュ値hs2と、署名σ2とを、文書管理サーバ205に送信する(ステップS2407)。
一方で、文書管理サーバ205は、文書m2と、ハッシュ値hs2と、署名σ2とを、署名側端末202から受信する(ステップS2408)。そして、文書管理サーバ205は、受信したハッシュ値hs2が、ハッシュ値hs1と、受信した文書m2とに対応するか否かを判定する(ステップS2409)。
ここで、受信したハッシュ値hs2が、ハッシュ値hs1と、受信した文書m2とに対応しない場合(ステップS2409:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末202に送信する。そして、署名側端末202は、ステップS2412の処理に移行する。一方で、受信したハッシュ値hs2が、ハッシュ値hs1と、受信した文書m2とに対応する場合(ステップS2409:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2410,S2411の処理に移行する。
文書管理サーバ205は、公開鍵X2を取得する(ステップS2410)。そして、文書管理サーバ205は、公開鍵X2に基づいて、受信した署名σ2が正当であるか否かを判定する(ステップS2411)。
ここで、受信した署名σ2が正当ではない場合(ステップS2411:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末202に送信する。そして、署名側端末202は、ステップS2412の処理に移行する。一方で、受信した署名σ2が正当である場合(ステップS2411:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2413の処理に移行する。
ステップS2412では、署名側端末202は、検証失敗の通知を受け付けると、署名σ2を生成し直す(ステップS2412)。そして、署名側端末202は、ステップS2402の処理に戻る。
ステップS2413では、文書管理サーバ205は、受信した文書m2と、受信したハッシュ値hs2と、受信した署名σ2とを、自装置が有する制御情報管理テーブル400に記憶する(ステップS2413)。次に、文書管理サーバ205は、文書m2を登録したことの通知を、署名側端末202に送信する(ステップS2414)。
一方で、署名側端末202は、文書m2を登録したことの通知を受信する(ステップS2415)。その後、署名制御システム200は、文書承認処理を終了する。
(文書決裁処理手順)
次に、図25を用いて、署名制御システム200が実行する、文書決裁処理手順の一例について説明する。文書決裁処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図25は、文書決裁処理手順の一例を示すフローチャートである。図25において、文書管理サーバ205は、記憶した文書m2と、ハッシュ値hs2と、署名σ2とを、決裁者に対応する署名側端末203に送信する(ステップS2501)。
次に、署名側端末203は、文書m2と、ハッシュ値hs2と、署名σ2とを受信する(ステップS2502)。そして、署名側端末203は、文書m3を生成する(ステップS2503)。そして、署名側端末203は、ハッシュ値hs2と文書m3とに基づいて、ハッシュ値hs3を生成する(ステップS2504)。
次に、署名側端末203は、秘密鍵x3を取得する(ステップS2505)。そして、署名側端末203は、秘密鍵x3に基づいて、文書m3に対する署名σ3を生成する(ステップS2506)。そして、署名側端末203は、文書m3と、ハッシュ値hs3と、署名σ3とを、文書管理サーバ205に送信する(ステップS2507)。
一方で、文書管理サーバ205は、文書m3と、ハッシュ値hs3と、署名σ3とを、署名側端末203から受信する(ステップS2508)。そして、文書管理サーバ205は、受信したハッシュ値hs3が、ハッシュ値hs2と、受信した文書m3とに対応するか否かを判定する(ステップS2509)。
ここで、受信したハッシュ値hs3が、ハッシュ値hs2と、受信した文書m3とに対応しない場合(ステップS2509:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末203に送信する。そして、署名側端末203は、ステップS2512の処理に移行する。一方で、受信したハッシュ値hs3が、ハッシュ値hs2と、受信した文書m3とに対応する場合(ステップS2509:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2510,S2511の処理に移行する。
文書管理サーバ205は、公開鍵X3を取得する(ステップS2510)。そして、文書管理サーバ205は、公開鍵X3に基づいて、受信した署名σ3が正当であるか否かを判定する(ステップS2511)。
ここで、受信した署名σ3が正当ではない場合(ステップS2511:検証失敗)、文書管理サーバ205は、検証失敗の通知を、署名側端末203に送信する。そして、署名側端末203は、ステップS2512の処理に移行する。一方で、受信した署名σ3が正当である場合(ステップS2511:検証成功)、文書管理サーバ205は、検証成功と判断し、ステップS2513の処理に移行する。
ステップS2512では、署名側端末203は、検証失敗の通知を受け付けると、署名σ3を生成し直す(ステップS2512)。そして、署名側端末203は、ステップS2502の処理に戻る。
ステップS2513では、文書管理サーバ205は、受信した文書m3と、受信したハッシュ値hs3と、受信した署名σ3とを、自装置が有する制御情報管理テーブル400に記憶する(ステップS2513)。次に、文書管理サーバ205は、受信した文書m3に基づいて、最終版の文書mfを生成し、自装置が有する制御情報管理テーブル400に記憶する(ステップS2514)。そして、文書管理サーバ205は、文書m3を登録したことの通知を、署名側端末203に送信する(ステップS2515)。
一方で、署名側端末203は、文書m3を登録したことの通知を受信する(ステップS2516)。そして、署名制御システム200は、文書決裁処理を終了する。
(署名集約処理手順)
次に、図26を用いて、署名制御システム200が実行する、署名集約処理手順の一例について説明する。署名集約処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図26は、署名集約処理手順の一例を示すフローチャートである。図26において、文書管理サーバ205は、文書を送信することの通知を、検証側端末207に送信する(ステップS2601)。一方で、検証側端末207は、通知を受け付けると、組織の公開鍵証明書の要求を、文書管理サーバ205に送信する(ステップS2602)。
次に、文書管理サーバ205は、登録済みの公開鍵X’のデジタル証明書を、検証側端末207に送信する(ステップS2603)。一方で、検証側端末207は、受信した公開鍵X’のデジタル証明書を検証する(ステップS2604)。検証側端末207は、検証失敗の場合、検証失敗の通知を、文書管理サーバ205に送信する。そして、検証側端末207は、ステップS2609の処理に移行する。
一方で、文書管理サーバ205は、検証失敗の通知を受け付けた場合には、公開鍵X’が有効であるか否かを確認する(ステップS2605)。文書管理サーバ205は、公開鍵X’が有効でなければ、公開鍵X’を生成し直してもよい。
次に、文書管理サーバ205は、ハッシュ値hsiと、署名情報σiとを取得する(ステップS2606)。そして、文書管理サーバ205は、ハッシュ値hsiと、署名情報σiとに基づいて、集約署名情報σ’を生成する(ステップS2607)。そして、文書管理サーバ205は、最終版の文書mfと、生成した集約署名情報σ’とを対応付けて、検証側端末207に送信する(ステップS2608)。
一方で、検証側端末207は、ハッシュチェーンを検証する(ステップS2609)。検証側端末207は、検証成功であれば、ステップS2610の処理に移行する。検証側端末207は、検証失敗であれば、検証失敗の通知を、文書管理サーバ205に送信する。
ステップS2610では、検証側端末207は、集約署名情報σ’を検証する(ステップS2610)。検証側端末207は、検証成功であれば、ステップS2611の処理に移行する。検証側端末207は、検証失敗であれば、検証失敗の通知を、文書管理サーバ205に送信する。
ステップS2611では、検証側端末207は、文書mnについて検証成功したと認識する(ステップS2611)。
一方で、文書管理サーバ205は、検証失敗の通知を受け付けると、Re-Verifyを利用して、図27に後述する再検証処理を実行することにより、原因調査を実施する(ステップS2612)。そして、署名制御システム200は、署名集約処理を終了する。
(再検証処理手順)
次に、図27を用いて、文書管理サーバ205が実行する、再検証処理手順の一例について説明する。再検証処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図27は、再検証処理手順の一例を示すフローチャートである。図27において、文書管理サーバ205は、集約署名情報s1,1を検証し、検証失敗したことを確認する(ステップS2701)。
次に、文書管理サーバ205は、集約署名情報s2,1を検証する(ステップS2702)。文書管理サーバ205は、検証成功であれば、ステップS2703の処理に移行する。一方で、文書管理サーバ205は、検証失敗であれば、ステップS2704の処理に移行する。
ステップS2703では、文書管理サーバ205は、集約署名情報s2,2を検証する(ステップS2703)。文書管理サーバ205は、検証成功であれば、不正な署名が存在しないと判断し、再検証処理を終了する。一方で、文書管理サーバ205は、検証失敗であれば、ステップS2704以降の処理と同様の処理を実行する。
ステップS2704では、文書管理サーバ205は、集約署名情報s3,1を検証する(ステップS2704)。文書管理サーバ205は、検証成功であれば、ステップS2705の処理に移行する。一方で、文書管理サーバ205は、検証失敗であれば、ステップS2706の処理に移行する。
ステップS2705では、文書管理サーバ205は、集約署名情報s3,2を検証する(ステップS2705)。文書管理サーバ205は、検証成功であれば、不正な署名が存在しないと判断し、再検証処理を終了する。一方で、文書管理サーバ205は、検証失敗であれば、ステップS2706以降の処理と同様の処理を実行する。
ステップS2706では、文書管理サーバ205は、集約署名情報s4,1を検証する(ステップS2706)。文書管理サーバ205は、検証成功、および、検証失敗に応じて、集約署名情報sx>4,yを検証する処理を、再帰的に実行することになる。その後、文書管理サーバ205は、ステップS2707の処理に移行する。
ステップS2707では、文書管理サーバ205は、検証失敗した署名σiを特定し、検証失敗した署名σiを再生成し、集約署名情報σ’を再生成する(ステップS2707)。次に、文書管理サーバ205は、再生成した集約署名情報σ’を出力する(ステップS2708)。そして、文書管理サーバ205は、再検証処理を終了する。
(別の署名集約処理手順)
次に、図28を用いて、署名制御システム200が実行する、別の署名集約処理手順の一例について説明する。別の署名集約処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303となどによって実現される。
図28は、別の署名集約処理手順の一例を示すフローチャートである。図28において、文書管理サーバ205は、文書を送信することの通知を、検証側端末207に送信する(ステップS2801)。一方で、検証側端末207は、通知を受け付けると、組織の公開鍵証明書の要求を、文書管理サーバ205に送信する(ステップS2802)。
次に、文書管理サーバ205は、登録済みの公開鍵X’のデジタル証明書を、検証側端末207に送信する(ステップS2803)。一方で、検証側端末207は、受信した公開鍵X’のデジタル証明書を検証する(ステップS2804)。検証側端末207は、検証失敗の場合、検証失敗の通知を、文書管理サーバ205に送信する。そして、検証側端末207は、ステップS2810の処理に移行する。
一方で、文書管理サーバ205は、検証失敗の通知を受け付けた場合には、公開鍵X’が有効であるか否かを確認する(ステップS2805)。文書管理サーバ205は、公開鍵X’が有効でなければ、公開鍵X’を生成し直してもよい。
次に、文書管理サーバ205は、ハッシュ値hsiと、署名情報σiとを取得する(ステップS2806)。そして、文書管理サーバ205は、ハッシュ値hsiと、署名情報σiとに基づいて、集約署名情報σ’を生成する(ステップS2807)。
次に、文書管理サーバ205は、図29に後述する無効化処理を実行する(ステップS2808)。そして、文書管理サーバ205は、最終版の文書mnと、生成した集約署名情報σ’とを対応付けて、検証側端末207に送信する(ステップS2809)。
一方で、検証側端末207は、ハッシュチェーンを検証する(ステップS2810)。検証側端末207は、検証成功であれば、ステップS2811の処理に移行する。検証側端末207は、検証失敗であれば、検証失敗の通知を、文書管理サーバ205に送信する。
ステップS2811では、検証側端末207は、集約署名情報σ’を検証する(ステップS2811)。検証側端末207は、検証成功であれば、ステップS2812の処理に移行する。検証側端末207は、検証失敗であれば、検証失敗の通知を、文書管理サーバ205に送信する。
ステップS2812では、検証側端末207は、文書mnについて検証成功したと認識する(ステップS2812)。
一方で、文書管理サーバ205は、検証失敗の通知を受け付けると、Re-Verifyを利用して、図27に示した再検証処理を実行することにより、原因調査を実施する(ステップS2813)。そして、署名制御システム200は、署名集約処理を終了する。
(無効化処理手順)
次に、図29を用いて、文書管理サーバ205が実行する、無効化処理手順の一例について説明する。無効化処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図29は、無効化処理手順の一例を示すフローチャートである。図29において、文書管理サーバ205は、一時的に無効化したい公開鍵が存在するか否かを判定する(ステップS2901)。ここで、一時的に無効化したい公開鍵が存在しない場合(ステップS2901:No)、文書管理サーバ205は、無効化処理を終了する。一時的に無効化したい公開鍵が存在する場合(ステップS2901:Yes)、文書管理サーバ205は、ステップS2902の処理に移行する。
ステップS2902では、文書管理サーバ205は、無効化する対象となる公開鍵を、プライベートCAサーバ204に問い合わせる(ステップS2902)。一方で、プライベートCAサーバ204は、問い合わせに応じて、無効化する対象となる公開鍵を、文書管理サーバ205に送信する(ステップS2903)。
文書管理サーバ205は、無効化する対象となる公開鍵に基づいて、集約署名情報σ’を修正した修正署名情報σ”を生成する(ステップS2904)。次に、文書管理サーバ205は、修正署名情報σ”を出力する(ステップS2905)。そして、文書管理サーバ205は、無効化処理を終了する。
以上説明したように、情報処理装置100によれば、複数の文書情報と、複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得することができる。情報処理装置100によれば、取得した複数の文書情報に基づいて、取得した複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成することができる。情報処理装置100によれば、生成した集約署名情報を、複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報と、複数の文書情報とに対応付けて出力することができる。これにより、情報処理装置100は、集約署名情報を検証する際に用いる鍵情報が1つであっても、集約署名情報を検証可能にすることができ、集約署名情報を検証する際にかかるコストの低減化を図ることができる。
情報処理装置100によれば、取得した複数の文書情報のそれぞれの文書情報に対応する公開鍵情報に基づいて、集約公開鍵情報を生成することができる。これにより、情報処理装置100は、集約署名情報を検証する際に用いる鍵情報の数の低減化を図ることができ、集約署名情報を検証する際にかかるコストの低減化を図ることができる。
情報処理装置100によれば、取得した複数の文書情報のそれぞれの文書情報に対応するハッシュ値に基づいて、集約署名情報を生成することができる。これにより、情報処理装置100は、ハッシュ値に基づく署名情報を集約した集約署名情報を生成することができる。
情報処理装置100によれば、生成した集約署名情報の正当性を、取得した複数の文書情報と、生成した集約署名情報と、生成した集約公開鍵情報とに基づいて検証可能にすることができる。これにより、情報処理装置100は、集約署名情報を検証する際に用いる鍵情報が1つであっても、集約署名情報を検証可能にすることができ、集約署名情報を検証する際にかかるコストの低減化を図ることができる。
情報処理装置100によれば、複数の文書情報に対応付けられた、集約署名情報と、集約公開鍵情報とを受け付けることができる。情報処理装置100によれば、複数の文書情報と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証することができる。これにより、情報処理装置100は、集約署名情報の正当性を検証し、複数の文書情報が改ざんされているか否かを確認することができ、セキュリティの向上を図ることができる。
情報処理装置100によれば、集約署名情報が正当ではないことを検出することができる。情報処理装置100によれば、集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を取得することができる。情報処理装置100によれば、取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を出力することができる。これにより、情報処理装置100は、集約署名情報が正当ではない原因となる、集約元となるいずれかの署名情報を特定することができる。
情報処理装置100によれば、取得した2つの集約署名情報の少なくともいずれかの集約署名情報が正当ではないことを検出することができる。情報処理装置100によれば、いずれかの集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を新たに取得することができる。情報処理装置100によれば、新たに取得した2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を出力することができる。これにより、情報処理装置100は、集約署名情報が正当ではない原因となる、集約元となるいずれかの署名情報を特定することができる。
情報処理装置100によれば、取得した複数の文書情報のそれぞれの文書情報に対応する公開鍵情報と、取得した複数の文書情報のいずれの文書情報にも対応しない公開鍵情報とを集約した集約公開鍵情報を生成することができる。情報処理装置100によれば、いずれの文書情報にも対応しない公開鍵情報に基づいて、生成した集約署名情報を修正した修正署名情報を生成することができる。情報処理装置100によれば、生成した修正署名情報を、集約公開鍵情報と、取得した複数の文書情報とに対応付けて出力することができる。これにより、情報処理装置100は、いずれかの公開鍵情報に基づく署名情報が存在しなくても、集約公開鍵情報に基づき検証可能な修正署名情報を生成することができる。
情報処理装置100によれば、取得した複数の文書情報のそれぞれの文書情報に対応する署名情報を生成する際に用いられた秘密鍵情報に対応する公開鍵情報に基づいて、集約公開鍵情報を生成することができる。これにより、情報処理装置100は、署名情報を検証可能な公開鍵情報を集約し、集約公開鍵情報を生成することができる。
情報処理装置100によれば、複数の文書情報として、第1の文書の複数の版のそれぞれの版を示す文書情報を採用することができる。これにより、情報処理装置100は、文書が改版されていく状況に適用することができる。
情報処理装置100によれば、シードと、第1の文書のそれぞれの版に対応するハッシュ値とから形成されるハッシュチェーンに基づいて生成されるハッシュ値を、集約署名情報に対応付けて出力することができる。これにより、情報処理装置100は、複数の文書情報が改ざんされているか否かを確認可能にすることができ、セキュリティの向上を図ることができる。
情報処理装置100によれば、安全素数と、取得した複数の文書情報のそれぞれの文書情報に対応するハッシュ値とに基づいて、集約署名情報を生成することができる。これにより、情報処理装置100は、集約署名情報を生成する際にかかる処理時間の低減化を図ることができる。
情報処理装置100によれば、シェノア署名アルゴリズムを利用して、集約署名情報を生成することができる。これにより、情報処理装置100は、シェノア署名アルゴリズムに基づく署名情報を集約した集約署名情報を生成することができる。
情報処理装置100によれば、生成した集約署名情報を、集約公開鍵情報と、取得した複数の文書情報とに対応付けて、取得した複数の文書情報についての検証者宛てに出力することができる。これにより、情報処理装置100は、検証者が、集約署名情報の正当性を検証可能にし、複数の文書情報が改ざんされているか否かを確認可能にし、セキュリティを向上させることができる。
情報処理装置100によれば、予め定められた署名者ごとに、文書情報と、公開鍵情報と、署名情報とを対応付けておくことができる。これにより、情報処理装置100は、集約署名情報と、集約公開鍵情報とを生成し易くすることができる。
情報処理装置100によれば、複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成する装置から、複数の文書情報に対応付けられた、集約署名情報を受け付けることができる。情報処理装置100によれば、複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する装置から、複数の文書情報に対応付けられた、集約公開鍵情報を受け付けることができる。情報処理装置100によれば、複数の文書情報と、受け付けた集約署名情報と、受け付けた集約公開鍵情報とに基づいて、受け付けた集約署名情報の正当性を検証することができる。これにより、情報処理装置100は、集約署名情報の正当性を検証し、複数の文書情報が改ざんされているか否かを確認することができ、セキュリティの向上を図ることができる。
なお、本実施の形態で説明した署名制御方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した署名制御プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した署名制御プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数の文書情報と、前記複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得し、
取得した前記複数の文書情報に基づいて、取得した前記複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成し、
生成した前記集約署名情報を、前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報と、前記複数の文書情報とに対応付けて出力する、
処理をコンピュータが実行することを特徴とする署名制御方法。
(付記2)取得した前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報に基づいて、前記集約公開鍵情報を生成する、
処理を前記コンピュータが実行することを特徴とする付記1に記載の署名制御方法。
(付記3)前記集約署名情報を生成する処理は、
取得した前記複数の文書情報のそれぞれの文書情報に対応するハッシュ値に基づいて、前記集約署名情報を生成する、ことを特徴とする付記1または2に記載の署名制御方法。
(付記4)生成した前記集約署名情報の正当性は、取得した前記複数の文書情報と、生成した前記集約署名情報と、生成した前記集約公開鍵情報とに基づいて検証可能である、ことを特徴とする付記1~3のいずれか一つに記載の署名制御方法。
(付記5)複数の文書情報に対応付けられた、前記複数の文書情報に対応する複数の署名情報を集約した集約署名情報と、前記複数の文書情報に対応する複数の公開鍵情報を集約した集約公開鍵情報とを受け付けた場合、前記複数の文書情報と、受け付けた前記集約署名情報と、受け付けた前記集約公開鍵情報とに基づいて、受け付けた前記集約署名情報の正当性を検証する、
処理を前記コンピュータが実行することを特徴とする付記1~4のいずれか一つに記載の署名制御方法。
(付記6)前記複数の文書情報と対応付けて出力した前記集約署名情報が正当ではないと判定された場合、前記集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、前記一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を取得し、
取得した前記2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を出力する、
処理を前記コンピュータが実行することを特徴とする付記1~5のいずれか一つに記載の署名制御方法。
(付記7)取得した前記2つの集約署名情報の少なくともいずれかの集約署名情報が正当ではないと判定された場合、前記いずれかの集約署名情報の集約元となる署名情報のうち、一部の署名情報を集約した集約署名情報と、前記一部の署名情報以外の署名情報を集約した集約署名情報との2つの集約署名情報を新たに取得し、
新たに取得した前記2つの集約署名情報のそれぞれの集約署名情報の正当性を検証した結果を出力する、
処理を前記コンピュータが実行することを特徴とする付記6に記載の署名制御方法。
(付記8)取得した前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報と、取得した前記複数の文書情報のいずれの文書情報にも対応しない公開鍵情報とを集約した集約公開鍵情報を生成し、
前記いずれの文書情報にも対応しない公開鍵情報に基づいて、生成した前記集約署名情報を修正した修正署名情報を生成し、
生成した前記修正署名情報を、前記集約公開鍵情報と、取得した前記複数の文書情報とに対応付けて出力する、
処理を前記コンピュータが実行することを特徴とする付記1~7のいずれか一つに記載の署名制御方法。
(付記9)前記集約公開鍵情報を生成する処理は、
取得した前記複数の文書情報のそれぞれの文書情報に対応する署名情報を生成する際に用いられた秘密鍵情報に対応する公開鍵情報に基づいて、前記集約公開鍵情報を生成する、ことを特徴とする付記2に記載の署名制御方法。
(付記10)前記複数の文書情報は、第1の文書の複数の版のそれぞれの版を示す文書情報を含む、ことを特徴とする付記1~9のいずれか一つに記載の署名制御方法。
(付記11)前記出力する処理は、
シードと、前記第1の文書のそれぞれの版に対応するハッシュ値とから形成されるハッシュチェーンに基づいて生成されるハッシュ値を、前記集約署名情報に対応付けて出力する、ことを特徴とする付記10に記載の署名制御方法。
(付記12)前記集約署名情報を生成する処理は、
安全素数と、取得した前記複数の文書情報のそれぞれの文書情報に対応するハッシュ値とに基づいて、前記集約署名情報を生成する、ことを特徴とする付記1~11のいずれか一つに記載の署名制御方法。
(付記13)前記集約署名情報を生成する処理は、
シェノア署名アルゴリズムを利用して、前記集約署名情報を生成する、ことを特徴とする付記1~12のいずれか一つに記載の署名制御方法。
(付記14)前記出力する処理は、
生成した前記集約署名情報を、前記集約公開鍵情報と、取得した前記複数の文書情報とに対応付けて、取得した前記複数の文書情報についての検証者宛てに出力する、ことを特徴とする付記1~13のいずれか一つに記載の署名制御方法。
(付記15)予め定められた署名者ごとに、文書情報と、公開鍵情報と、署名情報とが対応付けられる、ことを特徴とする付記1~14のいずれか一つに記載の署名制御方法。
(付記16)複数の文書情報と、前記複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得し、
取得した前記複数の文書情報に基づいて、取得した前記複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成し、
生成した前記集約署名情報を、前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報と、前記複数の文書情報とに対応付けて出力する、
処理をコンピュータに実行させることを特徴とする署名制御プログラム。
(付記17)複数の文書情報と、前記複数の文書情報のそれぞれの文書情報に対応する署名情報とを取得し、
取得した前記複数の文書情報に基づいて、取得した前記複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成し、
生成した前記集約署名情報を、前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報と、前記複数の文書情報とに対応付けて出力する、
制御部を有することを特徴とする情報処理装置。
(付記18)複数の文書情報のそれぞれの文書情報に対応する署名情報を集約した集約署名情報を生成する装置から、前記複数の文書情報に対応付けられた、前記集約署名情報を受け付け、
前記複数の文書情報のそれぞれの文書情報に対応する公開鍵情報を集約した集約公開鍵情報を生成する装置から、前記複数の文書情報に対応付けられた、前記集約公開鍵情報を受け付け、
前記複数の文書情報と、受け付けた前記集約署名情報と、受け付けた前記集約公開鍵情報とに基づいて、受け付けた前記集約署名情報の正当性を検証する、
処理をコンピュータが実行することを特徴とする署名制御方法。