【文献】
阿久津 明人 ほか,ユーザを感動させるエポックメイキングなサービス創出への挑戦 競技の感動を世界中で共有できるサービスに,NTT技術ジャーナル,日本,一般社団法人電気通信協会,2015年 5月 1日,第27巻 第5号,pp.10−14
【文献】
大橋 盛徳 ほか,デジタルコンテンツのスマートプロパティ化に向けた情報登録方法の提案と実装,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2016年 5月 5日,Vol.116 No.23,pp.13−18
【文献】
Xiwei Xu, et al.,The Blockchain as a Software Connector,2016 13th Working IEEE/IFIP Conference on Software Architecture,米国,IEEE,2016年 4月,pp.182-191
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
まず、
図1に示す情報処理システム1を例に、ブロックチェーンの概要について説明する。情報処理システム1では、
図1に示すように、情報処理装置100A〜100C(情報処理装置100A〜100Cを単に情報処理装置100ともいう)のそれぞれがネットワーク210を介して通信可能に接続されている。
【0013】
情報処理装置100は、携帯電話やスマートフォン、タブレットやPC(Personal Computer)等の情報端末であり、P2P(Peer to Peer)等の分散型のネットワーク210を構築している。なお、情報処理システム1は、P2P型のシステムに限られず、例えばクラウドコンピューティング型であってもよい。
【0014】
情報処理装置100は、ユーザによる操作により契約に関するデータなどを生成し、ネットワーク210へ配信する機能を有するトランザクション生成装置として機能する。また、情報処理装置100は、トランザクション生成装置により配信されたトランザクションの正当性を検証し、新たなブロックを生成して既存のブロックチェーンを連結するブロックチェーン生成装置としても機能する。ブロックチェーン生成装置が検証した結果は、ネットワーク210を介して、各情報処理装置100で共有される。なお、図示する例では、理解を容易にするために、トランザクション生成装置の機能とブロックチェーン生成装置の機能とを当該情報処理装置100が併せ持つ例を示しているが、それぞれ別の端末が備え持っていてもよい。また、通常、一定数のトランザクションにて扱われるデータが一つのブロックに格納される(ブロックチェーン生成装置は、一定数のトランザクションをひとまとめにして当該トランザクションにて扱われる複数のデータを一つのブロックに格納する)が、この実施の形態では、理解を容易にするため、一つのトランザクションによって扱われるデータが一つのブロックに格納されるものとする。
【0015】
この実施の形態において、トランザクション生成装置としての機能により生成されたトランザクションにて扱われる契約に関するデータ(単にデータという)は、ブロックと呼ばれる一つの単位に格納され、当該ブロックを時系列に連結したブロックチェーンによって管理される。具体的に、データは、ブロックチェーン生成装置としての機能により新たに生成されたブロックに格納された後、既存のブロックチェーンに連結され、各情報処理装置100で共有される。例えば、ブロックチェーンに含まれていないトランザクションが配信されると、ブロックチェーン生成装置の機能により、当該トランザクションについての検証を行い、新たなブロック(第nのブロック)を生成する。そして、当該データに、現在のブロックチェーンの末尾のブロック(第n−1のブロック)のハッシュ値(256ビット)を含めて新たなブロック(第nのブロック)に格納する。これにより、データがブロックに格納され、ブロックチェーンにより時系列に管理されることとなる。すなわち、ブロックチェーンは、契約に関するデータ(契約内容)を記録した台帳としての役割を有している。なお、以下では、ユーザA、ユーザB、ユーザCの三者にて行われる契約を例に説明する。
【0016】
次に、
図2を参照し、この実施の形態における情報処理装置100の構成について説明する。なお、図示する例では、ユーザAの端末である情報処理装置100Aを例としているが、ユーザBの端末である情報処理装置100BおよびユーザCの端末である情報処理装置100Cについても同様であるため、説明は省略する。
【0017】
図2に示すように、情報処理装置100A(以下、情報処理装置100)は、記憶部110と、制御部120と、入出力部130と、通信部140と、これらを相互に接続するシステムバス(図示省略)と、を備えている。
【0018】
記憶部110は、ROM(Read Only Memory)やRAM(Random Access Memory)等を備える。ROMは制御部120のCPUが実行するプログラム及び、プログラムを実行する上で予め必要なデータを記憶する。具体的に、この実施の形態では、当該情報処理装置100を、トランザクション生成装置として機能させるためのプログラム、ブロックチェーン生成装置として機能させるためのプログラム、各種鍵を生成するプログラム等が、予めインストールされている。RAMは、プログラム実行中に作成されたり変更されたりするデータを記憶する。記憶部110は、制御部120が実行するプログラムが用いる主要な情報として、ユーザAの秘密鍵111、ユーザAの公開鍵112、第1共通鍵113、ブロック統合データ114、他ユーザの公開鍵115、を記憶する。
【0019】
ユーザAの秘密鍵111、ユーザAの公開鍵112は、後述するペア鍵生成部122により生成される、暗号化および復号化に用いられる鍵である。ユーザAの公開鍵112にて暗号化されたデータは、ユーザAの秘密鍵111でのみ復号可能である。なお、図示する例では、ユーザAの公開鍵112およびユーザAの秘密鍵111が記憶されているが、当該公開鍵112および秘密鍵111は、ペア鍵生成部122によりユーザ毎に生成され記憶される。
【0020】
第1共通鍵113は、後述する共通鍵生成部123により生成される鍵であり、暗号化および復号化の両方で共通して用いられる鍵である。図示する例では、第1共通鍵113が記憶されている例を示しているが、共通鍵は記憶されていなくてもよく、また、第1共通鍵113とは異なる新たな共通鍵が生成され記憶されてもよい(詳しくは後述する)。ブロック統合データ114は、後述するブロック統合部125にて統合された各ブロックの内容を示すデータである。他ユーザの公開鍵115は、後述する他公開鍵取得部126により取得される他のユーザの公開鍵である。
【0021】
ブロック情報DB116は、生成されたブロックに関する情報が格納されるデータベースである。
【0022】
制御部120は、CPU(Central Processing Unit)やASIC(Application Specific Integrated Circuit)等から構成される。制御部120は、記憶部110に記憶されたプログラムに従って動作し、当該プログラムに従った処理を実行する。制御部120は、記憶部110に記憶されたプログラムにより提供される主要な機能部として、データ登録部121と、ペア鍵生成部122と、共通鍵生成部123と、暗号化復号化部124と、ブロック統合部125と、他公開鍵取得部126と、を備える。
【0023】
データ登録部121は、上述したトランザクション生成装置としての機能およびブロックチェーン生成装置としての機能を実現する機能部である。データ登録部121は、ユーザの入出力部130に対する操作の基づいて新たなトランザクションを生成する機能(トランザクション生成装置の機能)、当該新たなトランザクションが正当なものであることを検証する機能、および新たなブロックを生成して検証済みのトランザクションにて扱われるデータを格納してブロックチェーンを生成する機能(ブロックチェーン生成装置の機能)、を有する。すなわち、データ登録部121は、ブロックチェーンのデータ登録に関する一般的な機能を有している。なお、上述したように、この実施の形態では、理解を容易にするため、当該情報処理装置100(ユーザAの端末)がデータ登録部121としてトランザクション生成装置としての機能およびブロックチェーン生成装置としての機能を有するものとして説明しているが、例えば、ユーザAの端末におけるデータ登録部121がトランザクション生成装置としての機能を有し、ユーザBの端末におけるデータ登録部121がブロックチェーン生成装置としての機能を有していてもよい。すなわち、データ登録部121は必ずしも両方の機能を有していなくてもよく、条件(状況)に応じて異なる機能を有していてもよい。
【0024】
ペア鍵生成部122は、当該ユーザの公開鍵および秘密鍵を生成する機能を有する。具体的にペア鍵生成部122は、記憶部110に記憶されたペア鍵生成プログラムに従って、当該ユーザの公開鍵および秘密鍵を生成する(
図2に示す例では、ユーザAの公開鍵112およびユーザAの秘密鍵111を生成する)。なお、この実施の形態では、予めユーザ毎の公開鍵および秘密鍵が、当該ペア鍵生成部122により生成され記憶部110に記憶されている。
【0025】
共通鍵生成部123は、記憶部110に記憶された共通鍵生成プログラムに従って、共通鍵を生成する機能を有する(
図2に示す例では、第1共通鍵113を生成する)。なお、この実施の形態では、共通鍵生成プログラムにより共通鍵を生成する例を示しているが、共通鍵については、ネットワーク210を介して外部から取得してもよい。
【0026】
暗号化復号化部124は、各種暗号化および復号化を行う機能を有する。詳しくは後述するが、この実施の形態における暗号化復号化部124は、共通鍵を自己または他者の公開鍵により暗号化する機能、データを共通鍵により暗号化する機能、暗号化された共通鍵を自己の秘密鍵により復号化する機能、暗号化されたデータを共通鍵により復号化する機能、を有する。
【0027】
ブロック統合部125は、ブロックチェーンとして連結されている各ブロックの内容(各データ)を統合してブロック統合データ114を生成する機能を有している。
【0028】
他公開鍵取得部126は、他のユーザの公開鍵を取得する機能を有する。他公開鍵取得部126は、他のユーザの端末にて生成されブロックチェーンに登録された公開鍵を取得する。
【0029】
入出力部130は、キーボード、マウス、カメラ、マイク、液晶ディスプレイ、有機EL(Electoro−Luminescence)ディスプレイ等から構成され、データの入出力を行うための装置である。
【0030】
通信部140は、他の情報処理装置100とネットワーク210を介して通信を行うためのデバイスである。
【0031】
以上が、情報処理装置100の構成である。続いて情報処理装置100の動作について、
図3〜
図7を参照して説明する。なお、この実施の形態では、
図3に示す「書類A」をユーザA、ユーザB、ユーザC間の契約書として作成する場合を例に説明する。また、この実施の形態では、書類の種類(書類名)によって一意に識別可能なグループ情報が予め定められており、グループ毎にブロックチェーンが生成される(図示する例では、書類AがグループAのグループ情報に相当し、書類Aのブロックチェーンが生成されることとなる)。なお、
図3に示す項目1〜3の内容がそれぞれ一つのデータに相当するものである。また、この実施の形態では、理解を容易にするため、項目1〜3のそれぞれの内容(すなわち、データ1〜3)が、ブロック1〜3にそれぞれ順に格納され、ブロックチェーンとして管理されるものとする(一つのトランザクションにて一つのデータが扱われ、当該一つのデータが一つのブロックに順次格納される)。
【0032】
まず、ユーザによる操作に基づいて、
図4に示す事前登録処理が行われる。事前登録処理は、ブロックチェーンとして
図3に示すグループの書類のデータを、ブロックチェーンにより管理するための設定を行う処理である。なお、ユーザA、ユーザB、ユーザCそれぞれの情報端末(情報処理装置100)には、各ユーザの公開鍵112および秘密鍵111が予めペア鍵生成部122の機能により生成され、記憶部110に格納されているものとする。この実施の形態では、ユーザAの操作により当該事前登録処理が実行されるものとする。事前登録処理を行うユーザは予め定められており、ユーザA以外のユーザにより行われてもよい。
【0033】
図4に示す事前登録処理において、まず、情報処理装置100は、データ登録部121の機能により、グループ情報を作成する(ステップS101)。具体的にステップS101の処理では、ブロックチェーンで管理するグループが「書類A」(グループA)であり、当該グループには項目1〜項目N(Nは整数で当該書類Aの最終項目)が含まれることを、ブロック1を生成して定義する(登録する)。なお、ブロック1は、ブロックチェーンにおける先頭のブロックである。このように、ステップS101の処理が行われることにより、
図5に示すように、ブロック1に、作成対象のグループ情報として、書類Aを示すグループAの内容が定義されることとなる。なお、ステップS101の処理では、予め記憶部110に記憶された複数のグループ情報の中から作成対象のグループ情報をユーザが選択することにより行われてもよい。また、当該ステップS101の処理は、情報処理装置100ではなく、当該情報処理装置100にネットワークを介して接続された専用のサーバにて行われてもよい。そして、当該専用サーバでは、後述する参照可能者の管理が行われるとともに、当該専用サーバが、ペア鍵生成部122の機能および共通鍵生成部123の機能を有していてもよい。すなわち、専用サーバにて生成された公開鍵や秘密鍵が各ユーザの識別情報に対応付けて管理され、各ユーザに配布されてもよい。そして、共通鍵については、必要とされるユーザに当該専用サーバから配布されるようにしてもよい。
【0034】
続いて、情報処理装置100は、共通鍵生成部123の機能により、第1共通鍵113を生成し(ステップS102)、暗号化復号化部124の機能により、当該生成した第1共通鍵113をユーザAの公開鍵112で暗号化する(ステップS103)。そして、データ登録部121の機能により、暗号化した第1共通鍵113Aを当該ブロック1に登録し(ステップS104)、事前登録処理を終了する。なお、ステップS104の処理では、
図5に示すように、ユーザAの公開鍵112についても、第1共通鍵113Aと同様にブロック1へ登録する。
図4および
図5に示す例では、ユーザAの公開鍵112および第1共通鍵113Aをブロックへ登録する例を示しているが、これは、ユーザAが当該秘密鍵111さえ管理すれば、第1共通鍵113を管理しなくとも、ブロックから取得可能となるためであり、鍵の管理負担を軽減することができるためである。鍵の管理負担を考慮しない場合には、当該、ユーザAの公開鍵112および第1共通鍵113Aをブロックへ登録しなくてもよい。
【0035】
なお、この実施の形態では、一般的なブロックチェーンの技術と同様に、ブロックへ登録される全てのトランザクションについて、ブロックチェーン生成装置の機能により定期的なタイミングにて内容の検証が行われる。そして、正当であると認定されると、当該トランザクションにて扱われたデータがブロックへ登録されるとともに、既存のブロックチェーンに連結され、ネットワーク210を介して各情報処理装置100で共有されることとなる。以下、ブロックへの登録については同様であるため、当該事項については説明を省略する。
【0036】
続いて、ユーザの操作により生成されたトランザクションにて扱われるデータ(生成されたデータ、または単にデータという)をブロックへ登録するブロック登録処理について説明する。当該ブロック登録処理は、ユーザによる操作(トランザクションを生成してデータを登録する旨の操作)により実行される。なお、この実施の形態では、上述したように、一つの項目(一つのデータ)につき一つのブロックが作成され登録されることから、当該ブロック登録処理は、登録すべき項目の数(トランザクションの数)、繰り返し実行されればよい。
【0037】
図6は、当該ブロック登録処理の一例を示すフローチャートである。なお、ここでは、実行ユーザを指定せずに説明する。ブロック登録処理において、まず、情報処理装置100は、データ登録部121の機能により、発生したトランザクションにて扱われるデータ(登録対象のデータ)が暗号化対象であるか否かを判定する(ステップS201)。なお、暗号化対象であるか否かは、事前登録処理にてグループ情報が登録(定義)される際に、後述する参照可能者とともに予め定められていればよく(暗号化対象の項目および参照可能者が予め定められている)、暗号化対象のデータであるか否かを示す情報が、参照可能者に関する情報とともに記憶部110に記憶されていればよい。
【0038】
登録対象のデータが暗号化対象でない場合(ステップS201;No)、情報処理装置100は、データ登録部121の機能により、当該データを対象のブロックへ登録し(ステップS202)、ブロック登録処理を終了する。
【0039】
一方、登録対象のデータが暗号化対象である場合(ステップS201;Yes)、当該データを参照可能なユーザ(参照可能者)の公開鍵を所有しているか否かを判定する(ステップS203)。上述したように、参照可能者に関する情報は、事前登録処理にてグループ情報が登録(定義)される際に予め定められ記憶部110に記憶されているため、ステップS203の処理では、記憶部110に記憶された情報に基づいて参照可能者を特定し、当該特定した参照可能者全員の公開鍵を所有しているか否かを判定すればよい。なお、公開鍵にはユーザを識別する識別情報が付加されていればよく、当該識別情報によりいずれのユーザの公開鍵であるかを判定すればよい。
【0040】
参照可能者の公開鍵を所有していないと判定した場合(ステップS203;No)、情報処理装置100は、他公開鍵取得部126の機能により、参照可能者の公開鍵を取得する(ステップS204)。詳しくは後述するが、ステップS204の処理では、ブロックに登録された参照可能者の公開鍵を取得する。ステップS204の処理を実行した後、情報処理装置100は、暗号化復号化部124の機能により、取得した公開鍵で共通鍵(当該共通鍵は
図4のステップS102の処理にて生成されている)を暗号化し(ステップS205)、ブロックに登録する(ステップS206)。当該ステップS206の処理が行われることにより、参照可能者が、ステップS205の処理にて暗号化された共通鍵を取得可能となる。そして、参照可能者は、当該取得した暗号化された共通鍵を、自己の所有する秘密鍵で復号化すればよい(後述するステップS305)。なお、当該ステップS204〜ステップS206の処理は、後述するステップS208の処理の後に行ってもよい。
【0041】
ステップS206の処理を実行した後、またはステップS203にて参照可能者の公開鍵を所有していると判定した場合(ステップS203;Yes)、情報処理装置100は、暗号化復号化部124の機能により、所有する共通鍵にてデータを暗号化する(ステップS207)。そして、暗号化したデータを対象のブロックへ登録し(ステップS208)、ブロック登録処理を終了する。当該ブロック登録処理が行われることで、登録対象のデータ(発生したトランザクションにて扱われるデータ)がブロックチェーンにより管理されることとなる。
【0042】
次に、
図6のブロック登録処理によりブロックチェーンに連結されたブロックの内容を参照する場合の参照処理について、
図7を参照して説明する。当該参照処理は、ユーザによる操作により実行される。より具体的には、参照したいグループを指定する操作が行われることにより実行される。なお、当該参照処理は、ユーザ毎に実行可能である。
【0043】
参照処理が開始されると、情報処理装置100は、ブロック統合部125の機能により、当該指定されたグループに対応するブロックチェーンで連結されたブロックの内容(各データおよび鍵情報)を全て取得する(ステップS301)。そして、当該取得したブロックの内容に、暗号化されたデータが含まれているか否かを判定する(ステップS302)。暗号化されているデータが含まれている場合(ステップS302;Yes)、対応する共通鍵を所有しているか否かを判定する(ステップS303)。この実施の形態では、データの暗号化が行われる場合には、
図6のステップS207の処理により共通鍵にて暗号化されるため、ステップS303の処理では、復号化可能な共通鍵を所有しているか否かの判定を行う。
【0044】
対応する共通鍵を所有していないと判定した場合(ステップS303;No)、情報処理装置100は、ブロック統合部125の機能により、取得した内容に暗号化された共通鍵が含まれているか否かを判定する(ステップS304)。具体的に、ステップS304の処理では、当該暗号化された共通鍵が自己の所有する秘密鍵で復号化可能であるか否かを判定する。自己の所有する秘密鍵にて当該暗号化された共通鍵が復号化可能である場合(ステップS304;Yes)、情報処理装置100は、暗号化復号化部124の機能により、当該暗号化された共通鍵を、自己の秘密鍵で復号化する(ステップS305)。
【0045】
ステップS305の処理を実行した後、またはステップS303の処理にて対応する共通鍵を所有していると判定した場合(ステップS303;Yes)、情報処理装置100は、暗号化復号化部124の機能により、当該暗号化されたデータを、共通鍵にて復号化する(ステップS306)。ステップS306の処理を実行した後、情報処理装置100は、ブロック統合部125の機能により、当該復号化したデータを出力し(ステップS307)、参照処理を終了する。
【0046】
一方、ステップS304にて、暗号化された共通鍵が自己の所有する秘密鍵では復号化不可能であると判定した場合(ステップS304;No)、暗号化されたデータを、暗号化された状態のまま出力し(ステップS307)、参照処理を終了する。また、ステップS302にて暗号化されたデータが含まれていないと判定した場合(ステップS302;No)、情報処理装置100は、ブロック統合部125の機能により、当該データを出力して(ステップS307)参照処理を終了する。
【0047】
以上が、情報処理装置100の動作である。続いて、より具体的な動作について、パターン1〜パターン3に分けて説明する。
【0048】
まず、
図3に示す「書類A」のグループにおける項目3に相当するデータが、ユーザAにのみ参照可能である場合(パターン1)について説明する。
図8は、パターン1におけるブロック登録処理の具体的な登録内容の一例を示す図である。なお、以下では、ユーザAにより
図4に示す事前登録処理が行われていることを前提に説明する(すなわち、
図8に示すように、ユーザAの公開鍵およびユーザAの公開鍵で暗号化した第1共通鍵がブロック1に登録されていることを前提に説明する)。また、ユーザAによりブロック登録処理が行われ、項目1〜項目3に相当するデータが対象のブロックへ登録されるものとする(パターン2についても同様)。
【0049】
ユーザAはまず、
図6に示すブロック登録処理を開始すると、項目1に相当するデータが暗号化対象ではないため、
図6のステップS201にてNoと判定され、ステップS202の処理にて項目1の内容がブロック1に登録される(
図8のブロック1参照)。項目2についても項目1と同様に、ステップS202の処理にて項目2の内容がブロック2に登録される(
図8のブロック2参照)。
【0050】
一方、項目3に相当するデータについては暗号化対象であるため、
図6のステップS201にてYesと判定され、ステップS203の処理に移行する。ステップS203では、参照可能者がユーザA本人であることから、参照可能者の公開鍵を所有していると判定される(Yesと判定される)。そして、ステップS207により第1共通鍵113にて当該項目3に相当するデータが暗号化され(
図8に示すように、99999999をMzYWdU0Mとするなど)、ステップS208にて当該暗号化したデータが、ブロック3に登録される。
【0051】
以上がパターン1におけるブロック登録処理の具体的な登録内容である。なお、いずれのユーザについても参照可能なデータのみを登録する場合については、
図8に示すブロック1およびブロック2への登録と同様である。続いて、当該パターン1における参照処理の具体的な参照内容について説明する。
図9は、ブロックチェーンの内容が
図8に示す状態である場合の具体的な参照内容の例を示している。
【0052】
まず、ユーザAが
図7に示す参照処理を行った場合について説明する。参照処理を開始すると、ステップS301の処理により、
図8に示すブロック1〜ブロック3の内容が取得される。そのうち、項目3に相当するデータが暗号化されていることから、ステップS302にてYesと判定され、ステップS303の処理に移行する。ステップS303の処理では、当該暗号化されたデータに対応する第1共通鍵113を所有しているため、Yesと判定され、ステップS306の処理に移行する。そして、ステップS306の処理にて項目3に相当するデータが第1共通鍵113により復号化される。続けてステップS307の処理が実行されることで、
図9(A)に示すように、項目3に相当するデータが、復号化された状態で表示される(項目1および2は暗号化されていないためそのまま表示される)。
【0053】
これに対し、ユーザBまたはユーザCが
図7に示す参照処理を行った場合、ユーザAの場合と同様に、ステップS301の処理により、
図8に示すブロック1〜ブロック3の内容が取得され、
図7のステップS302にてYesと判定されるものの、ユーザBおよびユーザCは第1共通鍵113を所有していないため、ステップS303の処理にてNoと判定される。そして、ステップS304の処理に移行するが、取得したブロック1〜3の内容には、暗号化された共通鍵が含まれていないため、ステップS304にてNoと判定される。そして、ステップS307の処理が実行され、
図9(B)に示すように、項目3に相当するデータが暗号化された状態のまま表示される(項目1および2は暗号化されていないためそのまま表示される)。
【0054】
このように、ユーザAにて項目3に相当するデータを、第1共通鍵113にて暗号化してブロックへ登録することにより、項目3に相当するデータをユーザAにのみ参照可能とすることができる。したがって、特定の情報に対する秘匿性を担保することができる。また、生成した第1共通鍵113をユーザAの公開鍵112にて暗号化してブロックへ登録することで、ユーザAは第1共通鍵113を所有せずとも、当該ブロックから取得可能となる。したがって、ユーザAは秘密鍵111を管理すればよく、第1共通鍵113の管理負担を軽減することができる。
【0055】
次に、
図3に示す「書類A」のグループにおける項目3に相当するデータが、ユーザAおよびユーザBにのみ参照可能である場合(パターン2)について説明する。
図10は、パターン2におけるブロック登録処理の具体的な登録内容の一例を示す図である。なお、パターン1と同様の部分については説明を省略する。なお、
図10にて図示を省略したブロック1にも、パターン1と同様(
図8のブロック1と同様)に、ユーザAの公開鍵で暗号化された第1共通鍵が登録されているものとする。
【0056】
ユーザAは、
図6に示すブロック登録処理を開始すると、項目1に相当するデータおよび項目2に相当するデータを、パターン1と同様に各ブロックへ登録する(
図10のブロック2参照)。そして、項目3に相当するデータについては暗号化対象であるため、
図6のステップS201にてYesと判定され、ステップS203に移行する。
【0057】
ステップS203では、参照可能者であるユーザBの公開鍵を所有していないため、Noと判定されることとなる。そして、ユーザAは、ステップS204の処理により、参照可能者であるユーザBの公開鍵を取得する。なお、
図10に示すように、ユーザBの公開鍵は、予めブロック(図示する例ではブロック3)に登録されている。例えば、ユーザAによりブロック2が登録され各ユーザ間で共有されたことに基づいて、ユーザBの操作により当該ユーザBの公開鍵が対象のブロックへ登録されればよい。また、ユーザAによりユーザBに対して公開鍵を対象ブロックへ登録する指示を送信し、当該指示に基づいてユーザBが公開鍵を登録してもよい。
図6に示すステップS204の処理では、このようにユーザBにより登録されたユーザBの公開鍵を取得する。
【0058】
ステップS204の処理に続いて、ユーザAは、ステップS205の処理により、取得したユーザBの公開鍵で第1共通鍵113が暗号化され、ステップS206の処理により、当該暗号化した第1共通鍵113が、
図10に示すように、ブロック4へ登録される。その後、上記パターン1と同様に、項目3に相当するデータが、第1共通鍵で暗号化され、ブロック5へ登録される(
図6のステップS207、S208、
図10のブロック5参照)。
【0059】
以上がパターン2におけるブロック登録処理の具体的な登録内容である。続いて、当該パターン2における参照処理の具体的な参照内容について説明する。
図11は、ブロックチェーンの内容が
図10に示す状態である場合の具体的な参照内容の例を示している。なお、参照可能者であるユーザAが参照処理を行った場合についてはパターン1で説明した処理(パターン1の第1共通鍵113を所有している場合の処理)と同様の処理により(
図7のステップS303にてYesと判定され、ステップS306の処理にて復号化されることにより)、
図11(A)に示すように、項目3に相当するデータが復号化された状態で表示される。また、参照可能者ではないユーザCが参照処理を行った場合についても、パターン1で説明した処理(パターン1の第1共通鍵113を所有していない場合の処理)と同様の処理により(
図7のステップS304にてNoと判定され)、
図11(B)に示すように、項目3に相当するデータが暗号化された状態で表示される。したがって、ここでは、ユーザBにより参照処理が行われた場合を例に説明する。
【0060】
ユーザBが参照処理を開始すると、ステップS301の処理により、
図10に示すブロック1〜ブロック5の内容が取得される(なお、
図10に示す例ではブロック1を省略している)。そのうち、項目3に相当するデータが暗号化されていることから、ステップS302にてYesと判定され、ステップS303の処理に移行する。ステップS303の処理では、当該暗号化されたデータに対応する第1共通鍵113を所有していないため、Noと判定され、ステップ304の処理に移行する。ここで、
図10に示すブロック4にユーザBの公開鍵で暗号化された第1共通鍵113が登録されており、当該ブロックの内容は、
図7のステップS301の処理にて取得されているため、当該ステップS304の処理では、自己の所有する秘密鍵(ユーザBの所有する秘密鍵)で当該第1共通鍵113を復号化可能であると判定される(すなわち、Yes)と判定される。
【0061】
続いてステップS305の処理により、ユーザBの秘密鍵で、当該暗号化された第1共通鍵113が復号化され、ユーザBは第1共通鍵113を取得することとなる。そして、ステップS306の処理にて、項目3に相当するデータが第1共通鍵113により復号化され、続けてステップS307の処理が実行されることで、
図11(A)に示すように、項目3に相当するデータが、復号化された状態で表示される(項目1および2は暗号化されていないためそのまま表示される)。
【0062】
このように、ユーザBの公開鍵をユーザAが取得し、第1共通鍵113を取得したユーザBの公開鍵にて暗号化してブロックへ登録することにより、項目3に相当するデータを、ユーザAおよびユーザBが参照可能とすることができる。したがって、参照可能者以外のユーザに対し、特定の情報に対する秘匿性を適切に担保することができる。
【0063】
次に、
図3に示す「書類A」のグループにおける項目3にデータが、ユーザBにのみ参照可能である場合(パターン3)について説明する。なお、パターン3は、パターン1およびパターン2とは異なり、参照可能者がユーザBのみであるため、当該項目3に相当するデータについては、項目1および項目2とは異なり(項目1および項目2はユーザAが登録)、ユーザBが対象のブロックへ登録する。
図12は、パターン3におけるブロック登録処理の具体的な登録内容の一例を示す図である。なお、パターン1と同様の部分については説明を省略する。なお、
図12にて図示を省略したブロック1にも、パターン1と同様(
図8のブロック1と同様)に、ユーザAの公開鍵で暗号化された第1共通鍵が登録されているものとする。
【0064】
ユーザAは、
図6に示すブロック登録処理を開始すると、項目1に相当するデータおよび項目2に相当するデータを、パターン1と同様に各ブロックへ登録する(
図12のブロック2参照)。続いて項目3に相当するデータを対象のブロックへ登録することとなるが、項目3に相当するデータは、ユーザBにのみ参照可能であるため、ユーザBにより登録されるべきデータである。なお、データの登録者については、事前登録処理にてグループ情報が登録(定義)される際に予め定められていればよい。
【0065】
項目2に相当するデータが対象のブロック(この例ではブロック2)に登録され各ユーザ間で共有されると、ユーザBはこのことに基づいて、
図4のステップS102〜ステップS104の処理を実行する。なお、ユーザAによりユーザBへ、項目3に相当するデータの登録を促す信号を送信してもよい。具体的に、ユーザBの情報処理装置100は、共通鍵生成部123の機能により、第1共通鍵113とは異なる新たな共通鍵として第2共通鍵を生成し(ステップS102)、暗号化復号化部124の機能により、当該生成した第2共通鍵をユーザBの公開鍵112で暗号化する(ステップS103)。そして、データ登録部121の機能により、暗号化した第2共通鍵を対象のブロック(
図12に示す例ではブロック3)に登録する(ステップS104)。ここで、第2共通鍵は、第1共通鍵113とは異なる鍵であるため、当該第2共通鍵で暗号化した内容を復号化できるのは、当該第2共通鍵の所有者のみとなる。また、当該第2共通鍵は、ユーザBの公開鍵により暗号化されているため、ユーザBの秘密鍵でなければ復号化することができないこととなる。
【0066】
暗号化した第2共通鍵を対象のブロックへ登録した後、ユーザBは、パターン1と同様に、参照可能者がユーザB本人であることから、
図6のステップS203にて参照可能者の公開鍵を所有していると判定され(Yesと判定され)、ステップS207にて第2共通鍵にて当該項目3に相当するデータの内容が暗号化される(
図12に示すように、99999999をXI0tagBagとする)。そして、ステップS208にて当該暗号化した内容が、ブロック4に登録される(
図12のブロック4参照)。
【0067】
以上がパターン3におけるブロック登録処理の具体的な登録内容である。なお、その後、ユーザBのみでなくユーザCも参照可能とする場合には、パターン2と同様に、ユーザBがユーザCの公開鍵を取得し、当該ユーザCの公開鍵により第2共通鍵を暗号化して、対象のブロックに登録すればよい。また、パターン2において項目3に相当するデータを対象のブロックへ登録した後、例えば、ユーザAにのみ参照可能な項目4に相当するデータを、対象のブロックへ登録するような場合においても、当該パターン3と同様に、登録者であるユーザAが新たな共通鍵を生成し、当該生成した新たな共通鍵により項目4に相当するデータを暗号化してブロックへ登録すればよい。すなわち、登録対象のデータに対する参照可能者を追加する場合には、パターン2で説明したように、追加された参加者の公開鍵を取得し、取得した公開鍵にて共通鍵を暗号化してブロック登録を行う一方で、登録対象のデータに対する参照可能者を減少させる場合や、全く異なる参照可能者とする場合には、パターン3で説明したように、新たな共通鍵を生成すればよい。
【0068】
なお、パターン3における参照処理の具体的な参照内容については、第1共通鍵113が第2共通鍵であり、第2共通鍵所有者がユーザBである他は、パターン1と同様であるため、詳細な説明は省略する。
図13は、ブロックチェーンの内容が
図12に示す状態である場合の具体的な参照内容の例を示している。
【0069】
参照可能者であるユーザBが参照処理を行った場合、パターン1で説明した処理(パターン1の第1共通鍵113を所有している場合の処理)と同様の処理により(
図7のステップS303にてYesと判定され、ステップS306の処理にて復号化されることにより)、
図13(A)に示すように項目3に相当するデータが、復号化された状態で表示される。一方、参照可能者ではないユーザAおよびユーザCが参照処理を行った場合については、パターン1で説明した処理(パターン1の第1共通鍵113を所有していない場合の処理)と同様の処理により(ステップS304にてNoと判定され)、
図13(B)に示すように項目3に相当するデータが暗号化された状態で表示されることとなる。
【0070】
このように、先に共通鍵をブロックに登録したユーザA以外のユーザBにのみ参照可能とする場合、当該参照可能者(ユーザB)が新たに第2共通鍵を生成し、当該第2共通鍵にて暗号化したデータをブロックへ登録すればよい。したがって、参照可能者以外のユーザに対し、特定の情報に対する秘匿性を適切に担保することができる。また、当該生成した第2共通鍵を自己の所有する公開鍵で暗号化してブロックへ登録しておけば、第2共通鍵の管理負担を軽減することができる。
【0071】
(変形例)
なお、この発明は、上記実施の形態に限定されず、様々な変形及び応用が可能である。例えば、情報処理装置100では、上記実施の形態で示した全ての技術的特徴を備えるものでなくてもよく、従来技術における少なくとも1つの課題を解決できるように、上記実施の形態で説明した一部の構成を備えたものであってもよい。また、下記の変形例それぞれについて、少なくとも一部を組み合わせても良い。
【0072】
上記実施の形態では、理解を容易にするため、同一グループ内の一つのトランザクションにて扱われるデータが一つのブロックに登録され、グループ毎にブロックチェーンが生成される例を示したが、これは一例である。例えば、
図14に示すように、一つのブロックには、異なるグループの契約書に関するトランザクションにて扱われるデータがそれぞれ登録されてもよい。図示する例では、グループAについては、ユーザA、ユーザB、ユーザC間における契約書を示し、グループBについては、ユーザA、ユーザD間における契約書を示している。なお、図示は省略しているが、同一グループ内の複数のトランザクションにて扱われるデータが一つのブロックに登録されてもよい。この場合についても、上記実施の形態と同様の処理により、参照可能者に対し適切に復号化可能となり、参照可能者以外のユーザに対し、特定の情報に対する秘匿性を適切に担保することができる。
【0073】
また、上記実施の形態では、
図1に示す情報処理システム1において、当該トランザクションにて扱われるデータを全てブロックチェーンにて管理する例を示したが、これは一例である。例えば、将来に亘って機密性の高い情報については、例えば
図15に示す情報処理システム2により管理してもよい。
図15に示す情報処理システム2は、
図1に示す情報処理システム1と比較して、データベース199を備えるセンターサーバ999を備えている。
図15に示す情報処理システム2では、例えば、機密性の極めて高い情報(機密情報)については、センターサーバ999のデータベース199にて管理されている。そして、ブロックチェーンで連結されたブロックに、機密情報の格納先であるアドレス情報(センターサーバ999のデータベース199のアドレス)と、当該機密情報のハッシュ値と、当該機密情報を特定するユニークキーが暗号化されて(上記実施の形態と同様に暗号化されればよい)登録される。参照可能者は、参照処理を行うことで各ブロックの情報を取得し、機密情報の格納先アドレス情報、ハッシュ値、およびユニークキーを復号化する。
【0074】
そして、復号化したアドレス情報に基づいてセンターサーバ999のデータベース199にアクセスし、当該ハッシュ値およびユニークキーが一致するか否かが検証され、一致する場合にアクセスを許可して参照可能者に情報を参照させればよい。これによれば、機密情報をセンターサーバ999にて管理し、機密情報そのものをブロックチェーンでは管理せず、機密情報のハッシュ値をブロックチェーンにて管理する。したがって、万が一鍵に関する情報が漏洩した場合でも安全性を確保することができる。また、ハッシュ値に基づいて機密情報を復元することは不可能であるため、機密性を担保することができる。
【0075】
また、上記実施の形態では、契約書を作成する場合を例として説明したが、この発明は、契約書を作成する場合に限られず、特定の情報についての秘匿性を担保することが必要な様々な取引が行われる場合において適用可能である。
【0076】
なお、上述の機能を、OS(Operating System)とアプリケーションとの分担、またはOSとアプリケーションとの協同により実現する場合等には、OS以外の部分のみを媒体に格納してもよい。
【0077】
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板(BBS、Bulletin Board System)に当該プログラムを掲示し、ネットワークを介して当該プログラムを配信してもよい。そして、これらのプログラムを起動し、オペレーティングシステムの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成してもよい。