以下、本発明を実施するための形態(以下、「本実施形態」と記載)について図面を参照しながら詳細に説明する。図1は、本実施形態が対象とするユースケースの例を示す図である。本実施形態は、ノード装置の一つであるクライアント端末やIoTデバイスのピアツーピア通信により、HTML、PDFやテキスト等の電子ファイル情報を共有する分散ファイル共有技術を用いて、次のようなサービスを実現するものである。例えば図1(a)のように、各IoTデバイスから収集される情報AからEが、各IoTデバイス103と一体の又は分離した各IoTゲートウェイで形成される分散ファイル共有ネットワーク101上で自律的にWEBサービス化され、共有される。或いは図1(b)のように、サプライチェーン上の原材料・部品の調達から、製造、在庫管理、販売、配送までの製品の工程情報AからEが、流通に関わる組織のクライアント端末104で形成される分散ファイル共有ネットワーク101上で共有される。分散ファイル共有ネットワーク上で共有される情報は、ユーザの端末から任意に状況確認102を行うことができる。
本実施形態における分散ファイル共有ネットワーク101は例えば、前述したIPFSによって実現される。しかし、IPFSでは、以下のような課題がある。
1.ファイル発行やアクセスに関するユーザに紐づいた認証の仕組みがなく、アプリケーションさえインストールすれば、分散ファイル共有ネットワークにアクセスできてしまう。
2.ハッシュ値によるアドレッシングとアドレス指定によるファイル検索機能はあるものの、サービスとアドレスの関係を一元管理するリポジトリ機能やWEBアクセスやデータ履歴(ログ)等を管理できる機能はない。
3.誰でも、また、どこでもWEBファイルを登録でき、コンテンツの一意性を保証できる機能はない。
上述のIPFSなどは、例えばインターネット上で、あらゆるIoTゲートウェイ又はクライアント端末によってファイルを共有することを主眼として開発された分散ファイル共有システムである。このような分散ファイル共有システム上で、ユーザ認証と、ファイル登録やファイルアクセスの証跡(ログ)が管理された高セキュアな情報共有サービスを実現するためには、次のような機能が必要となる。まず、ユーザによるファイル発行やファイルアクセスに関するユーザ認証の機能が必要となる。また、ファイル発行者であるコンテンツの一意性を保証する機能が必要となる。更に、ファイル登録やアクセスログを管理する機能が必要となる。加えて、ファイルによって提供するサービス情報とアドレスの関係を一元管理する機能が必要となる。
図2は、IPFS等の分散ファイル共有システムにおいて高セキュアな情報共有サービスをクラウドサービスによって実現する構成例を示す図である。この構成例では、クライアント端末222やIoTゲートウェイ221によって構成されるIPFSによる閉域ネットワークである分散WEBネットワーク201に対して、インターネット又はキャリアネットワーク203を介して、クラウドサービスが提供される。このクラウドサービス202は、以下のような機能のサービスを提供する。
1.認証機能:アクセスやデータ履歴(ログ)管理を提供するサービスである。例えば、RADIUS(Remote Authentification Dial In User Service)サーバ201によって、ネットワーク利用可否(認証)と利用事実の記録(アカウンティング)を実行するサービスが提供される。
2.サービスリポジトリ機能:WEBポータルサイトのようなポータルサーバ212によって、サービスとURLの関係を管理するサービスが提供される。
3.コンテンツの一意性の保証機能:コンテンツが登録される際に、サーバ213によって、ライセンスコードやコンテンツID(識別子)を発行すると共に、コンテンツファイルに記載することで、該当ファイルの一意性を保証するサービスが提供される。
4.ログ管理機能:サーバ214によって、ファイル登録やファイルアクセスのログを記録するサービスが提供される。
しかし、図2に示されるように、IPFSのような分散ファイル共有システムに対して上述の1から4の機能をクラウドサービス202で実現した場合、次のような課題が生じる。分散WEBネットワーク201とクラウドサービス202とを結ぶインターネット又はキャリアネットワーク203内でやり取りされるトラフィック量が増大する。この結果、クライアント端末222やIoTゲートウェイ221などのエッジノードで実現するサーバレスの処理、即時ファイル共有といった分散ファイル共有システムの利点が享受されないという課題が生じる。
そこで、以下に説明する本実施形態では、分散ファイル共有システムを維持したまま、アクセス認証やファイルのコンテンツの一意性の保証、アクセスログやファイル登録の証跡情報の管理をサポートし、高セキュアなファイル共有システムを実現する。図3は、本実施形態の基本概念の説明図である。
本実施形態はまず、IPFSに代表されるピアツーピア型通信で実現する分散ファイル共有ネットワーク上で、前述した4つの機能が分散環境のもとで実現される。そのため本実施形態では、ブロックチェーンと呼ばれる通信方法が利用される。本実施形態では、端末で発生したイベントに関する情報が、ブロックチェーンを用いて分散ファイル共有ネットワークに含まれるノード装置間で共有される。そして、そのイベントに関する情報を含むファイルが生成され、このファイルを分散ファイル共有ネットワークのいずれかのノード装置で保持する。これにより、分散環境でのトランザクション(取引)の認証と正当性保証、及び改ざん不能な取引履歴管理の機能が応用され拡張される。概念的には本実施形態では、図3(a)に示されるように、各ノード307は、分散ファイル共有ネットワーク301と通信を行うときに、まず、ブロックチェーンの拡張により実現される分散型の認証/証跡管理ネットワーク302にアクセスする。その後、認証/証跡管理ネットワーク302に包含されるように構成される分散ファイル共有ネットワーク301へのアクセスが行われる。
より具体的には、本実施形態は、図3(b)に示される構成を有する。図3(b)の構成では、IoTゲートウェイ305又はクライアント端末306に、ブロックチェーンアプリケーション303(図中「BC」)がインストールされる。このブロックチェーンアプリケーション303は、ブロックチェーンによるトランザクションを処理するソフトウェアである。IoTゲートウェイ305又はクライアント端末306で動作するブロックチェーンアプリケーション303により、認証/証跡管理ネットワーク302が形成される。また、IoTゲートウェイ305又はクライアント端末306には、IPFSアプリケーション304(図中「IPFS」)がインストールされる。このIPFSアプリケーション304は、分散ファイル共有ネットワーク301に対するファイルの登録(保持)又はアクセスの機能を提供するソフトウェアである。IoTゲートウェイ305又はクライアント端末306で動作するIPFSアプリケーション304により、分散ファイル共有ネットワーク301が形成される。以下、クライアント端末とは、クライアントが操作する端末あるいはクライアントそのものを指すものとする。
本実施形態において、IoTゲートウェイ305でセンサ検知等のイベントが発生し又は受信され、それに対応するイベント情報(イベントに関する情報)のファイル登録要求が発生すると、まず、IoTゲートウェイ305でブロックチェーンアプリケーション303が実行される。このブロックチェーンアプリケーション303は、IPFSアプリケーション304を実行することにより、IPFSアプリケーション304に、分散ファイル共有ネットワーク301へのイベント情報ファイルの登録を実行させる。このとき、IoTゲートウェイ305で動作するブロックチェーンアプリケーション303は、IoTゲートウェイ305のユーザに対する認証や、コンテンツの一意性の保証、サービスリポジトリ、データ履歴(ログ)管理(証跡管理)等の機能を実行する。これにより、イベント情報ファイルの分散ファイル共有ネットワーク301への登録が、高セキュアに実行される。
また、本実施形態において、クライアント端末306からファイル閲覧要求が発生すると、そのクライアント端末306でブロックチェーンアプリケーション303が実行される。このブロックチェーンアプリケーション303は、IPFSアプリケーション304を実行することにより、IPFSアプリケーション304に、分散ファイル共有ネットワーク101へのファイル要求処理を実行させる。このとき、クライアント端末306で動作するブロックチェーンアプリケーション303は、クライアント端末306のユーザ又はユーザが属するグループに対する認証や、ファイルのアクセス制御、アクセスログ管理(証跡管理)等の機能を実行する。これにより、分散ファイル共有ネットワーク301上のファイル閲覧が、高セキュアに実行される。
以上の図3(b)に関する説明のように、本実施形態では、ブロックチェーンアプリケーション303が、IPFSアプリケーション304を介して分散ファイル共有ネットワーク301にアクセスするためのプロキシとして動作する。これにより、高セキュアな分散ファイル共有の閉域ネットワーク空間が構築される。
ここで、ブロックチェーンとは、ユーザ間で 『情報(台帳)』 を共有する技術であり、様々な取引情報(トランザクション)を記した台帳を公開し、ユーザ全員でその正当性をチェックすることで、不正の無い契約を遂行する分散台帳システムである。
図4は、ブロックチェーンの説明図である。ブロックチェーンでは、電子証明書の技術を使ってユーザ認証が行われる。ユーザが最初にブロックチェーンにアカウント登録した時点で、図4(a)に示されるように、まず秘密鍵とその秘密鍵に対応する公開鍵が生成され、更にユーザIDが生成されて、ユーザに対して発行される。更に、これらの秘密鍵及び公開鍵に基づいて、電子証明書がユーザに対して発行される。ブロックチェーンは、この電子証明書を持っているユーザがブロックチェーンを使うことができるという認証の機能を有している。本実施形態では、この認証の機能を活用する。
ユーザは、秘密鍵、公開鍵、ユーザIDという3つの情報を用いて、トランザクションを発行する。今、発行元の自分がBだとすると、BからCにトランザクションTx2が発行されるケースを考える。この場合に、ブロックチェーンは、自分宛てに送られているトランザクションTx1を入力として新しいトランザクションを発行する機能を有する。このように、ブロックチェーンでは、承認済みのトランザクションをもとにして新しいトランザクションが発行されることにより、トランザクションの信頼性を向上させることができる。
図4(b)に示されるように、送信先のユーザCの公開鍵が、トランザクションTx2の宛先の情報として指定される。また、承認済みのトランザクションTx1のハッシュ値を含む未署名のトランザクションTx2に対して、ハッシュ値が計算され、そのハッシュ値に対しユーザB自身の秘密鍵を用いて電子署名が計算され、その電子署名がトランザクションTx2の発行元の情報として付加される。
このようなトランザクションTx2がブロックチェーンネットワークにブロードキャストされると、ブロックチェーンネットワークに属する他のユーザがトランザクションTx2の署名を次のようにして検証する。図4(b)のように、トランザクションTx2の未署名部分からハッシュ値が計算される。また、トランザクションTx2の発行元として添付されているユーザBの電子署名を生成させたハッシュ値が、ユーザBの公開鍵を使って計算される。そして、これらの2つのハッシュ値が比較され、2つのハッシュ値が一致すれば、トランザクションTx2は、正しいユーザBが発行したものであるとの検証結果が得られる。
このように、ブロックチェーンは、過去の承認済トランザクションに対して、電子署名による検証を行いながら、そのハッシュ値を入力として新たなトランザクションを発行していくことで、トランザクションそのものの信頼性を向上させる仕組みを有する。ブロックチェーンを構成するそれぞれのブロックは、「そのブロックの一つ前のブロックに関する情報」と、「ある時間内に行われたすべての取引のリスト(=個々のトランザクションをまとめたもの)」を記録したトランザクションで構成される。これにより、各ブロックのトランザクションには、ある時間内に行われたすべての取引が記録されることになる。
ブロックチェーンでは更に、ブロックチェーンネットワーク内でマイナーと呼ばれる特定の検査ノードが、任意のノードから新規に発行されたトランザクションのブロックを確定する処理を実行する。この確定処理によって、高セキュアな台帳管理を実現することが可能であり、それらのトランザクション発行のすべての履歴情報が分散台帳上で共有・管理されるという特徴を有する。
図4(c)は、上記確定処理の説明図である。マイナーは、直前ブロックのハッシュ値と、取引リストをまとめたマークルツリーのルートのハッシュ値とに、自身がランダムに生成するナンス(nonce)値と呼ばれる情報を加えた3つの情報からなる未承認ブロックに対して、ハッシュ値を計算する。マイナーは、ナンス値をランダムに変更しながら、このハッシュ値が特定の条件を満たす(例えば先頭に一定数以上の0が並ぶような値となる)ようなナンス値を発見する。この結果、マイナーは、上記発見したナンス値を含む上記3つの情報によって、未承認ブロックを改ざん不能な形で確定(承認)する。この確定処理を実行したマイナーは報酬を獲得できる。マイナーは、上記確定したブロックを、ブロックチェーンネットワーク内のユーザ全員にブロードキャストする。上記ブロックの確定の仕組みにより、ブロックチェーンネットワークにおいて、上記特定の条件(例えば先頭に一定数以上の0が並ぶ値となっている状態)が満たされないハッシュ値となるブロックは、確定された(承認された)ブロックとは見なされない。確定されていない未承認のブロックは、次のブロックへの入力として採用することはできない。
ブロックのナンス値を受け取った他のユーザは、ブロックに含まれる各トランザクションの電子署名が正しいか否かをまず検証する。更に、上記ユーザは、そのブロックから算出されるハッシュ値が前述した特定の条件(例えば先頭に一定数以上の0が並ぶ値となっている状態)が満たされているか否かを検証する。そして、上記ユーザは、上記2つの検証に問題がなければ、図4(b)で説明した手順で、自身のブロックチェーンの末尾に承認済みのブロックを追加する。
このブロック内の情報を改ざんしようとした場合、ブロック内の3つの情報とブロックチェーン全体に矛盾が生じるようにデータ構造を作ることで、実質改ざん不能なデータベースを構築することができる。ネットワーク全体で「唯一のブロックの鎖」を持つようにされることによって、一貫した取引履歴を全体が共有することができる。
本実施形態では、以上の仕組みのブロックチェーンネットワークで動作する図3(b)のブロックチェーンアプリケーション303が、IPFSアプリケーション304を介して分散ファイル共有ネットワーク301にアクセスするためのプロキシとして動作する。このように、本実施形態では、端末で発生したイベントに関する情報が、ブロックチェーンを用いて分散ファイル共有ネットワークに含まれるノード装置間で共有される。
図5は、本実施形態における通信システム500の構成例を示す図である。通信システム500は、トランザクション発行アプリケーション(以下「トランザクション発行アプリ」)510を備えるセンサデバイス又はクライアント端末(以下「センサデバイス/クライアント端末」)501を備える。通信システム500は、ブロックチェーンアプリケーション(以下「ブロックチェーンアプリ」)511と分散ファイル共有アプリケーション(以下「分散ファイル共有アプリ」)512を備えるセンサエッジノード又はクライアント端末(以下、「センサエッジノード/クライアント端末」)502を備える。センサデバイス501とセンサエッジノード502の組合せは、図1(a)のIoTサービス例のセンサネットワークのユースケースで使用される。クライアント端末501とクライアント端末502の組合せは、図1(b)のサプライチェーン例のユースケースで使用される。センサデバイス/クライアント端末501とセンサエッジノード/クライアント端末502は、一体のノード装置であるIoTゲートウェイ又はクライアント端末(以下「IoTゲートウェイ/クライアント端末」)503であってもよい。即ち、IoTゲートウェイ/クライアント端末503は、トランザクション発行アプリ510と、ブロックチェーンアプリ511と、分散ファイル共有アプリ512とを備える。これらのアプリは、IoTゲートウェイまたはクライアント端末からなるノード装置以外のノード装置に配備されても良い。以下の説明では、センサデバイス/クライアント端末501とセンサエッジノード/クライアント端末502とを合わせてIoTゲートウェイ/クライアント端末503として説明する。
また、通信システム500は、トランザクション発行アプリ510とブロックチェーンアプリ511と分散ファイル共有アプリ512とを備えるクライアント端末504を備える。例えば、クライアント端末504がトランザクション発行アプリ510のみを有するようにし、クライアント端末504内のブロックチェーンアプリ511と分散ファイル共有アプリ512が別のノード装置に実装されるような構成であってもよい。
そのほか、通信システム500は、ブロックチェーン認証ノード505及びブロックチェーンノード506を備える。この認証部は、認証証跡管理ブロックネットワーク521へのユーザまたはグループのログインと、ブロックチェーンの初期トランザクションであるサービス許可トランザクションの発行を行う。
トランザクション発行アプリ510は、ブロックチェーン認証ノード505と通信を行って、IoTゲートウェイ/クライアント端末503又はクライアント端末504を操作するユーザ又はグループを認証する認証部を備える。
IoTゲートウェイ/クライアント端末503は、図1のIoTゲートウェイ103又はクライアント端末104、或いは図3のIoTゲートウェイ305に対応する。即ち、IoTゲートウェイ/クライアント端末503は、センサ情報を出力し、又は端末操作者によって入力される原材料・部品の調達から、製造、在庫管理、販売、配送までの製品の工程情報等を出力する。
IoTゲートウェイ/クライアント端末503、クライアント端末504、ブロックチェーン認証ノード505、及びブロックチェーンノード506は、認証/証跡管理プロキシネットワーク521を形成する。認証/証跡管理プロキシネットワーク521は、ブロックチェーンネットワークに含まれる。また、IoTゲートウェイ/クライアント端末503及びクライアント端末504は、分散ファイル共有ネットワーク522を形成する。
図5の構成を有する本実施形態における通信システム500の動作の詳細について、以下に説明する。図6は、図5の通信システム500におけるファイル発行の処理例を示すシーケンス図、図7は、図6のファイル発行の処理例で使用される各トランザクションのデータフォーマット例を示す図である。
まず、ファイル発行の処理例について概説する。
<STEP1:ユーザ認証の実行>
最初に、IoTゲートウェイ/クライアント端末503内のセンサデバイス/クライアント端末501に対するユーザ認証を、既存のブロックチェーンソフトウェアで利用される電子証明書を用いて行う。
<STEP2:ファイル登録の証跡管理の実行>
センサデバイス/クライアント端末501がイベントを検知した際、図6のトランザクション発行アプリ510が、次の処理を実行する。トランザクション発行アプリ510は、センサデバイス/クライアント端末501(userID #X)から、特定ユーザ(userID #Y)あるいは共有サービス(groupID #Z)宛てに、イベントトランザクション(イベントに関するトランザクション)を発行する。このイベントトランザクションは、サービス認可トランザクションのハッシュ値を入力し、イベント情報を含む。
<STEP3:イベント情報ファイルの生成/登録とコンテンツの一意性の保証>
イベントトランザクションを含むブロックが検査ノードにより確定された後、ブロックチェーンアプリ511は、イベントトランザクションに含まれるイベント情報を含むファイルを生成するためのファイル生成トランザクション(ファイルを生成するトランザクション)を新たに発行する。ブロックチェーンアプリ511は、ファイル生成トランザクションの発行を契機に、イベントトランザクションのハッシュ値の情報をコンテンツの一意性を保証するIDとして埋め込み、上記イベント情報を含んだイベント情報ファイルを自動生成する。ブロックチェーンアプリ511は、上記イベント情報ファイルを、分散ファイル共有アプリ512を介してIPFS等の分散ファイル共有ネットワーク522に登録する。このとき、イベント情報ファイルには、イベントトランザクションを発行したタイムスタンプ情報が付与されても良い。
<STEP4:ポータルファイルの更新によるリポジトリ機能の提供>
ブロックチェーンアプリ511は、イベント情報ファイルが分散ファイル共有ネットワーク522に登録された際に発行されるファイルアドレス情報(IPFSの場合はハッシュ値のアドレス)を、分散ファイル共有アプリ512を介して取得する。ブロックチェーンアプリ511は、ファイル生成トランザクションのハッシュ値を入力とし、前記ファイルアドレスを記載したセンサデバイス/クライアント端末501(userID #X)から、特定ユーザ(userID #Y)あるいは共有サービス(groupID #Z)宛てのサービス登録トランザクションを発行する。このサービス登録トランザクションは、ファイル生成トランザクションのハッシュ値と、イベント情報ファイルのアドレス情報と、サービス情報とを含む。ブロックチェーンアプリ511は、サービス登録トランザクションの発行を契機に、コンテンツ例えばサービス名とファイルアドレスとを紐づけた情報を、分散ファイル共有ネットワーク522で公開されるポータルサイトを示すポータルファイルに追加・更新し、再登録する。
上記手続きにより、分散ファイル共有ネットワーク522へのファイル登録に関する認証と証跡情報、およびコンテンツの一意性の保証をブロックチェーンで管理することが可能になる。同時に、ファイルアドレスとコンテンツ例えばサービス情報の関係を紐づけ、分散ファイル共有ネットワーク522上のポータルファイルとして一元管理するリポジトリ機能を提供することが可能となる。
次に、図6のファイル発行の処理例の詳細について説明する。
まず、IoTゲートウェイ/クライアント端末503は、自装置内のセンサからのセンサ出力又は端末入力等のイベントが発生すると、自装置内のトランザクション発行アプリ510を起動する。トランザクション発行アプリ510は、自装置に予め割り当てられているユーザアカウントを用いて、自装置で実行されるブロックチェーンアプリ511内の既存の認証部にアクセスし、ログインを実行する(S601)。
IoTゲートウェイ/クライアント端末503内のブロックチェーンアプリ511の認証部は、認証/証跡管理プロキシネットワーク521内のブロックチェーン認証ノード505と通信をしながら、上記ログインのアクセスに対して認証を実行する(S602)。
上記認証部は、認証が成立したら、トランザクション発行アプリ510に、所定のサービス認可トランザクションのハッシュ値を通知して、ユーザが認証/証跡ネットワーク(ブロックチェーン)302に対してログインすることを認可する(S603)。
続いて、IoTゲートウェイ/クライアント端末503内のトランザクション発行アプリ510は、自装置内で発生したイベントに対応するイベント情報(センサ出力情報又は工程情報等)と、上記サービス認可トランザクションのハッシュ値とを含むイベントトランザクションを発行する(S604)。このとき、トランザクション発行アプリ510は、イベントトランザクションに、発行元の情報として、自装置のユーザIDと、それに対応する公開鍵情報を設定する。また、トランザクション発行アプリ510は、イベントトランザクションに、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID又はグループIDと、それに対応する公開鍵情報を併せて設定する。
このイベントトランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S605)。ブロックチェーンノード506のうちの1つ以上のノードは、図4(c)で説明した検査ノード(マイナー)として動作しており、通知されたトランザクションに記載された電子署名を検証し、ブロックを確定する処理を実行している。この結果、何れかの検査ノードは、上記イベントトランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S606)。
IoTゲートウェイ/クライアント端末503で実行中のブロックチェーンアプリ511は、イベントトランザクションの発行通知(S604)とそれに対応する確定通知(S606)を受信すると、次の処理を実行する。上記ブロックチェーンアプリ511は、ファイル生成トランザクションを発行する(S607)。このファイル生成トランザクションは、確定したブロックに対応するイベントトランザクションのハッシュ値とイベントトランザクションに含まれていたイベント情報とを含み、ファイル生成処理を実行する。このとき、上記ブロックチェーンアプリ511は、ファイル生成トランザクションに、イベントトランザクションに設定されているセンサデバイス/クライアント端末501(図5参照)のユーザIDを設定する。このユーザIDは発行元の情報である。また、ブロックチェーンアプリ511は、ファイル生成トランザクションに、宛先の情報として、イベントトランザクションに設定されているファイル登録処理のサービスに予め割り当てられたユーザID又はグループIDを設定する。
このファイル生成トランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S608)。ブロックチェーンノード506のうちの1つの検査ノードは、通知された上記ファイル生成トランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S606)。
IoTゲートウェイ/クライアント端末503で実行中のブロックチェーンアプリ511は、ファイル生成トランザクションの発行通知(S607)とそのブロックに対応する確定通知(S609)を受信すると、次の処理を実行する。
上記ブロックチェーンアプリ511は、受信したイベントトランザクション内のイベント情報を含むイベント情報ファイルを生成するファイル生成処理(S610)を実行する。上記ブロックチェーンアプリ511は、このとき同時に、確定したブロックに対応するファイル生成トランザクションに設定されているイベントトランザクションのハッシュ値を、コンテンツの一意性を保証するIDとして、イベント情報ファイルに埋め込む。また、イベント情報ファイルには、イベントトランザクションが発行されたときのタイムスタンプ情報が付与されてもよい。更に、ファイルそのものの秘匿性を向上させるため、上記ブロックチェーンアプリ511は、ファイル生成トランザクションに設定されている宛先のユーザID又はグループIDに対応した公開鍵で、分散ファイルシステムに登録するイベント情報ファイルを暗号化してもよい。この場合、上記ユーザID又はグループIDの公開鍵に対応した秘密鍵を持つユーザやグループのみが、分散ファイル共有システムに登録された該当するイベント情報ファイルの情報を閲覧することが可能になる。その後、上記ブロックチェーンアプリ511は、自装置内の分散ファイル共有アプリ512を起動する(以上、S610)。
上記分散ファイル共有アプリ512は、生成されたイベント情報ファイルに対して、以下のS611及びS612からなるファイル登録処理を実行する。上記分散ファイル共有アプリ512は、このファイル登録処理において、まず、分散ファイル共有ネットワーク522に対して、上記イベント情報ファイルを登録する(S611)。そして、上記分散ファイル共有アプリ512は、登録先のノードから登録したイベント情報ファイルのハッシュ値をアドレス情報として取得し、そのアドレス情報を自装置内のブロックチェーンアプリ511に通知する(S612)」。
上記ブロックチェーンアプリ511は、イベント情報ファイルに対応するアドレス情報を取得すると、ファイル生成トランザクションのハッシュ値を入力とするサービス登録トランザクションを発行する(S613)。このとき、上記ブロックチェーンアプリ511は、サービス登録トランザクションに、S612で取得したイベント情報ファイルのハッシュ値(アドレス情報)と、このイベント情報ファイルに対応するイベントのサービスの情報とを設定する。また、上記ブロックチェーンアプリ511は、サービス登録トランザクションに、発行元の情報として、ファイル生成トランザクションに設定されているセンサデバイス/クライアント端末501(図5参照)のユーザIDを設定する。また、ブロックチェーンアプリ511は、サービス登録トランザクションに、宛先の情報として、ファイル生成トランザクションに設定されているファイル登録処理のサービスに予め割り当てられたユーザID又はグループIDを設定する。
このサービス登録トランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S614)。ブロックチェーンノード506のうちの1つの検査ノードは、通知された上記サービス登録トランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S615)。
IoTゲートウェイ/クライアント端末503で実行中のブロックチェーンアプリ511は、サービス登録トランザクションの発行通知(S613)とそのブロックに対応する確定通知(S615)を受信すると、以下のサービス登録処理を実行する。上記ブロックチェーンアプリ511は、まず、自装置の分散ファイル共有アプリ512にアクセスして、分散ファイル共有ネットワーク522からポータルファイルを取得する(S616)。続いて、上記ブロックチェーンアプリ511は、S612で取得したイベント情報ファイルに対応するハッシュ値(アドレス情報)に、イベント情報ファイルに対応するサービス内容を含む情報を紐付けた情報を、上記取得したポータルファイルに追加して更新する。そして、上記ブロックチェーンアプリ511は、その更新したポータルファイルを、自装置の分散ファイル共有アプリ512にアクセスして、分散ファイル共有ネットワーク522に再登録させる(以上、S617)。
上記ポータルファイルの更新処理で、他のIoTゲートウェイ/クライアント端末503からのポータルファイルの同時更新を避けるために、IoTゲートウェイ/クライアント端末503内の上記分散ファイル共有アプリ512は、排他制御を実行してもよい。この場合、上記分散ファイル共有アプリ512では、ポータルファイルの同時更新が許容されず、1ユーザのみに更新権限が与えられ、他ユーザはロックされるような制御が実行される。また、ポータルファイル管理者にコンテンツとファイルアドレスの関係を通知するAPIを設け、IoTゲートウェイ/クライアント端末503内の上記分散ファイル共有アプリ512がポータルファイル管理者にポータルファイルの更新を一任する制御が実行されてもよい。
上記制御処理により、分散ファイル共有ネットワーク522へのファイル登録に関する認証と証跡情報、およびコンテンツの一意性の保証を、ブロックチェーンである認証/証跡管理プロキシネットワーク521で管理することが可能になる。
また、コンテンツとファイルアドレスの関係が紐づけられ、分散ファイル共有システム上のポータルファイルとして、ブロックチェーンで一元管理することも可能となる。図8は、S616及びS617で処理されるポータルファイルのデータフォーマット例を示す図である。ポータルファイルには、イベント情報ファイルに対応するハッシュ値(アドレス情報)に、イベント情報ファイルに対応するサービス内容と、イベント情報ファイルのファイル名とが紐付けられる。
次に、図7に示される、図6で説明したファイル発行の処理で使用される各トランザクションのデータフォーマット例の詳細について説明する。
図6のS604でIoTゲートウェイ/クライアント端末503のトランザクション発行アプリ510により発行されるイベントトランザクションは、図7(a)に例示されるデータフォーマットを有する。図7(a)に示されるように、イベントトランザクションには、ブロックチェーンの入力トランザクションとして、S603で通知されたサービス認可トランザクションのハッシュ値が設定される。また、イベントトランザクションには、自装置内で発生したセンサイベントに対応するイベント情報が設定される。更に、イベントトランザクションには、発行元の情報として、センサデバイス/クライアント端末501(図5参照)のユーザID(図7(a)中の「userID #X」)とそれに対応する公開鍵情報が設定される。また、イベントトランザクションには、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID(図7(a)中の「userID #Y」)又はグループID(図7(a)中の「groupID #Z」)とそれに対応する公開鍵情報が設定される。
図6のS607でIoTゲートウェイ/クライアント端末503のブロックチェーンアプリ511により発行されるファイル生成トランザクションは、図7(b)に例示されるデータフォーマットを有する。図7(b)に示されるように、ファイル生成トランザクションには、ブロックチェーンの入力トランザクションとして、S606の確定通知で確定されたブロックに対応するイベントトランザクションのハッシュ値が設定される。また、ファイル生成トランザクションには、イベントトランザクションに設定されているイベント情報が設定される。更に、ファイル生成トランザクションには、発行元の情報として、イベントトランザクションに設定されているセンサデバイス/クライアント端末501(図5参照)のユーザID(図7(b)中の「userID #X」)とそれに対応する公開鍵情報が設定される。また、ファイル生成トランザクションには、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID(図7(b)中の「userID #Y」)又はグループID(図7(b)中の「groupID #Z」)とそれに対応する公開鍵情報が設定される。
図6のS613でIoTゲートウェイ/クライアント端末503のブロックチェーンアプリ511により発行されるサービス登録トランザクションは、図7(c)に例示されるデータフォーマットを有する。図7(c)に示されるように、サービス登録トランザクションには、ブロックチェーンの入力トランザクションとして、S609の確定通知で確定されたブロックに対応するファイル生成トランザクションのハッシュ値が設定される。また、サービス登録トランザクションには、S612で取得したイベント情報ファイルに対応するハッシュ値(アドレス情報)と、このイベント情報ファイルに対応するイベントのサービスの情報とが設定される。更に、サービス登録トランザクションには、発行元の情報として、ファイル生成トランザクションに設定されているセンサデバイス/クライアント端末501(図5参照)のユーザID(図7(c)中の「userID #X」)が設定される。加えて、サービス登録トランザクションには、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID(図7(c)中の「userID #Y」)又はグループID(図7(c)中の「groupID #Z」)が設定される。
図7(d)の統合トランザクションのデータフォーマットについては、後述する。
図9は、図5の通信システム500におけるファイル発行の他の処理例を示すシーケンス図である。前述した図6では、ファイル生成処理(S610)及びファイル登録処理(S611、S612)を実行するためのファイル生成トランザクションと、サービス登録処理(S616、S617)を実行するためのサービス登録トランザクションが、2つに分かれていた。これに対して、図9では、ファイル生成処理(S610)、ファイル登録処理(S611、S612)、及びサービス登録処理(S616、S617)が、1つのトランザクションのブロックの確定を契機として、連続して実行される点が異なる。
具体的には、図9において、図6と同じ参照番号が付されたシーケンスは、図6の場合と同じ処理である。図9のシーケンスが図6のシーケンスと異なる部分についてのみ、以下に説明する。
IoTゲートウェイ/クライアント端末503で実行中のブロックチェーンアプリ511は、図6のシーケンスと同様にして、イベントトランザクションの発行通知(S604)とそれに対応する確定通知(S606)を受信すると、次の処理を実行する。上記ブロックチェーンアプリ511は、図7(d)のデータフォーマット例に示される統合トランザクションを発行する。この統合トランザクションには、S606の確定通知により確定されたブロックに対応するイベントトランザクションのハッシュ値が設定される。また、統合トランザクションには、イベントトランザクションに含まれていたイベント情報が設定される。また、統合トランザクションには、上記イベント情報に対応するサービスの情報が設定される。更に、統合トランザクションには、発行元の情報として、イベントトランザクションに設定されているユーザID(図7(d)中の「userID #X」)が設定される。加えて、統合トランザクションには、宛先の情報として、イベントトランザクションに設定されているユーザID(図7(d)中の「userID #Y」)又はグループID(図7(d)中の「groupID #Z」)が設定される。
この統合トランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S902)。ブロックチェーンノード506のうちの1つの検査ノードは、通知された上記ファイル生成トランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S903)。
IoTゲートウェイ/クライアント端末503で実行中のブロックチェーンアプリ511は、統合トランザクションの発行通知(S901)とそれに対応する確定通知(S903)を受信すると、次の処理を実行する。上記ブロックチェーンアプリ511は、図6のシーケンスで説明したファイル生成処理(S610)、ファイル登録処理(S611、S612)、及びサービス登録処理(S616、S617)を、連続して実行する。
図10は、図5の通信システム500におけるファイルアクセスの処理例を示すシーケンス図、図11は、図10のファイルアクセスの処理例で使用されるトランザクションのデータフォーマット例を示す図である。
まず、ファイルアクセスの処理例について概説する。
<STEP1:ユーザ認証の実行>
最初に、クライアント端末504からファイルアクセスを行うユーザの認証を、既存のブロックチェーンで発行される電子証明書を用いて行う。
<STEP2:ファイルアクセスの証跡管理の実行>
ユーザがファイルにアクセスするため、クライアント端末504内のトランザクション発行アプリ510が、サービス認可トランザクションのハッシュ値を入力とし、ポータルサイトのポータルファイルのアドレスを含むファイル閲覧トランザクションを発行する。このファイル閲覧トランザクションの発行元はクライアント端末504のユーザ(userID #W)、宛先は特定ユーザ(userID #Y)あるいは共有サービス(groupID #Z)とそられに対応する公開鍵情報である。トランザクション発行アプリ510は、クライアント端末504内のブロックチェーンアプリ511及び分散ファイル共有アプリ512を介して、分散ファイル共有ネットワーク522から、共有空間を管理するサービスのポータルファイルの情報を取得する。これによってユーザはポータルサイトの情報を閲覧する。
<STEP3:ファイルアクセスの実行とファイルアクセスの証跡管理の実行>
クライアント端末504において、ユーザがポータルサイトに記載されているファイルを選択する。この結果、クライアント端末504内のトランザクション発行アプリ510が、サービス認可トランザクションのハッシュ値を入力とし、ユーザが選択したファイルのアドレスを含むファイル閲覧トランザクションを発行する。このファイル閲覧トランザクションの発行元はクライアント端末504のユーザ(userID #W)、宛先は特定ユーザ(userID #Y)あるいは共有サービス(groupID #Z)とそららに対応する公開鍵情報である。トランザクション発行アプリ510は、クライアント端末504内のブロックチェーンアプリ511及び分散ファイル共有アプリ512を介して、分散ファイル共有ネットワーク522から該当するファイルを取得する。この結果、ユーザは、該当ファイルを閲覧することが可能になる。
以上の処理により、分散ファイル共有ネットワーク522上でのファイルアクセスの認証と証跡情報をブロックチェーンの機能を活用し実現することが可能になる。この情報をサービス課金に利用してもよい。また、要求したファイル情報をユーザが取得するまでは、ファイルアクセスのファイル閲覧トランザクションの発行を待機し、ファイル取得確認後に該当トランザクションを発行するようにしてもよい。なお、各トランザクションはブロックチェーンにおけるブロック確定の処理が完了するまでは実行されないものとし、ブロック確定を実行するノードは、自身のノードでも他のノードでも良い。
次に、図10のファイルアクセスの処理例の詳細について説明する。
まず、クライアント端末504は、ファイル閲覧要求のイベントが発生すると、自装置内のトランザクション発行アプリ510を起動する。トランザクション発行アプリ510は、クライアント端末504に予め割り当てられているユーザアカウントを用いて、クライアント端末504のブロックチェーンアプリ511内の既存の認証部にアクセスし、ログインを実行する(S1001)。
クライアント端末504内のブロックチェーンアプリ511の認証部は、認証/証跡管理プロキシネットワーク521内のブロックチェーン認証ノード505と通信をしながら上記ログインのアクセスに対して認証を実行する(S1002)。
上記認証部は、認証が成立したら、トランザクション発行アプリ510に、所定のサービス認可トランザクションのハッシュ値を通知して、ログインを認可する(S1003)。
続いて、クライアント端末504内のトランザクション発行アプリ510は、自装置内で発生したファイル閲覧要求で指定されているポータルファイルのハッシュ値(アドレス情報)と、上記サービス認可トランザクションのハッシュ値とを含む第1のファイル閲覧トランザクションを発行する(S1004)。このとき、トランザクション発行アプリ510は、第1のファイル閲覧トランザクションに、発行元の情報として、クライアント端末504のユーザIDを設定する。また、トランザクション発行アプリ510は、第1のファイル閲覧トランザクションに、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID又はグループIDを設定する。
この第1のファイル閲覧トランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S1005)。ブロックチェーンノード506のうちの1つの検査ノードは、通知された上記第1のファイル閲覧トランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S1006)。
クライアント端末504で実行中のブロックチェーンアプリ511は、第1のファイル閲覧トランザクションの発行通知(S1004)とそれに対応する確定通知(S1006)を受信すると、次の処理を実行する。上記ブロックチェーンアプリ511は、クライアント端末504内の分散ファイル共有アプリ512に、第1のファイル閲覧トランザクションに含まれるポータルファイルのハッシュ値(アドレス情報)を指定したポータルファイル要求を発行する(S1007)。
この結果、クライアント端末504内の分散ファイル共有アプリ512は、上記ハッシュ値によって分散ファイル共有ネットワーク522にアクセスし、ポータルファイルを取得し、クライアント端末504内のブロックチェーンアプリ511に送信する。上記ブロックチェーンアプリ511は、このポータルファイルの内容を、クライアント端末504内のトランザクション発行アプリ510に送信する(以上、S1008)。この結果、クライアント端末504の特には図示しないディスプレイ等に、図8に例示した、各サービス名、イベント情報ファイル名、及びイベント情報ファイルのハッシュ値(アドレス情報)の一覧が表示され、ユーザが閲覧可能となる。
続いて、クライアント端末504のユーザが、ディスプレイ上の上記一覧を見ながら、何れかのサービス名に対応するイベント情報ファイルのハッシュ値を指定する。この結果、クライアント端末504内のトランザクション発行アプリ510は、自装置内で発生したファイル閲覧要求で指定されているイベント情報ファイルのハッシュ値(アドレス情報)と、S1003で取得されているサービス認可トランザクションのハッシュ値とを含む第2のファイル閲覧トランザクションを発行する(S1009)。このとき、トランザクション発行アプリ510は、第2のファイル閲覧トランザクションに、発行元の情報として、クライアント端末504のユーザIDとそれに対する公開鍵情報を設定する。また、トランザクション発行アプリ510は、第2のファイル閲覧トランザクションに、宛先の情報として、ファイル登録処理のサービスに予め割り当てられたユーザID又はグループIDとそられに対する公開鍵情報を設定する。
この第2のファイル閲覧トランザクションは、ブロックチェーンである認証/証跡管理プロキシネットワーク521を形成している全てのブロックチェーンノード506に通知される(S1010)。ブロックチェーンノード506のうちの1つの検査ノードは、通知された上記第2のファイル閲覧トランザクションのブロックに対して確定処理を実行し、確定通知を発行する(S1011)。
クライアント端末504で実行中のブロックチェーンアプリ511は、第2のファイル閲覧トランザクションの発行通知(S1009)とそれに対応する確定通知(S1011)を受信すると、次の処理を実行する。上記ブロックチェーンアプリ511は、クライアント端末504内の分散ファイル共有アプリ512に、第2のファイル閲覧トランザクションに含まれるイベント情報ファイルのハッシュ値(アドレス情報)を指定したファイル要求を発行する(S1012)。
この結果、クライアント端末504内の分散ファイル共有アプリ512は、上記ハッシュ値によって分散ファイル共有ネットワーク522にアクセスし、イベント情報ファイルを取得し、クライアント端末504内のブロックチェーンアプリ511に送信する。上記ブロックチェーンアプリ511は、このイベント情報ファイルの内容を、クライアント端末504内のトランザクション発行アプリ510に送信する(以上、S1013)。この結果、クライアント端末504の特には図示しないディスプレイ等に、イベント情報ファイルの内容が表示され、ユーザが閲覧可能となる。
次に、図11に示される、図10で説明したファイルアクセスの処理例で使用されるトランザクションのデータフォーマット例の詳細について説明する。
図10のS1004又はS1009でクライアント端末504のトランザクション発行アプリ510により発行される第1又は第2のファイル閲覧トランザクションは、図11に例示されるデータフォーマットを有する。図11に示されるように、ファイル閲覧トランザクションには、ブロックチェーンの入力トランザクションとして、S1003で通知されたサービス認可トランザクションのハッシュ値が設定される。また、ファイル閲覧トランザクションには、自装置内で発生したポータルファイル又はイベント情報ファイルの閲覧要求に対応するポータルファイル又はイベント情報ファイルのハッシュ値(アドレス情報)が設定される。更に、イベントトランザクションには、発行元の情報として、クライアント端末504のユーザID(図11中の「userID #W」)とそれに対応する公開鍵情報が設定される。また、ファイル閲覧トランザクションには、宛先の情報として、前述したファイル閲覧処理のサービスに予め割り当てられたユーザID(図11中の「userID #Y」)又はグループID(図11中の「groupID #Z」)とそれらに対応する公開鍵情報が設定される。このユーザID又はグループIDは、前述したファイル登録処理のサービスに予め割り当てられた図7に示される宛先のユーザID又はグループIDと同じである。
以上のファイルアクセス処理により、分散ファイル共有ネットワーク522上の分散ファイルシステムでのファイルアクセスの認証と証跡情報を、ブロックチェーンの機能を活用し実現することが可能になる。この情報は、サービス課金等に利用してもよい。
また、要求したファイル情報をユーザが取得するまでは、ファイル閲覧トランザクションの発行を待機し、ファイル取得確認後に該当トランザクションが発行されるようにしてもよい。
図12は、図5のIoTゲートウェイ/クライアント端末503又はクライアント端末504の機能をソフトウェア処理として実現できるコンピュータのハードウェア構成の一例を示す図である。
図12に示されるコンピュータは、CPU(中央演算処理装置)1201、メモリ1202、入力装置1203、出力装置1204、外部記憶装置1205、可搬記録媒体1209が挿入される可搬記録媒体駆動装置1206、及び通信インタフェース1207を有し、これらがバス1208によって相互に接続された構成を有する。図12に示される構成はIoTゲートウェイ/クライアント端末503又はクライアント端末504の機能を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
CPU1201は、当該コンピュータ全体の制御を行う。メモリ1202は、プログラムの実行、データ更新等の際に、外部記憶装置1205(或いは可搬記録媒体1209)に記憶されているプログラム又はデータを一時的に格納するRAM等のメモリである。CUP1201は、プログラムをメモリ1202に読み出して実行することにより、全体の制御を行う。
入力装置1203は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をCPU1201に通知する。
出力装置1204は、CPU1201の制御によって送られてくるデータを表示装置や印刷装置に出力する。
外部記憶装置1205は、例えばハードディスク記憶装置である。主に各種データやプログラムの保存に用いられる。
可搬記録媒体駆動装置1206は、SDカード、コンパクトフラッシュ(登録商標)や、CD−ROM、DVD、光ディスク等の可搬記録媒体1209を収容するもので、外部記憶装置1205の補助の役割を有する。
通信インターフェース1207は、例えばLAN(ローカルエリアネットワーク)又はWAN(ワイドエリアネットワーク)の通信回線を接続するための装置である。
図5のIoTゲートウェイ/クライアント端末503又はクライアント端末504の機能は、以下に説明する図13から図15のフローチャート等で実現される機能を搭載したプログラムをCPU1201が実行することで実現される。そのプログラムは、例えば外部記憶装置1205や可搬記録媒体1209に記録して配布してもよく、或いは通信インタフェース1207によりネットワークから取得できるようにしてもよい。
図13は、図5のIoTゲートウェイ/クライアント端末503が図12のハードウェア構成例を有するコンピュータとして実装される場合において実行されるファイル発行処理例、及びそれに対応する検査ノードの処理例を示すフローチャートである。この処理は、前述した図6のシーケンス例で示されるIoTゲートウェイ/クライアント端末503のファイル発行処理を、図12のハードウェア構成例のコンピュータで実行する場合の処理を示した図である。この処理は、図12のCPU1201が、外部記憶装置1205等からメモリ1202にロードされたファイル発行処理プログラムを実行する処理である。
図13において、ステップS1301及びS1302は、図5のIoTゲートウェイ/クライアント端末503が実装するトランザクション発行アプリ510が実行する処理である。ステップS1305、S1308からS1310、及びS1313及びS1314の処理は、図5のIoTゲートウェイ/クライアント端末503が実装するブロックチェーンアプリ511が実行する処理である。また、ステップS1311とS1312、及びS1319とS1320の処理は、図5のIoTゲートウェイ/クライアント端末503が実装する分散ファイル共有アプリ512が実行する処理である。更に、ステップS1303とS1304、S1306とS1307、及びS1315とS1316の処理は、検査ノードの特には図示しないCPUが実行する処理である。
CPU1201はまず、自装置に対するユーザ認証処理を実行する(ステップS1301)。この処理は、ブロックチェーンの既存の認証処理であり、図6のS601から S603のシーケンスを実行する処理である。
次に、CPU1201は、イベントトランザクション発行処理を実行する(ステップS1302)。この処理は、図6のS604のシーケンスを実行する処理である。
ステップS1302の処理の結果、CPU1201から通信インタフェース1207を介してLAN上の認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図6のS605)が送信される。この結果、検査ノードのCPUは、イベントトランザクションを取得し(ステップS1303)、そのイベントトランザクションを含むブロックを確定させ、そのブロックの確定通知を、IoTゲートウェイ/クライアント端末503に返す(ステップS1304)。この処理は、図6のS606のシーケンスを実行する処理である。
IoTゲートウェイ/クライアント端末503のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、ファイル生成トランザクション発行処理を実行する(ステップS1305)。この処理は、図6のS607のシーケンスを実行する処理である。
ステップS1305の処理の結果、CPU1201から通信インタフェース1207を介して認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図6のS608)が送信される。この結果、検査ノードのCPUは、ファイル生成トランザクションを取得し(ステップS1306)、そのファイル生成トランザクションを含むブロックを確定させ、そのブロックの確定通知を、IoTゲートウェイ/クライアント端末503に返す(ステップS1307)。この処理は、図6のS609のシーケンスを実行する処理である。
IoTゲートウェイ/クライアント端末503のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、その確定通知されたブロックに対応するファイル生成トランザクションに対応して実行される処理ロジックの実行を開始する(ステップS1308)。
この処理ロジックにおいて、CPU1201はまず、ファイル生成処理を実行する(ステップS1309)。この処理は、図6のS610のシーケンスを実行する処理である。
上記処理ロジックにおいて、CPU1201は次に、ファイル登録処理を実行する(ステップS1310)。この処理は、図6のS611のシーケンスを実行する処理である。
この結果、CPU1201は、通信インタフェース1207を介してLAN上の分散ファイル共有ネットワーク522に対して、イベント情報ファイルの登録処理を実行する(ステップS1311)。この処理は、図6のS611のシーケンスを実行する処理である。
ステップS1311のファイル登録処理の結果、CPU1201は、イベント情報ファイルのハッシュ値をアドレス情報として発行する(ステップS1312)。この結果、CPU1201は、発行されたアドレス情報を取得してメモリ1202に記憶する等の処理を実行する(ステップS1313)。ステップS1312とS1313の処理は、図6のS612のシーケンスを実行する処理である。
続いて、CPU1201は、サービス登録トランザクション発行処理を実行する(ステップS1314)。この処理は、図6のS613のシーケンスを実行する処理である。
ステップS1314の処理の結果、CPU1201から通信インタフェース1207を介して認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図6のS614)が送信される。この結果、検査ノードのCPUは、サービス登録トランザクションを取得し(ステップS1315)、そのサービス登録トランザクションを含むブロックを確定させ、そのサービス登録トランザクションのブロックの確定通知を、IoTゲートウェイ/クライアント端末503に返す(ステップS1316)。この処理は、図6のS615のシーケンスを実行する処理である。
IoTゲートウェイ/クライアント端末503のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、その確定通知されたブロックに対応するサービス登録トランザクションに対応して実行される処理ロジックの実行を開始する(ステップS1317)。
この処理ロジックにおいて、CPU1201はまず、ブロックチェーンアプリ511上で、ポータルファイルの取得処理を実行する(ステップS1318)。この結果、CPU1201は、分散ファイル共有アプリ512を実行することにより、分散ファイル共有ネットワーク522上のポータルファイルにアクセスし、それを取得する(ステップS1319)。ステップS1318及びS1319の処理は、図6のS616のシーケンスを実行する処理である。
上記処理ロジックにおいて、CPU1201は次に、ポータルファイルの更新処理を実行する(ステップS1320)。ここでは、CPU1201は、ブロックチェーンアプリ511を実行する。これにより、CPU1201は、ステップS1313で取得したイベント情報ファイルに対応するハッシュ値(アドレス情報)に、イベント情報ファイルに対応するサービス内容を含む情報を紐付けた情報を、上記取得したポータルファイルに追加して更新する。その後、CPU1201は、ブロックチェーンアプリ511から分散ファイル共有アプリ512に実行を移す。CPU1201は、ステップS1320で更新したポータルファイルを、分散ファイル共有ネットワーク522に再登録する(ステップS1321)。ステップS1320とS1321の処理は、図6のS617のシーケンスを実行する処理である。
以上の図13のフローチャートで例示されるファイル発行処理を図12のハードウェア構成例のコンピュータが実行することにより、IoTゲートウェイ/クライアント端末503による図6に例示されるシーケンスのファイル発行処理が実現される。
図14は、図5のIoTゲートウェイ/クライアント端末503が図12のハードウェア構成例を有するコンピュータとして実装される場合において実行される他のファイル発行処理例、及びそれに対応する検査ノードの処理例を示すフローチャートである。この処理は、前述した図9のシーケンス例で示されるIoTゲートウェイ/クライアント端末503の他のファイル発行処理を、図12のハードウェア構成例のコンピュータで実行する場合の処理を示した図である。この処理は、図12のCPU1201が、外部記憶装置1205等からメモリ1202にロードされた他のWEB発行処理プログラムを実行する処理である。
前述した図13では、図6で説明したシーケンス例に対応して、イベントトランザクションの発行(S1302)に加えて、2つのトランザクションが発行されていた。そのうちの1つは、ファイル生成処理(S1309)及びファイル登録処理(S1310、S1311)を実行するための、ファイル生成トランザクション発行(S1305)である。他の1つは、サービス登録処理(S1318〜S1321)を実行するための、サービス登録トランザクション発行(S1314)である。これに対して、図14では、図9で前述したシーケンス例に対応して、上記一連の処理(S1309〜S1311、S1318〜S1321)が、1つのトランザクションのブロックの確定を契機として、連続して実行される点が異なる。
具体的には、図14において、図13と同じ参照番号が付されたステップは、図13の場合と同じ処理である。図14のステップが図13のステップと異なる部分についてのみ、以下に説明する。
CPU1201は、ブロックチェーンアプリ511の実行において、図13の場合と同様にして、イベントトランザクションに対応するブロックの確定通知(S1304)を受信すると、次の処理を実行する。CPU1201は、統合トランザクションの発行処理を実行する(ステップS1401)。この処理は、図9のS901のシーケンスを実行する処理である。
ステップS1401の処理の結果、CPU1201から通信インタフェース1207を介して認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図9のS902)が送信される。この結果、検査ノードのCPUは、統合トランザクションを取得し(ステップS1402)、その統合トランザクションを含むブロックを確定させ、その統合トランザクションに対応するブロックの確定通知を、IoTゲートウェイ/クライアント端末503に返す(ステップS1403)。この処理は、図9のS903のシーケンスを実行する処理である。
IoTゲートウェイ/クライアント端末503のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、その確定通知されたブロックに対応する統合トランザクションに対応して実行される処理ロジックの実行を開始する(ステップS1401)。
この処理ロジックにおいて、CPU1201は、図13の場合と同様の、ステップS1309からS1313の一連の処理を実行し、更に、ステップS1318からS1321の一連の処理を連続して実行する。これらの処理は、図9のS610からS612の一連のシーケンスを実行し、更にS616とS617の一連のシーケンスを連続して実行する処理である。
以上の図14のフローチャートで例示される他のファイル発行処理を図12のハードウェア構成例のコンピュータが実行することにより、IoTゲートウェイ/クライアント端末503による図9に例示されるシーケンスの他のWEB発行処理が実現される。
図15は、図5のクライアント端末504が図12のハードウェア構成例を有するコンピュータとして実装される場合において実行されるファイルアクセス処理例、及びそれに対応する検査ノードの処理例を示すフローチャートである。この処理は、前述した図10のシーケンス例で示されるクライアント端末504のファイルアクセス処理を、図12のハードウェア構成例のコンピュータで実行する場合の処理を示した図である。この処理は、図12のCPU1201が、外部記憶装置1205等からメモリ1202にロードされたファイルアクセス処理プログラムを実行する処理である。
図15において、ステップS1501とS1502、及びS1508は、図5のクライアント端末504が実装するトランザクション発行アプリ510が実行する処理である。ステップS1505とS1506、S1511とS1512は、図5のクライアント端末504が実装するブロックチェーンアプリ511が実行する処理である。また、ステップS1507とS1513の処理は、図5のクライアント端末504が実装する分散ファイル共有アプリ512が実行する処理である。更に、ステップS1503とS1504、及びS1509とS1510の処理は、検査ノードの特には図示しないCPUが実行する処理である。
CPU1201はまず、クライアント端末504に対するユーザ認証処理を実行する(ステップS1501)。この処理は、ブロックチェーンの既存の認証処理であり、図10のS1001から S1003のシーケンスを実行する処理である。
次に、CPU1201は、第1のファイル閲覧トランザクション発行処理を実行する(ステップS1502)。この処理は、図10のS1004のシーケンスを実行する処理である。
ステップS1502の処理の結果、CPU1201から通信インタフェース1207を介してLAN上の認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図10のS1005)が送信される。この結果、検査ノードのCPUは、第1のファイル閲覧トランザクションを取得し(ステップS1503)、その第1のファイル閲覧トランザクションを含むブロックを確定させ、そのブロックの確定通知を、クライアント端末504に返す(ステップS1504)。この処理は、図10のS1006のシーケンスを実行する処理である。
クライアント端末504のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、その確定通知されたブロックに対応する第1のファイル閲覧トランザクションに対して実行される処理ロジックの実行を開始する(ステップS1505)。
この処理ロジックで、CPU1201はまず、クライアント端末504内でブロックチェーンアプリ511から分散ファイル共有アプリ512に、ポータルファイルのハッシュ値(アドレス情報)を用いたポータルファイル要求処理を実行する(ステップS1506)。ポータルファイルのハッシュ値(アドレス情報)は、第1のファイル閲覧トランザクションで指定されているものが使用される。この処理は、図10のS1007のシーケンスを実行する処理である。
この結果、CPU1201は、分散ファイル共有アプリ512上で、上記ハッシュ値によって分散ファイル共有ネットワーク522にアクセスし、ポータルファイルを取得し、ブロックチェーンアプリ511を介してトランザクション発行アプリ510に送信する。この結果、CPU1201は、クライアント端末504の特には図示しないディスプレイ等に、図8に例示した、各サービス名、イベント情報ファイル名、及びイベント情報ファイルのハッシュ値(アドレス情報)の一覧を表示し、ユーザが閲覧可能となる。この処理は、図10のS1008のシーケンスを実行する処理である。
続いて、クライアント端末504のユーザが、ディスプレイ上の上記一覧を見ながら、何れかのサービス名に対応するイベント情報ファイルのハッシュ値を指定する。この結果、CPU1201は、トランザクション発行アプリ510上で、自装置内で発生したファイル閲覧要求で指定されているイベント情報ファイルのハッシュ値(アドレス情報)を含む第2のファイル閲覧トランザクション発行処理を実行する(S1508)。この処理は、図10のS1009のシーケンスを実行する処理である。
ステップS1508の処理の結果、CPU1201から通信インタフェース1207を介してLAN上の認証/証跡管理プロキシネットワーク521(図5参照)上の検査ノードに、トランザクション通知(図10のS1010)が送信される。この結果、検査ノードのCPUは、第2のファイル閲覧トランザクションを取得し(ステップS1509)、その第2のファイル閲覧トランザクションを含むブロックを確定させ、そのブロックの確定通知を、クライアント端末504に返す(ステップS1510)。この処理は、図10のS1011のシーケンスを実行する処理である。
クライアント端末504のCPU1201は、通信インタフェース1207を介して上記確定通知を受信すると、その確定通知されたブロックに対応する第2のファイル閲覧トランザクションに対応して実行される処理ロジックの実行を開始する(ステップS1511)。
この処理ロジックで、CPU1201はまず、クライアント端末504内でブロックチェーンアプリ511から分散ファイル共有アプリ512に、イベント情報ファイルのハッシュ値(アドレス情報)を用いたファイル要求処理を実行する(ステップS1512)。イベント情報ファイルファイルのハッシュ値(アドレス情報)は、第2のファイル閲覧トランザクションで指定されているものが使用される。この処理は、図10のS1012のシーケンスを実行する処理である。
この結果、CPU1201は、分散ファイル共有アプリ512上で、上記ハッシュ値によって分散ファイル共有ネットワーク522にアクセスし、イベント情報ファイルを取得し、ブロックチェーンアプリ511を介してトランザクション発行アプリ510に送信する。この結果、クライアント端末504の特には図示しないディスプレイ等に、イベント情報ファイルの内容が表示され、ユーザが閲覧可能となる。この処理は、図10のS1013のシーケンスを実行する処理である。
以上説明したように、本実施形態では、端末で発生したイベントに関する情報が、ブロックチェーンを用いて分散ファイル共有ネットワークに含まれるノード装置間で共有される。そして、そのイベントに関する情報を含むファイルが生成され、このファイルを分散ファイル共有ネットワークのいずれかのノード装置で保持する。これにより、分散ファイル共有システムにおいて、閉域ネットワーク空間である高セキュアなファイル共有空間を構築することが可能となる。本実施形態では、IoTゲートウェイ/クライアント端末503でセンサ検知や端末入力等に基づくイベント情報のファイル登録要求が発生したり、クライアント端末504からファイル閲覧要求が発生したりした場合に、次のような制御が実行される。この場合、IoTゲートウェイ/クライアント端末503やクライアント端末504でブロックチェーンアプリ511が実行され、このブロックチェーンアプリケーション511が分散ファイル共有アプリ512を実行(キック)する。これにより、分散ファイル共有アプリ512が、分散ファイル共有ネットワーク522に対するイベント情報ファイルの登録やアクセスを実行する。この場合、IoTゲートウェイ/クライアント端末503やクライアント端末504のブロックチェーンアプリ511は、ユーザ/グループ認証や、コンテンツの一意性の保証、サービスリポジトリ、ファイルのデータ/アクセスログ管理、ファイルのアクセス制御を実行する。これにより、分散ファイル共有ネットワーク522に対するイベント情報ファイルの登録/アクセスや、ポータルファイルのアクセスが、高セキュアに実行される。
具体的には、本実施形態では、ブロックチェーンが備える認証機能により、分散ファイル共有ネットワークにおけるユーザやグループを単位とする認証機能を提供することが可能となる。
また、本実施形態では、ファイル生成処理において、イベントトランザクションのハッシュ値が、コンテンツの一意性を保証する識別情報としてイベント情報ファイルに埋め込まれる。これにより、本実施形態によれば、分散ファイル共有ネットワーク上のイベント情報ファイルのコンテンツの一意性を保証する機能を提供することが可能となる。
更に、本実施形態では、分散ファイル共有ネットワークに登録されたイベント情報ファイルのアドレス情報にサービス内容を含む情報を紐付けた情報が、分散ファイル共有ネットワーク上のポータルファイルに登録される。これにより、本実施形態によれば、サービスと分散ファイル共有ネットワーク上のイベント情報ファイルのアドレスとの関係を一元管理するリポジトリ機能を提供することが可能となる。
加えて、本実施形態では、イベント情報ファイルの登録やアクセスの過程がブロックチェーンに記録される。これにより、本実施形態によれば、分散ファイル共有ネットワークにおけるファイル登録時のデータ履歴(ログ)の記録やファイルアクセス時のアクセス履歴(ログ)の記録等の証跡管理機能を提供することが可能となる。
以上説明したように、本実施形態では、ブロックチェーンでつくる堅牢なネットワーク空間に、例えばIPFSによる分散WEBシステム等の分散ファイル共有ネットワークを統合することが可能となる。これにより、例えば膨大なセンサ情報出力やクライアント端末入力のファイルサービス化を行うことのできるIoTゲートウェイ/クライアント端末を簡単かつセキュアに実現することが可能となる。
本実施形態が適用されるユースケースとしては、物流における「モノ」の状態をセンシングし、異常発生等の「コト」の情報を記録して公開するようなシステムが考えられる。
より具体的には、本実施形態によれば、IoTゲートウェイ/クライアント端末間のピアツーピア通信のみで、センサ情報出力やクライアント端末入力のファイルサービス化を創る自己組織型ネットワークが実現される。
また、本実施形態によれば、ユーザ認証、データ著作権を含むコンテンツの一意性の保証、アクセス証跡等のセキュリティ機能をブロックチェーン技術を応用・拡張して実現でき、堅牢な閉空間を創る分散型セキュリティプラットホームが実現される。
更に、本実施形態による通信システムを、特定の業種/組織のスモールスタートから、複数の業種/組織を繋ぐサービス共創の場に発展させることが可能となり、スモールスタートから拡げるIoT情報の共創空間が実現される。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
分散ファイル共有ネットワークに含まれるノード装置が実行する通信方法であって、
端末で発生したイベントに関する情報をブロックチェーンを用いて前記分散ファイル共有ネットワークに含まれるノード装置間で共有し、
前記イベントに関する情報を含むファイルを生成し、
前記生成されたファイルを前記分散ファイル共有ネットワークに含まれるいずれかのノード装置で保持する、
ことを特徴とする通信方法。
(付記2)
前記ノード装置が、前記ファイルの保持を行った後に、前記分散ファイル共有ネットワークに保持された前記ファイルのアドレス情報に前記ファイルに対応するサービス内容を含む情報を紐付けた情報をポータルファイルに追加し、前記ポータルファイルを前記分散ファイル共有ネットワークに保持する、
ことを特徴とする付記1に記載の通信方法。
(付記3)
前記ノード装置が、
前記イベントに関する情報を含むトランザクションに対応するブロックの確定後に前記ファイルを生成するトランザクションを発行することにより、前記確定したトランザクションのハッシュ値を、コンテンツの一意性を保証する識別情報として前記ファイルに埋め込む、
ことを特徴とする付記1又は2に記載の通信方法。
(付記4)
前記ノード装置が、前記ファイルを前記分散ファイル共有ネットワークに保持した時のデータ履歴を、前記ブロックチェーンによって管理する、
ことを特徴とする付記1乃至3の何れかに記載の通信方法。
(付記5)
少なくとも1つの前記ノード装置が、
前記ポータルファイルのアドレス情報を指定したブロックチェーンのトランザクションを第1のファイル閲覧トランザクションとして認証及び発行し、
前記第1のファイル閲覧トランザクションの発行を契機に、前記ポータルファイルのアドレス情報に基づいて前記分散ファイル共有ネットワークから前記ポータルファイルを取得し、
前記取得したポータルファイル上で選択された前記サービス内容に対応する前記イベントに関する情報のファイルのアドレス情報を指定したブロックチェーンのトランザクションを第2のファイル閲覧トランザクションとして発行し、
前記第2のファイル閲覧トランザクションの発行を契機に、前記イベントに関する情報のファイルのアドレス情報に基づいて前記分散ファイル共有ネットワークから前記イベントに関する情報のファイルを取得する、
ことを特徴とする付記2に記載の通信方法。
(付記6)
前記ノード装置が、
前記イベント情報に関するファイルのアドレス情報を指定したブロックチェーンのトランザクションをファイル閲覧トランザクションとして発行し、
前記ファイル閲覧トランザクションの発行を契機に、前記イベントに関する情報のファイルのアドレス情報に基づいて前記分散ファイル共有ネットワークから前記イベントに関する情報のファイルを取得する、
ことを特徴とする付記1に記載の通信方法。
(付記7)
前記ノード装置が、前記分散ファイル共有ネットワークへのアクセス時のアクセス履歴を、前記ブロックチェーンによって管理する、
ことを特徴とする付記5又は6に記載の通信方法。
(付記8)
前記ノード装置が、
前記ノード装置を操作するユーザ毎にユーザ公開鍵とユーザ秘密鍵の組を含むユーザアカウント情報を設定し、
複数のユーザが属するグループ毎に前記グループに属する前記複数のユーザ間で共有されるグループ公開鍵とグループ秘密鍵の組を含むグループアカウント情報を設定し、
前記ファイルを生成するとき、前記ブロックチェーン中のトランザクションに設定されている宛先のユーザ又はグループに対応するユーザ公開鍵又はグループ公開鍵で、前記ファイルを暗号化する、
ことを特徴とする付記1乃至7の何れかに記載の通信方法。
(付記9)
前記ノード装置が、前記ユーザ公開鍵及び前記ユーザ秘密鍵の組の各値、又は前記グループ公開鍵及び前記グループ秘密鍵の組の各値に、利用期限を設けて定期的に更新する、
ことを特徴とする付記8に記載の通信方法。
(付記10)
前記イベントに関する情報を前記ブロックチェーンのトランザクションとして発行し、前記トランザクションの発行を契機として前記イベントに関する情報を含むファイルを生成する、
ことを特徴とする付記1乃至9の何れかに記載の通信方法。
(付記11)
前記ファイルの生成、前記ファイルの保持、又は前記ポータルファイルの保持の少なくとも1つは、異なる前記ノード装置によって実行される、
ことを特徴とする付記1乃至10の何れかに記載の通信方法。
(付記12)
前記分散ファイル共有ネットワークは、分散ファイルシステムとしてインタープラネタリーファイルシステムを構成し、前記アドレス情報を、前記保持が行われたファイルのハッシュ値を内容アドレスとして含むハイパーリンクとして指定する、
ことを特徴とする付記1乃至11の何れかに記載の通信方法。
(付記13)
分散ファイル共有ネットワークに含まれる通信装置であって、
端末で発生したイベントに関する情報を、ブロックチェーン用いて前記分散ファイル共有ネットワークに含まれるノード装置間で共有する手段と、
前記イベントに関する情報を含むファイルを生成する手段と、
前記生成されたファイルを前記分散ファイル共有ネットワークに含まれるいずれかのノード装置で保持する手段と、
を備えることを特徴とする通信装置。
(付記14)
分散ファイル共有ネットワークに含まれるノード装置のコンピュータに、
端末で発生したイベントに関する情報を、ブロックチェーンを用いて前記分散ファイル共有ネットワークに含まれるノード装置間で共有し、
前記イベントに関する情報を含むファイルを生成し、
前記生成されたファイルを前記分散ファイル共有ネットワークに含まれるいずれかのノード装置で保持する、
ことを実行させるためのプログラム。