(57)【要約】      （修正有）【課題】ブロックチェーンにおいて暗号化されたデータを扱う場合に、暗号化されたデータの受け渡しと所定のビジネスロジックの実行とを両立する情報処理方法を提供する。【解決手段】ブロックチェーンサーバは、アプリケーションサーバにおいてトランザクション鍵を用いてトランザクションのデータを暗号化することで生成されたスマートコントラクトパラメータと、トランザクション鍵とを、アプリケーションサーバから受信し、受信されたトランザクション鍵を用いて、スマートコントラクトパラメータからトランザクションのデータを復号化し、復号化されたトランザクションのデータに対してビジネスロジックを実行し、トランザクション鍵を用いてビジネスロジックの実行結果を暗号化し、暗号化された実行結果をブロックチェーンに記録する。【選択図】図５
2020099010.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信する情報処理装置において各工程が実行される情報処理方法であって、
前記外部装置において共通鍵を用いてトランザクションのデータを暗号化することで生成された第１データと、前記共通鍵とを、前記外部装置から受信する受信工程と、
前記受信工程において受信された前記共通鍵を用いて、前記第１データから前記トランザクションのデータを復号化する復号化工程と、
前記第１データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理工程と、
前記共通鍵を用いて前記所定のビジネスロジックの実行結果を暗号化する暗号化工程と、
前記暗号化された実行結果を、ブロックチェーンに記録する記録工程と、を有する、ことを特徴とする情報処理方法。
【請求項２】
前記受信工程では、更に、前記トランザクションのデータを参照可能なエンティティに関連付けられた公開鍵を用いて、前記外部装置において前記共通鍵を暗号化することで生成された第２データを、前記外部装置から受信し、
前記記録工程では、更に、前記第２データを前記ブロックチェーンに記録する、ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記受信工程では、前記共通鍵を、前記ブロックチェーンに記録されないように区別されたフィールドを用いて受信する、ことを特徴とする請求項１または２に記載の情報処理方法。
【請求項４】
前記共通鍵は、前記情報処理装置に関連付けられた公開鍵を用いて、前記外部装置において暗号化され、
前記受信工程では、前記情報処理装置に関連付けられた公開鍵を用いて暗号化された状態の前記共通鍵を、前記ブロックチェーンに記録されるフィールドを用いて受信する、ことを特徴とする請求項１または２に記載の情報処理方法。
【請求項５】
前記処理工程では、前記第１データから復号化された前記トランザクションのデータに対して、スマートコントラクトを用いて前記所定のビジネスロジックを実行し、前記実行結果を出力する、ことを特徴とする請求項１から４のいずれか１項に記載の情報処理方法。
【請求項６】
前記共通鍵は、トランザクションごとに生成される鍵である、ことを特徴とする請求項１から５のいずれか１項に記載の情報処理方法。
【請求項７】
ブロックチェーンに記録されたデータを参照する情報処理装置において各工程が実行される情報処理方法であって、
トランザクションのデータを参照可能なエンティティに関連付けられた公開鍵を用いて共通鍵を暗号化することで生成された第１データを、前記ブロックチェーンから読み出す第１読出工程と、
前記第１読出工程において読み出された前記第１データを、前記トランザクションのデータを参照可能な前記エンティティに送信する送信工程と、
前記トランザクションのデータを参照可能な前記エンティティから、前記共通鍵を受信する受信工程と、
前記共通鍵を用いて前記トランザクションのデータを暗号化することで生成された第２データを、前記ブロックチェーンから読み出す第２読出工程と、
前記受信工程において受信された前記共通鍵を用いて前記第２データから前記トランザクションのデータを復号化する復号化工程と、
前記第２データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理工程と、を有する、ことを特徴とする情報処理方法。
【請求項８】
外部装置と通信する情報処理装置であって、
前記外部装置において共通鍵を用いてトランザクションのデータを暗号化することで生成された第１データと、前記共通鍵とを、前記外部装置から受信する受信手段と、
前記受信手段により受信された前記共通鍵を用いて、前記第１データから前記トランザクションのデータを復号化する復号化手段と、
前記第１データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理手段と、
ブロックチェーンに記録するために、前記共通鍵を用いて前記所定のビジネスロジックの実行結果を暗号化する暗号化手段と、を有する、ことを特徴とする情報処理装置。
【請求項９】
ブロックチェーンに記録されたデータを参照する情報処理装置であって、
共通鍵を用いてトランザクションのデータを暗号化することで生成された第１データと、前記トランザクションのデータを参照可能なエンティティに関連付けられた公開鍵を用いて、前記共通鍵を暗号化することで生成された第２データとを、前記ブロックチェーンから読み出す読出手段と、
前記読出手段により読み出された前記第２データを、前記トランザクションのデータを参照可能な前記エンティティに送信する送信手段と、
前記トランザクションのデータを参照可能な前記エンティティから、前記共通鍵を受信する受信手段と、
前記受信手段により受信された前記共通鍵を用いて前記第１データから前記トランザクションのデータを復号化する復号化手段と、
前記第１データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理手段と、を有する、ことを特徴とする情報処理装置。
【請求項１０】
第１情報処理装置と第２情報処理装置とで構成される情報処理システムであって、
第１情報処理装置は、
共通鍵を生成する生成手段と、
生成された前記共通鍵を用いてトランザクションのデータを暗号化することで第１データを生成する第１暗号化手段と、
前記第１データと、前記共通鍵とを、前記第２情報処理装置に送信する送信手段と、を有し、
前記第２情報処理装置は、
前記第１データと前記共通鍵とを、前記第１情報処理装置から受信する受信手段と、
前記受信手段により受信された前記共通鍵を用いて、前記第１データから前記トランザクションのデータを復号化する復号化手段と、
前記第１データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理手段と、
ブロックチェーンに記録するために、前記共通鍵を用いて前記所定のビジネスロジックの実行結果を暗号化する第２暗号化手段と、を有する、ことを特徴とする情報処理システム。
【請求項１１】
第１情報処理装置と第２情報処理装置とで構成される情報処理システムであって、
ブロックチェーンに記録されたデータを参照する前記第１情報処理装置は、
共通鍵を用いてトランザクションのデータを暗号化することで生成された第１データと、前記トランザクションのデータを参照可能な前記第２情報処理装置に関連付けられた公開鍵を用いて、前記共通鍵を暗号化することで生成された第２データとを、前記ブロックチェーンから読み出す読出手段と、
前記読出手段により読み出された前記第２データを、前記第２情報処理装置に送信する第１送信手段と、
前記共通鍵を、前記第２情報処理装置から受信する第１受信手段と、
前記第１受信手段により受信された前記共通鍵を用いて前記第１データから前記トランザクションのデータを復号化する第１復号化手段と、
前記第１データから復号化された前記トランザクションのデータに対して所定のビジネスロジックを実行して、前記所定のビジネスロジックの実行結果を出力する処理手段と、を有し、
前記第２情報処理装置は、
前記第１情報処理装置において読み出された前記第２データを、前記第１情報処理装置から受信する第２受信手段と、
前記第２情報処理装置に関連付けられた秘密鍵を用いて前記第２データから前記共通鍵を復号化する第２復号化手段と、
復号化された前記共通鍵を、前記第１情報処理装置に送信する第２送信手段と、を有することを特徴とする情報処理システム。
【請求項１２】
情報処理装置のプロセッサに請求項１から７のいずれか１項に記載の情報処理方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理方法、情報処理装置、プログラムならびに情報処理システムに関する。
【背景技術】
【０００２】
近年、いくつかのトランザクションのデータとハッシュ値等とを含むデータを１つのブロックとして生成し、生成したブロックをチェーン状に連結したうえで複数のノード間で共有する、ブロックチェーンが知られている。ブロックチェーンは、その特性から改ざん不可能な情報共有プラットフォームとして期待されている。しかし、ブロックチェーンは、複数のノード間でデータを共有するため、あるノードで記録されたデータは他のノードと共有されて閲覧可能になる。すなわち、例えばユーザ間、組織間、或いは企業間でやり取りするデータを扱う場合、データの機密性の確保が課題となる場合がある。
【０００３】
このような課題に対し、特許文献１は、スマートフォン等の装置がブロックチェーンに新規ブロックを追加する際に、共通鍵により暗号化したトランザクションのデータを、参照可能者の公開鍵により共通鍵を暗号化したデータと記録する技術を提案している。特許文献１で提案された技術を用いることにより、ブロックチェーンで共有されるデータを参照可能者のみが復号化して参照することが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１９５６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１に記載のように各携帯端末がノードとなるブロックチェーンのシステムとは異なり、サービス等を提供する企業等のアプリケーションサーバからブロックチェーンのノードにアクセスするシステムを構築する場合がある。すなわち、ノード上で動作するブロックチェーンサーバが、ブロックチェーンクライアント（例えばアプリケーションサーバ）からの要求を受信する。そして、ブロックチェーンサーバ上で動作するスマートコントラクトプログラムにより所定のビジネスロジックを実行し、所定のデータをブロックチェーンに記録する。
【０００６】
このようなシステムでは、ブロックチェーンクライアントからスマートコントラクトに引き渡されるデータがブロックチェーンに記録されるように構成されるものがある。このようなシステムで秘匿化の必要なデータを扱う場合、ブロックチェーンクライアントから引き渡されるデータは予め暗号化されている必要がある。一方、スマートコントラクトで所定のビジネスロジックを実行できるようにするためには、データを復号化する必要があり、システム内の鍵の扱いが課題となる。
【０００７】
本発明は、上記課題に鑑みてなされ、その目的は、ブロックチェーンにおいて暗号化されたデータを扱う場合に、暗号化されたデータの受け渡しと所定のビジネスロジックの実行とを両立する技術を実現することである。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の情報処理方法は以下の構成を備える。すなわち、外部装置と通信する情報処理装置において各工程が実行される情報処理方法であって、外部装置において共通鍵を用いてトランザクションのデータを暗号化することで生成された第１データと、共通鍵とを、外部装置から受信する受信工程と、受信工程において受信された共通鍵を用いて、第１データからトランザクションのデータを復号化する復号化工程と、第１データから復号化されたトランザクションのデータに対して所定のビジネスロジックを実行して、所定のビジネスロジックの実行結果を出力する処理工程と、共通鍵を用いて所定のビジネスロジックの実行結果を暗号化する暗号化工程と、暗号化された実行結果を、ブロックチェーンに記録する記録工程と、を有する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ブロックチェーンにおいて暗号化されたデータを扱う場合に、暗号化されたデータの受け渡しと所定のビジネスロジックの実行とを両立する技術を実現することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る情報処理システムの概要を説明する図
【図２】実施形態１に係る情報処理装置の一例としてのブロックチェーンサーバの機能構成例を示すブロック図
【図３】実施形態１に係る情報処理装置の一例としてのアプリケーションサーバの機能構成例を示すブロック図
【図４】実施形態１に係るブロックチェーンサーバのソフトウェア構成例とブロックチェーンの構成例とを模式的に示す図
【図５】実施形態１に係る書込処理における、アプリケーションサーバとブロックチェーンサーバのそれぞれの動作を示すフローチャート
【図６】実施形態１に係る読出処理における、アプリケーションサーバとブロックチェーンサーバのそれぞれの動作を示すフローチャート
【図７】実施形態２に係る書込処理における、アプリケーションサーバとブロックチェーンサーバのそれぞれの動作を示すフローチャート
【図８】実施形態２に係る読出処理における、アプリケーションサーバとブロックチェーンサーバのそれぞれの動作を示すフローチャート
【発明を実施するための形態】
【００１１】
（実施形態１）
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。
【００１２】
＜ブロックチェーンシステムの構成例＞
図１を参照して、本実施形態に係る情報処理システムの一例としてのブロックチェーンシステム１００の構成例について説明する。ブロックチェーンシステム１００は、情報処理装置の一例としての、ブロックチェーンサーバ１５０ａ〜１５０ｎと、情報処理装置の一例としてのアプリケーションサーバ１１０ａ〜１１０ｂとを含む。これらの情報処理装置の台数は例示であって、これらの数に限定されるものではない。ブロックチェーンサーバ１５０ａ〜ブロックチェーンサーバ１５０ｎはそれぞれが別個のノード上で動作するブロックチェーンサーバを示すが、これらを特に区別しない場合は単にブロックチェーンサーバ１５０という。ブロックチェーンサーバ１５０ａ〜１５０ｎはＰ２Ｐネットワークによって他のブロックチェーンサーバと通信可能である。詳細は後述するが、ブロックチェーンサーバ１５０は、アプリケーションサーバ１１０から受信したトランザクション（例えば企業Ａから企業ＢにＸＸ円支払う）の内容に基づいてスマートコントラクトを実行する。そして、その実行結果について、複数のブロックチェーンサーバ１５０でコンセンサスアルゴリズムに基づき合意をとり、ブロックチェーンを更新する。また、ブロックチェーンサーバ１５０は、ブロックチェーンに格納されているトランザクションのデータを読み出して、アプリケーションサーバ１１０へ送信することができる。
【００１３】
アプリケーションサーバ１１０は、図１に示す例では、組織Ａが管理する組織Ａアプリケーションサーバ１１０ａと組織Ｂが管理する組織Ｂアプリケーションサーバ１１０ｂとを含む（特に区別しない場合には単にアプリケーションサーバ１１０という）。アプリケーションサーバ１１０は、ブロックチェーンクライアントとして動作し、各アプリケーションサーバ１１０は、組織や企業ごとに管理される。なお、アプリケーションサーバをエンティティという場合がある。また、ブロックチェーンサーバ１５０ａ〜１５０ｎも、例えば、組織や企業ごとに管理されてよい。
【００１４】
アプリケーションサーバ１１０は、通信装置１３０ａ或いは通信装置１３０ｂと有線又は無線ネットワークを介して通信可能である（通信装置についても、特に区別しない場合には単に通信装置１３０という）。アプリケーションサーバ１１０は、通信装置１３０からのデータに基づいてトランザクションを生成したり、通信装置１３０が閲覧するトランザクションのデータをクライアントへ送信したりする。通信装置１３０は、例えばスマートフォンやパーソナルコンピュータを含む。また、アプリケーションサーバ１１０は、有線又は無線ネットワークを介して、ブロックチェーンサーバ１５０ａ〜１５０ｎのいずれかと通信可能である。ブロックチェーンサーバ１５０の間や、アプリケーションサーバ１１０とブロックチェーンサーバ１５０との間は、セキュアなプロトコルで通信される。
【００１５】
アプリケーションサーバ１１０は、通信装置１３０からトランザクション（例えば企業Ａから企業ＢにＸＸ円支払う）の実行に対するリクエストを受けると、ブロックチェーンサーバ１５０に当該トランザクションを実行させるためのパラメータを生成する。そして、このパラメータをスマートコントラクトパラメータとしてブロックチェーンサーバ１５０ａ〜１５０ｎのいずれかに送信する。なお、スマートコントラクトパラメータは、ブロックチェーンサーバ１５０のスマートコントラクトを呼び出す際のパラメータである。また、スマートコントラクトは、アプリケーションサーバからのデータに応じてブロックチェーンサーバ１５０側でビジネスロジックを実行するためのプログラムである。
【００１６】
ブロックチェーンサーバ１５０は、スマートコントラクトパラメータを受信すると、スマートコントラクトを実行して所定のビジネスロジックを実行し、トランザクションとその実行結果とをブロックチェーンに書き込む。所定のビジネスロジックは、例えば、企業Ａから企業Ｂへ仮想的通貨の送金を行ったうえで残金を更新するような処理でもよい。或いは、（実際の支払いは不図示の金融システムによって実行されるが）企業Ａから企業Ｂへの支払いの記録と残金の更新を行うものであってもよい。なお、トランザクションは、支払いに限らず、口座振替のデータや当座預金の口座に係る取引データを対象としてもよい。また、これらの金融機関で取り扱うデータに限らず、秘匿化を要するデータであれば個人の健康に関するデータなど他のデータを対象とするものであってもよい。
【００１７】
（ブロックチェーンシステムにおいて暗号化データを扱う際の課題）
ブロックチェーンシステム１００を構成する各装置について説明する前に、ブロックチェーンにおいて暗号化データを扱う際の課題について説明する。ブロックチェーンサーバ１５０では、スマートコントラクトの呼び出し時のデータ（すなわちスマートコントラクトパラメータ）がブロックチェーンに記録される場合がある。このため、ブロックチェーンに記録されるデータを秘匿化する必要がある場合には、アプリケーションサーバ１１０側でデータを暗号化しておく必要がある。一方、ブロックチェーンサーバ１５０側でスマートコントラクトを実行するためにアプリケーションサーバ１１０からのデータを一旦復号化する必要があり、また、ビジネスロジックの実行結果も暗号化してブロックチェーンに書き込む必要がある。
【００１８】
加えて、ブロックチェーンサーバ１５０におけるスマートコントラクトの実行結果は、コンセンサスを得るブロックチェーンサーバ間で一致する必要がある。このため、スマートコントラクト内で使用可能な暗号アルゴリズムに制約がある。すなわち、暗号化後のデータが複数のサーバ間で一致するように処理の同一性を担保する観点から、原則としてブロックチェーン以外のリポジトリの参照結果を用いるような処理を行うことができない。例えば、ブロックチェーン以外の外部サービスや、ローカルのファイルシステムや環境変数、乱数などを複数のサーバで参照した場合には、処理結果が同一であることが保証されないため、これらの値を用いる暗号アルゴリズムを採用することができない。このように、スマートコントラクトの中で暗号アルゴリズムを用いる場合、その鍵管理が課題となる。
【００１９】
このような課題に対し、例えば、単一の共通鍵を用いる場合には、ブロックチェーンサーバ間で共通鍵のやりとりが必要となる。しかし、仮にこの鍵が流出した場合、既に分散台帳に記録されている広範囲のデータが危険にさらされることになる。一般的な暗号化データの管理では、鍵が流出した場合に鍵を変更してデータを暗号化し直す対応が可能な場合がある。しかし、ブロックチェーンでは、（例えばコンセンサスアルゴリズムやハッシュ値を用いたブロックの構成などの耐改ざん性を向上させるための仕組みにより）過去のデータを、変更した鍵で再暗号化して上書きすることは不可能である。
【００２０】
他方、トランザクションごとに鍵を生成する場合、ブロックチェーンに記録したトランザクションの数だけ鍵を管理する必要があるため、そのような鍵の管理をどのように行うかが課題となる。以下、当該課題を解決するための実施形態について具体的に説明する。
【００２１】
＜ブロックチェーンサーバの構成＞
次に、ブロックチェーンサーバ１５０の構成について、図２を参照して説明する。なお、説明する機能ブロックの各々は、統合されまたは分離されてもよく、また説明する機能が別のブロックで実現されてもよい。また、各機能ブロックはハードウェアとして説明するものがソフトウェアで実現されてもよく、その逆であってもよい。更に、ブロックチェーンサーバ１５０がハードウェアを用いて構成される例に説明するが、仮想マシンとして実現されてもよい。
【００２２】
通信部２０１は、ネットワークを介してアプリケーションサーバ１１０又は他のブロックチェーンサーバ１５０と通信する通信回路を含む。制御部２０２によって処理された情報をアプリケーションサーバ１１０に送信したり、制御部２０２によって処理される情報を通信装置１３０等から受信したりする。
【００２３】
制御部２０２は、中央演算装置であるＣＰＵ２１０とＲＡＭ２１１とを含む。制御部２０２は、記録部２０３に記憶されたプログラムをＲＡＭ２１１に展開、実行することにより、制御部２０２内部の各部の動作を制御したり、ブロックチェーンサーバ１５０の各部の動作を制御したりする。また、制御部２０２は、後述するように、ノードプロセスを実行して、スマートコントラクトを実行したり、ブロックチェーンへアクセスしたりする。ＲＡＭ２１１は、例えばＤＲＡＭ等の揮発性の記憶媒体を含み、制御部２０２がプログラムを実行するためのパラメータや処理結果等を一時的に記憶する。
【００２４】
記録部２０３は、例えば半導体メモリ或いはハードディスク等の不揮発性の記録媒体を含み、ブロックチェーンサーバ１５０の動作に必要な設定値、プログラム、およびブロックチェーンのデータを保持する。ブロックチェーンの構成については後述するが、ブロックチェーンは、複数のトランザクションのデータ等を格納したブロックをチェーン状に繋げた構成で保持されている。各トランザクションのデータは暗号化された状態でブロックチェーンに格納される（実際にはトランザクションごとに存在するが、便宜上、暗号化済データ２２１として表す）。また、各トランザクションのデータは、トランザクションごとに生成される共通鍵（Ｔｘ鍵という）を用いて暗号化される。このＴｘ鍵も、後述するように、暗号化されてブロックチェーンに格納される（実際にはトランザクションごとに存在するが、便宜上、暗号化済Ｔｘ鍵２２２として表す）。
【００２５】
アプリケーション要求取得部２１２は、アプリケーションサーバ１１０から、トランザクションの書き込み要求、鍵取得要求、およびデータ取得要求などの要求信号を受信して、要求信号に含まれるパラメータを取得する。トランザクションの書き込み要求は、トランザクションをブロックチェーンに書き込む処理（書込処理）を開始させるための要求である。一方、鍵取得要求とデータ取得要求は、ブロックチェーンからトランザクションのデータを読み出す処理（読出処理）において、アプリケーションサーバ１１０から送信される。これらの要求信号については後述する。
【００２６】
暗号化復号化処理部２１３は、アプリケーションサーバ１１０から受信したトランザクションのデータや鍵、ブロックチェーンから読み出したトランザクションのデータや鍵、あるいはスマートコントラクトの実行結果を、暗号化したり、復号化したりする。ビジネスロジック実行部２１４は、後述するように、スマートコントラクトを実行するためのコンテナ（例えば、各コンテナは仮想マシンで実現される）上で、スマートコントラクトを実行する。ビジネスロジック実行部２１４は、暗号化復号化処理部２１３によって復号化されたトランザクションのデータの内容に基づいて、スマートコントラクトに記述されているビジネスロジックを実行し、その実行結果を出力する。なお、以下の実施形態では、コンテナ上でスマートコントラクトを実行する場合を例に説明するが、スマートコントラクトの実行はコンテナ上での実行に限定されない。
【００２７】
ブロック書込部２１５は、暗号化されたトランザクションのデータと、暗号化されたスマートコントラクトの実行結果と、暗号化された鍵とを、ブロックチェーン２２０に書き込む（すなわち記録する）。また、これらのデータをブロックチェーン２２０に書き込むための一連の処理（例えば、コンセンサスアルゴリズムの実行等）を行う。
【００２８】
ブロック読出部２１６は、ブロックチェーン２２０から、暗号化されたトランザクションのデータと、暗号化されたスマートコントラクトの実行結果と、暗号化された鍵とを読み出す。
【００２９】
図４には、ブロックチェーンサーバ１５０のソフトウェア構成例とブロックチェーン２２０の構成例とを模式的に示している。ノードプロセス４０１は、ブロックチェーンサーバ１５０におけるスマートコントラクトの実行やブロックチェーンへのアクセス（書き込みおよび読み出し）を制御するプロセスであり、制御部２０２によって実行される。
【００３０】
ブロックチェーンにチェーン状に記録される個々のブロック４２５は、内部に、トランザクション（群）のハッシュ値４２１と、タイムスタンプ等の情報４２２、前のブロックのハッシュ値４２３を含む。これらの４１２〜４２３のハッシュ値は、次のブロック（ｎ＋１）における、前のブロックのハッシュ値４２３に格納される。ブロックチェーンでは、このような構成により改ざんを困難にしている。ハッシュ値４２１は、ブロックに含まれる複数のトランザクションに基づいて計算されるハッシュ値である。そのほか、ブロック４２５には、個々のトランザクションの記録と実行結果を表す情報４２４が格納される。この情報４２４には、個々のトランザクションの内容として、例えば、スマートコントラクトパラメータや、その実行結果が含まれる。すなわち、ブロック４２５には、アプリケーションサーバ１１０から送信される、暗号化されたトランザクションのデータや、暗号化された鍵、暗号化されたビジネスロジックの実行結果が含まれる。なお、ブロックチェーン２２０は、ブロック４２５がチェーン状に構成されるブロックチェーンとは別に、データをキー・バリューで管理する不図示の分散ＤＢ（ワールドステートともいわれる）を備えてもよい。この場合、分散ＤＢは、例えば、スマートコントラクトの実行結果を格納する。例えば、企業Ａから企業ＢへＸＸ円を支払うトランザクションをスマートコントラクトで実行した場合、分散ＤＢは、キーを「企業Ａ」、バリューを「残高１００億円」として保持する。このように分散ＤＢを用いれば、過去の取引履歴を用いて再計算すること無く、現在の状態を取得することができ、アプリケーションサーバ１１０から残高照会などの、データの読み出し要求に対して、応答速度が高速化される。
【００３１】
スマートコントラクト実行用コンテナ４１０は、スマートコントラクトを実行するためのコンテナ（例えば、各コンテナは仮想マシンで実現される）である。スマートコントラクト４１１は、トランザクションの内容に基づいて、例えば、支払、残高照会、口座振替といった目的ごとに関数化された処理を実行するプログラムである。
【００３２】
＜アプリケーションサーバ１１０の構成＞
更に、アプリケーションサーバ１１０の構成について、図３を参照して説明する。なお、説明する機能ブロックの各々は、統合されまたは分離されてもよく、また説明する機能が別のブロックで実現されてもよい。また、各機能ブロックはハードウェアとして説明するものがソフトウェアで実現されてもよく、その逆であってもよい。更に、アプリケーションサーバ１１０がハードウェアを用いて構成される例に説明するが、仮想マシンとして実現されてもよい。
【００３３】
通信部３０１は、ネットワークを介してブロックチェーンサーバ１５０ａ〜１５０ｎや、通信装置１３０と通信する通信回路を含む。制御部３０２によって処理された情報を通信装置１３０やブロックチェーンサーバ１５０に送信したり、制御部３０２によって処理される情報を通信装置１３０やブロックチェーンサーバ１５０から受信したりする。
【００３４】
制御部３０２は、中央演算装置であるＣＰＵ３１０とＲＡＭ３１１とを含む。制御部３０２は、記録部３０３に記憶されたプログラムをＲＡＭ３１１に展開、実行することにより、制御部３０２内部の各部の動作を制御したり、アプリケーションサーバ１１０の各部の動作を制御したりする。ＲＡＭ３１１は、例えばＤＲＡＭ等の揮発性の記憶媒体を含み、制御部３０２がプログラムを実行するためのパラメータや処理結果等を一時的に記憶する。
【００３５】
記録部３０３は、例えば半導体メモリ或いはハードディスク等の不揮発性の記録媒体を含み、アプリケーションサーバ１１０の動作に必要な設定値、およびプログラムのデータを保持する。アプリケーションサーバ１１０ａの記録部３０３は、アプリケーションサーバ１１０ａ（すなわち自エンティティ）に関連付けられた鍵ペア３２１を保持する。この鍵ペアは、公開鍵と秘密鍵のペアである。例えば、アプリケーションサーバ１１０ａの公開鍵は、ブロックチェーンサーバ１５０のそれぞれや他のアプリケーションサーバ１１０ｂ〜１１０ｎに公開されている。これらのサーバにおいて当該公開鍵を用いて共通鍵が暗号化された場合、アプリケーションサーバ１１０ａ（自エンティティ）の秘密鍵を用いて復号化する場合にのみ共通鍵を取得することができる。また、記録部３０３は、アプリケーションサーバ１１０ｂ〜１１０ｎ（他のエンティティ）の公開鍵３２２を保持する。なお、記録部３０３は、自エンティティの秘密鍵を保持する必要があるが、自エンティティの公開鍵や他のエンティティの公開鍵は必要に応じて外部装置から取得してもよい。
【００３６】
鍵取得部３１２は、トランザクションごとに生成される共通鍵（すなわちＴｘ鍵）を生成する。暗号化復号化処理部３１３は、鍵取得部３１２で生成された共通鍵やトランザクションを暗号化したり、ブロックチェーンサーバ１５０から受信した暗号化された鍵を復号化したりする。
【００３７】
アプリケーション要求生成部３１４は、必要なパラメータを格納して、ブロックチェーンサーバ１５０へ送信するトランザクションの書き込み要求、鍵取得要求、およびデータ取得要求などの要求信号を生成する。アプリケーション要求生成部３１４は、トランザクションのデータをブロックチェーンに書き込もうとする場合、トランザクションの書き込み要求を生成する。例えば、共通鍵（Ｔｘ鍵）を用いてトランザクションのデータを暗号化することで生成されたデータ（暗号化済データ）と、共通鍵と、共通鍵を各エンティティの公開鍵を用いて暗号化したデータ（暗号化済Ｔｘ鍵）と、を格納して、トランザクションの書き込み要求を生成する。
【００３８】
このとき、アプリケーション要求生成部３１４は、スマートコントラクトパラメータに、暗号化済データ、共通鍵、暗号化済Ｔｘ鍵を格納する。本実施形態のコントラクトパラメータは、ブロックチェーンに記録されるフィールドと、ブロックチェーンに記録されないように区別されたフィールド（一時フィールドともいう）とを含むように構成される。アプリケーション要求生成部３１４は、暗号化済データと暗号化済Ｔｘ鍵とを、ブロックチェーンに記録されるフィールドに格納し、一方、共通鍵を一時フィールドに格納する。一時フィールドは、スマートコントラクトに引き渡されるとその場で消費されて残らないように扱われる。本実施形態では、一時フィールドのデータは、アプリケーションサーバ１１０とブロックチェーンサーバ１５０との間で共通鍵を共有するためのデータとして機能する。
【００３９】
一方、アプリケーション要求生成部３１４は、鍵取得要求とデータ取得要求を、ブロックチェーンからトランザクションのデータを読み出す処理（読出処理）において生成する。これらの要求信号の詳細については後述する。
【００４０】
結果送信部３１５は、ブロックチェーンサーバ１５０から、トランザクションの書き込みや読み出したデータに対するビジネスロジックの実行が終了した場合に、処理の完了通知と処理結果とを受信する。そして、通信装置１３０に表示できるように処理結果を通信装置１３０に送信する。
【００４１】
＜書込処理におけるアプリケーションサーバ１１０の動作＞
次に、図５（ａ）を参照して、アプリケーションサーバ１１０における書込処理の動作について説明する。なお、本処理は、制御部３０２のＣＰＵ３１０が記録部３０３に記録されるプログラムを実行することにより実現される。また、本処理は、例えば、企業Ａのユーザが通信装置１３０ａに表示されているＷｅｂページを介して、「企業Ａから企業ＢにＸＸ円支払う」要求を発信し、アプリケーションサーバ１１０が当該要求を受信した場合を例に説明する。
【００４２】
Ｓ５０１において、鍵取得部３１２は、トランザクションのデータを暗号化するための共通鍵（Ｔｘ鍵）を、トランザクションごとに生成する。具体的には、制御部３０２が、通信装置１３０からの要求に基づいて「企業Ａから企業ＢにＸＸ円支払う」を示すトランザクションを作成し、鍵取得部３１２は、生成されたトランザクションを暗号化するためのＴｘ鍵をランダムに生成する。
【００４３】
Ｓ５０２において、暗号化復号化処理部３１３は、共通鍵（Ｔｘ鍵）を用いてトランザクションのデータを暗号化することで暗号化済データを生成する。Ｓ５０３において、暗号化復号化処理部３１３は、共通鍵を各エンティティの公開鍵を用いて暗号化する。例えば、企業Ａのエンティティ（アプリケーションサーバ１１０）の公開鍵を用いて共通鍵を暗号化することで暗号化済Ｔｘ鍵を生成する。暗号化済Ｔｘ鍵は、企業Ａのエンティティ（アプリケーションサーバ１１０）の秘密鍵によってのみ復号化される。
【００４４】
Ｓ５０４において、アプリケーション要求生成部３１４は、スマートコントラクトパラメータを含む、トランザクションの書き込み要求を生成し、当該書き込み要求をブロックチェーンサーバ１５０へ送信する。上述のように、トランザクションの書き込み要求のスマートコントラクトパラメータには、暗号化済データ、共通鍵、暗号化済Ｔｘ鍵が格納されており、このうち共通鍵は一時フィールドに格納される。
【００４５】
Ｓ５０５において、結果送信部３１５は、書き込み後の処理を行う。例えば、結果送信部３１５は、ブロックチェーンサーバ１５０においてトランザクションの書き込みや読み出したデータに対するビジネスロジックの実行が終了した場合に、ブロックチェーンサーバ１５０から処理の完了通知と処理結果とを受信する。そして、通信装置１３０に表示するための処理結果を作成して、通信装置１３０に送信する。制御部３０２は、処理結果を通信装置１３０へ送信すると、本一連の動作を終了する。
【００４６】
＜書込処理におけるブロックチェーンサーバ１５０の動作＞
次に、図５（ｂ）を参照して、ブロックチェーンサーバ１５０における書込処理の動作について説明する。なお、本処理は、制御部２０２のＣＰＵ２１０が記録部２０３に記録されるプログラムを実行することにより実現される。また、本処理は、Ｓ５０４において送信された、トランザクションの書き込み要求をアプリケーションサーバ１１０から受信した場合に開始される。
【００４７】
Ｓ５１１において、アプリケーション要求取得部２１２は、スマートコントラクトパラメータを含むトランザクションの書き込み要求を受信する。Ｓ５１２において、暗号化復号化処理部２１３は、スマートコントラクトパラメータに含まれる共通鍵（Ｔｘ鍵）を用いて、スマートコントラクトパラメータに含まれる暗号化済データからトランザクションのデータを復号化する。
【００４８】
Ｓ５１３において、ビジネスロジック実行部２１４は、暗号化復号化処理部２１３によって復号化されたトランザクションのデータの内容に基づいて、スマートコントラクトに記述されているビジネスロジックを実行し、その実行結果を出力する。例えば、「企業Ａから企業ＢにＸＸ円支払う」のトランザクションについて、企業Ａおよび企業Ｂの現在の残金を取引額に応じて計算し、実行結果として出力する。
【００４９】
Ｓ５１４において、暗号化復号化処理部２１３は、共通鍵（Ｔｘ鍵）を用いて、ビジネスロジックの実行結果を暗号化する。Ｓ５１４において、ブロック書込部２１５は、暗号化されたトランザクションのデータと、暗号化されたスマートコントラクトの実行結果と、暗号化された鍵とを、ブロックチェーン２２０に書き込む（すなわち記録する）。また、コンセンサスアルゴリズムの実行等の、ブロックチェーンへの書き込みに必要な処理を終了すると、アプリケーションサーバ１１０に終了通知を送信する。制御部２０２は、その後、本一連の処理を終了する。
【００５０】
＜読出処理におけるアプリケーションサーバ１１０の動作＞
次に、図６（ａ）を参照して、アプリケーションサーバ１１０における読出処理の動作について説明する。なお、本処理は、制御部３０２のＣＰＵ３１０が記録部３０３に記録されるプログラムを実行することにより実現される。また、本処理は、例えば、企業Ａのユーザが通信装置１３０ａに表示されているＷｅｂページを介して、「企業Ａの現在の残高を参照」を要求し、アプリケーションサーバ１１０が当該要求を受信した場合を例に説明する。
【００５１】
Ｓ６０１において、アプリケーション要求生成部３１４は、通信装置１３０ａからの要求を受信したことに応じて、鍵取得要求を生成し、ブロックチェーンサーバ１５０に送信する。鍵取得要求は、ブロックチェーンサーバ１５０に対して、アプリケーションサーバ１１０（自エンティティ）に関連付けられた公開鍵を用いて暗号化された暗号化済Ｔｘ鍵の送信を要求する命令である。アプリケーション要求生成部３１４は、この鍵取得要求をスマートコントラクトパラメータに格納して、ブロックチェーンサーバ１５０に送信する。
【００５２】
Ｓ６０２において、暗号化復号化処理部３１３は、ブロックチェーンサーバ１５０からＳ６０１で要求した暗号化済Ｔｘ鍵を受信したことに応じて、この暗号化済Ｔｘ鍵から共通鍵（Ｔｘ鍵）を復号化する。具体的には、暗号化復号化処理部３１３は、アプリケーションサーバ１１０（自エンティティ）に関連付けられた秘密鍵を用いて、暗号化済Ｔｘ鍵から共通鍵を復号化する。
【００５３】
Ｓ６０３において、アプリケーション要求生成部３１４は、復号化した共通鍵をブロックチェーンサーバ１５０に送信する。具体的には、アプリケーション要求生成部３１４は、データ取得要求を生成して、ブロックチェーンサーバ１５０に送信する。データ取得要求は、スマートコントラクトパラメータに、ブロックチェーンサーバ１５０に対するデータ取得を要求する命令と、Ｓ６０２で復号化された共通鍵が含まれる。共通鍵は、ブロックチェーンに記録されることを防ぐために、スマートコントラクトパラメータの一時フィールドに格納される。データ取得を要求する命令には、例えば、企業Ａの現在の残高の参照を求める命令が含まれる。
【００５４】
Ｓ６０４において、結果送信部３１５は、読み出し後の処理を行う。例えば、結果送信部３１５は、ブロックチェーンサーバ１５０からビジネスロジックの実行結果を受信したことに応じて、通信装置１３０ａに表示するための処理結果を作成して、通信装置１３０に送信する。結果送信部３１５は、例えば、ブロックチェーンサーバ１５０からの実行結果に基づいて、「企業Ａの現在の残高：ＹＹ円」などと表示するＷｅｂページを通信装置１３０ａに送信する。制御部３０２は、Ｗｅｂページを通信装置１３０へ送信すると、本一連の動作を終了する。
【００５５】
＜読出処理におけるブロックチェーンサーバ１５０の動作＞
次に、図６（ｂ）を参照して、ブロックチェーンサーバ１５０における読出処理の動作について説明する。なお、本処理は、制御部２０２のＣＰＵ２１０が記録部２０３に記録されるプログラムを実行することにより実現される。また、本処理は、Ｓ６０１において送信された鍵取得要求をアプリケーションサーバ１１０から受信した場合に開始される。
【００５６】
Ｓ６１１において、ブロック読出部２１６は、暗号化済Ｔｘ鍵をブロックチェーンから読み出す。具体的には、ブロック読出部２１６は、要求元のアプリケーションサーバ１１０に関連付けられた公開鍵を用いて暗号化された、暗号化済Ｔｘ鍵をブロックチェーンから読み出す。また、Ｓ６１２において、読み出した暗号化済Ｔｘ鍵をアプリケーションサーバ１１０に送信する。
【００５７】
Ｓ６１３において、アプリケーション要求取得部２１２は、アプリケーションサーバ１１０からのデータ取得要求を受信して、そのスマートコントラクトパラメータの一時フィールドから共通鍵を取得する。Ｓ６１４において、ブロック読出部２１６は、暗号化済データ（すなわち共通鍵を用いてトランザクションのデータを暗号化したデータ）をブロックチェーン２２０から読み出す。
【００５８】
Ｓ６１５において、暗号化復号化処理部２１３は、Ｓ６１３で受信した共通鍵を用いて、暗号化済データからトランザクションのデータを復号化する。Ｓ６１６において、ビジネスロジック実行部２１４は、暗号化復号化処理部２１３によって復号化されたトランザクションのデータの内容に基づいて、スマートコントラクトに記述されているビジネスロジックを実行し、その実行結果を出力する。例えば、「企業Ａの現在の残高を参照」のトランザクションについて、企業Ａの残高を演算或いは取得し、実行結果として出力する。ビジネスロジック実行部２１４は、処理が終了すると実行結果を終了通知としてアプリケーションサーバ１１０に送信する。制御部２０２は、終了通知の送信が完了すると、その後本処理を終了する。
【００５９】
上記実施形態では、アプリケーションサーバ１１０とブロックチェーンサーバ１５０とを用いるブロックチェーンシステムについて説明した。このシステムにおいて、アプリケーションサーバ１１０は、共通鍵を用いて暗号化したトランザクションのデータを、ブロックチェーンサーバ１５０に記録するようにした。そして、ブロックチェーンサーバ１５０とアプリケーションサーバ１１０は、共通鍵をやり取りするようにし、受信した共通鍵を用いて復号化したトランザクションのデータにビジネスロジックを適用するようにした。また、ブロックチェーンサーバ１５０がアプリケーションサーバ１１０から共通鍵を受信する際には、ブロックチェーンに記録されない一時フィールドを用いて受信することで、共通鍵をブロックチェーンに記録することなく、受信できるようにした。
【００６０】
このようにすることで、ブロックチェーンにおいて暗号化されたデータを扱う場合に、暗号化されたデータの受け渡しと所定のビジネスロジックの実行とを両立することができる。また、ブロックチェーンサーバ１５０は、暗号化済データをブロックチェーンに記録することで、適切な閲覧権限のある者のみがデータを参照可能になり、例えば、ブロックチェーンサーバの管理者であっても参照することができなくなる。このため、ブロックチェーンに機密データを記録することができ、機密データを扱う場合であってもブロックチェーンによる可用性、耐改ざん性のメリットを受けることができる。更に、アプリケーションサーバ１１０とブロックチェーンサーバ１５０との間でやり取りされる鍵を、トランザクションごとに生成される共通鍵とすることで、仮に共通鍵が流出した場合のリスクを１つのトランザクションに制限することができる。そして、共通鍵は復号化を必要としないため、ブロックチェーンサーバ１５０側の共通鍵の扱いに対する処理負荷を軽減することができる。
【００６１】
また、本実施形態の書込処理および読出処理を用いれば、機密データを記録するブロックチェーンサーバを特定のブロックチェーンサーバに限定する必要がない。このため、データを参照させたくないブロックチェーンサーバとも物理的にデータを共有し、多数のブロックチェーンサーバを用いたシステムの構築が可能である。すなわち、多数のブロックチェーンサーバによる実効的なコンセンサスを実現することができ、ブロックチェーンの可用性、耐改ざん性を活かすことができる。
【００６２】
（実施形態２）
次に、実施形態２について説明する。実施形態１では、トランザクションのデータを暗号化した共通鍵を、スマートコントラクトパラメータの一時フィールドに格納することで、ブロックチェーンサーバ１５０とアプリケーションサーバ１１０との間で共通鍵を共有した。これに対し、本実施形態では、トランザクションのデータを暗号化した共通鍵を、ブロックチェーンサーバに関連付けられた公開鍵で暗号化したうえで、（一時フィールドを用いることなく）ブロックチェーンサーバ１５０に送信する。なお、本実施形態２で用いるブロックチェーンサーバ１５０とアプリケーションサーバ１１０の構成は実質的に同一であり、書込処理および読出処理の一部が異なる。このため、同一または実質的に同一な構成や処理については同一の参照番号を付して重複する説明は省略する。
【００６３】
なお、本実施形態では、ブロックチェーンサーバ１５０の公開鍵と秘密鍵のペアを用いる。このため、ブロックチェーンサーバ１５０は、記録部２０３に、自己のブロックチェーンサーバ１５０の公開鍵と秘密鍵のペアを保持する。一方、アプリケーションサーバ１１０は、記録部３０３に、ブロックチェーンサーバ１５０ａ〜１５０ｎの公開鍵を保持する。
【００６４】
＜書込処理における動作＞
次に、実施形態２に係る書込処理について、図７（ａ）および（ｂ）を参照して説明する。図７（ａ）および（ｂ）は、実施形態１と同様に、それぞれ制御部３０２および制御部２０２がそれぞれのプログラムを実行することにより実現される。
【００６５】
アプリケーションサーバ１１０の制御部３０２は、実施形態１と同様に、Ｓ５０１〜５０３の処理を実行する。
【００６６】
Ｓ７０１において、制御部３０２の暗号化復号化処理部２１３は、共通鍵を各ブロックチェーンサーバの公開鍵を用いて暗号化する。例えば、ブロックチェーンサーバ１５０ａの公開鍵を用いて共通鍵を暗号化することで暗号化済Ｔｘ鍵を生成する。暗号化済Ｔｘ鍵は、ブロックチェーンサーバ１５０ａの秘密鍵によってのみ復号化される。従って、暗号化復号化処理部２１３は、ブロックチェーンサーバ１５０ａ〜１５０ｎの公開鍵を用いて共通鍵を暗号化し、ブロックチェーンサーバ１５０の数に応じた暗号化済Ｔｘ鍵を生成する。
【００６７】
Ｓ７０２において、アプリケーション要求生成部３１４は、スマートコントラクトパラメータを含む、トランザクションの書き込み要求を生成し、当該書き込み要求をブロックチェーンサーバ１５０へ送信する。本実施形態では、トランザクションの書き込み要求のスマートコントラクトパラメータには、暗号化済データと、Ｓ７０１における暗号化により生成された暗号化済データと、Ｓ５０３における暗号化により生成された暗号化済Ｔｘ鍵とが格納される。本実施形態では一時フィールドを用いない。なお、本実施形態では、Ｓ７０１における暗号化により生成された暗号化済データは、アプリケーションサーバ１１０とブロックチェーンサーバ１５０との間で共通鍵を共有するためのデータとして機能する。制御部３０２は、残りのＳ５０５の実行を完了すると、その後処理を終了する。
【００６８】
一方、ブロックチェーンサーバ１５０の制御部２０２は、Ｓ５１１において、アプリケーション要求取得部２１２は、スマートコントラクトパラメータを含むトランザクションの書き込み要求を受信する。
【００６９】
Ｓ７１１において、暗号化復号化処理部２１３は、スマートコントラクトパラメータに含まれる（自ブロックチェーンサーバの公開鍵で暗号化された）暗号化済Ｔｘ鍵から共通鍵（Ｔｘ鍵）を復号化する。但し、暗号化復号化処理部２１３は、自ブロックチェーンサーバの秘密鍵を用いて復号化を行う。そして、復号化により得られた共通鍵を用いて、スマートコントラクトパラメータに含まれる暗号化済データからトランザクションのデータを復号化する。そして、制御部２０２は、実施形態１と同様に、Ｓ５１２〜Ｓ５１５を実行して、その後、本処理を終了する。
【００７０】
＜読出処理における動作＞
次に、実施形態２に係る読出処理について、図８（ａ）および（ｂ）を参照して説明する。図８（ａ）および（ｂ）は、実施形態１と同様に、それぞれ制御部３０２および制御部２０２がそれぞれのプログラムを実行することにより実現される。
【００７１】
アプリケーションサーバ１１０の制御部３０２は、実施形態１と同様に、Ｓ６０１〜６０３の処理を実行して、共通鍵を取得する。次に、Ｓ８０１において、制御部３０２の暗号化復号化処理部２１３は、共通鍵を各ブロックチェーンサーバの公開鍵を用いて暗号化する。例えば、ブロックチェーンサーバ１５０ａ〜１５０ｎの公開鍵を用いて共通鍵をそれぞれ暗号化することで、ブロックチェーンサーバ１５０の数の暗号化済Ｔｘ鍵を生成する。更に、アプリケーション要求生成部３１４は、暗号化した暗号化済Ｔｘ鍵をブロックチェーンサーバ１５０に送信する。具体的には、アプリケーション要求生成部３１４は、データ取得要求を生成して、ブロックチェーンサーバ１５０に送信する。データ取得要求は、スマートコントラクトパラメータに、ブロックチェーンサーバ１５０に対するデータ取得を要求する命令と、ブロックチェーンサーバの公開鍵を用いて暗号化することで生成された暗号化済Ｔｘ鍵が含まれる。暗号化済Ｔｘ鍵は、ブロックチェーンに記録されるフィールドに格納される。アプリケーションサーバ１１０の制御部３０２は、その後、実施形態１と同様にＳ６０４を実行して一連の処理を終了する。
【００７２】
一方、ブロックチェーンサーバ１５０の制御部２０２は、Ｓ６１１〜Ｓ６１２を実施形態１と同様に実行する。そして、Ｓ８０２において、暗号化復号化処理部２１３は、スマートコントラクトパラメータに含まれる（自ブロックチェーンサーバの公開鍵で暗号化された）暗号化済Ｔｘ鍵から共通鍵（Ｔｘ鍵）を復号化する。但し、暗号化復号化処理部２１３は、自ブロックチェーンサーバの秘密鍵を用いて復号化を行う。そして、復号化により得られた共通鍵を用いて、スマートコントラクトパラメータに含まれる暗号化済データからトランザクションのデータを復号化する。そして、制御部２０２は、実施形態１と同様に、Ｓ６１４〜Ｓ６１６を実行して、その後、本処理を終了する。
【００７３】
このように、本実施形態の読出処理では、アプリケーションサーバ１１０において、ブロックチェーンサーバに関連付けられた公開鍵を用いて共通鍵を暗号化した暗号化済Ｔｘ鍵を生成し、この暗号化済Ｔｘ鍵をブロックチェーンサーバに送信するようにした。そして、ブロックチェーンサーバでは、自身に関連付けられている公開鍵を用いて暗号化された暗号化済Ｔｘ鍵を、自身に関連付けられている秘密鍵を用いて共通鍵を得るようにした。このように、本実施形態では、暗号化済Ｔｘ鍵がブロックチェーンに記録されるパラメータとして送信されるものの、暗号化によって保護されているため機密性を確保することができる。例えば、スマートコントラクトパラメータに一時フィールドを設けることができない場合であっても、上述のブロックチェーンの特性を活かしつつ機密データを安全に扱うことができる。
【００７４】
なお、実施形態１のように共通鍵を一時フィールドに格納して送信する方法と、実施形態２のように共通鍵をブロックチェーンサーバ１５０の公開鍵で暗号化する方法とを切り替えるようにしてもよい。例えば、アプリケーションサーバ１１０からの送信されるトランザクションの書き込み要求におけるスマートコントラクトパラメータに、共通鍵をいずれの方法で扱うかを示すフラグを付加してもよい。この場合、当該トランザクションを扱うアプリケーションサーバ１１０とブロックチェーンサーバ１５０は、フラグに基づいて暗号化の方法がいずれであるかを判定し、判定結果に応じて、共通鍵の復号化や取り扱いを制御すればよい。このようにすれば、システムに求められるセキュリティのレベルや性能要件、ストレージの規模などに応じて、システムの動作を切り替えることができる。
【符号の説明】
【００７５】
２０３…記録部、２１２…アプリケーション要求取得部、２１３…暗号化復号化処理部、２１４…ビジネスロジック実行部、２１５…ブロック書込部、２１６…ブロック読出部、３１２…鍵取得部、３１３…暗号化復号化処理部
【図１】
2020099010.tif 000003
【図２】
2020099010.tif 000004
【図３】
2020099010.tif 000005
【図４】
2020099010.tif 000006
【図５】
2020099010.tif 000007
【図６】
2020099010.tif 000008
【図７】
2020099010.tif 000009
【図８】
2020099010.tif 000010