(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-07
(45)【発行日】2022-12-15
(54)【発明の名称】通信装置、通信方法、および通信プログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20221208BHJP
H04L 9/32 20060101ALI20221208BHJP
G06F 21/62 20130101ALI20221208BHJP
【FI】
H04L9/08 A
H04L9/08 C
H04L9/32 200Z
G06F21/62 309
G06F21/62 318
(21)【出願番号】P 2018215054
(22)【出願日】2018-11-15
【審査請求日】2021-08-10
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100133570
【氏名又は名称】▲徳▼永 民雄
(72)【発明者】
【氏名】鈴木 大
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2009-103774(JP,A)
【文献】特開2015-079346(JP,A)
【文献】特開2008-103936(JP,A)
【文献】特開2016-212293(JP,A)
【文献】福光 正幸,他,秘密分散法と匿名通信による秘匿性に優れたP2P型ストレージ技術の提案,情報処理学会研究報告,情報処理学会,2016年02月25日,Vol. 2016-CSEC-72,No. 6,pp. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
H04L 9/32
G09C 1/00
G06F 21/60-21/62
(57)【特許請求の範囲】
【請求項1】
データ提供ノード、データ取得ノード、および複数の参加ノードが接続されるネットワークにおいて使用される通信方法であって、
前記データ提供ノードは、
データをN(Nは、2以上の整数)個のデータ部品に分割し、
前記N個のデータ部品を異なる記憶領域に保存し、
各データ部品が保存された記憶領域のアドレスを、前記複数の参加ノードの中の異なるN個の参加ノードの公開鍵でそれぞれ暗号化し、
前記データ取得ノードが前記データにアクセスする権利を有することを表すアクセス権情報および暗号化されたN個のアドレスを前記複数の参加ノードに送信
し、
各参加ノードは、前記データの取得を要求するデータ取得要求を前記データ取得ノードから受信したときに、
前記アクセス権情報を用いて前記データ取得ノードが前記データにアクセスする権利を有することを確認し、
暗号化された前記N個のアドレスを自分の秘密鍵で復号し、
復号により得られたアドレスを前記データ取得ノードに送信する
ことを特徴とする通信方法。
【請求項2】
前記データ取得ノードは、2以上の参加ノードから受信するアドレスを用いて、前記記憶領域から対応するデータ部品を取得する
ことを特徴とする請求項
1に記載の通信方法。
【請求項3】
前記N個のデータ部品のうちのK個のデータ部品から前記データを再生可能なように、シャミアの秘密分散法を用いて前記データがN個のデータ部品に分割されたとき、前記データ取得ノードは、K個以上の参加ノードから受信するアドレスを用いて、前記記憶領域からK個以上のデータ部品を取得して前記データを再生する
ことを特徴とする請求項
2に記載の通信方法。
【請求項4】
前記データは、N個のデータ部品に分割される前に、前記データ取得ノードの公開鍵で暗号化される
ことを特徴とする請求項
1に記載の通信方法。
【請求項5】
前記データは、N個のデータ部品に分割される前に、共通鍵で暗号化され、
前記共通鍵は、前記データ取得ノードの公開鍵で暗号化されて前記データ取得ノードに送信される
ことを特徴とする請求項
1に記載の通信方法。
【請求項6】
データ提供ノード、データ取得ノード、および複数の参加ノードが接続されるネットワークにおいて使用される通信方法であって、
前記データ提供ノードは、
データをN(Nは、2以上の整数)個のデータ部品に分割し、
前記データ取得ノードが前記データにアクセスする権利を有することを表すアクセス権情報を前記複数の参加ノードに送信し、
各データ部品を、前記複数の参加ノードの中の異なるN個の参加ノードに送信し、
前記N個の参加ノードは、それぞれ、
前記データの取得を要求するデータ取得要求を前記データ取得ノードから受信し、且つ、前記アクセス権情報を用いて前記データ取得ノードが前記データにアクセスする権利を有することを確認したときに、前記データ提供ノードから受信したデータ部品を前記データ取得ノードに送信する
ことを特徴とする通信方法。
【請求項7】
データ提供ノード、データ取得ノード、および複数の参加ノードが接続されるネットワークにおいて使用される通信方法であって、
前記データ提供ノードは、
データをN(Nは、2以上の整数)個のデータ部品に分割し、
各データ部品を、前記複数の参加ノードの中の異なるN個の参加ノードの公開鍵でそれぞれ暗号化し、
前記データ取得ノードが前記データにアクセスする権利を有することを表すアクセス権情報および暗号化された前記N個のデータ部品を前記複数の参加ノードに送信し、
前記N個の参加ノードは、それぞれ、
前記データの取得を要求するデータ取得要求を前記データ取得ノードから受信し、且つ、前記アクセス権情報を用いて前記データ取得ノードが前記データにアクセスする権利を有することを確認したときに、暗号化された前記N個のデータ部品を自分の秘密鍵で復号し、
復号により得られたデータ部品を前記データ取得ノードに送信する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信方法、および通信プログラムに係わる。
【背景技術】
【0002】
近年、データを売買するサービスを提供するデータ流通市場が普及し始めている。データ流通市場の参加者は、自分が保有するデータを市場に提供することができる。また、参加者は、市場に提供されているデータを取得または購入することができる。
【0003】
他方、管理者が存在しない分散環境下で、改ざん不能な状態でデータを管理するブロックチェーン技術が注目されている。ブロックチェーン技術は、複数の参加者または全参加者がトランザクションを検証することで改ざん不能な分散台帳を実現する。そして、データ流通市場をサポートするためにブロックチェーンを利用する方法が提案されている。
【0004】
ここで、ブロックチェーンのような複数の分散されたノードが協調して処理を実行するシステムでは、各ノードにおける処理結果を同期させるため、合意形成アルゴリズムが使用される。合意形成アルゴリズムは、複数の参加ノードが処理内容および処理結果を検証した後に処理を確定させる。
【0005】
また、データ流通システムにおいては、データの登録およびデータの取得が行われる。データ登録手続においては、登録するデータに関連する情報(例えば、メタデータ)が使用される。メタデータは、登録するデータをどのユーザに公開するのかを表すアクセスポリシ情報を含む。データ取得手続においては、データ提供者は、アクセスポリシの検証を行い、データの取得を要求するユーザがアクセス権を有することを確認できたときにデータを送信する。
【0006】
なお、秘匿性の高いデータを少ないハードウェア資源で安全に保管する方法が提案されている(例えば、特許文献1)。また、クラウドコンピューティングリソースに確実にデータを記憶する方法が提案されている(例えば、特許文献2)。さらに、ネットワークを介して行われる通信の匿名性を向上する方法が提案されている(例えば、特許文献3)。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2006-311383号公報
【文献】特表2012-527838号公報
【文献】特開2017-079350号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ブロックチェーンにおいては、上述したように、複数の参加者によりトランザクションが検証される。そして、複数の検証結果に基づいて全参加者の合意が形成される。
【0009】
合意形成アルゴリズムの1つとして、PoW(Proof of Work)が普及している。PoWは、厳格な承認処理を行うので、不特定多数の参加者によるネットワークで合意を形成するケースに適している。したがって、データ流通サービスにおいて不特定多数の参加者から要求されるトランザクションを処理する場合、PoWで合意形成を行うことが考えられる。ただし、PoWで合意形成を行う場合、要求されたトランザクションが実行されるまでに要する時間が長くなることがある。
【0010】
本発明の1つの側面に係わる目的は、管理者が存在しない分散環境下で、改ざん困難なデータの送信に要する時間を削減することである。
【課題を解決するための手段】
【0011】
本発明の1つの態様の通信方法は、複数の参加ノードの合意に基づいてデータ取得ノードにデータを提供する。この通信方法は、前記データをN(Nは、2以上の整数)個のデータ部品に分割し、前記N個のデータ部品を異なる記憶領域に保存し、各データ部品が保存された記憶領域のアドレスを、前記複数の参加ノードの中の異なるN個の参加ノードの公開鍵でそれぞれ暗号化し、前記データ取得ノードが前記データにアクセスする権利を有することを表すアクセス権情報および暗号化されたN個のアドレスを前記複数の参加ノードに送信する。
【発明の効果】
【0012】
上述の態様によれば、管理者が存在しない分散環境下で、改ざん困難なデータの送信に要する時間が削減される。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施形態に係わる通信システムの一例を示す図である。
【
図2】ブロックの検証および確定について説明する図である。
【
図3】PoWで合意形成が行われるケースにおけるデータ送信のシーケンスの一例を示す図である。
【
図5】シャミアの秘密分散法について説明する図である。
【
図7】データ部品および暗号化アドレスを生成する手順の一例を示す図である。
【
図8】データ取得手続の一例を示す図(その1)である。
【
図9】データ取得手続の一例を示す図(その2)である。
【
図10】データ取得手続の一例を示す図(その3)である。
【
図11】データ取得手続の一例を示す図(その4)である。
【
図12】暗号化アドレスの復号およびデータ部品の取得の一例を示す図である。
【
図13】データ取得手続のシーケンスの一例を示す図である。
【
図14】データ登録手続の一例を示すフローチャートである。
【
図15】データ取得手続における参加ノードの処理の一例を示すフローチャートである。
【
図16】データ取得者の処理の一例を示すフローチャートである。
【
図17】各ノードに実装されるコンピュータのハードウェア構成の一例を示す図である。
【
図18】第2の実施形態におけるデータ登録手続の一例を示す図である。
【
図19】第3の実施形態におけるデータ登録手続の一例を示す図である。
【発明を実施するための形態】
【0014】
図1は、本発明の実施形態に係わる通信システムの一例を示す。この実施例では、通信システム100において、ブロックチェーン技術を利用してデータ流通サービスが提供される。
【0015】
以下の記載では、データ流通サービスに参加するユーザにより使用されるコンピュータを「参加ノード(又は、参加者)」と呼ぶことがある。データ流通サービスにデータを提供するユーザまたはそのユーザにより使用されるコンピュータを「データ提供者(又は、データ提供ノード)」と呼ぶことがある。データ流通サービスを利用してデータを取得するユーザまたはそのユーザにより使用されるコンピュータを「データ取得者(又は、データ取得ノード)」と呼ぶことがある。データ処理トランザクションを検証するコンピュータを「マイナー」と呼ぶことがある。なお、データ提供者、データ取得者、マイナーは、それぞれデータ流通サービスに参加する参加ノードである。すなわち、各参加ノードは、データ提供ノード、データ取得ノード、またはマイナーとして機能することができる。
【0016】
ブロックチェーンネットワーク200には、
図1に示すように、複数の参加ノード(
図1では、参加ノード1~4)、データ提供者11、参加ノード(データ取得者)12、マイナー13が接続されている。なお、ブロックチェーンネットワーク200には、不特定多数の参加ノードが接続され得る。また、ブロックチェーンネットワーク200には、複数のマイナーが接続される。
【0017】
各参加ノード1~4は、暗号通信を実行する機能を備える。すなわち、各参加ノード1~4は、公開鍵および秘密鍵のペアを生成し、その公開鍵を公開する。よって、例えば、データ提供者11は、各参加ノード1~4の公開鍵を取得している。
【0018】
データ提供者11は、データ流通サービスにデータDを提供する。ただし、この実施例では、データ提供者11は、データ提供者11が許可する参加ノードのみに対してデータDを提供する。
図1に示す例では、データ提供者11は、参加ノード(データ取得者)12に対してデータDへのアクセスを許可するものとする。
【0019】
参加ノード(データ取得者)12は、データDを取得したいときは、データDの取得を要求するデータ取得要求トランザクションを生成する。このデータ取得要求トランザクションは、ブロックチェーンネットワーク200を介して各参加ノードに送信される。
【0020】
マイナー13は、各参加ノードにより生成されるトランザクションを検証する。たとえば、データ取得者12によりデータ取得要求トランザクションが生成されたときは、マイナー13は、そのデータ取得要求トランザクションを検証する。但し、マイナー13は、複数のトランザクションを含む「ブロック」を検証する。
【0021】
図2は、PoWによるブロックの検証および確定について説明する図である。この実施例では、マイナー#1~#3がそれぞれブロックを検証する。検証結果は、ブロックチェーンネットワークに接続する全参加ノードに送信される。なお、
図2に示す例では、ブロックAの検証が終了しているものとする。
【0022】
マイナー#1は、トランザクションTx1、Tx2、Tx3を含むブロックBを検証し、さらにトランザクションTx4、Tx5、Tx6を含むブロックCを検証する。これらの検証結果は、全参加ノードに送信される。また、マイナー#2は、トランザクションTx1、Tx2、Tx3を含むブロックBを検証し、さらにトランザクションTx4、Tx6、Tx7を含むブロックDを検証する。これらの検証結果も、全参加ノードに送信される。
【0023】
各参加ノードにおいて、受信順に検証結果が結合される。すなわち、チェーンが形成される。たとえば、参加ノードXにおいては、マイナー#1から受信する検証結果に基づいて、ブロックA、B、Cが順番に結合される。続いて、マイナー#2の検証結果が参加ノードXに到着する。マイナー#2から受信する検証結果においては、ブロックBの次にブロックDが続いている。この場合、参加ノードXにおいて、ブロックBの次にブロックDも結合される。この後、マイナー#3の検証結果が参加ノードXに到着する。マイナー#3から受信する検証結果においては、ブロックCの次にブロックEが続いている。この場合、参加ノードXにおいて、ブロックCの次にブロックEが結合される。
【0024】
参加ノードは、あるブロック(以下、対象ブロック)の後ろに所定数のブロックが結合されたときに、対象ブロックを確定させる。PoWにおいては、例えば、対象ブロックの後ろに6個のブロックが結合されたときに、対象ブロックが確定したと判定される。そして、参加ノードは、確定したブロック内のトランザクションを実行できる。例えば、データ送信要求トランザクションが参加ノードXに与えられたときは、そのデータ送信要求トランザクションを含むブロックの後ろに6個のブロックが結合された後に、参加ノードXは、そのデータ送信要求トランザクションに従ってデータ送信を行うことができる。
【0025】
図3は、PoWで合意形成が行われるケースにおけるデータ送信のシーケンスの一例を示す。この実施例では、データ取得者がデータ取得要求トランザクションを生成して全ノードに送信するものとする。なお、データ取得者がデータ取得要求トランザクションを生成したとき、データ提供者のブロックチェーンには、ブロック0が記録されているものとする。
【0026】
マイナーは、データ取得要求トランザクションを含むブロック1を検証し、その検証結果を全ノードに送信する。これにより、データ提供者のブロックチェーンにおいて、ブロック0の次にブロック1が結合される。
【0027】
この後、ネットワーク上の参加ノードが次々とトランザクションを生成する。また、マイナーは、生成される複数のトランザクションを含むブロックを検証し、その検証結果を全ノードに送信する。この結果、各ノードのブロックチェーンにブロックが追加されてゆく。そして、データ提供者のブロックチェーンにおいて、ブロック1の後ろに6個のブロック(すなわち、ブロック2~7)が結合すると、データ提供者は、ブロック1に含まれているデータ取得要求トランザクションを実行する。これにより、データ提供者からデータ取得者にデータが送信される。
【0028】
このように、PoWで合意形成が行われるケースでは、処理すべきトランザクションを受け取ったノードは、所定数のブロックの検証が終了するまでそのトランザクションを実行できない。このため、要求された処理(
図3に示す例では、データ送信)が実行されるまでの待ち時間が長くなることがある。
【0029】
<第1の実施形態>
図4は、データ登録手続の一例を示す。この実施例では、データ提供者11がデータ流通サービスにデータDを提供するものとする。
【0030】
データ提供者11は、シャミアの秘密分散法で、データDをN(Nは、2以上の整数)個のデータ部品に分割する。
図4に示す例では、データDは、4個のデータ部品D1~D4に分割されている。
【0031】
なお、データ提供者11は、データDを分割する前に、データDを暗号化してもよい。例えば、データDは、データDへのアクセスが許可されている参加ノードの公開鍵で暗号化される。或いは、データDは、共通鍵で暗号化される。この場合、この共通鍵は、データDへのアクセスが許可されている参加ノードの公開鍵で暗号化される。
【0032】
シャミアの秘密分散法においては、
図5に示すように、入力データは、N個のデータ部品に分割される。このとき、各データ部品は、入力データの内容が分からないように生成される。また、復号装置は、N個のデータ部品のうちのK(Kは、N以下の整数)個のデータ部品から入力データを再生できる。Nの値およびKの値は、予め設定することが可能である。例えば、NおよびKの値は、それぞれ参加ノードの総数であってもよい。また、NおよびKの値は、それぞれデータの重要度に応じて決定してもよい。この場合、データが重要であるときに、NおよびKの値を大きくしてもよい。
【0033】
データ提供者11は、シャミアの秘密分散法以外の方法でデータDをN個のデータ部品に分割してもよい。ただし、各データ部品は、元データの内容が分からないように生成されることが好ましい。また、N個のデータ部品のうちのK個のデータ部品から元データを再生できることが好ましい。
【0034】
データ提供者11は、データ部品D1~D4を所定の記憶領域に保存する。この実施例では、データ部品D1~D4は、IPFS(Inter Planetary File System)上の異なる領域に保存される。このとき、データ部品D1~D4は、各参加ノードからアクセス可能な状態でIPFSに保存される。ただし、データ部品D1~D4が保存された記憶領域のアドレスは公開されない。よって、この時点では、各参加ノードは、実質的にデータ部品D1~D4にアクセスできない。
【0035】
データ提供者11は、データ部品D1~D4が保存された記憶領域のアドレスを取得する。例えば、IPFSにデータ部品D1~D4が保存されたときには、各データ部品D1~D4が保存された記憶領域のアドレスが出力される。この例では、データ部品D1、D2、D3、D4がそれぞれアドレスADD1、ADD2、ADD3、ADD4に保存されるものとする。
【0036】
なお、
図4に示す例では、データ部品D1~D4はIPFSに保存されるが、第1の実施形態はこの構成に限定されるものではない。すなわち、データ提供者11は、任意の記憶領域にデータ部品D1~D4を保存することができる。
【0037】
データ提供者11は、データ部品D1~D4が保存された記憶領域のアドレスADD1~ADD4をそれぞれ暗号化する。このとき、データ提供者11は、データ流通サービスに参加する全参加ノードの中から、後述する復号処理を実行する参加ノードとして、IPFSに保存したデータ部品の個数と同数の参加ノードを選択する。この実施例では、後述する復号処理を実行する参加ノードとして、データ部品D1~D4に対してそれぞれ参加ノード1~4が選択されるものとする。そして、データ提供者11は、データ部品D1~D4が保存された記憶領域のアドレスADD1~ADD4を、それぞれ参加ノード1~4の公開鍵で暗号化する。即ち、アドレスADD1は参加ノード1の公開鍵で暗号化され、アドレスADD2は参加ノード2の公開鍵で暗号化され、アドレスADD3は参加ノード3の公開鍵で暗号化され、アドレスADD4は参加ノード4の公開鍵で暗号化される。この結果、暗号化アドレスADD1~ADD4が得られる。
【0038】
データ提供者11は、データDの登録に係わるアドレスリストを生成する。このアドレスリストは、
図6に示すように、アクセス権情報、復号ノードリスト、暗号化アドレスを含む。アクセス権情報は、データDへのアクセスが許可された参加ノードを表す。この例では、データ提供者11は、参加ノード(データ取得者)12に対してデータDへのアクセスを許可している。復号ノードリストは、暗号化アドレスADD1~ADD4のいずれか1つを復号する参加ノードを表す。この例では、参加ノード1~4の公開鍵でアドレスADD1~ADD4をそれぞれ暗号化することで、暗号化アドレスADD1~ADD4が得られている。よって、復号ノードリストには、参加ノード1~4が設定されている。されに、暗号化アドレスとして、上述のようにして生成された暗号化アドレスADD1~ADD4がアドレスリストに設定される。
【0039】
アドレスリストは、全参加ノードに公開される。すなわち、データ提供者11は、
図4に示すように、このアドレスリストを全参加ノードに送信する。アドレスリストは、例えば、データ登録コントラストの実行結果として、ブロックチェーン上に記録されるようにしてもよい。そして、各参加ノードは、データ提供者11から受信するアドレスリストを保存する。これにより、データ登録手続が完了する。
【0040】
図7は、データ部品および暗号化アドレスを生成する手順の一例を示す。データ登録手続においては、データ提供者11は、データDをシャミアの秘密分散法でデータ部品D1~D4に分割してIPFSに登録する。また、データ提供者11は、データ部品D1~D4が保存された記憶領域のアドレスADD1~ADD4を取得する。さらに、データ提供者11は、参加ノード1~4の公開鍵PK1~PK4でアドレスADD1~ADD4を暗号化して暗号化アドレスADD1~ADD4を生成する。そして、暗号化アドレスADD1~ADD4を含むアドレスリストは、ブロックチェーン上で公開される。
【0041】
図8~
図11は、データ取得手続の一例を示す。この例では、参加ノード(データ取得者)12がデータDを取得するものとする。よって、データ取得手続の説明においては、参加ノード(データ取得者)12を単に「データ取得者12」と呼ぶことがある。なお、
図8~
図11に示すデータ取得手続が開始される前に、
図4に示すデータ登録手続が完了しているものとする。すなわち、データDを分割することにより得られるデータ部品D1~D4がIPFSに保存されている。また、各参加ノード1~4は、データ提供者11から
図6に示すアドレスリストを受信している。
【0042】
図8において、データ取得者12は、データ取得要求トランザクションを生成する。このとき、データ取得者12は、データ取得コントラストにトランザクションを送信してもよい。また、このデータ取得要求トランザクションは、データDの取得を要求するメッセージを含む。そして、このデータ取得要求トランザクションは、全参加ノードに送信される。すなわち、各参加ノード1~4は、データ取得者12から送信されるデータ取得要求トランザクションを受信する。なお、データ取得要求トランザクションは、その送信元を表す情報を含む。
【0043】
図9において、マイナー13は、データ取得者12から送信されたデータ取得要求トランザクションを含むブロックを検証する。そして、マイナー13は、このブロックの検証結果を全参加ノードに送信する。すなわち、各参加ノード1~4は、マイナー13から検証結果を受信する。
【0044】
図10において、各参加ノード1~4は、データ取得要求トランザクションを含むブロックについての検証結果をマイナー13から受信すると、データ取得者12から送信されたデータ取得要求トランザクションが要求するデータへのアクセス権を確認する。このとき、各参加ノード1~4は、データ提供者11から先に受信しているアドレスリストを参照する。この実施例では、
図6に示すように、参加ノード(データ取得者)12に対してデータDへのアクセス権が与えられている。したがって、各参加ノード1~4は、受信したデータ取得要求トランザクションに対応する処理を実行する。
【0045】
まず、各参加ノード1~4は、自ノードが暗号化アドレスを復号する復号ノードであるか否かを判定する。具体的には、データ提供者11から先に受信しているアドレスリストにおいて、復号ノードとして自ノードが登録されているか否が判定される。
図6に示す例では、復号ノードとして参加ノード1~4が登録されている。よって、各参加ノード1~4は、復号処理を実行する。
【0046】
参加ノード1は、参加ノード1の秘密鍵を用いて4個の暗号化アドレスADD1~ADD4に対して復号処理を行う。ここで、暗号化アドレスADD1~ADD4は、それぞれ参加ノード1~4の公開鍵で暗号化されている。したがって、参加ノード1の秘密鍵で復号処理を実行すると、暗号化アドレスADD1に対する復号は成功するが、暗号化アドレスADD2~ADD4に対する復号は失敗する。すなわち、参加ノード1は、アドレスADD1を取得できるが、アドレスADD2~ADD4を取得できない。
【0047】
同様に、参加ノード2は、参加ノード2の秘密鍵を用いて暗号化アドレスADD1~ADD4に対して復号処理を行い、アドレスADD2を取得する。参加ノード3は、参加ノード3の秘密鍵を用いて暗号化アドレスADD1~ADD4に対して復号処理を行い、アドレスADD3を取得する。参加ノード4は、参加ノード4の秘密鍵を用いて暗号化アドレスADD1~ADD4に対して復号処理を行い、アドレスADD4を取得する。この後、参加ノード1~4は、それぞれアドレスADD1~ADD4をデータ取得者12に送信する。
【0048】
図11において、データ取得者12は、参加ノード1~4から受信したアドレスにアクセスして、IPFSからデータ部品D1~D4を取得する。具体的には、データ取得者12は、アドレスADD1からデータ部品D1を取得し、アドレスADD2からデータ部品D2を取得し、アドレスADD3からデータ部品D3を取得し、アドレスADD4からデータ部品D4を取得する。そして、データ取得者12は、取得したデータ部品D1~D4からデータDを再生する。
【0049】
なお、
図11に示す例では、データ取得者12は全てのデータ部品D1~D4を取得しているが、第1の実施形態はこのようなケースに限定されるものではない。例えば、データ部品D1~D4のうちの任意の3つからデータDを再生可能なときは、データ取得者12は、データ部品D1~D4のうちの任意の3つを取得してデータDを再生してもよい。例えば、参加ノード4による復号が失敗した場合、データ取得者12は、アドレスADD1~ADD3を受信する。この場合、データ取得者12は、IPFSからデータ部品D1~D3を取得してデータDを再生する。
【0050】
図12は、暗号化アドレスの復号およびデータ部品の取得の一例を示す。この例では、各参加ノード1~4によりデータ取得者12のアクセス権の確認が終了しているものとする。
【0051】
参加ノード1~4は、アドレスリストに設定されている暗号化アドレスADD1~ADD4をそれぞれ参加ノード1~4の秘密鍵SK1~SK4で復号してアドレスADD1~ADD4を得る。アドレスADD1~ADD4は、それぞれデータ取得者12に送信される。そうすると、データ取得者12は、アドレスADD1~ADD4を用いてIPFSにアクセスしてデータ部品D1~D4を取得する。そして、データ取得者12は、データ部品D1~D4からデータDを再生する。
【0052】
図13は、データ取得手続のシーケンスの一例を示す。この例では、
図4に示すデータ登録手続が完了しているものとする。すなわち、データDを分割することにより得られるデータ部品D1~D4がIPFSに保存されている。また、各参加ノード1~4は、データ提供者11から
図6に示すアドレスリストを受信している。
【0053】
データ取得者12がデータ取得要求トランザクションを生成すると、マイナー13は、そのトランザクションを含むブロックに対してマイニングを実行する。このマイニングによりデータ取得要求トランザクションが検証される。そして、検証結果は各参加ノードに送信される。
【0054】
参加ノード1~4は、データ取得者12のアクセス権を確認すると、自分の秘密鍵を用いた復号処理によりアドレスを取得してデータ取得者12に送信する。データ取得者12は、参加ノード1~4から受信したアドレスからデータ部品D1~D4を取得し、データDを再生する。
【0055】
ここで、
図3に示す通信方法と第1の実施形態の通信方法とを比較する。
図3に示す通信方法では、対象トランザクションを含むブロックの後ろに所定数(実施例では、6個)のブロックが結合されたときに合意が形成され、対象トランザクションの実行が可能になる。このため、対象トランザクションが生成されたときからそのトランザクションが実行されるまでの時間が長くなることがある。
【0056】
これに対して、第1の実施形態の通信方法においては、複数の参加ノードが暗号化アドレスの復号を行い、所定数以上のアドレスが得られたときに、データ取得者12はデータを取得できる。この方式においては、ブロックチェーンの合意は、実施的に、所定数の参加ノードにより形成されることになる。ここで、シャミアの秘密分散法でN個のデータ部品に分割されたデータが、K個のデータ部品から再生可能であるときは、上記所定数はKである。この場合、データ取得者により生成されるデータ取得要求トランザクションに対する合意は、そのトランザクションがマイナーにより検証された後、K個の参加ノードがデータ取得者のアクセス権を確認することで実現される。また、複数の参加ノードによる復号処理は、実質的に並列に実行される。よって、
図3に示す通信方法と比較すると、第1の実施形態の通信方法においては、対象トランザクションが生成されたときからそのトランザクションが実行されるまでの時間が短縮される。
【0057】
図14は、データ登録手続の一例を示すフローチャートである。このフローチャートの処理は、データ提供者11により実行される。
【0058】
S1において、データ提供者11は、シャミアの秘密分散法でデータを分割して複数のデータ部品を生成する。S2において、データ提供者11は、複数のデータ部品をIPFSに登録する。S3において、データ提供者11は、複数のデータ部品が保存された記憶領域のアドレスを取得する。S4において、データ提供者11は、復号処理を実行すべき複数の参加ノードを選択する。
図4~
図13に示す例では、参加ノード1~4が選択される。S5において、データ提供者11は、S4で選択した複数の参加ノードの公開鍵でそれぞれ対応するアドレスを暗号化する。
図4~
図13に示す例では、参加ノード1~4の公開鍵でそれぞれアドレスADD1~ADD4が暗号化される。
【0059】
S6において、データ提供者11は、S5で得られた複数の暗号化アドレスを含むアドレスリストを作成する。なお、アドレスリストは、
図6に示すように、データにアクセスする権利を有する参加ノードを表すアクセス権情報、および暗号化アドレスを復号する参加ノードを表す復号ノードリストを含む。そして、S7において、データ提供者11は、アドレスリストを各参加ノードに送信する。すなわち、アドレスリストがブロックチェーン上に公開される。
【0060】
図15は、データ取得手続における参加ノードの処理の一例を示すフローチャートである。なお、各参加ノードは、
図14に示すデータ登録手続で生成されるアドレスリストを受信しているものとする。
【0061】
S11において、参加ノードは、データ取得者からデータ取得要求トランザクションを受信する。S12において、参加ノードは、アドレスリストのアクセス権情報を参照し、データ取得要求トランザクションの送信元ノードがアクセス権を有しているか否かを判定する。なお、参加ノードは、データ取得要求トランザクションを含むブロックがマイナーにより検証された後にS12の処理を実行するようにしてもよい。
【0062】
データ取得要求トランザクションの送信元ノードがアクセス権を有しているときは、参加ノードは、S13において、自ノードがアドレスリストにより復号ノードとして指定されているか否かを判定する。自ノードが復号ノードとして指定されているときは、参加ノードは、S14において、アドレスリストに設定されている暗号化アドレスを、自分の秘密鍵で復号する。そして、S15において、参加ノードは、復号により得られたアドレスをデータ取得要求トランザクションの送信元ノードに送信する。
【0063】
図16は、データ取得者の処理の一例を示すフローチャートである。なお、
図14に示すデータ登録手続は、先に完了しているものとする。
【0064】
S21において、データ取得者12は、データ取得要求トランザクションを各参加ノードに送信する。この後、データ取得者12は、データ取得要求トランザクションに対する応答を待ち受ける。すなわち、データ取得者12は、取得しようとするデータが格納されている記憶領域のアドレスの送信を待ち受ける。
【0065】
S22において、データ取得者12は、所定数の参加ノードからアドレスを受信したか否かを判定する。なお、シャミアの秘密分散法でN個のデータ部品に分割されたデータがK個のデータ部品から再生可能であるときは、所定数はKである。所定数の参加ノードからアドレスを受信すると、データ取得者12は、S23において、各アドレスからデータ部品を取得する。そして、S24において、データ取得者12は、所定数のデータ部品からデータを再生する。
【0066】
なお、
図14~
図16に示すフローチャートは、1つの実施例であり、本発明はこの手順に限定されるものではない。例えば、データ提供者11は、データDを分割する前に、データDを参加ノード(データ取得者)12の公開鍵で暗号化してもよい。この場合、暗号化されたデータDがシャミアの秘密分散法で分割されてIPFSに登録される。データ取得者12は、データ部品D1~D4から暗号化されたデータDを再生した後、データ取得者12の秘密鍵でデータDの暗号を解除する。これにより、データ取得者12はデータDを取得する。
【0067】
或いは、データ提供者11は、データDを分割する前に、データ提供者11およびデータ取得者12が使用する共通鍵でデータDを暗号化してもよい。この場合、データ提供者11は、その共通鍵をデータ取得者12の公開鍵で暗号化してデータ取得者12に送信する。データ取得者12は、暗号化された共通鍵を受信し、データ取得者12の秘密鍵でその共通鍵を復号する。そして、データ取得者12は、データ部品D1~D4から暗号化されたデータDを再生した後、復号後の共通鍵でデータDの暗号を解除する。これにより、データ取得者12はデータDを取得する。
【0068】
図17は、各ノードに実装されるコンピュータのハードウェア構成の一例を示す。このコンピュータ300は、プロセッサ301、メモリ302、記憶装置303、I/Oデバイス304、記録媒体デバイス305、通信インタフェース306を備える。なお、参加ノード、データ提供者、データ取得者、マイナーは、それぞれ
図17に示すコンピュータにより実現され得る。
【0069】
プロセッサ301は、記憶装置303に格納されている通信プログラムを実行することにより、データ登録手続およびデータ取得手続を実現することができる。なお、コンピュータ300がデータ提供者として動作するときは、プロセッサ301は、
図14に示すフローチャートの処理を記述した通信プログラムを実行する。コンピュータ300が参加ノードとして動作するときは、プロセッサ301は、
図15に示すフローチャートの処理を記述した通信プログラムを実行する。コンピュータ300がデータ取得者として動作するときは、プロセッサ301は、
図16に示すフローチャートの処理を記述した通信プログラムを実行する。
【0070】
メモリ302は、例えば半導体メモリであり、プロセッサ301の作業領域として使用される。記憶装置303は、コンピュータ300内に実装されていてもよいし、コンピュータ300に接続されていてもよい。I/Oデバイス304は、ユーザまたはネットワーク管理者の指示を受け付ける。また、I/Oデバイス304は、プロセッサ301による処理結果を出力する。記録媒体デバイス305は、可搬型記録媒体307に記録されている信号を読み取る。なお、上述した通信プログラムは、可搬型記録媒体307に記録されていてもよい。通信インタフェース306は、ネットワークとの間のインタフェースを提供する。
【0071】
<第2の実施形態>
図18は、第2の実施形態におけるデータ登録手続の一例を示す。なお、通信システム100の構成は、第1の実施形態および第2の実施形態において実質的に同じであるものとする。
【0072】
第1の実施形態と同様に、第2の実施形態においても、データ提供者11は、データDをシャミアの秘密分散法でデータ部品D1~D4に分割する。ただし、第2の実施形態においては、データ提供者11は、データ部品D1~D4をそれぞれ参加ノード1~4に送信する。すなわち、参加ノード1はデータ部品D1を受信し、参加ノード2はデータ部品D2を受信し、参加ノード3はデータ部品D3を受信し、参加ノード4はデータ部品D4を受信する。また、データ提供者11は、データDのアクセス権を表すアクセス権情報を各参加ノードに送信する。この実施例では、アクセス権情報は、参加ノード(データ取得者)12に対してデータDへのアクセスを許可する。
【0073】
データ取得手続において、データ取得者12は、第1の実施形態と同様に、データ取得要求トランザクションを生成する。このデータ取得要求トランザクションは、データDの取得を要求するメッセージを含む。そして、このデータ取得要求トランザクションは、全参加ノードに送信される。
【0074】
マイナー13は、第1の実施形態と同様に、データ取得者12から送信されたデータ取得要求トランザクションを含むブロックを検証する。そして、マイナー13は、このブロックの検証結果を全参加ノードに送信する。すなわち、各参加ノード1~4は、マイナー13から検証結果を受信する。
【0075】
各参加ノード1~4は、データ取得要求トランザクションを含むブロックについての検証結果をマイナー13から受信すると、第1の実施形態と同様に、データ取得者12から送信されたデータ取得要求トランザクションのアクセス権を確認する。このとき、各参加ノード1~4は、データ提供者11から先に受信しているアクセス権情報を参照する。この実施例では、参加ノード(データ取得者)12に対してデータDへのアクセス権が与えられている。したがって、各参加ノード1~4は、受信したデータ取得要求トランザクションに対応する処理を実行する。
【0076】
具体的には、各参加ノード1~4は、データ提供者11から先に受信しているデータ部品をデータ取得者12に送信する。すなわち、参加ノード1~4は、データ部品D1~D4をデータ取得者12に送信する。そして、データ取得者12は、参加ノード1~4から受信するデータ部品D1~D4からデータDを再生する。
【0077】
<第3の実施形態>
図19は、第3の実施形態におけるデータ登録手続の一例を示す。なお、通信システム100の構成は、第1の実施形態および第3の実施形態において実質的に同じであるものとする。
【0078】
第1の実施形態と同様に、第3の実施形態においても、データ提供者11は、データDをシャミアの秘密分散法でデータ部品D1~D4に分割する。ただし、第3の実施形態においては、データ提供者11は、データ部品D1~D4をそれぞれ参加ノード1~4の公開鍵で暗号化する。すなわち、データ部品D1は参加ノード1の公開鍵で暗号化され、データ部品D2は参加ノード2の公開鍵で暗号化され、データ部品D3は参加ノード3の公開鍵で暗号化され、データ部品D4は参加ノード4の公開鍵で暗号化される。そして、データ提供者11は、暗号化されたデータ部品D1~D4を含むデータ部品リストを生成する。
【0079】
データ部品リストは、
図20に示すように、アクセス権情報、復号ノードリスト、暗号化データ部品を含む。なお、アクセス権情報および復号ノードリストは、第1の実施形態および第3の実施形態において実質的に同じなので説明を省略する。
【0080】
データ提供者11は、データ部品リストをブロックチェーン上で公開する。すなわち、データ提供者11は、データ部品リストを全参加ノードに送信する。したがって、各参加ノード1~4はデータ部品リストを受信する。
【0081】
データ取得手続において、データ取得者12は、第1の実施形態と同様に、データ取得要求トランザクションを生成する。このデータ取得要求トランザクションは、データDの取得を要求するメッセージを含む。そして、このデータ取得要求トランザクションは、全参加ノードに送信される。
【0082】
マイナー13は、第1の実施形態と同様に、データ取得者12から送信されたデータ取得要求トランザクションを含むブロックを検証する。そして、マイナー13は、このブロックの検証結果を全参加ノードに送信する。すなわち、各参加ノード1~4は、マイナー13から検証結果を受信する。
【0083】
各参加ノード1~4は、データ取得要求トランザクションを含むブロックについての検証結果をマイナー13から受信すると、第1の実施形態と同様に、データ取得者12から送信されたデータ取得要求トランザクションのアクセス権を確認する。このとき、各参加ノード1~4は、データ提供者11から先に受信しているデータ部品リスト内のアクセス権情報を参照する。この実施例では、参加ノード(データ取得者)12に対してデータDへのアクセス権が与えられている。したがって、各参加ノード1~4は、受信したデータ取得要求トランザクションに対応する処理を実行する。
【0084】
参加ノード1は、参加ノード1の秘密鍵を用いて4個の暗号化データ部品D1~D4に対して復号処理を行う。ここで、暗号化データ部品D1~D4は、それぞれ参加ノード1~4の公開鍵で暗号化されている。したがって、参加ノード1の秘密鍵で復号処理を実行すると、暗号化データ部品D1に対する復号は成功するが、暗号化データ部品D2~D4に対する復号は失敗する。すなわち、参加ノード1は、データ部品D1を取得できるが、データ部品D2~D4を取得できない。
【0085】
同様に、参加ノード2は、参加ノード2の秘密鍵を用いて暗号化データ部品D1~D4に対して復号処理を行い、データ部品D2を取得する。参加ノード3は、参加ノード3の秘密鍵を用いて暗号化データ部品D1~D4に対して復号処理を行い、データ部品D3を取得する。参加ノード4は、参加ノード4の秘密鍵を用いて暗号化データ部品D1~D4に対して復号処理を行い、データ部品D4を取得する。この後、参加ノード1~4は、それぞれデータ部品D1~D4をデータ取得者12に送信する。そして、データ取得者12は、参加ノード1~4から受信するデータ部品D1~D4からデータDを再生する。
【符号の説明】
【0086】
1~4 参加ノード
11 データ提供者
12 参加ノード(データ取得者)
13 マイナー
100 通信システム
200 ブロックチェーンネットワーク
301 プロセッサ