IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7534620通信プログラム、通信装置、及び通信方法
<>
  • 特許-通信プログラム、通信装置、及び通信方法 図1
  • 特許-通信プログラム、通信装置、及び通信方法 図2
  • 特許-通信プログラム、通信装置、及び通信方法 図3
  • 特許-通信プログラム、通信装置、及び通信方法 図4
  • 特許-通信プログラム、通信装置、及び通信方法 図5
  • 特許-通信プログラム、通信装置、及び通信方法 図6
  • 特許-通信プログラム、通信装置、及び通信方法 図7
  • 特許-通信プログラム、通信装置、及び通信方法 図8
  • 特許-通信プログラム、通信装置、及び通信方法 図9
  • 特許-通信プログラム、通信装置、及び通信方法 図10
  • 特許-通信プログラム、通信装置、及び通信方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-06
(45)【発行日】2024-08-15
(54)【発明の名称】通信プログラム、通信装置、及び通信方法
(51)【国際特許分類】
   G06F 21/64 20130101AFI20240807BHJP
   G06F 21/60 20130101ALI20240807BHJP
【FI】
G06F21/64
G06F21/60 320
【請求項の数】 7
(21)【出願番号】P 2020162429
(22)【出願日】2020-09-28
(65)【公開番号】P2022055060
(43)【公開日】2022-04-07
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】小櫻 文彦
【審査官】塩澤 如正
(56)【参考文献】
【文献】米国特許出願公開第2020/0117730(US,A1)
【文献】特開2004-129303(JP,A)
【文献】特開2018-139078(JP,A)
【文献】特開2020-057863(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
データの取引を行うブロックチェーンネットワークに参加する通信装置が有するプログラムであって
記データに対するデータ処理が正常に行われたか否かを検証するチェックプログラムと、秘密鍵と、前記ブロックチェーンネットワーク上のサーバから取得する取得処理と、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記秘密鍵を用いて生成した前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に前記結果を公開するチェック処理とを、実行させるプログラムであって、
前記秘密鍵に対応する公開鍵は、前記サーバによって前記ブロックチェーンネットワーク上に公開される、
前記通信装置が有するコンピュータに実行させる通信プログラム。
【請求項2】
記秘密鍵は、暗号化された暗号情報であり、
前記チェック処理において、前記暗号情報を復号し、前記秘密鍵を取得する
請求項記載の通信プログラム。
【請求項3】
前記取得処理において、前記データ処理の一部又は全部の処理を実行する処理プログラムを前記サーバから受信し、
前記チェック処理において、前記データ処理の一部又は全部の処理を、前記処理プログラムを用いて実行し、前記処理プログラムを実行した実行結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開する
請求項1記載の通信プログラム。
【請求項4】
受信処理において、1又は複数のデータ処理ごとに、前記サーバから処理識別子を取得し、
前記チェック処理において、前記取得した処理識別子を用いて前記サーバの署名を生成する
請求項1記載の通信プログラム。
【請求項5】
前記データ処理は、前記データを加工する処理を含む
請求項1記載の通信プログラム。
【請求項6】
データの取引を行うブロックチェーンネットワークに参加する通信装置であって、
記データに対するデータ処理が正常に行われたか否かを検証するチェックプログラムと、秘密鍵と、前記ブロックチェーンネットワーク上のサーバから取得する取得部と、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記秘密鍵を用いて生成した前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に前記結果を公開するチェック部とを、有し、
前記秘密鍵に対応する公開鍵は、前記サーバによって前記ブロックチェーンネットワーク上に公開される
通信装置。
【請求項7】
データの取引を行うブロックチェーンネットワークに参加する通信装置における通信方法であって、
記データに対するデータ処理が正常に行われたか否かを検証するチェックプログラムと、秘密鍵と、前記ブロックチェーンネットワーク上のサーバから取得し、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記秘密鍵を用いて生成した前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に前記結果を公開
前記秘密鍵に対応する公開鍵は、前記サーバによって前記ブロックチェーンネットワーク上に公開される、
通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信プログラム、通信装置、及び通信方法に関する。
【背景技術】
【0002】
近年、複数のコンピュータ(ブロックチェーンノード)が、互いに同期し、データの取引や加工の履歴を共有するブロックチェーンが注目されている。ブロックチェーンノードは、例えば、分散台帳と呼ばれる履歴のデータベースを有し、データに関する履歴を分散台帳に記入し、記入した分散台帳を他のブロックチェーンノードと同期することで、同等の分散台帳をブロックチェーンノード間で共有する。
【0003】
ブロックチェーンに関する技術は、以下の先行文献に記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願公開第2018/0096121号明細書
【文献】特開2013-149170号公報
【文献】特開2019-4463号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、ブロックチェーンのネットワークに接続するブロックチェーンノードへの負担を減らすために、処理の一部をサブチェーンで処理する場合がある。サブチェーンは、ブロックチェーンノードに対応するローカルネットワークであり、例えば、ブロックチェーンを管理する事業者が、ブロックチェーン配下に設置する。
【0006】
サブチェーン上でデータが処理された場合でも、ブロックチェーン上にデータの処理の履歴は記憶される。しかし、サブチェーンにおける処理は、ブロックチェーンの事業者が非公開で実行する処理である。そのため、履歴に示された処理内容が正しいか否かは、当該事業者を信頼するしかなく、信頼性が低い場合がある。
【0007】
一開示は、事業者が実行したデータに対する処理の履歴の信頼性を向上させる通信プログラム、通信装置、及び通信方法を提供する。
【課題を解決するための手段】
【0008】
データの取引を行うブロックチェーンネットワークに参加する通信装置が有するプログラムであって、前記ブロックチェーンネットワーク上のサーバから、前記データに対するデータ処理を検証するチェックプログラムを取得する取得処理と、前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開するチェック処理とを、前記通信装置が有するコンピュータに実行させる。
【発明の効果】
【0009】
一開示は、事業者が実行したデータに対する処理の履歴の信頼性を向上させることができる。
【図面の簡単な説明】
【0010】
図1図1は、通信システム1の構成例を示す図である。
図2図2は、コンソーシアムサーバ200の構成例を表す図である。
図3図3は、サブチェーンノード100の構成例を表す図である。
図4図4は、サブチェーンノード100によるデータ処理のシーケンスの例を示す図である。
図5図5は、チェックプログラム要求受信処理S100の処理フローチャートの例を示す図である。
図6図6は、チェックプログラム受信処理S200の処理フローチャートの例を示す図である。
図7図7は、データがインフルエンザ情報である場合のシーケンスの例を示す図である。
図8図8は、一部処理を処理用プログラムで実行する場合のシーケンスの例を示す図である。
図9図9は、サブチェーンノード100によるデータ処理のシーケンスの例を示す図である。
図10図10は、チェック結果の署名の例を示す図である。
図11図11は、秘密鍵を秘匿する方法の例を示す図である。
【発明を実施するための形態】
【0011】
[第1の実施の形態]
第1の実施の形態について説明する。
【0012】
<通信システム1の構成例>
図1は、通信システム1の構成例を示す図である。通信システム1は、事業者10-1~3(以降、事業者10と呼ぶ場合がある)、コンソーシアムサーバ200、及びブロックチェーンネットワーク20を有する。通信システム1は、ブロックチェーンを採用する通信ネットワークである。
【0013】
事業者10-1~3は、それぞれブロックチェーンノード11-1~3(以降、ブロックチェーンノード11と呼ぶ場合がある)を有する。事業者10は、ブロックチェーンノード11を用いて、ブロックチェーンネットワーク20を介して他のブロックチェーンノード11と通信を行う。そして、事業者10は、ブロックチェーンノード11を使用し、他の事業者10とデータの公開や取引を行う。事業者10は、例えば、分散台帳をブロックチェーンノード11内に有し、データの生成、公開、取引、加工等のデータに対する処理(以降、データ処理と呼ぶ場合がある)の履歴を分散台帳に記憶する。そして、事業者10は、分散台帳を他の事業者と同期することで、他の事業者10と同内容の分散台帳を共有する。
【0014】
事業者10-1は、ローカルネットワークを有する。ローカルネットワークは、例えば、データ管理サーバ12、サブチェーンネットワーク13、サブチェーンノード100を有する。データ管理サーバ12は、ブロックチェーンノード11-1と接続し、ブロックチェーンノード11-1からデータを取得したり(チェックアウト)、ブロックチェーンノード11-1へデータを引き渡したり(チェックイン)する。サブチェーンネットワーク13は、ブロックチェーンネットワーク20とは異なるネットワークであり、例えば、ローカルネットワークである。サブチェーンノード100は、サブチェーンネットワーク13を介して通信を行う通信装置である。また、サブチェーンノード100は、データ管理サーバ12からデータを取得したり、取得したデータを加工したり、加工したデータをデータ管理サーバ12に引き渡したりする、データ処理を行う。サブチェーンノード100は、例えば、事業者10-1が操作するコンピュータやサーバマシンである。なお、他の事業者10も、事業者10-1と同様に、ローカルネットワークを有してもよい。
【0015】
コンソーシアムサーバ200は、サブチェーンノード100に対して、チェックプログラムを提供する通信装置であり、例えば、コンピュータやサーバマシンである。
【0016】
チェックプログラムは、サブチェーンノード100が実行するデータに対する処理(例えば、取得、引き渡し、加工など)をチェックし、どのような処理を行ったかを履歴として残すチェック処理を行うプログラムである。サブチェーンノード100が有するプロセッサやコンピュータは、チェックプログラムを実行することで、上述したチェック処理を実現する。
【0017】
コンソーシアムサーバ200は、サブチェーンノード100の要求に応答し、チェックプログラムをサブチェーンノード100に引き渡す。コンソーシアムサーバ200は、ブロックチェーンノード11、ブロックチェーンネットワーク20又は他のネットワーク(図示しない)を介してサブチェーンノード100と通信し、サブチェーンノード100のチェックプログラムを送信することで、チェックプログラムを引き渡す。
【0018】
通信システム1において、事業者10-1は、一部のデータに対してサブチェーンノード100を用いて加工する。この時、サブチェーンノード100は、コンソーシアムサーバ200に対してチェックプログラムを要求する。そして、サブチェーンノード100は、チェックプログラムを実行した後、データに対する処理を実行する。これにより、チェックプログラムによって、データに対する処理をチェックすることができる。サブチェーンノード100は、チェックプログラムを実行することで、データに対する処理の履歴を生成する。さらに、この履歴には、チェックプログラムの実行によって、コンソーシアムサーバ200の署名が付与される。この署名が付与されることで、当該履歴は、コンソーシアムサーバ200が認証する履歴であることが証明でき、信頼性が向上する。
【0019】
なお、図1において、サブチェーンノード100は、ブロックチェーンノード11と異なる通信装置として記載されているが、同じ装置であってもよい。また、以降はサブチェーンノード100がデータ処理を実行する場合を例として説明するが、ブロックチェーンノード11がデータ処理を実行する場合も、同様の処理を適用することができる。ブロックチェーンノード11がデータ処理を実行する場合、ブロックチェーンノード11の処理の信頼性を向上させることができる。
【0020】
<コンソーシアムサーバ200の構成例>
図2は、コンソーシアムサーバ200の構成例を表す図である。コンソーシアムサーバ200は、CPU(Central Processing Unit)210、ストレージ220、メモリ230、及び通信回路240を有する、例えば、サーバマシンである。
【0021】
ストレージ220は、プログラムやデータを記憶する、フラッシュメモリ、HDD(Hard Disk Drive)、又はSSD(Solid State Drive)などの補助記憶装置である。ストレージ220は、チェックプログラム要求受信プログラム221及びチェックプログラム222を記憶する。チェックプログラム222は、サブチェーンノード100によって実行されるプログラムであり、サブチェーンノード100が実行するデータ処理を検証(チェック)するプログラムである。
【0022】
メモリ230は、ストレージ220に記憶されているプログラムをロードする領域である。また、メモリ230は、プログラムがデータを記憶する領域としても使用されてもよい。
【0023】
CPU210は、ストレージ220に記憶されているプログラムを、メモリ230にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサである。
【0024】
通信回路240は、他の装置と通信を行う回路である。通信回路240は、ネットワークを介して、他の装置とデータの送受信を行う。通信回路240は、例えば、NIC(Network Interface Card)である。
【0025】
CPU210は、チェックプログラム要求受信プログラム221を実行することで、送信部及び受信部を構築し、チェックプログラム要求受信処理を行う。チェックプログラム要求受信処理は、サブチェーンノード100又はブロックチェーンノード11から、チェックプログラムの引き渡し(送信)を要求するチェックプログラム要求を受信したときの処理である。コンソーシアムサーバ200は、チェックプログラム要求受信処理において、秘密鍵と公開鍵を生成し、チェックプログラムに秘密鍵を付与し、サブチェーンノード100に送信する。
【0026】
<サブチェーンノード100の構成例>
図3は、サブチェーンノード100の構成例を表す図である。サブチェーンノード100は、CPU110、ストレージ120、メモリ130、及び通信回路140を有する、例えば、通信装置である。
【0027】
ストレージ120は、プログラムやデータを記憶する、フラッシュメモリ、HDD、又はSSDなどの補助記憶装置である。ストレージ120は、チェックプログラム要求プログラム121、チェックプログラム受信プログラム122、及びデータ処理プログラム123を記憶する。
【0028】
メモリ130は、ストレージ120に記憶されているプログラムをロードする領域である。また、メモリ130は、プログラムがデータを記憶する領域としても使用されてもよい。
【0029】
CPU110は、ストレージ120に記憶されているプログラムを、メモリ130にロードし、ロードしたプログラムを実行し、各部を構築し、各処理を実現するプロセッサである。
【0030】
通信回路140は、他の装置と通信を行う回路である。通信回路140は、ネットワークを介して、他の装置とデータの送受信を行う。通信回路140は、例えば、NICや無線通信回路である。
【0031】
CPU110は、チェックプログラム要求プログラム121を実行することで、要求部を構築し、チェックプログラム要求処理を行う。チェックプログラム要求処理は、チェックプログラム要求をコンソーシアムサーバ200に送信する処理であり、例えば、データ処理を実行する前処理として実行される。チェックプログラム要求処理は、例えば、ブロックチェーンノード11が行ってもよい。
【0032】
CPU110は、チェックプログラム受信プログラム122を実行することで、取得部及びチェック部を構築し、チェックプログラム受信処理を行う。チェックプログラム受信処理は、チェックプログラムをコンソーシアムサーバ200から取得したときの処理である。サブチェーンノード100は、チェックプログラム受信処理において、チェックプログラムを実行し、データ処理を検証する。サブチェーンノード100は、検証結果(チェック結果)を、署名を付与し、ブロックチェーン上で公開する。
【0033】
CPU110は、データ処理プログラム123を実行することで、データ処理部を構築し、データ処理を行う。データ処理は、データに対する処理であり、例えば、データのチェックイン、チェックアウト、及び加工(削除、統合、K匿名化などを含む)を行う処理である。
【0034】
<データ処理>
図4は、サブチェーンノード100によるデータ処理のシーケンスの例を示す図である。ブロックチェーンノード11は、あるデータについてサブチェーンネットワークにおいてデータ処理を行うとき、コンソーシアムサーバ200に対してチェックプログラム要求を送信する(S10)。
【0035】
コンソーシアムサーバ200は、チェックプログラム要求を受信すると(S10)、チェックプログラム要求受信処理を行う(S100)。
【0036】
図5は、チェックプログラム要求受信処理S100の処理フローチャートの例を示す図である。コンソーシアムサーバ200は、チェックプログラム要求を受信するのを待ち受ける(S100-1のNo)。
【0037】
コンソーシアムサーバ200は、チェックプログラム要求を受信すると(S100-1のYes)、署名用の鍵(公開鍵、秘密鍵)を生成する(S100-2)。そして、コンソーシアムサーバ200は、公開鍵をブロックチェーンで公開する。公開鍵のブロックチェーンでの公開は、例えば、公開鍵をブロックチェーンノード11に格納することである。
【0038】
コンソーシアムサーバ200は、チェックプログラムに秘密鍵を付与する(S100-4)。チェックプログラムは、事業者10のサブチェーンで使用することが可能なプログラムであり、例えば、事前に用意され、コンソーシアムサーバ200の内部メモリなどに記憶される。
【0039】
コンソーシアムサーバ200は、秘密鍵付きチェックプログラムを、チェックプログラムを要求するブロックチェーンノード11のサブチェーンノード100に引き渡し(S100-5)、処理を終了する。
【0040】
図4のシーケンスに戻り、コンソーシアムサーバ200は、チェックプログラム要求受信処理S100において、秘密鍵付きチェックプログラムをサブチェーンノード100に引き渡す(S11、図5のS100-5)。サブチェーンノード100は、チェックプログラムを受信すると、チェックプログラム受信処理を行う(S200)。
【0041】
図6は、チェックプログラム受信処理S200の処理フローチャートの例を示す図である。サブチェーンノード100は、チェックプログラム受信処理S200において、チェックプログラムを受信するのを待ち受ける(S200-1のNo)。サブチェーンノード100は、チェックプログラムを受信すると(S200-1のYes)、チェックプログラムを実行する(S200-2)。チェックプログラムを実行することで、データ処理の監視が開始される。なお、サブチェーンノード100は、処理S200-2の前に、チェックプログラムの署名を確認してもよい。署名が正しくない場合、チェックプログラムを再度要求してもよい。
【0042】
サブチェーンノード100は、データ処理を実行する(S200-3)。このとき、処理S200-2においてデータ処理の監視が開始されているため、処理S200-3におけるデータ処理のチェック結果(例えば、どのようなデータ処理を実行されたかを示す履歴情報)が、チェックプログラムによって記録される。
【0043】
サブチェーンノード100は、チェックプログラムの実行によるデータ処理のチェック結果に、チェックプログラムに付与されている秘密鍵で生成した署名を付与する(S200-4)。
【0044】
サブチェーンノード100は、署名付きチェック結果を、ブロックチェーン上に格納し(S200-5)、処理を終了する。ブロックチェーン上に格納とは、例えば、ブロックチェーンノード11が有する分散台帳に、当該署名付きチェック結果を記憶することである。署名付きチェック結果が記憶された分散台帳は、ブロックチェーンノード11間で同期され、他のブロックチェーンノード11と同等の内容が共有される。
【0045】
図4のシーケンスに戻り、サブチェーンノード100は、チェックプログラム受信処理S200において、チェックプログラムを実行する(図6のS200-2)。そして、サブチェーンノード100は、データ処理(図6のS200-3)として、ブロックチェーンノード11によるチェックアウトによりデータを取得し(S12)、データを加工し、ブロックチェーンノード11によるチェックインによりデータをブロックチェーンノード11に引き渡す(S13)。
【0046】
そして、サブチェーンノード100は、チェックプログラムによるチェック結果に署名を付与し、署名付きチェック結果をブロックチェーンノード11に引き渡す(S14、図6のS200-4)。
【0047】
第1の実施の形態において、サブチェーンノード100は、サブチェーンネットワーク内などのローカル環境で行ったデータ処理を、コンソーシアムサーバ200から取得したチェックプログラムでチェックする。そして、他のサブチェーンノードは、ブロックチェーン上で公開された、コンソーシアムサーバ200の発行した秘密鍵による署名が付与されたチェック結果を確認することで、ローカル環境で実行されたデータ処理の正当性が確認できる。他のサブチェーンノードは、公開鍵で署名を確認することができる。
【0048】
<チェックプログラムのチェック内容例>
チェックプログラムのチェック内容の例について説明する。図7は、データがインフルエンザ情報である場合のシーケンスの例を示す図である。図7において、サブチェーンノード100は、県西部インフルエンザ情報と県東部インフルエンザ情報を入力データとし、K匿名化した県インフルエンザK匿名化情報を出力する。なお、K匿名化とは、例えば、個人情報である場合、個人が特定できない程度まで匿名化することを示す。
【0049】
サブチェーンノード100は、ブロックチェーンノード11のチェックアウトにより、県西部インフルエンザ情報を取得する(S20)。さらに、サブチェーンノード100は、ブロックチェーンノード11のチェックアウトにより、県東部インフルエンザ情報を取得する(S21)。
【0050】
サブチェーンノード100は、県西部インフルエンザ情報と県東部インフルエンザ情報を統合し、県インフルエンザ統合情報を生成する(S22)。
【0051】
サブチェーンノード100は、県インフルエンザ統合情報に対してK匿名化を行い、県インフルエンザK匿名化情報を生成する(S23)。
【0052】
サブチェーンノード100は、ブロックチェーンノード11のチェックインにより、県インフルエンザK匿名化情報をブロックチェーンノード11に引き渡す(S24)。
【0053】
サブチェーンノード100は、チェックプログラムを実行することで、処理S20~24をチェックし、チェック結果を生成する。
【0054】
チェックC20は、処理S20のチェックであり、チェックアウト内容チェックである。チェックアウト内容チェックは、チェックアウトしたデータが正しく伝わっているか確認するチェックであり、例えば、チェックアウト前のデータとチェックアウト後のデータを比較し、同じであれば正しく伝わっていると判定する。
【0055】
チェックC21は、処理S21のチェックであり、チェックアウト内容チェックである。
【0056】
チェックC22は、処理S22のチェックであり、データ統合チェックである。データ統合チェックは、データが正しく統合されているか否かを確認するチェックである。データ統合チェックは、例えば、統合対象の複数のデータの全てのレコードが、統合データに反映されているか否かを確認し、繁栄されていればデータが正しく統合されていると判定する。
【0057】
チェックC23は、処理S23のチェックであり、K匿名化チェックである。K匿名化チェックは、データが正しく匿名化されているか否かを確認するチェックである。K匿名化チェックは、例えば、K匿名化の処理内容に基づき、K匿名化後のデータのレコードと、K匿名化前のレコードを対応させ、過不足がないか否かを確認し、過不足がない場合、K匿名化が正しく行われていると判定する。なお、K匿名化の処理内容によっては、レコードが削除される場合があるため、過不足があっても、削除されるべきレコードであると判定できる場合、K匿名化が正しく行われたと判定する。
【0058】
チェックC24、処理S24チェックであり、チェックイン内容チェックである。チェックイン内容チェックは、チェックインしたデータが正しく伝わっているか確認するチェックであり、例えば、チェックイン前のデータとチェックイン後のデータを比較し、同じであれば正しく伝わっていると判定する。
【0059】
サブチェーンノード100は、チェックプログラムを実行することで、データ処理のチェックを行い、それぞれのチェック結果を署名付きでブロックチェーンノード11に格納する。なお、チェックプログラムでNGと判定されるようなデータ処理は、不適切なデータ処理であるため、サブチェーンノード100は、チェック結果がNGであった場合、当該処理で生成したデータを破棄し、生成前のデータに戻してもよい。
【0060】
また、上述した各チェックの例においては、正しいか否かを判定するチェック内容であるが、例えば、チェック内容は、データ処理の内容をチェック結果として記録することであってもよい。各ブロックチェーンノード11は、このデータ処理の内容を確認することで、正しいデータ処理が行われているか否かを判定することができる。
【0061】
[第2の実施の形態]
第2の実施の形態について説明する。第2の実施の形態において、コンソーシアムサーバ200は、一部処理については、チェックプログラムに代替し、それぞれのデータ処理に応じた処理用プログラムをサブチェーンノード100に引き渡す。
【0062】
図8は、一部処理を処理用プログラムで実行する場合のシーケンスの例を示す図である。データ処理の内容は、図7のシーケンスと同様である。
【0063】
サブチェーンノード100は、データ処理の実行前に、チェックアウト処理プログラム、統合処理プログラム、チェックイン処理プログラム、及びチェックプログラムを、コンソーシアムサーバ200から取得する。なお、チェックアウト処理プログラム、統合処理プログラム、チェックイン処理プログラム、及びチェックプログラムには、それぞれ署名用秘密鍵が付与されている。
【0064】
サブチェーンノード100は、処理S20及びS21を、チェックアウト処理プログラムで実行する(L20、L21)。チェックアウト処理プログラムを実行することで、チェックアウト処理が正しく実行される。そして、サブチェーンノード100は、チェックアウト処理プログラムの実行結果を、署名を付けてブロックチェーンノード11に引き渡し、ブロックチェーン上に公開する。
【0065】
サブチェーンノード100は、処理S22を、統合処理プログラムで実行する(L22)。統合処理プログラムを実行することで、統合処理が正しく実行される。そして、サブチェーンノード100は、統合処理プログラムの実行結果を、署名を付けてブロックチェーンノード11に引き渡し、ブロックチェーン上に公開する。
【0066】
サブチェーンノード100は、処理S24を、チェックイン処理プログラムで実行する(L24)。チェックイン処理プログラムを実行することで、チェックイン処理が正しく実行される。そして、サブチェーンノード100は、チェックイン処理プログラムの実行結果を、署名を付けてブロックチェーンノード11に引き渡し、ブロックチェーン上に公開する。
【0067】
このように、一部の処理(チェックアウト、チェックイン、統合)を、コンソーシアムサーバ200から取得したプログラムを用いて実行する。しかし、一方で、K匿名化は、チェックプログラムを用いてチェックする。K匿名化は、匿名化する度合いや、匿名化の手法が多様であり、どの手法を用いてどの程度まで匿名化するかは、事業者の判断となるため、コンソーシアムサーバ200で共通の処理プログラムを用意することが困難である。そこで、K匿名化のような汎用性の低い処理は、事業者によって実行内容が異なるため、処理プログラムで実行せず、チェックプログラムでチェックすることとする。例えば、全ての事業者で同じことを行う処理のみを、処理プログラムで実行することとしてもよい。K匿名化の処理のチェック結果については、第1の実施の形態と同様に、署名を付けてブロックチェーン上に公開する。
【0068】
[第3の実施の形態]
第3の実施の形態について説明する。第3の実施の形態において、サブチェーンノード100は、同一のチェックプログラムを、複数回(あるいは第1時間の間)使用する。そして、使用するごとに(あるいは第2時間ごとに)、コンソーシアムサーバ200から、処理識別子を取得する。また、処理識別子は、データ処理を行うデータ単位で取得してもよい。例えば、第1の実施の形態の例で示した県インフルエンザK匿名化情報を生成するまでの一連のデータ処理に対して、1つの処理識別子を取得する。すなわち、処理識別子は、目的のデータが生成されるまでの一連のデータ処理を1つの単位として取得されてもよい。
【0069】
図9は、サブチェーンノード100によるデータ処理のシーケンスの例を示す図である。データ処理については、図4のシーケンスと同様であるため、説明を省略する。
【0070】
サブチェーンノード100(又はブロックチェーンノード11)は、コンソーシアムサーバ200に、処理識別子を要求する処理識別子要求を送信する(S40)。
【0071】
コンソーシアムサーバ200は、処理識別子要求を受信すると(S40)、処理識別子を生成し、例えば、公開鍵で暗号化し、サブチェーンノード100に引き渡す(S41)。
【0072】
サブチェーンノード100は、秘密鍵で複合し、処理識別子を取得する。そして、データ処理を行い、チェック結果に処理識別子を用いた署名を付与し、ブロックチェーン上に公開する。
【0073】
処理識別子は,例えば、ユーザ識別子、シリアル番号、乱数などから生成数値を、ハッシュ関数を用いてハッシュ化したハッシュ値である。なお、処理識別子は、外部から推測されないユニークな値であれば、これ以外であってもよい。
【0074】
図10は、チェック結果の署名の例を示す図である。サブチェーンノード100は、チェック結果に対して、署名対象の情報に対して処理識別子を使いハッシュ値を求め(S1)、算出したハッシュ値を署名対象に加えて署名を生成し(S2)、チェック結果に付与する。
【0075】
他のブロックチェーンノード11は、チェック結果の署名対象の情報から、ハッシュ値と他の情報を分離し、他の情報に対して処理識別子をキーとしてハッシュ値を求め、2つのハッシュ値を比較することで、正規のチェックプログラムが処理した結果と判定することができる。
【0076】
なお、本実施の形態においては、チェックプログラムを例として説明したが、第2の実施の形態のように、処理プログラムに対しても同様の処理を行うことで、あるプログラムを複数回使用することが可能となる。
【0077】
[その他の実施の形態]
通信システム1における、信頼性を向上させるためには、さらに、秘密鍵のセキュリティを向上することが必要となる。図11は、秘密鍵を秘匿する方法の例を示す図である。
【0078】
コンソーシアムサーバ200は、秘密鍵を分割する(S50)。そして、冗長データを付与し、メモリに格納する(S51)。そして、ユーザの公開鍵(署名用公開鍵とは異なる鍵)で暗号化し(S52)、暗号化情報とし、サブチェーンノード100に送信する。
【0079】
サブチェーンノード100は、暗号化情報をユーザの秘密鍵(署名用秘密鍵とは異なる鍵)で複合し(S53)、冗長データを削除し、結合し(S54)、署名用秘密鍵を取得する。これにより、より安全に秘密鍵の受け渡しができるようになる。
【0080】
また、上述した実施の形態においては、サブチェーンノード100が、データ処理やチェックプログラムを実行するが、例えば、ブロックチェーンノード11がデータ処理及びチェックプログラムを実行してもよい。
【0081】
以下、まとめると付記のようになる。
【0082】
(付記1)
データの取引を行うブロックチェーンネットワークに参加する通信装置が有するプログラムであって、
前記ブロックチェーンネットワーク上のサーバから、前記データに対するデータ処理を検証するチェックプログラムを取得する取得処理と、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開するチェック処理とを、
前記通信装置が有するコンピュータに実行させる通信プログラム。
【0083】
(付記2)
前記チェックプログラムは、前記サーバが生成した秘密鍵が付与され、
前記秘密鍵に対応する公開鍵が前記ブロックチェーンネットワーク上に公開され、
前記チェック処理において、前記チェックプログラムに付与された前記秘密鍵を用いて前記サーバの署名を生成する
付記1記載の通信プログラム。
【0084】
(付記3)
前記チェックプログラムに付与される秘密鍵は、前記サーバによって暗号化された暗号情報であり、
前記チェック処理において、前記暗号情報を複合し、前記秘密鍵を取得する
付記2記載の通信プログラム。
【0085】
(付記4)
前記取得処理において、前記データ処理の一部又は全部の処理を実行する処理プログラムを前記サーバから受信し、
前記チェック処理において、前記データ処理の一部又は全部の処理を、前記処理プログラムを用いて実行し、前記処理プログラムを実行した実行結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開する
付記1記載の通信プログラム。
【0086】
(付記5)
前記データ処理の一部又は全部の処理は、他の通信装置においても同じ内容で実行される処理である
付記4記載の通信プログラム。
【0087】
(付記6)
受信処理において、1又は複数のデータ処理ごとに、前記サーバから処理識別子を取得し、
前記チェック処理において、前記取得した処理識別子を用いて前記サーバの署名を生成する
付記1記載の通信プログラム。
【0088】
(付記7)
前記処理識別子は、ハッシュ関数を用いて生成される
付記6記載の通信プログラム。
【0089】
(付記8)
前記データ処理は、前記データを加工する処理を含む
付記1記載の通信プログラム。
【0090】
(付記9)
前記データ処理は、前記データを前記ブロックチェーンネットワークから取得する処理、及び前記データを前記ブロックチェーンネットワークに引き渡す処理を含む
付記8記載の通信プログラム。
【0091】
(付記10)
データの取引を行うブロックチェーンネットワークに参加する通信装置の配下の情報処理装置であって、前記ブロックチェーンネットワークに直接的に参加しない前記情報処理装置が有するプログラムであって、
前記通信装置から依頼され前記データに対するデータ処理を行うとき、
前記ブロックチェーンネットワーク上のサーバから、前記データ処理を検証するチェックプログラムを取得する取得処理と、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記サーバの署名を付与し、前記通信装置を介して前記ブロックチェーンネットワーク上に公開するチェック処理とを、
前記情報処理装置が有するコンピュータに実行させる通信プログラム。
【0092】
(付記11)
データの取引を行うブロックチェーンネットワークに参加する通信装置と通信を行うサーバが有するプログラムであって、
秘密鍵及び公開鍵を生成する鍵生成処理と、
前記通信装置が実行するデータ処理を検証するチェックプログラムに、前記秘密鍵を付与して送信する送信処理と、
前記公開鍵を前記ブロックチェーンネットワーク上に公開する公開処理とを、
前記サーバが有するコンピュータに実行させる通信プログラム。
【0093】
(付記12)
データの取引を行うブロックチェーンネットワークに参加する通信装置であって、
前記ブロックチェーンネットワーク上のサーバから、前記データに対するデータ処理を検証するチェックプログラムを取得する取得部と、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開するチェック部とを、
有する通信装置。
【0094】
(付記13)
データの取引を行うブロックチェーンネットワークに参加する通信装置における通信方法であって、
前記ブロックチェーンネットワーク上のサーバから、前記データに対するデータ処理を検証するチェックプログラムを取得し、
前記チェックプログラムを実行し、前記チェックプログラムの実行中に前記データ処理を実行することにより生成される前記検証の結果に、前記サーバの署名を付与し、前記ブロックチェーンネットワーク上に公開する、
通信方法。
【符号の説明】
【0095】
1 :通信システム
10 :事業者
11 :ブロックチェーンノード
12 :データ管理サーバ
13 :サブチェーンネットワーク
20 :ブロックチェーンネットワーク
100 :サブチェーンノード
110 :CPU
120 :ストレージ
121 :チェックプログラム要求プログラム
122 :チェックプログラム受信プログラム
123 :データ処理プログラム
130 :メモリ
140 :通信回路
200 :コンソーシアムサーバ
210 :CPU
220 :ストレージ
221 :チェックプログラム要求受信プログラム
222 :チェックプログラム
230 :メモリ
240 :通信回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11