(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024162800
(43)【公開日】2024-11-21
(54)【発明の名称】情報処理装置、情報処理方法、および情報処理プログラム
(51)【国際特許分類】
G06F 21/62 20130101AFI20241114BHJP
G06F 21/64 20130101ALI20241114BHJP
【FI】
G06F21/62 309
G06F21/64
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023078706
(22)【出願日】2023-05-11
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】米倉 裕貴
(72)【発明者】
【氏名】森永 正信
(57)【要約】
【課題】システムに対する攻撃を防止し易くすること。
【解決手段】作成装置101は、Tx作成依頼を受信すると、トークンを発行する対象とするsigner1のアカウントを特定する。作成装置101は、特定したsigner1のアカウントに対するTxを生成する。作成装置101は、特定したsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。作成装置101は、有効なトークンが存在すると判定した場合、生成したTxを、連携エンジン241に送信する。作成装置101は、有効なトークンが存在しないと判定した場合、生成したTxに、署名を付与する。作成装置101は、特定したsigner1のアカウントに対応する有効な新規のトークンを発行するよう、連携先BC231を制御する。作成装置101は、生成したTxを、連携エンジン241に送信する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
制御部を有することを特徴とする情報処理装置。
【請求項2】
前記制御部は、
前記既存のトークンが存在しないと判定した場合、前記第1のトランザクションを生成し、署名が正当である場合に前記新規のトークンを発行するよう前記対象のブロックチェーンを制御する検証部を介して、前記新規のトークンを記憶するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記管理情報は、前記それぞれのアカウントを識別する識別子と、当該アカウントに関する有効なトークンを識別する識別子とを対応付けた対応情報であって、
前記制御部は、
前記対象のブロックチェーンから受信した前記新規のトークンを識別する識別子に基づいて、前記管理情報を更新する、ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記制御部は、
前記対象のブロックチェーンにおける前記対象のアカウントに関する有効となる条件を設定した新規のトークンを発行するよう前記対象のブロックチェーンを制御する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項6】
ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【0002】
従来、複数のブロックチェーンを連携させるシステムがある。例えば、連携用ブロックチェーンを利用して、複数の連携先ブロックチェーンを連携させる制御装置により、上述したシステムが実現される。ここで、システムの障害発生に対策するため、制御装置が複数用意され、冗長化されることがある。
【0003】
先行技術としては、例えば、受領アドレスを利用して生成したデジタル署名を送信するものがある。また、例えば、ログイントークンを生成する技術がある。また、例えば、公開鍵を利用して、照会要求に対応するデジタル署名を検証する技術がある。また、例えば、ブロックチェーンにユーザ認証書が登録されると、検証確認値を含む署名値要請情報をユーザ端末に送信する技術がある。また、例えば、トランザクション値に署名を付与して送信する技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2022-166123号公報
【特許文献2】米国特許出願公開第2020-0127832号明細書
【特許文献3】米国特許出願公開第2020-0019980号明細書
【特許文献4】特開2019-185774号公報
【特許文献5】特開2022-003547号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、複数の制御装置のいずれかの制御装置によるシステムに対する攻撃を防止することが難しい。例えば、いずれかの制御装置が、連携先ブロックチェーンに送信するトランザクションを改ざんする場合が考えられる。これに対し、改ざんを防止しようとすると、連携先ブロックチェーンにトランザクションを送信する所要時間の増大化を招くという問題がある。
【0006】
1つの側面では、本発明は、システムに対する攻撃を防止し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する情報処理装置、情報処理方法、および情報処理プログラムが提案される。
【発明の効果】
【0008】
一態様によれば、システムに対する攻撃を防止し易くすることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【
図2】
図2は、連携処理システム200の一例を示す説明図である。
【
図3】
図3は、連携処理システム200の適用例を示す説明図である。
【
図4】
図4は、情報処理装置100のハードウェア構成例を示すブロック図である。
【
図5】
図5は、情報処理装置100の機能的構成例を示すブロック図である。
【
図6】
図6は、情報処理装置100の第1の動作例を示す説明図である。
【
図7】
図7は、情報処理装置100の第2の動作例を示す説明図(その1)である。
【
図8】
図8は、情報処理装置100の第2の動作例を示す説明図(その2)である。
【
図9】
図9は、情報処理装置100の具体例を示す説明図(その1)である。
【
図10】
図10は、情報処理装置100の具体例を示す説明図(その2)である。
【
図11】
図11は、情報処理装置100の実施例を示す説明図(その1)である。
【
図12】
図12は、情報処理装置100の実施例を示す説明図(その2)である。
【
図13】
図13は、全体処理手順の一例を示すフローチャート(その1)である。
【
図14】
図14は、全体処理手順の一例を示すフローチャート(その2)である。
【
図15】
図15は、初回作成処理手順の一例を示すシーケンス図(その1)である。
【
図16】
図16は、初回作成処理手順の一例を示すシーケンス図(その2)である。
【
図17】
図17は、初回作成処理手順の一例を示すシーケンス図(その3)である。
【
図18】
図18は、再作成処理手順の一例を示すシーケンス図(その1)である。
【
図19】
図19は、再作成処理手順の一例を示すシーケンス図(その2)である。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理装置、情報処理方法、および情報処理プログラムの実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、複数の連携先ブロックチェーンを連携させる連携処理システムに対する攻撃を防止し易くすることにより、上記連携処理システムの信頼性を向上し易くするためのコンピュータである。情報処理装置100は、例えば、サーバまたはPC(Personal Computer)などである。
【0012】
ここで、連携先ブロックチェーンは、分散台帳を管理する管理システムである。連携先ブロックチェーンは、複数のノードを含む。連携先ブロックチェーンの各ノードが、同一の分散台帳を記憶および監視することにより、分散台帳が管理される。BCは、トランザクションが登録されたブロックを連結することにより、トランザクションを管理するリストである。
【0013】
連携とは、ルールに従って、複数の連携先ブロックチェーンのそれぞれの連携先ブロックチェーンに、トランザクションを実行させることである。トランザクションは、取引に関する情報である。トランザクションの実行とは、連携先ブロックチェーン内でトランザクションを検証し、共有することである。
【0014】
上記連携処理システムは、例えば、連携先ブロックチェーン間を連携する連携エンジンと呼ばれる制御装置と、連携のルールを規定するスマートコントラクトを配備した連携用ブロックチェーンとを含む。連携エンジンは、スマートコントラクトを利用して、連携のルールに従って、トランザクションを生成する都度、いずれかの連携先ブロックチェーンに、当該トランザクションを実行させることにより、連携先ブロックチェーン間を連携する。上記連携処理システムの具体例については、例えば、
図2および
図3を用いて後述する。
【0015】
ここで、上記連携処理システムの障害発生に対策するため、連携エンジンが複数用意され、冗長化されることがある。例えば、連携先ブロックチェーンのノードごとに、異なる連携エンジンが用意され、冗長化されることがある。複数の連携エンジンは、それぞれ管理主体が異なる連携エンジンである場合がある。
【0016】
この際、複数の連携エンジンのいずれかの連携エンジンが、連携処理システムに対する攻撃を実施するおそれがある。例えば、いずれかの連携エンジンが、連携先ブロックチェーンに送信するトランザクションを改ざんする場合が考えられる。例えば、いずれかの連携エンジンが、連携先ブロックチェーンに、連携のルールに依らないトランザクションを実行させる場合が考えられる。例えば、いずれかの連携エンジンが、他の連携エンジンが本来担当する処理を、不正に実施してしまう場合が考えられる。
【0017】
しかしながら、従来では、いずれかの連携エンジンによる連携処理システムに対する攻撃を防止することが難しい。例えば、連携エンジンの外部に、トランザクションに対して署名を付与する署名装置を用意することにより、攻撃を防止する手法が考えられる。この手法では、具体的には、連携エンジンは、トランザクションを、署名装置に一旦送信し、署名が付与されたトランザクションを取得し、連携先ブロックチェーンに送信する。この手法では、具体的には、連携先ブロックチェーンは、トランザクションに付与された署名の正当性を検証してから、トランザクションを実行する。
【0018】
この手法では、連携エンジンが、トランザクションを生成してから、連携先ブロックチェーンにトランザクションを送信するまでの所要時間の増大化を招くという問題がある。また、連携エンジンにかかる処理負担の増大化を招くという問題がある。
【0019】
そこで、本実施の形態では、複数のブロックチェーンを連携させる連携処理システムに対する攻撃を防止し易くすることができる情報処理方法について説明する。以下の説明では、ブロックチェーンを「BC(Block Chain)」と表記する場合がある。以下の説明では、トランザクションを「Tx(Transaction)」と表記する場合がある。
【0020】
図1において、連携部110が存在する。連携部110は、例えば、連携エンジンに対応する。また、対象のBC120が存在する。対象のBC120は、分散台帳を利用して、対象のアカウントに対するTxを管理する。連携部110は、対象のBC120における対象のアカウントに対するTxを生成するよう要求する処理依頼を、情報処理装置100に送信する。処理依頼は、例えば、対象のBC120を識別する識別子を含む。処理依頼は、例えば、対象のアカウントを識別する識別子を含む。
【0021】
情報処理装置100は、管理情報130を記憶する。管理情報130は、対象のBC120における1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す。1以上のアカウントは、例えば、対象のアカウントを含む。管理情報130は、例えば、それぞれのアカウントを識別する識別子と、当該アカウントに関する有効なトークンを識別する識別子とを対応付けた対応情報を含む。
【0022】
(1-1)情報処理装置100は、連携部110から、処理依頼を受信する。
【0023】
(1-2)情報処理装置100は、管理情報130と、受信した処理依頼とに基づいて、対象のBC120における対象のアカウントに関する有効な既存のトークンが存在するか否かを判定する。情報処理装置100は、例えば、受信した処理依頼に基づいて、対象のBC120を特定する。情報処理装置100は、例えば、受信した処理依頼に基づいて、対象のアカウントを特定する。情報処理装置100は、例えば、管理情報130に基づいて、特定した対象のBC120における、特定した対象のアカウントに関する有効な既存のトークンが存在するか否かを判定する。
【0024】
これにより、情報処理装置100は、有効な新規のトークンを発行せずとも、連携部110が、Txを、対象のBC120に送信可能な状況であるか否かを判定することができ、有効な新規のトークンを発行せずに済むか否かを判定することができる。
【0025】
(1-3)情報処理装置100は、既存のトークンが存在しないと判定した場合、対象のアカウントに関する署名を生成する。情報処理装置100は、生成した署名を付与した、対象のBC120における対象のアカウントに対する第1のTxを生成する。情報処理装置100は、対象のBC120における対象のアカウントに関する有効な新規のトークンを記憶するよう、対象のBC120を制御する。情報処理装置100は、例えば、対象のBC120における対象のアカウントに関する有効な新規のトークンを発行するよう、対象のBC120を制御する。情報処理装置100は、管理情報130を更新する。情報処理装置100は、生成した第1のTxを、連携部110に返信する。
【0026】
これにより、情報処理装置100は、署名を、第1のTxに付与することにより、対象のBC120において、第1のTxの正当性を検証可能にすることができる。情報処理装置100は、連携部では署名を生成不能にしておくことができ、連携部110による攻撃を防止し易くすることができる。情報処理装置100は、対象のBC120に、トークンを残しておくことができ、以降、連携部110が、Txを対象のBC120に送信し易くすることができる。
【0027】
(1-4)情報処理装置100は、既存のトークンが存在すると判定した場合、対象のBC120における対象のアカウントに対する第2のTxを生成する。情報処理装置100は、生成した第2のTxを、連携部110に返信する。
【0028】
これにより、情報処理装置100は、対象のアカウントに関する署名を生成する処理と、有効な新規のトークンを記憶するよう対象のBC120を制御する処理とを省略することができる。このため、情報処理装置100は、連携部110による攻撃を防止する際にかかる処理負担の低減化を図ることができ、連携部110が、第2のTxを、対象のBC120に送信する所要時間の低減化を図ることができる。情報処理装置100は、連携部110が、第2のTxを、対象のBC120に送信可能にすることができる。
【0029】
(1-5)連携部110は、署名が付与された第1のTx、または、署名が付与されない第2のTxを、情報処理装置100から受信する。連携部110は、署名が付与された第1のTx、または、署名が付与されない第2のTxを、対象のBC120に送信する。これにより、連携部110は、署名が付与された第1のTx、または、署名が付与されない第2のTxを、対象のBC120に実行させることができる。
【0030】
(1-6)対象のBC120は、署名が付与された第1のTx、または、署名が付与されない第2のTxを、連携部110から受信する。対象のBC120は、署名が付与された第1のTx、または、署名が付与されない第2のTxを受信した際、対象のBC120において有効なトークンが存在するか否かを判定する。対象のBC120は、署名が付与された第1のTxを受信した際、署名の正当性を検証する。
【0031】
対象のBC120は、署名が付与された第1のTxを受信した際、署名が正当であり、かつ、対象のBC120において有効なトークンが存在する場合、第1のTxを実行する。対象のBC120は、署名が付与された第1のTxを受信した際、署名が正当でなければ、第1のTxを実行せずに破棄する。対象のBC120は、署名が付与された第1のTxを受信した際、対象のBC120において有効なトークンが存在しない場合、第1のTxを実行せずに破棄する。
【0032】
対象のBC120は、署名が付与されない第2のTxを受信した際、対象のBC120において有効なトークンが存在する場合、第2のTxを実行する。対象のBC120は、署名が付与されない第2のTxを受信した際、対象のBC120において有効なトークンが存在しない場合、第2のTxを実行せずに破棄する。これにより、対象のBC120は、Txを適切に実行することができる。
【0033】
ここでは、連携部110が、署名が付与された第1のTxを、対象のBC120に送信する場合について説明したが、これに限らない。例えば、連携部110は、署名が付与されない状態の第1のTxを、対象のBC120に送信する場合があってもよい。この場合、対象のBC120は、署名が付与されない第1のTxを受信した際、対象のBC120において有効なトークンが存在する場合、第1のTxを実行する。対象のBC120は、署名が付与されない第1のTxを受信した際、対象のBC120において有効なトークンが存在しない場合、第1のTxを実行せずに破棄する。
【0034】
ここでは、情報処理装置100が、管理情報130を記憶する場合について説明したが、これに限らない。例えば、情報処理装置100が、管理情報130を記憶する他のコンピュータと通信する場合があってもよい。この場合、例えば、情報処理装置100は、管理情報130を記憶する他のコンピュータと通信することにより、対象のBC120における対象のアカウントに関する有効な既存のトークンが存在するか否かを判定する。
【0035】
ここでは、情報処理装置100が、対象のアカウントに関する有効な新規のトークンを発行するよう、対象のBC120を制御する場合について説明したが、これに限らない。例えば、情報処理装置100が、対象のアカウントに関する有効な新規のトークンを発行する場合があってもよい。この場合、例えば、情報処理装置100が、対象のアカウントに関する有効な新規のトークンを、対象のBC120に送信することにより、対象のBC120における、対象のアカウントに関する有効な新規のトークンを記憶するよう、対象のBC120を制御する。
【0036】
(連携処理システム200の一例)
次に、
図2を用いて、
図1に示した情報処理装置100を適用した、連携処理システム200の一例について説明する。
【0037】
図2は、連携処理システム200の一例を示す説明図である。
図2において、連携処理システム200は、1以上の情報処理装置100と、1以上のクライアント装置210と、1以上の連携制御装置240と、1以上の連携用BC220と、複数の連携先BC230とを含む。連携用BC220は、1以上の連携用BCノード250を含む。連携先BC230は、1以上の連携先BCノード260を含む。
【0038】
連携処理システム200において、情報処理装置100間は、有線または無線のネットワーク201を介して接続される。ネットワーク201は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。また、連携処理システム200において、情報処理装置100と連携制御装置240とは、有線または無線のネットワーク201を介して接続される。
【0039】
また、連携処理システム200において、情報処理装置100と連携用BC220とは、有線または無線のネットワーク201を介して接続される。また、連携処理システム200において、情報処理装置100と連携先BC230とは、有線または無線のネットワーク201を介して接続される。また、連携処理システム200において、情報処理装置100とクライアント装置210とは、有線または無線のネットワーク201を介して接続される。
【0040】
また、連携処理システム200において、連携制御装置240と連携用BC220とは、有線または無線のネットワーク201を介して接続される。また、連携処理システム200において、連携制御装置240と連携先BC230とは、有線または無線のネットワーク201を介して接続される。
【0041】
クライアント装置210は、複数の連携先BC230を連携する一連の処理を開始することを要求する連携実行依頼を、連携制御装置240に送信するコンピュータである。クライアント装置210は、例えば、利用者の操作入力に基づき、連携実行依頼を生成し、連携制御装置240に送信する。連携実行依頼は、例えば、連携実行依頼を識別する連携実行IDを含む。連携実行依頼は、例えば、連携に関する一連の処理の内容を規定するパラメータを含む。クライアント装置210は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0042】
連携制御装置240は、複数の連携先BC230を連携するためのコンピュータである。連携制御装置240は、連携実行依頼を、クライアント装置210から受信する。連携制御装置240は、連携実行依頼に基づいて、複数の連携先BC230を連携する一連の処理を開始することを要求する連携開始Txを、連携用BC220に含まれる連携用BCノード250に送信する。
【0043】
連携制御装置240は、一連の処理のうち、最初の処理を実行することを要求する処理依頼を、連携用BCノード250から受信する。処理依頼は、例えば、最初の処理にかかる対象の連携先BC230と、対象の連携先BC230における最初の処理にかかる対象のアカウントとを示す。
【0044】
連携制御装置240は、対象の連携先BC230を利用して、最初の処理を実行する。連携制御装置240は、例えば、最初の処理にかかるTxを、対象の連携先BC230に記録させることにより、最初の処理を完了する。連携制御装置240は、具体的には、最初の処理にかかるTxを作成することを要求するTx作成依頼を、情報処理装置100に送信する。Tx作成依頼は、例えば、最初の処理にかかる対象の連携先BC230と、対象の連携先BC230における最初の処理にかかる対象のアカウントとを示す。
【0045】
連携制御装置240は、具体的には、最初の処理にかかるTxを、情報処理装置100から受信する。連携制御装置240は、具体的には、受信したTxを、対象の連携先BCノード260に送信し、対象の連携先BC230に記録させる。連携制御装置240は、最初の処理にかかるTxを、対象の連携先BC230に記録させると、最初の処理を完了したことを表す実行完了Txを生成し、連携用BCノード250に送信し、連携用BC220に記録させる。
【0046】
連携制御装置240は、一連の処理のうち、次の処理を実行することを要求する処理依頼を、連携用BCノード250から受信する。処理依頼は、例えば、次の処理にかかる対象の連携先BC230と、対象の連携先BC230における次の処理にかかる対象のアカウントとを示す。
【0047】
連携制御装置240は、対象の連携先BC230を利用して、次の処理を実行する。連携制御装置240は、例えば、次の処理にかかるTxを、対象の連携先BC230に記録させることにより、次の処理を完了する。連携制御装置240は、具体的には、次の処理にかかるTxを作成することを要求するTx作成依頼を、情報処理装置100に送信する。Tx作成依頼は、例えば、次の処理にかかる対象の連携先BC230と、対象の連携先BC230における次の処理にかかる対象のアカウントとを示す。
【0048】
連携制御装置240は、具体的には、次の処理にかかるTxを、情報処理装置100から受信する。連携制御装置240は、具体的には、受信したTxを、対象の連携先BCノード260に送信し、対象の連携先BC230に記録させる。連携制御装置240は、次の処理にかかるTxを、対象の連携先BC230に記録させると、次の処理を完了したことを表す実行完了Txを生成し、連携用BCノード250に送信し、連携用BC220に記録させる。連携制御装置240は、例えば、サーバまたはPCなどである。
【0049】
連携用BCノード250は、連携用BC220を形成し、分散台帳を管理するコンピュータである。連携用BCノード250は、例えば、スマートコントラクトと呼ばれるロジックが配備される。
【0050】
連携用BCノード250は、連携開始Txを、連携制御装置240から受信する。連携用BCノード250は、連携開始Txを受信すると、スマートコントラクトにより、一連の処理のうち、最初の処理を実行することを要求する処理依頼を、連携制御装置240に送信する。連携用BCノード250は、受信した連携開始Txを、連携用BC220に記録する。
【0051】
連携用BCノード250は、実行完了Txを、連携制御装置240から受信する。連携用BCノード250は、実行完了Txを受信すると、スマートコントラクトにより、一連の処理のうち、今回完了した処理の次の処理を実行することを要求する処理依頼を、連携制御装置240に送信する。連携用BCノード250は、受信した実行完了Txを、連携用BC220に記録する。連携用BCノード250は、例えば、サーバまたはPCなどである。
【0052】
情報処理装置100は、Txを作成する機能を有するコンピュータである。情報処理装置100は、トークンIDキャッシュを有する。トークンIDキャッシュは、連携先BC230における1以上のアカウントのそれぞれのアカウントに対応する有効なトークンを識別するトークンIDを記憶する。トークンIDキャッシュは、例えば、アカウントを識別する公開鍵IDと、当該アカウントに対応する有効なトークンを識別するトークンIDとを対応付けた対応情報を含む。
【0053】
情報処理装置100は、例えば、一連の処理のいずれかの処理にかかるTxを作成することを要求するTx作成依頼を、連携制御装置240から受信する。情報処理装置100は、受信したTx作成依頼に基づいて、いずれかの処理にかかる、対象の連携先BC230を特定し、対象の連携先BC230における対象のアカウントを特定する。情報処理装置100は、トークンIDキャッシュを参照して、対象の連携先BC230における対象のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0054】
情報処理装置100は、有効なトークンが存在しない場合、Tx作成依頼に応じて、一連の処理のいずれかの処理にかかるTxを作成する。情報処理装置100は、対象のアカウントに対応する署名を生成し、作成したTxに付与する。情報処理装置100は、有効な新規のトークンを発行するよう、連携先BCノード260を制御する。情報処理装置100は、例えば、有効な新規のトークンを発行することを要求する発行要求を、連携先BCノード260に送信する。情報処理装置100は、送信した有効な新規のトークンを識別するトークンIDを、連携先BCノード260から受信する。情報処理装置100は、受信したトークンIDに基づいて、トークンIDキャッシュの記憶内容を更新する。情報処理装置100は、対象のアカウントに対応する署名を付与したTxを、連携制御装置240に送信する。
【0055】
情報処理装置100は、有効なトークンが存在する場合、Tx作成依頼に応じて、一連の処理のいずれかの処理にかかるTxを作成し、連携制御装置240に送信する。情報処理装置100は、例えば、サーバまたはPCなどである。
【0056】
連携先BCノード260は、連携先BC230を形成し、分散台帳を管理するコンピュータである。連携先BCノード260は、例えば、スマートコントラクトと呼ばれるロジックが配備される。連携先BCノード260は、情報処理装置100の制御に従って、有効な新規のトークンを発行する。連携先BCノード260は、スマートコントラクトにより、発行した有効な新規のトークンを、連携用BC220に記録する。連携先BCノード260は、スマートコントラクトにより、有効な新規のトークンを識別するトークンIDを発行し、情報処理装置100に送信する。
【0057】
連携先BCノード260は、Txを、連携制御装置240から受信する。連携先BCノード260は、Txに署名が付与されていれば、スマートコントラクトにより、署名の正当性を検証する。連携先BCノード260は、スマートコントラクトにより、Txにかかる対象のアカウントに対応する有効なトークンが存在するか否かを判定する。連携先BCノード260は、スマートコントラクトを有さずに、Txにかかる対象のアカウントに対応する有効なトークンが存在するか否かを判定してもよい。
【0058】
連携先BCノード260は、Txに署名が付与されている場合、スマートコントラクトにより、署名が正当であり、かつ、有効なトークンが存在すれば、Txを、連携用BC220に記録する。連携先BCノード260は、Txに署名が付与されている場合、スマートコントラクトにより、署名が正当ではなく、または、有効なトークンが存在しない場合、Txを、連携先BC230に記録せずに破棄する。
【0059】
連携先BCノード260は、Txに署名が付与されていない場合、スマートコントラクトにより、有効なトークンが存在すれば、Txを、連携先BC230に記録する。連携先BCノード260は、例えば、サーバ、または、PCなどである。
【0060】
ここでは、1つの情報処理装置100が、Txを生成する機能と、トークンを発行するよう、連携先BCノード260を制御する機能とを有する場合について説明したが、これに限らない。例えば、Txを生成する機能を有する第1の情報処理装置100と、トークンを発行するよう、連携先BCノード260を制御する機能を有する第2の情報処理装置100とが存在する場合があってもよい。この場合、第1の情報処理装置100は、署名を付与したTxを、第2の情報処理装置100に送信する。第2の情報処理装置100は、署名の正当性を検証し、署名が正当である場合に、トークンを発行するよう、連携先BCノード260を制御する。
【0061】
(連携処理システム200の適用例)
次に、
図3を用いて、
図2に示した連携処理システム200の適用例について説明する。
【0062】
図3は、連携処理システム200の適用例を示す説明図である。
図3において、連携処理システム200は、例えば、証券を売買するサービスに適用することができる。
図3の例では、証券を管理する連携先BC230である証券管理BC310と、口座を管理する連携先BC230である口座管理BC320とが存在する。
【0063】
証券管理BC310は、Aliceの証券口座311と、Bobの証券口座312とを記録する。口座管理BC320は、Aliceの金融口座321と、Bobの金融口座322とを記録する。
【0064】
連携用BC220は、スマートコントラクト301と、連携のルール302とを有する。連携のルール302は、例えば、口座管理BC320において、Aの金融口座からBの金融口座にCを移転する処理1と、処理1の次に実行する、証券管理BC310において、Bの証券口座からAの証券口座にDを移転する処理2とを表す。A,B,C,Dは、パラメータである。
【0065】
連携制御装置240は、例えば、連携用BC220に対して、A=Aliceと、B=Bobと、C=10ETHと、D=Asset0とを指定する。連携制御装置240は、連携用BC220の制御に従い、Aliceの金融口座からBobの金融口座に10ETHを移転する処理1にかかるTxを、口座管理BC320に記録させる。処理1にかかるTxは、例えば、情報処理装置100によって生成される。
【0066】
連携制御装置240は、連携用BC220の制御に従い、Bobの証券口座からAliceの証券口座にAsset0を移転する処理2にかかるTxを、証券管理BC310に記録させる。処理2にかかるTxは、例えば、情報処理装置100によって生成される。
【0067】
連携制御装置240は、それぞれの連携先BC230において、分散台帳に追加されるブロックを監視する。これにより、連携処理システム200は、証券を売買するサービスを実現することができる。連携処理システム200は、一連の処理のそれぞれの処理の証跡を残すことができる。
【0068】
(情報処理装置100のハードウェア構成例)
次に、
図4を用いて、情報処理装置100のハードウェア構成例について説明する。
【0069】
図4は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4において、情報処理装置100は、CPU(Central Processing Unit)401と、メモリ402と、ネットワークI/F(Interface)403と、記録媒体I/F404と、記録媒体405とを有する。また、各構成部は、バス400によってそれぞれ接続される。
【0070】
ここで、CPU401は、情報処理装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることにより、コーディングされている処理をCPU401に実行させる。
【0071】
ネットワークI/F403は、通信回線を通じてネットワーク201に接続され、ネットワーク201を介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワーク201と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403は、例えば、モデムやLANアダプタなどである。
【0072】
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、情報処理装置100から着脱可能であってもよい。
【0073】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を有していなくてもよい。
【0074】
(クライアント装置210のハードウェア構成例)
クライアント装置210のハードウェア構成例は、具体的には、
図4に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0075】
(連携制御装置240のハードウェア構成例)
連携制御装置240のハードウェア構成例は、具体的には、
図4に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0076】
(連携用BCノード250のハードウェア構成例)
連携用BCノード250のハードウェア構成例は、具体的には、
図4に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0077】
(連携先BCノード260のハードウェア構成例)
連携先BCノード260のハードウェア構成例は、具体的には、
図4に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0078】
(情報処理装置100の機能的構成例)
次に、
図5を用いて、情報処理装置100の機能的構成例について説明する。
【0079】
図5は、情報処理装置100の機能的構成例を示すブロック図である。
図5の例では、具体的には、第1の情報処理装置100と、第2の情報処理装置100とが協働する場合における、それぞれの情報処理装置100の機能的構成例について説明する。
【0080】
第1の情報処理装置100は、第1記憶部500と、第1取得部501と、第1判定部502と、作成部503と、更新部504と、第1出力部505とを含む。第2の情報処理装置100は、第2記憶部510と、第2取得部511と、第2判定部512と、発行部513と、第2出力部514とを含む。
【0081】
第1記憶部500は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、第1記憶部500が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、第1記憶部500が、情報処理装置100とは異なる装置に含まれ、第1記憶部500の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0082】
第1取得部501~第1出力部505は、制御部の一例として機能する。第1取得部501~第1出力部505は、具体的には、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
【0083】
第1記憶部500は、各機能部の処理において参照され、または更新される各種情報を記憶する。第1記憶部500は、例えば、管理情報を記憶する。管理情報は、例えば、対象のBCにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す。管理情報は、具体的には、それぞれのアカウントを識別する識別子と、当該アカウントに関する有効なトークンを識別する識別子とを対応付けた対応情報を含む。
【0084】
トークンは、有効となる条件が設定されていてもよい。管理情報は、例えば、それぞれのアカウントを識別する識別子と、当該アカウントに関するトークンを識別する識別子と、当該トークンが有効となる条件とを対応付けた対応情報を含んでいてもよい。有効となる条件は、例えば、トークンが発行された後のいずれかのタイミング、または、トークンが発行された以降に当該トークンに関するアカウントに対応するTxが連携先BC230において記録された回数などである。管理情報は、例えば、更新部504によって更新される。
【0085】
第1取得部501は、各機能部の処理に用いられる各種情報を取得する。第1取得部501は、取得した各種情報を、第1記憶部500に記憶し、または、各機能部に出力する。また、第1取得部501は、第1記憶部500に記憶しておいた各種情報を、各機能部に出力してもよい。第1取得部501は、例えば、利用者の操作入力に基づき、各種情報を取得する。第1取得部501は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0086】
第1取得部501は、例えば、BC間を連携する連携部から、対象のBCにおける対象のアカウントに対するTxを生成するよう要求する処理依頼を受信する。連携部は、例えば、第1の情報処理装置100および第2の情報処理装置100とは異なる他のコンピュータに存在する。連携部は、具体的には、連携制御装置240である。連携部は、受信したTxを、対象のBCに送信する機能を有する。対象のBCは、Txを受信した際に、有効なトークンが存在すれば、Txを実行する機能を有する。
【0087】
処理依頼は、例えば、対象のBCと、対象のBCにおける対象のアカウントとを示す。処理依頼は、具体的には、対象のBCを識別する識別子と、対象のアカウントを識別する識別子とを含む。対象のアカウントを識別する識別子は、例えば、対象のアカウントに対応する公開鍵IDである。
【0088】
第1取得部501は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第1取得部501は、例えば、処理依頼を受信したことを、第1判定部502と、作成部503と、更新部504との処理を開始する開始トリガーとして受け付ける。
【0089】
第1判定部502は、管理情報と、受信した処理依頼とに基づいて、対象のBCにおける対象のアカウントに関する有効な既存のトークンが存在するか否かを判定する。第1判定部502は、例えば、受信した処理依頼に基づいて、対象のBCと、対象のアカウントとを特定する。第1判定部502は、例えば、管理情報に基づいて、特定した対象のBCにおける特定した対象のアカウントに関する有効な既存のトークンが存在するか否かを判定する。これにより、第1判定部502は、連携部が、Txを、対象のBCに送信可能な状況であるか否かを判定することができ、有効な新規のトークンを発行せずに済むか否かを判定することができる。
【0090】
第1判定部502は、例えば、管理情報に基づいて、特定した対象のBCにおける特定した対象のアカウントに関するトークンが有効となる条件があれば、当該条件を満たすか否かを判定してもよい。第1判定部502は、例えば、条件を満たすと判定した場合、特定した対象のBCにおける特定した対象のアカウントに関する有効な既存のトークンが存在すると判定する。第1判定部502は、例えば、条件を満たさないと判定した場合、特定した対象のBCにおける特定した対象のアカウントに関する有効な既存のトークンが存在しないと判定する。これにより、第1判定部502は、連携部が、Txを、対象のBCに送信可能な状況であるか否かを判定することができ、有効な新規のトークンを発行せずに済むか否かを判定することができる。
【0091】
作成部503は、第1判定部502で既存のトークンが存在しないと判定した場合、対象のアカウントに関する署名を生成する。署名は、電子的である。作成部503は、例えば、対象のアカウントに対応する秘密鍵を利用して、対象のアカウントに関する署名を生成する。作成部503は、生成した署名を付与した、対象のBCにおける対象のアカウントに対する第1のTxを生成する。これにより、作成部503は、連携部が対象のBCに送信するTxを生成することができる。作成部503は、署名により、Txの信頼性とトークンの信頼性とを担保することができる。
【0092】
作成部503は、第1判定部502で既存のトークンが存在すると判定した場合、対象のBCにおける対象のアカウントに対する第2のTxを生成する。これにより、作成部503は、連携部が対象のBCに送信するTxを生成することができる。このため、作成部503は、連携部で複数の連携先BC230を適切に制御可能にすることができる。
【0093】
更新部504は、既存のトークンが存在しないと判定した場合、対象のBCにおける対象のアカウントに関する有効な新規のトークンを記憶するよう対象のBCを制御する。更新部504は、例えば、第2の情報処理装置100を介して、新規のトークンを記憶するよう対象のBCを制御する。
【0094】
更新部504は、例えば、作成部503で生成した署名を付与した第1のTxを含み、対象のBCにおける対象のアカウントに関する有効な新規のトークンを発行することを要求する発行依頼を、第2の情報処理装置100に送信する。発行依頼は、例えば、対象のBCと、対象のBCにおける対象のアカウントとを示す。発行依頼は、具体的には、対象のBCを識別する識別子と、対象のアカウントを識別する識別子とを含む。対象のアカウントを識別する識別子は、例えば、対象のアカウントに対応する公開鍵IDである。これにより、更新部504は、対象のBCに、有効な新規のトークンを記憶させることができ、作成部503で生成した第1のTxまたは第2のTxを、対象のBCが受け入れ可能にすることができる。
【0095】
更新部504は、対象のBCにおける対象のアカウントに関する有効な新規のトークンを記憶するよう対象のBCを制御した際、管理情報を更新する。更新部504は、例えば、第2の情報処理装置100を介して、新規のトークンを記憶するよう対象のBCを制御した結果、新規のトークンを識別する識別子を、対象のBCから受信する。更新部504は、例えば、受信した新規のトークンを識別する識別子に基づいて、管理情報を更新する。これにより、更新部504は、以降、対象のBCと通信せずとも、対象のBCにおける対象のアカウントに関する有効なトークンの存否を、適切に判定可能にすることができる。
【0096】
第1出力部505は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F403による外部装置への送信、または、メモリ402や記録媒体405などの記憶領域への記憶である。これにより、第1出力部505は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0097】
第1出力部505は、作成部503で生成した第1のTxを、連携部に返信する。これにより、第1出力部505は、作成部503で生成した第1のTxを、連携部から対象のBCに送信可能にすることができる。第1出力部505は、連携部で複数の連携先BC230を適切に制御可能にすることができ、連携部で一連の処理を適切に実行可能にすることができる。
【0098】
第1出力部505は、作成部503で生成した第2のTxを、連携部に返信する。これにより、第1出力部505は、作成部503で生成した第1のTxを、連携部から対象のBCに送信可能にすることができる。第1出力部505は、連携部で複数の連携先BC230を適切に制御可能にすることができ、連携部で一連の処理を適切に実行可能にすることができる。
【0099】
連携部は、例えば、受信した第1のTx、または、受信した第2のTxを、対象のBCに送信する。対象のBCは、例えば、第1のTx、または、第2のTxを受信した際に、有効なトークンが存在すれば、第1のTx、または、第2のTxを実行する。
【0100】
第2記憶部510は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、第2記憶部510が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、第2記憶部510が、情報処理装置100とは異なる装置に含まれ、第2記憶部510の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0101】
第2取得部511~第2出力部514は、制御部の一例として機能する。第2取得部511~第2出力部514は、具体的には、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
【0102】
第2記憶部510は、各機能部の処理において参照され、または更新される各種情報を記憶する。第2記憶部510は、例えば、対象のBCにおける1以上のアカウントのそれぞれのアカウントに対応する公開鍵を記憶する。公開鍵は、例えば、第2取得部511によって取得される。
【0103】
第2取得部511は、各機能部の処理に用いられる各種情報を取得する。第2取得部511は、取得した各種情報を、第2記憶部510に記憶し、または、各機能部に出力する。また、第2取得部511は、第2記憶部510に記憶しておいた各種情報を、各機能部に出力してもよい。第2取得部511は、例えば、利用者の操作入力に基づき、各種情報を取得する。第2取得部511は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0104】
第2取得部511は、例えば、対象のBCにおける対象のアカウントに関する有効な新規のトークンを発行することを要求する発行依頼を、第1の情報処理装置100から受信する。発行依頼は、例えば、署名を付与した第1のTxを含む。発行依頼は、例えば、対象のBCと、対象のBCにおける対象のアカウントとを示す。処理依頼は、具体的には、対象のBCを識別する識別子と、対象のアカウントを識別する識別子とを含む。対象のアカウントを識別する識別子は、例えば、対象のアカウントに対応する公開鍵IDである。
【0105】
第2取得部511は、例えば、対象のBCにおける対象のアカウントに対応する公開鍵を取得する。第2取得部511は、具体的には、対象のアカウントに対応する公開鍵IDに基づいて、連携用BC220と通信し、対象のBCにおける対象のアカウントに対応する公開鍵を、連携用BC220から受信することにより取得する。
【0106】
第2取得部511は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第2取得部511は、例えば、発行依頼を受信したことを、第2判定部512と、発行部513との処理を開始する開始トリガーとして受け付ける。
【0107】
第2判定部512は、第1のTxに付与された署名の正当性を検証する。第2判定部512は、例えば、対象のアカウントに対応する公開鍵に基づいて、第1のTxに付与された署名の正当性を検証する。これにより、第2判定部512は、新規のトークンを発行してもよいのか否かを判定することができる。第2判定部512は、新規のトークンを不正に発行してしまう事態を防止し易くすることができる。
【0108】
発行部513は、第2判定部512で署名が正当であると判定した場合に、有効な新規のトークンを発行するよう、対象のBCを制御する。発行部513は、例えば、第2判定部512で署名が正当であると判定した場合に、有効な新規のトークンを発行するよう要求する発行要求を、対象のBCに送信する。これにより、発行部513は、対象のBCに記録させるトークンを、対象のBCで発行することができる。発行部513は、有効な新規のトークンを不正に発行してしまう事態を防止し易くすることができる。
【0109】
第2出力部514は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F403による外部装置への送信、または、メモリ402や記録媒体405などの記憶領域への記憶である。これにより、第2出力部514は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0110】
第2出力部514は、例えば、発行部513で、有効な新規のトークンを発行するよう、対象のBCを制御した結果を、第1の情報処理装置100に送信する。これにより、第2出力部514は、有効な新規のトークンを発行するよう、対象のBCを制御したことを、第1の情報処理装置100が把握可能にすることができる。
【0111】
対象のBCは、トークンを発行する対象とすることを許可するアカウントを記憶していてもよい。対象のBCは、対象のアカウントが、トークンを発行する対象とすることを許可するアカウントである場合には、新規のトークンを発行する。対象のBCは、例えば、対象のアカウントが、トークンを発行する対象とすることを許可するアカウントである場合には、発行要求に応じて、新規のトークンを発行する。対象のBCは、対象のアカウントが、トークンを発行する対象とすることを許可するアカウントではない場合には、新規のトークンを発行しなくてもよい。
【0112】
対象のBCは、トークンを発行する発行元となることを許可する情報処理装置100を記憶していてもよい。対象のBCは、第2の情報処理装置100が、トークンを発行する発行元となることを許可する情報処理装置100である場合には、新規のトークンを発行する。対象のBCは、例えば、第2の情報処理装置100が、トークンを発行する発行元となることを許可する情報処理装置100である場合には、発行要求に応じて、新規のトークンを発行する。対象のBCは、第2の情報処理装置100が、トークンを発行する発行元となることを許可する情報処理装置100ではない場合には、新規のトークンを発行しなくてもよい。
【0113】
対象のBCは、トークンを発行する発行元と、トークンを発行する対象とが同一である場合には、新規のトークンを発行しなくてもよい。
【0114】
ここでは、第1の情報処理装置100と、第2の情報処理装置100とが協働する場合について説明したが、これに限らない。例えば、1つの情報処理装置100が、Txを生成する機能と、トークンを発行するよう、対象のBCを制御する機能とを有する場合があってもよい。具体的には、第1の情報処理装置100が、第2取得部511と、発行部513と、第2出力部514とを含む場合があってもよい。
【0115】
(情報処理装置100の第1の動作例)
次に、
図6を用いて、情報処理装置100の第1の動作例について説明する。第1の動作例は、単一の情報処理装置100が、Txを生成し、トークンを発行することを制御する場合に対応する。以下の説明では、Txを生成し、トークンを発行することを制御する単一の情報処理装置100を「作成装置101」と表記する場合がある。
【0116】
図6は、情報処理装置100の第1の動作例を示す説明図である。
図6において、連携制御装置240は、連携エンジン241を有する。また、連携先BC-Aが存在する。以下の説明では、連携先BC-Aを、「連携先BC231」と表記する場合がある。
【0117】
連携先BC231は、signer1のアカウントの口座を管理する。また、連携先BC231は、作成装置101のアカウントの口座を管理する。また、連携先BC231は、signer1のアカウントを、トークンを発行する対象とすることを許可するアカウントとして記録する。また、連携先BC231は、作成装置101のアカウントを、トークンを発行する発行元となることを許可するアカウントとして記録する。
【0118】
作成装置101は、連携先BC231における1以上のアカウントのそれぞれのアカウントに対応する有効なトークンの存否を示す情報を記録するキャッシュファイルを有する。キャッシュファイルは、例えば、アカウントを識別する公開鍵IDと、当該アカウントに対応する有効なトークンを識別するトークンIDとを対応付けた対応情報を含む。
【0119】
トークンは、例えば、有効となる条件が設定されていてもよい。有効となる条件は、例えば、期間、連携先BC231でTxを実行した回数、または、連携先BC231で実行したTxのデータ量などに関する条件である。対応情報は、例えば、トークンに設定された条件を含んでいてもよい。
【0120】
(6-1)連携エンジン241は、Tx作成依頼を、作成装置101に送信する。作成装置101は、Tx作成依頼を受信すると、連携先BC231を特定し、トークンを発行する対象とするsigner1のアカウントを特定する。作成装置101は、特定したsigner1のアカウントに対応する公開鍵IDを特定する。
【0121】
(6-2)作成装置101は、特定したsigner1のアカウントに対するTxを生成する。作成装置101は、特定したsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0122】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在しない場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在する場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0123】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在し、トークンに設定された条件が存在する場合、条件を満たすか否かを判定してもよい。作成装置101は、例えば、条件を満たさないと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、条件を満たすと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0124】
ここで、作成装置101は、有効なトークンが存在すると判定した場合、後述する(6-3)~(6-5)の処理を省略し、生成したTxを、連携エンジン241に送信する。これにより、作成装置101は、有効なトークンが存在すると判定した場合、Tx作成依頼を受信してから、生成したTxを連携エンジン241に送信するまでの所要時間の低減化を図ることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。
【0125】
(6-3)作成装置101は、有効なトークンが存在しないと判定した場合、特定したsigner1のアカウントに対応する秘密鍵に基づいて、生成したTxに対する署名を生成する。作成装置101は、生成したTxに、生成した署名を付与する。
【0126】
(6-4)作成装置101は、特定したsigner1のアカウントに対応する有効な新規のトークンを発行するよう、連携先BC231を制御する。作成装置101は、例えば、特定したsigner1のアカウントに対応付けて、新規のトークンを発行するよう要求する発行要求を、連携先BC231に送信する。発行要求は、例えば、signer1のアカウントを含んでいてもよい。
【0127】
連携先BC231は、発行要求に応じて、signer1のアカウントに対応付けられた新規のトークンを発行する。連携先BC231は、signer1のアカウントに対応付けられたトークンに対して、トークンIDを付与する。連携先BC231は、トークンIDを付与した、signer1のアカウントに対応付けられたトークンを、分散台帳に記録する。連携先BC231は、signer1のアカウントに対応付けられたトークンに付与したトークンIDを、作成装置101に送信する。
【0128】
この際、連携先BC231は、トークンを発行する対象とすることを許可するアカウントと、トークンを発行する発行元となることを許可するアカウントとに基づいて、トークンを発行し、分散台帳に記録するか否かを判定してもよい。
図6の例では、連携先BC231は、signer1のアカウントが、トークンを発行する対象として許可され、かつ、作成装置101のアカウントが、トークンを発行する発行元として許可されるため、トークンを発行し、分散台帳に記録する。
【0129】
(6-5)作成装置101は、signer1のアカウントに対応付けられたトークンに付与されたトークンIDを、連携先BC231から受信する。作成装置101は、受信したトークンIDに基づいて、キャッシュファイルを更新する。これにより、作成装置101は、以降、signer1のアカウントに対応する有効なトークンの存否を適切に判定可能にすることができる。その後、作成装置101は、生成したTxを、連携エンジン241に送信する。
【0130】
(6-6)連携エンジン241は、Txを、作成装置101から受信する。連携エンジン241は、受信したTxを、連携先BC231に送信することにより、受信したTxを、連携先BC231に実行させる。Txは、署名が付与されていなくてもよい。
【0131】
(6-7)連携先BC231は、Txを、連携エンジン241から受信する。連携先BC231は、受信したTxに対応するsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。連携先BC231は、有効なトークンが存在しないと判定した場合、受信したTxを実行せずに破棄する。連携先BC231は、有効なトークンが存在すると判定した場合、受信したTxを実行することにより、受信したTxを分散台帳に記録する。
【0132】
これにより、作成装置101は、連携エンジン241のみでは署名およびトークンを生成不能にすることができ、連携エンジン241による連携処理システム200に対する攻撃を防止し易くすることができる。作成装置101は、トークンを、連携先BC231に記録させることにより、以降、Txを生成する際に、署名を生成する処理を省略可能にすることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。
【0133】
(情報処理装置100の第2の動作例)
次に、
図7および
図8を用いて、情報処理装置100の第2の動作例について説明する。第2の動作例は、Txを生成する第1の情報処理装置100と、トークンを発行することを制御する第2の情報処理装置100とが協働する場合に対応する。以下の説明では、Txを生成する第1の情報処理装置100を「作成装置101」と表記する場合がある。また、以下の説明では、トークンを発行することを制御する第2の情報処理装置100を「検証装置102」と表記する場合がある。
【0134】
図7および
図8は、情報処理装置100の第2の動作例を示す説明図である。
図7において、連携制御装置240は、連携エンジン241を有する。また、連携先BC-Aが存在する。以下の説明では、連携先BC-Aを、「連携先BC231」と表記する場合がある。
【0135】
連携先BC231は、signer1のアカウントの口座を管理する。また、連携先BC231は、検証装置102のアカウントの口座を管理する。また、連携先BC231は、signer1のアカウントを、トークンを発行する対象とすることを許可するアカウントとして記録する。また、連携先BC231は、検証装置102のアカウントを、トークンを発行する発行元となることを許可するアカウントとして記録する。
【0136】
作成装置101は、連携先BC231における1以上のアカウントのそれぞれのアカウントに対応する有効なトークンの存否を示す情報を記録するキャッシュファイルを有する。キャッシュファイルは、例えば、アカウントを識別する公開鍵IDと、当該アカウントに対応する有効なトークンを識別するトークンIDとを対応付けた対応情報を含む。
【0137】
トークンは、例えば、有効となる条件が設定されていてもよい。有効となる条件は、例えば、期間、連携先BC231でTxを実行した回数、または、連携先BC231で実行したTxのデータ量などに関する条件である。対応情報は、例えば、トークンに設定された条件を含んでいてもよい。
【0138】
(7-1)連携エンジン241は、Tx作成依頼を、作成装置101に送信する。作成装置101は、Tx作成依頼を受信すると、連携先BC231を特定し、トークンを発行する対象とするsigner1のアカウントを特定する。作成装置101は、特定したsigner1のアカウントに対応する公開鍵IDを特定する。
【0139】
(7-2)作成装置101は、特定したsigner1のアカウントに対するTxを生成する。作成装置101は、特定したsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0140】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在しない場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在する場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0141】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在し、トークンに設定された条件が存在する場合、条件を満たすか否かを判定してもよい。作成装置101は、例えば、条件を満たさないと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、条件を満たすと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0142】
ここで、作成装置101は、有効なトークンが存在すると判定した場合、後述する(7-3)~(7-7)の処理を省略し、生成したTxを、連携エンジン241に送信する。これにより、作成装置101は、有効なトークンが存在すると判定した場合、Tx作成依頼を受信してから、生成したTxを連携エンジン241に送信するまでの所要時間の低減化を図ることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。
【0143】
(7-3)作成装置101は、有効なトークンが存在しないと判定した場合、特定したsigner1のアカウントに対応する秘密鍵に基づいて、生成したTxに対する署名を生成する。作成装置101は、生成したTxに、生成した署名を付与する。
【0144】
(7-4)作成装置101は、署名を付与したTxを含む署名検証依頼を生成し、検証装置102に送信する。
【0145】
(7-5)検証装置102は、署名検証依頼に基づいて、連携先BC231を特定し、トークンを発行する対象とするsigner1のアカウントを特定する。検証装置102は、特定したsigner1のアカウントに対応する公開鍵IDを特定する。検証装置102は、特定した公開鍵IDに基づいて、signer1のアカウントに対応する公開鍵を取得する。検証装置102は、signer1のアカウントに対応する公開鍵に基づいて、受信したTxに付与された署名の正当性を検証する。
【0146】
(7-6)検証装置102は、署名が正当ではないと判定した場合、トークンを発行しないと決定する。検証装置102は、署名が正当であると判定した場合、特定したsigner1のアカウントに対応する有効な新規のトークンを発行するよう、連携先BC231を制御する。検証装置102は、例えば、特定したsigner1のアカウントに対応付けて、新規のトークンを発行するよう要求する発行要求を、連携先BC231に送信する。発行要求は、例えば、signer1のアカウントを含んでいてもよい。
【0147】
連携先BC231は、発行要求に応じて、signer1のアカウントに対応付けられた新規のトークンを発行する。連携先BC231は、signer1のアカウントに対応付けられたトークンに対して、トークンIDを付与する。連携先BC231は、トークンIDを付与した、signer1のアカウントに対応付けられたトークンを、分散台帳に記録する。連携先BC231は、signer1のアカウントに対応付けられたトークンに付与したトークンIDを、検証装置102に送信する。検証装置102は、受信したトークンIDを、作成装置101に送信する。
【0148】
この際、連携先BC231は、トークンを発行する対象とすることを許可するアカウントと、トークンを発行する発行元となることを許可するアカウントとに基づいて、トークンを発行し、分散台帳に記録するか否かを判定してもよい。
図7の例では、連携先BC231は、signer1のアカウントが、トークンを発行する対象として許可され、かつ、検証装置102のアカウントが、トークンを発行する発行元として許可されるため、トークンを発行し、分散台帳に記録する。
【0149】
(7-7)作成装置101は、signer1のアカウントに対応付けられたトークンに付与されたトークンIDを、検証装置102から受信する。作成装置101は、受信したトークンIDに基づいて、キャッシュファイルを更新する。これにより、作成装置101は、以降、signer1のアカウントに対応する有効なトークンの存否を適切に判定可能にすることができる。その後、作成装置101は、生成したTxを、連携エンジン241に送信する。
【0150】
(7-8)連携エンジン241は、Txを、作成装置101から受信する。連携エンジン241は、受信したTxを、連携先BC231に送信することにより、受信したTxを、連携先BC231に実行させる。Txは、署名が付与されていなくてもよい。
【0151】
(7-9)連携先BC231は、Txを、連携エンジン241から受信する。連携先BC231は、受信したTxに対応するsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。連携先BC231は、有効なトークンが存在しないと判定した場合、受信したTxを実行せずに破棄する。連携先BC231は、有効なトークンが存在すると判定した場合、受信したTxを実行することにより、受信したTxを分散台帳に記録する。
【0152】
これにより、作成装置101は、連携エンジン241のみでは署名およびトークンを生成不能にすることができ、連携エンジン241による連携処理システム200に対する攻撃を防止し易くすることができる。作成装置101は、トークンを、連携先BC231に記録させることにより、以降、Txを生成する際に、署名を生成する処理を省略可能にすることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。次に、
図8の説明に移行する。
【0153】
図8に示す通り、それぞれ異なる連携制御装置240が有する連携エンジン241,242ごとに情報処理装置100が用意される場合があってもよい。連携エンジン241に対応する情報処理装置100が、例えば、
図7に示した作成装置101として動作する。連携エンジン241に対応する情報処理装置100が、例えば、
図7に示した検証装置102としても動作する場合があってもよい。連携エンジン242に対応する情報処理装置100が、例えば、
図7に示した検証装置102として動作する。連携エンジン242に対応する情報処理装置100が、例えば、
図7に示した作成装置101としても動作する場合があってもよい。
【0154】
連携エンジン241,242ごとに連携用BCノード250が対応付けられていてもよい。例えば、連携エンジン241に対応する連携用BCノード251が存在する。連携エンジン242に対応する連携用BCノード252が存在する。連携エンジン241,242ごとに連携先BCノード260が対応付けられていてもよい。例えば、連携エンジン241に対応する連携先BCノード261が存在する。連携エンジン242に対応する連携先BCノード262が存在する。
【0155】
(情報処理装置100の具体例)
次に、
図9および
図10を用いて、情報処理装置100の具体例について説明する。
【0156】
図9および
図10は、情報処理装置100の具体例を示す説明図である。
図9の例では、
図8と同様に、連携エンジン241に対応する作成装置101が存在する。また、検証装置102が存在する。また、連携エンジン241に対応する連携用BCノード251が存在する。また、連携エンジン242に対応する連携用BCノード252が存在する。また、連携先BC-Aが存在する。以下の説明では、連携先BC-Aを、「連携先BC231」と表記する場合がある。
【0157】
図9において、連携用BCノード252は、連携先BC231における1以上のアカウントのそれぞれのアカウントに対応する公開鍵と、当該公開鍵を識別する公開鍵IDとを対応付けて記憶する。連携先BC231は、signer1のアカウントの口座を管理する。また、連携先BC231は、signer2のアカウントの口座を管理する。signer2のアカウントは、検証装置102に対応する。
【0158】
作成装置101は、連携先BC231における1以上のアカウントのそれぞれのアカウントに対応する有効なトークンの存否を示す情報を記録するキャッシュファイルを有する。キャッシュファイルは、例えば、アカウントを識別する公開鍵IDと、当該アカウントに対応する有効なトークンを識別するトークンIDとを対応付けた対応情報を含む。
【0159】
トークンは、例えば、有効となる条件が設定されていてもよい。有効となる条件は、例えば、期間、連携先BC231でTxを実行した回数、または、連携先BC231で実行したTxのデータ量などに関する条件である。対応情報は、例えば、トークンに設定された条件を含んでいてもよい。
【0160】
連携エンジン241は、連携先BC231を含む複数の連携先BC230を連携する一連の処理を開始することを要求する連携実行依頼を、クライアント装置210から受信する。連携実行依頼は、例えば、連携する一連の処理の全体を識別する連携実行IDと、連携実行パラメータとを含む。
【0161】
連携実行パラメータは、例えば、一連の処理のそれぞれの処理の内容を規定するパラメータである。連携実行パラメータは、具体的には、一連の処理のいずれかの処理の対象となる連携先BC230を識別する識別子を含んでいてもよい。連携実行パラメータは、具体的には、連携先BC230における、一連の処理のいずれかの処理の対象となるアカウントを識別する識別子を含んでいてもよい。
【0162】
連携制御装置240は、受信した連携実行依頼に基づいて、複数の連携先BC230を連携する一連の処理を開始することを要求する連携開始Txを、連携用BC220に含まれる連携用BCノード251に送信する。連携開始Txは、例えば、連携実行パラメータを含む。連携用BCノード251は、受信した連携開始Txを、分散台帳に記録する。
【0163】
連携用BCノード251は、連携のルールに従って、連携開始Txに基づいて、一連の処理のいずれかの処理を実行することを要求する処理依頼を、連携エンジン241に送信する。連携用BCノード251は、処理依頼を、それぞれの情報処理装置100に送信する。
【0164】
処理依頼は、例えば、連携する一連の処理の全体を識別する連携実行IDを含む。処理依頼は、例えば、一連の処理のうち、今回実行する対象となる特定の処理を識別する処理IDを含む。処理依頼は、例えば、一連の処理のうち、今回実行する対象となる特定の処理の内容を規定する処理パラメータを含む。
【0165】
処理パラメータは、具体的には、連携先BC230における、上記特定の処理において扱われる1以上のアカウントを識別する識別子を含む。処理パラメータは、具体的には、連携先BC230における、上記特定の処理において扱われる1以上のデータを識別する識別子を含む。処理パラメータは、具体的には、上記特定の処理が、第1のアカウントから第2のアカウントに、特定のデータを移動することであれば、第1のアカウントを識別する識別子と、第2のアカウントを識別する識別子と、特定のデータを識別する識別子とを含む。
【0166】
処理依頼は、例えば、Txを生成して署名を付与する作成装置101として動作する情報処理装置100を指定する情報を含む。処理依頼は、例えば、署名を生成する対象となるアカウントを識別する識別子を含む。処理依頼は、具体的には、署名を生成する対象となるアカウントとして、signer1を識別する識別子を含む。処理依頼は、例えば、署名を検証してトークンを発行することを制御する検証装置102として動作する情報処理装置100を指定する情報を含む。処理依頼は、例えば、上記特定の処理を実行する連携エンジンを指定する情報を含む。処理依頼の署名サーバ1は、例えば、作成装置101を示す。処理依頼の署名サーバ2は、例えば、検証装置102を示す。
【0167】
(9-1)連携エンジン241は、処理依頼を、連携用BCノード251から受信する。連携エンジン241は、Tx作成依頼を、作成装置101に送信する。Tx作成依頼は、例えば、連携する一連の処理の全体を識別する連携実行IDと、一連の処理のうち、今回実行する対象となる特定の処理を識別する処理IDとを含む。
【0168】
作成装置101は、処理依頼を、連携用BCノード251から受信する。作成装置101は、Tx作成依頼を、連携エンジン241から受信する。作成装置101は、Tx作成依頼を受信すると、受信した処理依頼に基づいて、連携先BC231を特定し、トークンを発行する対象とするsigner1のアカウントを特定する。作成装置101は、特定したsigner1のアカウントに対応する公開鍵IDを特定する。
【0169】
(9-2)作成装置101は、特定したsigner1のアカウントに対するTxを生成する。Txは、例えば、signer1のアカウントに対応する公開鍵IDを含んでいてもよい。また、作成装置101は、特定したsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0170】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在しない場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在する場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0171】
作成装置101は、例えば、キャッシュファイルに、特定した公開鍵IDに対応するトークンIDが存在し、トークンに設定された条件が存在する場合、条件を満たすか否かを判定してもよい。作成装置101は、例えば、条件を満たさないと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在しないと判定する。作成装置101は、例えば、条件を満たすと判定した場合、特定したsigner1のアカウントに対応する有効なトークンが存在すると判定する。
【0172】
ここで、作成装置101は、有効なトークンが存在すると判定した場合、後述する(9-3)~(9-7)の処理を省略し、生成したTxを、連携エンジン241に送信する。これにより、作成装置101は、有効なトークンが存在すると判定した場合、Tx作成依頼を受信してから、生成したTxを連携エンジン241に送信するまでの所要時間の低減化を図ることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。
【0173】
(9-3)作成装置101は、有効なトークンが存在しないと判定した場合、特定したsigner1のアカウントに対応する秘密鍵に基づいて、生成したTxに対する署名を生成する。作成装置101は、生成したTxに、生成した署名を付与する。
【0174】
(9-4)作成装置101は、署名を付与したTxと、特定したsigner1のアカウントに対応する公開鍵IDとを含む署名検証依頼を生成する。作成装置101は、生成した署名検証依頼を、検証装置102に送信する。
【0175】
(9-5)検証装置102は、署名検証依頼に基づいて、連携先BC231を特定し、トークンを発行する対象とするsigner1のアカウントを特定する。検証装置102は、署名検証依頼に基づいて、特定したsigner1のアカウントに対応する公開鍵IDを特定する。
【0176】
検証装置102は、特定した公開鍵IDに基づいて、連携用BCノード252に、特定したsigner1のアカウントに対応する公開鍵を問い合わせる。検証装置102は、問い合わせた結果、signer1のアカウントに対応する公開鍵を、連携用BCノード252から受信する。検証装置102は、受信したsigner1のアカウントに対応する公開鍵に基づいて、受信したTxに付与された署名の正当性を検証する。
【0177】
(9-6)検証装置102は、署名が正当ではないと判定した場合、トークンを発行しないと決定する。検証装置102は、署名が正当であると判定した場合、特定したsigner1のアカウントに対応する有効な新規のトークンを発行するよう、連携先BC231を制御する。検証装置102は、特定したsigner1のアカウントに対応付けて、有効な新規のトークンを発行するよう要求する発行要求を、連携先BC231に送信する。ここで、
図10の説明に移行する。
【0178】
図10において、連携先BC231は、トークンを発行する対象または発行元とすることを許可するアカウントを記録する。連携先BC231は、例えば、signer1のアカウントと、signer2のアカウントとを、トークンを発行する対象または発行元とすることを許可するアカウントとして記録する。
【0179】
連携先BC231は、トークンを発行する対象または発行元とすることを許可するアカウントに基づいて、発行要求に応じて、signer1のアカウントに対応付けられたトークンを発行し、分散台帳に記録するか否かを判定する。
【0180】
図10の例では、連携先BC231は、signer1のアカウントと、signer2のアカウントとが、トークンを発行する対象または発行元とすることを許可されるため、発行要求に応じて、signer1のアカウントに対応付けられたトークンを発行し、分散台帳に記録する。ここで、連携先BC231は、例えば、トークンを発行する対象となるアカウントと、トークンを発行する発行元となるアカウントとが一致する場合には、トークンを発行しなくてもよい。
【0181】
連携先BC231は、signer1のアカウントに対応付けられたトークンに対して、トークンIDを付与する。トークンIDは、例えば、tokenAである。連携先BC231は、トークンIDを、signer1のアカウントに対応付けられたトークンに付与する。
【0182】
トークンは、例えば、有効となる条件とを含む。条件は、例えば、有効期限と、Tx実行数上限と、データサイズ上限とを含む。有効期限は、例えば、有効期限を過ぎるまで、トークンが有効であることを示す。Tx実行数上限は、例えば、トークンを発行する対象となるアカウントに関するTxを実行した回数が、Tx実行数上限を超えるまで、トークンが有効であることを示す。データサイズ上限は、例えば、トークンを発行する対象となるアカウントに関して過去に実行したTxのデータサイズの累積和が、データサイズ上限を超えるまで、トークンが有効であることを示す。
【0183】
連携先BC231は、トークンIDを付与した、signer1のアカウントに対応付けられたトークンを、分散台帳に記録する。連携先BC231は、signer1のアカウントに対応付けられたトークンに付与したトークンIDを、検証装置102に送信する。検証装置102は、受信したトークンIDを、作成装置101に送信する。ここで、
図9の説明に戻る。
【0184】
図9において、(9-7)作成装置101は、signer1のアカウントに対応付けられたトークンに付与されたトークンIDを、検証装置102から受信する。作成装置101は、受信したトークンIDに基づいて、キャッシュファイルを更新する。これにより、作成装置101は、以降、signer1のアカウントに対応する有効なトークンの存否を適切に判定可能にすることができる。その後、作成装置101は、生成したTxを、連携エンジン241に送信する。ここで、
図10の説明に移行する。
【0185】
図10において、(10-1)連携エンジン241は、Txを、作成装置101から受信する。連携エンジン241は、受信したTxを、連携先BC231に送信することにより、受信したTxを、連携先BC231に実行させる。Txは、署名が付与されていなくてもよい。Txは、例えば、signer1のアカウントに対応する公開鍵IDを含む。
【0186】
(10-2)連携先BC231は、アカウントに対応付けて、当該アカウントに対するTxを過去に実行した回数と、当該アカウントに関して過去に実行したTxのデータサイズの累積和とを記録する。連携先BC231は、例えば、signer1のアカウントに対応する公開鍵IDに対応付けて、累積Tx実行数と、累積データサイズとを記録する。累積Tx実行数は、当該アカウントに対するTxを過去に実行した回数を示す。累積データサイズは、アカウントに関して過去に実行したTxのデータサイズの累積和を示す。
【0187】
連携先BC231は、Txを、連携エンジン241から受信する。連携先BC231は、受信したTxに基づいて、signer1のアカウントに対応する公開鍵IDを取得する。連携先BC231は、取得した公開鍵IDに基づいて、受信したTxに対応するsigner1のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0188】
連携先BC231は、例えば、取得した公開鍵IDに基づいて、有効期限と、累積Tx実行数と、累積データサイズとを取得する。連携先BC231は、例えば、取得した有効期限と、累積Tx実行数と、累積データサイズとに基づいて、signer1のアカウントに対応する有効なトークンが存在するか否かを判定する。
【0189】
連携先BC231は、有効なトークンが存在しないと判定した場合、受信したTxを実行せずに破棄する。連携先BC231は、有効なトークンが存在すると判定した場合、受信したTxを実行することにより、受信したTxを分散台帳に記録する。
【0190】
これにより、作成装置101は、連携エンジン241のみでは署名およびトークンを生成不能にすることができ、連携エンジン241による連携処理システム200に対する攻撃を防止し易くすることができる。作成装置101は、トークンを、連携先BC231に記録させることにより、以降、Txを生成する際に、署名を生成する処理を省略可能にすることができる。このため、作成装置101は、連携エンジン241が、Tx作成依頼を送信してから、Txを連携先BC231に送信するまでの所要時間の低減化を図ることができる。
【0191】
(情報処理装置100の実施例)
次に、
図11および
図12を用いて、情報処理装置100の実施例について説明する。
【0192】
図11および
図12は、情報処理装置100の実施例を示す説明図である。
図11において、クライアント装置210は、クライアントアプリケーション1100を有する。クライアントアプリケーション1100は、リクエスト送受信部1101を有する。
【0193】
連携制御装置240は、連携エンジン1110を有する。連携エンジン1110は、連携実行モジュール1111と、連携用BC通信部1112と、連携先BC通信部1113と、作成装置通信部1114とを含む。連携用BC通信部1112は、連携用BCTx実行監視モジュール1115を含む。連携先BC通信部1113は、連携先BCTx実行監視モジュール1116を含む。作成装置通信部1114は、Tx作成依頼モジュール1117を含む。
【0194】
コンソーシアム型BCのコンポーネントであるPeerとなる連携用BCノード1120は、BC連携制御モジュール1121と、連携ルール管理1122と、割り振り順管理1123と、公開鍵管理1124とを含む。連携ルール管理1122と、割り振り順管理1123と、公開鍵管理1124とは、分散台帳1125に記録される。コンソーシアム型BCのコンポーネントであるOrdererとなる連携用BCノード1130は、ブロック作成部1131を含む。次に、
図12の説明に移行する。
【0195】
図12において、連携先BCノード1200は、Tx実行参照部1201と、Tx実行制御部1202と、分散台帳1203とを含む。Tx実行参照部1201は、Tx実行モジュール1204を含む。Tx実行制御部1202は、有効性検証モジュール1205と、トークン管理モジュール1206と、累積モジュール1207と、制限モジュール1208とを含む。
【0196】
作成装置1210は、Tx作成部1211と、署名検証部1212とを含む。Tx作成部1211は、Tx作成モジュール1213と、キャッシュモジュール1214と、署名鍵管理1215とを含む。署名検証部1212は、例えば、後述する署名検証部1222と同様である。検証装置1220は、Tx作成部1221と、署名検証部1222とを含む。Tx作成部1221は、Tx作成部1211と同様である。署名検証部1222は、検証モジュール1223と、発行モジュール1224とを含む。
【0197】
(11-1)リクエスト送受信部1101は、連携実行依頼を、連携実行モジュール1111に送信する。連携実行モジュール1111は、連携実行依頼に対して、連携実行IDを付与する。連携実行モジュール1111は、連携実行IDを付与した連携実行依頼を、連携用BCTx実行監視モジュール1115に送信する。
【0198】
(11-2)連携用BCTx実行監視モジュール1115は、連携実行依頼に基づいて、連携開始Txを、連携用BCノード1120と、連携用BCノード1130とに送信することにより、連携開始Txを、連携用BC220に実行させる。
【0199】
(11-3)連携用BCノード1130のブロック作成部1131は、連携開始Txを記録するブロックを生成し、連携用BCノード1120に配信する。連携用BCノード1120は、配信されたブロックを、分散台帳1125に記録する。
【0200】
BC連携制御モジュール1121は、ブロックの連携開始Txに応じて、連携ルール管理1122を参照して、処理依頼を、連携用BC通信部1112に送信する。連携用BC通信部1112は、連携実行モジュール1111を介して、処理依頼を、Tx作成依頼モジュール1117に送信する。
【0201】
(11-4)Tx作成依頼モジュール1117は、処理依頼に基づいて、作成装置1210を特定する。Tx作成依頼モジュール1117は、処理依頼に基づいて、Tx作成依頼を生成する。Tx作成依頼モジュール1117は、生成したTx作成依頼を、作成装置1210に送信する。Tx作成依頼は、対象のアカウントに対応する公開鍵IDを含む。
【0202】
Tx作成モジュール1213は、Tx作成依頼に基づいて、対象のアカウントに対応する公開鍵IDを取得する。Tx作成モジュール1213は、キャッシュモジュール1214と協働で、署名鍵管理1215に、取得した公開鍵IDに対応する有効なトークンが存在するか否かを判定する。ここで、Tx作成モジュール1213は、取得した公開鍵IDに対応する有効なトークンが存在する場合、連携先BC230における対象のアカウントに対するTxを生成し、Tx作成依頼モジュール1117に送信する。
【0203】
(11-5)Tx作成モジュール1213は、取得した公開鍵IDに対応する有効なトークンが存在しない場合、連携先BC230における対象のアカウントに対するTxを生成する。Tx作成モジュール1213は、対象のアカウントに対応する秘密鍵に基づいて、生成したTxに対する署名を生成する。Tx作成モジュール1213は、生成した署名を付与したTxを、取得した公開鍵IDと共に、キャッシュモジュール1214に送信する。
【0204】
(11-6)キャッシュモジュール1214は、処理依頼に基づいて、検証装置1220を特定する。キャッシュモジュール1214は、署名を付与したTxと、公開鍵IDとを、特定した検証装置1220の検証モジュール1223に送信する。
【0205】
(11-7)検証モジュール1223は、署名を付与したTxと、公開鍵IDとを受信する。検証モジュール1223は、公開鍵IDに基づいて、連携用BCノード1120のBC連携制御モジュール1121を実行し、公開鍵IDが示す公開鍵を取得する。検証モジュール1223は、取得した公開鍵に基づいて、受信したTxに付与された署名の正当性を検証する。検証モジュール1223は、署名が正当ではない場合、Txを破棄し、キャッシュモジュール1214に、検証した結果を送信する。
【0206】
(11-8)検証モジュール1223は、署名が正当である場合、発行モジュール1224に、検証した結果を送信する。発行モジュール1224は、連携先BCノード1200のトークン管理モジュール1206を実行し、対象のアカウントに対するトークンを発行するよう、連携先BCノード1200を制御する。トークンは、例えば、有効期限、Tx実行数上限、または、データサイズ上限などを含む。
【0207】
この際、制限モジュール1208は、対象のアカウントと、検証装置1220とのペアが、トークンを発行可能なペアであるか否かを判定し、トークン管理モジュール1206で、トークンを発行するか否かを制御してもよい。この際、累積モジュール1207は、Tx実行数、および、データサイズ累積和を初期化する。トークン管理モジュール1206が、対象のアカウントと、検証装置1220とのペアが、トークンを発行可能なペアであるか否かを判定し、トークンを発行するか否かを決定する場合があってもよい。
【0208】
トークン管理モジュール1206は、発行したトークンに、トークンIDを付与する。トークン管理モジュール1206は、トークンIDを、発行モジュール1224を介して、検証モジュール1223に送信する。検証モジュール1223は、トークンIDを、キャッシュモジュール1214に送信する。
【0209】
(11-9)キャッシュモジュール1214は、トークンIDを受信する。キャッシュモジュール1214は、受信したトークンIDに基づいて、署名鍵管理1215を更新する。キャッシュモジュール1214は、受信したトークンIDと、取得した公開鍵IDとを対応付けた対応情報を、署名鍵管理1215に記録する。Tx作成モジュール1213は、対応情報が、署名鍵管理1215に記録されたことに応じて、生成したTxを、公開鍵IDと共に、Tx作成依頼モジュール1117に送信する。
【0210】
(11-10)Tx作成依頼モジュール1117は、公開鍵IDと共に、Txを受信する。Tx作成依頼モジュール1117は、受信したTxを、公開鍵IDと共に、連携先BCTx実行監視モジュール1116に送信する。連携先BCTx実行監視モジュール1116は、受信したTxを、公開鍵IDと共に、Tx実行モジュール1204に送信する。
【0211】
(11-11)Tx実行モジュール1204は、公開鍵IDと共に、Txを受信する。Tx実行モジュール1204は、公開鍵IDを、有効性検証モジュール1205に送信する。有効性検証モジュール1205は、公開鍵IDに基づいて、対象のアカウントを特定する。有効性検証モジュール1205は、公開鍵IDに基づいて、対象のアカウントに対応する有効なトークンが存在するか否かを検証する。
【0212】
有効性検証モジュール1205は、例えば、トークン管理モジュール1206を介して、Tx実行数と、データサイズ累積和とを、累積モジュール1207から受信する。有効性検証モジュール1205は、例えば、Tx実行数と、データサイズ累積和とに基づいて、対象のアカウントに対応する有効なトークンが存在するか否かを検証する。有効性検証モジュール1205は、検証した結果を、Tx実行モジュール1204と、トークン管理モジュール1206とに送信する。
【0213】
Tx実行モジュール1204は、有効なトークンが存在する場合、Txを実行する。トークン管理モジュール1206は、有効なトークンが存在する場合、累積モジュール1207を制御し、Tx実行数と、データサイズ累積和とを更新する。Tx実行モジュール1204は、有効なトークンが存在しない場合、Txを実行せずに破棄する。
【0214】
(全体処理手順)
次に、
図13および
図14を用いて、連携処理システム200が実行する、全体処理手順の一例について説明する。
【0215】
図13および
図14は、全体処理手順の一例を示すフローチャートである。
図13において、クライアントアプリケーション1100は、連携実行リクエストを、連携エンジンの連携用BCTx実行監視モジュール1115に送信する(ステップS1301)。
【0216】
連携エンジン1110において、連携用BCTx実行監視モジュール1115は、連携実行リクエストを受信すると、連携開始Txを、連携用BCノード1130に送信することにより、連携用BC220に、連携開始Txを実行させる(ステップS1302)。連携エンジン1110は、処理依頼を、連携用BCノード1120から取得する(ステップS1303)。連携エンジン1110において、Tx作成依頼モジュール1117は、処理依頼を受信すると、Tx作成依頼を、作成装置1210に送信する(ステップS1304)。
【0217】
作成装置1210において、Tx作成モジュール1213は、Tx作成依頼を受信すると、対象のアカウントに対する有効なトークンの存在を確認する(ステップS1305)。Tx作成モジュール1213は、確認した結果、有効なトークンが署名鍵管理1215に存在するか否かを判定する(ステップS1306)。ここで、有効なトークンが存在する場合(ステップS1306:Yes)、作成装置1210は、ステップS1307の処理に移行する。一方で、有効なトークンが存在しない場合(ステップS1306:No)、作成装置1210は、ステップS1308の処理に移行する。
【0218】
ステップS1307では、作成装置1210において、Tx作成モジュール1213は、Txを生成し、連携エンジン1110に送信する(ステップS1307)。連携エンジン1110は、Txを受信すると、
図14のステップS1404の処理に移行する。
【0219】
ステップS1308では、作成装置1210において、Tx作成モジュール1213は、Txを生成し、対象のアカウントに関する署名を付与する(ステップS1308)。作成装置1210において、キャッシュモジュール1214は、署名を付与したTxを含む検証依頼を、検証装置1220に送信する(ステップS1309)。
【0220】
検証装置1220において、検証モジュール1223は、検証依頼を受信すると、対象のアカウントに対応する公開鍵を取得し、Txに付与された署名を検証する(ステップS1310)。次に、検証モジュール1223は、
図14のステップS1401に移行する。
【0221】
図14において、検証モジュール1223は、署名が正当であるか否かを判定する(ステップS1401)。ここで、署名が正当ではない場合(ステップS1401:No)、検証装置1220は、ステップS1409の処理に移行する。一方で、署名が正当である場合(ステップS1401:Yes)、検証装置1220は、ステップS1402の処理に移行する。
【0222】
ステップS1402では、検証装置1220において、発行モジュール1224は、トークンを発行するよう、トークン管理モジュール1206を制御し、トークン管理モジュール1206から、トークンIDを取得する(ステップS1402)。検証装置1220において、検証モジュール1223は、トークンIDを、発行モジュール1224から取得し、作成装置1210に送信する。
【0223】
作成装置1210において、キャッシュモジュール1214は、トークンIDを、署名鍵管理1215に保存する(ステップS1403)。作成装置1210において、Tx作成モジュール1213は、Txを、連携エンジン1110に送信する(ステップS1404)。
【0224】
連携エンジン1110において、Tx作成依頼モジュール1117は、受信したTxに基づいて、Tx実行依頼を、連携先BCノード1200に送信する(ステップS1405)。
【0225】
連携先BCノード1200において、Tx実行モジュール1204は、有効性検証モジュール1205を介して、トークンの有効性を検証する(ステップS1406)。有効性検証モジュール1205は、トークンが有効であるか否かを判定する(ステップS1407)。ここで、トークンが有効である場合(ステップS1407:Yes)、Tx実行モジュール1204は、ステップS1408の処理に移行する。一方で、トークンが有効ではない場合(ステップS1407:No)、Tx実行モジュール1204は、ステップS1409の処理に移行する。
【0226】
ステップS1408では、連携先BC230において、Tx実行モジュール1204は、Txを実行する(ステップS1408)。そして、連携処理システム200は、全体処理を終了する。ステップS1409では、Tx作成モジュール1213、または、Tx実行モジュール1204は、エラー通知を、連携エンジン1110に送信する(ステップS1409)。そして、連携処理システム200は、全体処理を終了する。
【0227】
(初回作成処理手順)
次に、
図15~
図17を用いて、連携処理システム200が実行する、初回作成処理手順の一例について説明する。
【0228】
図15~
図17は、初回作成処理手順の一例を示すシーケンス図である。
図15において、クライアントアプリケーション1100は、連携する一連の処理を実行することを要求する連携実行リクエストを、連携実行モジュール1111に送信する(ステップS1501)。
【0229】
連携実行モジュール1111は、連携実行リクエストを受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1502)。連携用BCTx実行監視モジュール1115は、連携実行リクエストを受信すると、連携開始Txを生成し、連携用BCノード1120,1130が実行するよう、連携用BCノード1120,1130を制御する(ステップS1503)。
【0230】
連携用BCノード1120,1130は、受信した連携開始Txを実行する(ステップS1504)。連携用BCノード1120は、連携開始Txを実行すると、連携実行IDを生成し、連携用BCTx実行監視モジュール1115に送信する(ステップS1505)。
【0231】
連携用BCTx実行監視モジュール1115は、連携実行IDを受信し、連携実行モジュール1111に送信する(ステップS1506)。連携実行モジュール1111は、連携実行IDを受信し、クライアントアプリケーション1100に送信する(ステップS1507)。
【0232】
連携用BCノード1120は、連携開始Txを実行すると、一連の処理のいずれかの処理を実行することを要求する処理依頼を、連携用BCTx実行監視モジュール1115に送信する(ステップS1508)。
【0233】
連携用BCTx実行監視モジュール1115は、処理依頼を受信し、連携実行モジュール1111に送信する(ステップS1509)。連携実行モジュール1111は、処理依頼を受信し、連携先BCTx実行監視モジュール1116に送信する(ステップS1510)。連携先BCTx実行監視モジュール1116は、処理依頼を受信すると、いずれかの処理にかかるTxを生成することを要求するTx作成依頼を、Tx作成モジュール1213に送信する(ステップS1511)。
【0234】
Tx作成モジュール1213は、Tx作成依頼を受信すると、有効なトークンの存否を確認することを要求する確認依頼を、キャッシュモジュール1214に送信する(ステップS1512)。キャッシュモジュール1214は、受信した確認結果を、Tx作成モジュール1213に送信する(ステップS1513)。
【0235】
Tx作成モジュール1213は、確認結果に基づいて、Txを生成し、署名を付与する(ステップS1514)。Tx作成モジュール1213は、署名の正当性を検証することを要求する検証依頼を生成し、検証モジュール1223に送信する(ステップS1515)。
【0236】
検証モジュール1223は、公開鍵IDに基づいて、連携用BCノード1120に、公開鍵を問い合わせる(ステップS1516)。検証モジュール1223は、公開鍵を、連携用BCノード1120から受信する(ステップS1517)。検証モジュール1223は、署名の正当性を検証する(ステップS1518)。次に、
図16の説明に移行する。
【0237】
図16において、検証モジュール1223は、署名が正当ではないと判定したとする。検証モジュール1223は、検証エラーを生成し、Tx作成モジュール1213に送信する(ステップS1601)。Tx作成モジュール1213は、受信した検証エラーを、連携先BCTx実行監視モジュール1116に送信する(ステップS1602)。
【0238】
連携先BCTx実行監視モジュール1116は、受信した検証エラーを、連携用BCTx実行監視モジュール1115に送信する(ステップS1603)。連携用BCTx実行監視モジュール1115は、検証エラーを受信すると、実行完了Txを生成し、連携用BCノード1120,1130に送信する(ステップS1604)。連携用BCノード1120,1130は、連携完了Txを受信し、連携完了Txを実行する。そして、連携処理システム200は、初回作成処理を終了する。次に、
図17の説明に移行する。
【0239】
図17において、検証モジュール1223は、署名が正当であると判定したとする。検証モジュール1223は、トークンを発行することを要求する発行依頼を生成し、発行モジュール1224に送信する(ステップS1701)。発行モジュール1224は、トークンを発行するよう、トークン管理モジュール1206を制御する(ステップS1702)。
【0240】
トークン管理モジュール1206は、トークンを発行し、発行したトークンに対応するトークンIDを生成し、発行モジュール1224に送信する(ステップS1703)。
【0241】
発行モジュール1224は、トークンIDを受信し、検証モジュール1223に送信する(ステップS1704)。検証モジュール1223は、トークンIDを受信し、Tx作成モジュール1213に送信する(ステップS1705)。
【0242】
Tx作成モジュール1213は、トークンIDを、署名鍵管理1215に記録する(ステップS1706)。Tx作成モジュール1213は、Txを生成し、連携先BCTx実行監視モジュール1116に送信する(ステップS1707)。
【0243】
連携先BCTx実行監視モジュール1116は、Txを受信すると、Tx実行依頼を生成し、Tx実行モジュール1204に送信する(ステップS1708)。
【0244】
Tx実行モジュール1204は、Tx実行数およびデータサイズ累積和などの累積値を更新する(ステップS1709)。Tx実行モジュール1204は、公開鍵IDに基づいて、トークンが有効となる条件を、トークン管理モジュール1206に問い合わせる(ステップS1710)。Tx実行モジュール1204は、トークンが有効となる条件を、トークン管理モジュール1206から受信する(ステップS1711)。Tx実行モジュール1204は、トークンが有効となる条件に基づいて、有効なトークンが存在するか否かを判定する(ステップS1712)。
【0245】
ここで、有効なトークンが存在する場合(ステップS1712:Yes)、Tx実行モジュール1204は、受信したTxを実行する(ステップS1713)。Tx実行モジュール1204は、Tx実行結果を生成し、連携先BCTx実行監視モジュール1116に送信する(ステップS1714)。連携先BCTx実行監視モジュール1116は、Tx実行結果を受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1715)。連携用BCTx実行監視モジュール1115は、ステップS1718の処理に移行する。
【0246】
一方で、有効なトークンが存在しない場合(ステップS1712:No)、Tx実行モジュール1204は、トークン無効エラーを表すTx実行結果を生成し、連携先BCTx実行監視モジュール1116に送信する(ステップS1716)。連携先BCTx実行監視モジュール1116は、Tx実行結果を受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1717)。連携用BCTx実行監視モジュール1115は、ステップS1718の処理に移行する。
【0247】
ステップS1718では、連携用BCTx実行監視モジュール1115は、Tx実行結果を、連携用BCノード1120,1130に送信することにより、連携用BC220に実行させる(ステップS1718)。連携用BCノード1120,1130は、Tx実行結果を実行する(ステップS1719)。そして、連携処理システム200は、初回作成処理を終了する。
【0248】
(再作成処理手順)
次に、
図18および
図19を用いて、情報処理装置100が実行する、再作成処理手順の一例について説明する。再作成処理は、例えば、
図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0249】
図18および
図19は、再作成処理手順の一例を示すシーケンス図である。
図18において、クライアントアプリケーション1100は、連携する一連の処理を実行することを要求する連携実行リクエストを、連携実行モジュール1111に送信する(ステップS1801)。
【0250】
連携実行モジュール1111は、連携実行リクエストを受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1802)。連携用BCTx実行監視モジュール1115は、連携実行リクエストを受信すると、連携開始Txを生成し、連携用BCノード1120,1130が実行するよう、連携用BCノード1120,1130を制御する(ステップS1803)。
【0251】
連携用BCノード1120,1130は、受信した連携開始Txを実行する(ステップS1804)。連携用BCノード1120は、連携開始Txを実行すると、連携実行IDを生成し、連携用BCTx実行監視モジュール1115に送信する(ステップS1805)。
【0252】
連携用BCTx実行監視モジュール1115は、連携実行IDを受信し、連携実行モジュール1111に送信する(ステップS1806)。連携実行モジュール1111は、連携実行IDを受信し、クライアントアプリケーション1100に送信する(ステップS1807)。
【0253】
連携用BCノード1120は、連携開始Txを実行すると、一連の処理のいずれかの処理を実行することを要求する処理依頼を、連携用BCTx実行監視モジュール1115に送信する(ステップS1808)。
【0254】
連携用BCTx実行監視モジュール1115は、処理依頼を受信し、連携実行モジュール1111に送信する(ステップS1809)。連携実行モジュール1111は、処理依頼を受信し、連携先BCTx実行監視モジュール1116に送信する(ステップS1810)。連携先BCTx実行監視モジュール1116は、処理依頼を受信すると、いずれかの処理にかかるTxを生成することを要求するTx作成依頼を、Tx作成モジュール1213に送信する(ステップS1811)。
【0255】
Tx作成モジュール1213は、Tx作成依頼を受信すると、有効なトークンの存否を確認することを要求する確認依頼を、キャッシュモジュール1214に送信する(ステップS1812)。キャッシュモジュール1214は、受信した確認結果を、Tx作成モジュール1213に送信する(ステップS1813)。
【0256】
Tx作成モジュール1213は、確認結果に基づいて、Txを生成する(ステップS1814)。Tx作成モジュール1213は、生成したTxを、連携先BCTx実行監視モジュール1116に送信する(ステップS1815)。
【0257】
連携先BCTx実行監視モジュール1116は、Txを受信すると、Tx実行依頼を生成し、Tx実行モジュール1204に送信する(ステップS1816)。次に、
図19の説明に移行する。
【0258】
Tx実行モジュール1204は、Tx実行数およびデータサイズ累積和などの累積値を更新する(ステップS1901)。Tx実行モジュール1204は、公開鍵IDに基づいて、トークンが有効となる条件を、トークン管理モジュール1206に問い合わせる(ステップS1902)。Tx実行モジュール1204は、トークンが有効となる条件を、トークン管理モジュール1206から受信する(ステップS1903)。Tx実行モジュール1204は、トークンが有効となる条件に基づいて、有効なトークンが存在するか否かを判定する(ステップS1904)。
【0259】
ここで、有効なトークンが存在する場合(ステップS1904:Yes)、Tx実行モジュール1204は、受信したTxを実行する(ステップS1905)。Tx実行モジュール1204は、Tx実行結果を生成し、連携先BCTx実行監視モジュール1116に送信する(ステップS1906)。連携先BCTx実行監視モジュール1116は、Tx実行結果を受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1907)。連携用BCTx実行監視モジュール1115は、ステップS1910の処理に移行する。
【0260】
一方で、有効なトークンが存在しない場合(ステップS1904:No)、Tx実行モジュール1204は、トークン無効エラーを表すTx実行結果を生成し、連携先BCTx実行監視モジュール1116に送信する(ステップS1908)。連携先BCTx実行監視モジュール1116は、Tx実行結果を受信し、連携用BCTx実行監視モジュール1115に送信する(ステップS1909)。連携用BCTx実行監視モジュール1115は、ステップS1910の処理に移行する。
【0261】
ステップS1910では、連携用BCTx実行監視モジュール1115は、Tx実行結果を、連携用BCノード1120,1130に送信することにより、連携用BC220に実行させる(ステップS1910)。連携用BCノード1120,1130は、Tx実行結果を実行する(ステップS1911)。そして、連携処理システム200は、初回作成処理を終了する。
【0262】
以上説明したように、情報処理装置100によれば、BC間を連携する連携部から、対象のBCにおける対象のアカウントに対するTxを生成するよう要求する処理依頼を受信することができる。情報処理装置100によれば、管理情報と、受信した処理依頼とに基づいて、対象のBCにおける対象のアカウントに関する有効な既存のトークンが存在するか否かを判定することができる。情報処理装置100によれば、既存のトークンが存在しないと判定した場合、対象のアカウントに関する署名を付与した、対象のBCにおける対象のアカウントに対する第1のTxを生成することができる。情報処理装置100によれば、対象のBCにおける対象のアカウントに関する有効な新規のトークンを記憶するよう対象のBCを制御し、管理情報を更新し、生成した第1のTxを、連携部に返信することができる。情報処理装置100によれば、既存のトークンが存在すると判定した場合、対象のBCにおける対象のアカウントに対する第2のTxを生成し、生成した第2のTxを、連携部に返信することができる。これにより、情報処理装置100は、連携部による対象のBCに対する攻撃を防止し易くすることができる。
【0263】
情報処理装置100によれば、既存のトークンが存在しないと判定した場合、検証部を介して、新規のトークンを記憶するよう対象のBCを制御し、管理情報を更新することができる。これにより、情報処理装置100は、検証部で署名の正当性を検証可能にすることができ、連携部による対象のBCに対する攻撃を防止し易くすることができる。
【0264】
情報処理装置100によれば、既存のトークンが存在しないと判定した場合、検証部を介して、新規のトークンを記憶するよう対象のBCを制御した結果、新規のトークンを識別する識別子を、対象のBCから受信ことができる。情報処理装置100によれば、受信した新規のトークンを識別する識別子に基づいて、管理情報を更新することができる。これにより、情報処理装置100は、管理情報を適切に更新することができる。
【0265】
情報処理装置100によれば、既存のトークンが存在しないと判定した場合、検証部を介して、新規のトークンを記憶するよう対象のBCを制御した結果、有効となる条件を設定した新規のトークンを識別する識別子を、対象のBCから受信することができる。これにより、情報処理装置100は、管理情報を適切に更新することができる。
【0266】
情報処理装置100によれば、受信した第1のTx、または、受信した第2のTxを、対象のBCに送信する連携部と通信することができる。情報処理装置100によれば、第1のTx、または、第2のTxを受信した際に、有効なトークンが存在すれば、第1のTx、または、第2のTxを実行する対象のBCと通信することができる。これにより、情報処理装置100は、第1のTx、または、第2のTxを、対象のBCが実行可能にすることができる。
【0267】
情報処理装置100によれば、対象のアカウントが、トークンを発行することを許可するアカウントではない場合には、新規のトークンを記憶しない対象のBCと通信することができる。これにより、情報処理装置100は、安全性を向上した対象のBCを制御することができる。
【0268】
情報処理装置100によれば、情報処理装置100とは異なる他のコンピュータに存在する連携部と通信することができる。情報処理装置100によれば、外部に存在する検証部と通信することができる。これにより、情報処理装置100は、信頼点の数を増加することができ、他のコンピュータによる対象のBCに対する攻撃を防止し易くすることができる。
【0269】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0270】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0271】
(付記1)ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
制御部を有することを特徴とする情報処理装置。
【0272】
(付記2)前記制御部は、
前記既存のトークンが存在しないと判定した場合、前記第1のトランザクションを生成し、署名が正当である場合に前記新規のトークンを発行するよう前記対象のブロックチェーンを制御する検証部を介して、前記新規のトークンを記憶するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信する、ことを特徴とする付記1に記載の情報処理装置。
【0273】
(付記3)前記管理情報は、前記それぞれのアカウントを識別する識別子と、当該アカウントに関する有効なトークンを識別する識別子とを対応付けた対応情報であって、
前記制御部は、
前記対象のブロックチェーンから受信した前記新規のトークンを識別する識別子に基づいて、前記管理情報を更新する、ことを特徴とする付記2に記載の情報処理装置。
【0274】
(付記4)前記制御部は、
前記対象のブロックチェーンにおける前記対象のアカウントに関する有効となる条件を設定した新規のトークンを発行するよう前記対象のブロックチェーンを制御する、ことを特徴とする付記1に記載の情報処理装置。
【0275】
(付記5)前記連携部は、受信した前記第1のトランザクション、または、受信した前記第2のトランザクションを、前記対象のブロックチェーンに送信し、
前記対象のブロックチェーンは、前記第1のトランザクション、または、前記第2のトランザクションを受信した際に、有効なトークンが存在すれば、前記第1のトランザクション、または、前記第2のトランザクションを実行する、ことを特徴とする付記1~4のいずれか一つに記載の情報処理装置。
【0276】
(付記6)前記対象のブロックチェーンは、前記対象のアカウントが、トークンを発行することを許可するアカウントである場合には、前記新規のトークンを発行し、前記対象のアカウントが、トークンを発行することを許可するアカウントではない場合には、前記新規のトークンを発行しない、ことを特徴とする付記2~4のいずれか一つに記載の情報処理装置。
【0277】
(付記7)前記連携部は、前記情報処理装置とは異なる他のコンピュータに存在し、
前記検証部は、外部に存在する、ことを特徴とする付記2~4のいずれか一つに記載の情報処理装置。
【0278】
(付記8)ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0279】
(付記9)ブロックチェーン間を連携する連携部から、対象のブロックチェーンにおける対象のアカウントに対するトランザクションを生成するよう要求する処理依頼を受信し、
前記対象のブロックチェーンにおける1以上のアカウントのそれぞれのアカウントに関する有効なトークンの存否を表す管理情報と、受信した前記処理依頼とに基づいて、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な既存のトークンが存在するか否かを判定し、
前記既存のトークンが存在しないと判定した場合、前記対象のアカウントに関する署名を付与した、前記対象のブロックチェーンにおける前記対象のアカウントに対する第1のトランザクションを生成し、前記対象のブロックチェーンにおける前記対象のアカウントに関する有効な新規のトークンを発行するよう前記対象のブロックチェーンを制御し、前記管理情報を更新し、生成した前記第1のトランザクションを、前記連携部に返信し、
前記既存のトークンが存在すると判定した場合、前記対象のブロックチェーンにおける前記対象のアカウントに対する第2のトランザクションを生成し、生成した前記第2のトランザクションを、前記連携部に返信する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【符号の説明】
【0280】
100 情報処理装置
101,1210 作成装置
102,1220 検証装置
110 連携部
120 BC
130 管理情報
200 連携処理システム
201 ネットワーク
210 クライアント装置
220 連携用BC
230,231 連携先BC
240 連携制御装置
241,242,1110 連携エンジン
250,251,252,1120,1130 連携用BCノード
260,261,262,1200 連携先BCノード
301 スマートコントラクト
302 ルール
310 証券管理BC
311,312 証券口座
320 口座管理BC
321,322 金融口座
400 バス
401 CPU
402 メモリ
403 ネットワークI/F
404 記録媒体I/F
405 記録媒体
500 第1記憶部
501 第1取得部
502 第1判定部
503 作成部
504 更新部
505 第1出力部
510 第2記憶部
511 第2取得部
512 第2判定部
513 発行部
514 第2出力部
1100 クライアントアプリケーション
1101 リクエスト送受信部
1111 連携実行モジュール
1112 連携用BC通信部
1113 連携先BC通信部
1114 作成装置通信部
1115 連携用BCTx実行監視モジュール
1116 連携先BCTx実行監視モジュール
1117 Tx作成依頼モジュール
1121 BC連携制御モジュール
1122 連携ルール管理
1123 割り振り順管理
1124 公開鍵管理
1125,1203 分散台帳
1131 ブロック作成部
1201 Tx実行参照部
1202 Tx実行制御部
1204 Tx実行モジュール
1205 有効性検証モジュール
1206 トークン管理モジュール
1207 累積モジュール
1208 制限モジュール
1211,1221 Tx作成部
1212,1222 署名検証部
1213 Tx作成モジュール
1214 キャッシュモジュール
1215 署名鍵管理
1223 検証モジュール
1224 発行モジュール