(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-17
(45)【発行日】2025-04-25
(54)【発明の名称】ブロックチェーンベースのアカウンタブルな分散コンピューティングシステム
(51)【国際特許分類】
G06F 11/07 20060101AFI20250418BHJP
【FI】
G06F11/07 151
G06F11/07 140A
G06F11/07 196
(21)【出願番号】P 2023579877
(86)(22)【出願日】2022-01-13
(86)【国際出願番号】 JP2022001874
(87)【国際公開番号】W WO2022224513
(87)【国際公開日】2022-10-27
【審査請求日】2023-09-12
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】チウ,チ-チュン・マイケル
(72)【発明者】
【氏名】カラビック,ウロス
(72)【発明者】
【氏名】ゴールドスミス,アブラハム
【審査官】西間木 祐紀
(56)【参考文献】
【文献】米国特許出願公開第2021/0109776(US,A1)
【文献】特表2020-522927(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
許可型ブロックチェーンネットワークへのアクセスを有するそれぞれ異なるネットワーク化されたコンピュータでアカウンタブルな分散コンピューティングシステムを形成するための、ブロックチェーン対応のネットワーク化されたコンピュータであって、前記ブロックチェーン対応のネットワーク化されたコンピュータは、少なくとも1つのプロセッサと、命令を格納したメモリとを備え、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記ネットワーク化されたコンピュータに、
スマートコントラクトをコンパイルおよび実行させ、前記スマートコントラクトは、一連のルールを含み、前記一連のルールは、1)前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータ間のメッセージのやり取りを示すログを含んだトランザクションを前記許可型ブロックチェーンネットワークに追加し、2)前記ネットワーク化されたコンピュータのカーネルインストルメンテーションに基づいて、前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとのコンセンサスに達する際に前記ネットワーク化されたコンピュータの悪意のある行動を検出し、3)前記悪意のある行動を検出すると、前記ネットワーク化されたコンピュータの前記許可型ブロックチェーンネットワークへの前記アクセスを取り消すように前記プロセッサを構成し、
前記ネットワーク化されたコンピュータに、さらに、
前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとの前記コンセンサスに達するように構成された分散コンピューティングプログラムを実行させる、ネットワーク化されたコンピュータ。
【請求項2】
前記ネットワーク化されたコンピュータは、前記許可型ブロックチェーンネットワークのプロトコルとは無関係の通信プロトコルを用いて、前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとメッセージをやり取りするように構成される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項3】
前記スマートコントラクトは、前記スマートコントラクトの実行および前記許可型ブロックチェーンネットワークの前記対応するトランザクションに応答して前記ネットワーク化されたコンピュータが生成する1つ以上の監査ログの解析に基づいて、悪意のある行動を検出するように構成される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項4】
前記ネットワーク化されたコンピュータが前記許可型ブロックチェーンネットワークへのアクセスを有するそれぞれ異なるネットワーク化されたコンピュータに同じメッセージの異なる値を伝えたときに、前記スマートコントラクトは、前記悪意のある行動を検出するように構成される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項5】
前記ネットワーク化されたコンピュータは、前記許可型ブロックチェーンネットワーク内のオブサーバーノードまたはオペレーターノードのうち、少なくとも一方になるように構成される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項6】
前記スマートコントラクトのソースコードまたはコンパイルされたスマートコントラクトに対応付けられた信頼できるバイナリファイルのうち少なくとも一方が前記許可型ブロックチェーンネットワークのメンバーに配布することによって、前記許可型ブロックチェーンネットワーク上に前記スマートコントラクトがデプロイされる、請求項1に記載のネットワーク化されたコンピュータ。
【請求項7】
前記ネットワーク化されたコンピュータの前記カーネルインストルメンテーションの一部として前記スマートコントラクトがデプロイされ、1種類または複数種類のsyscall(システムコール)リクエストの呼び出しが、前記許可型ブロックチェーンネットワーク上に公開するために、前記スマートコントラクトによって自動的にロギングされ、特に、1種類または複数種類のシステムコールリクエストに関連する監査データを含んだ前記許可型ブロックチェーンネットワークを検査することによって、ユーザ空間のプログラムの悪意のある変更が検出される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項8】
前記ネットワーク化されたコンピュータは、オブサーバーノードであり、前記オブサーバーノードは、前記オブサーバーノードがメンバーであるすべての許可型(サブ)ネットワークの前記ブロックチェーンを複製するように構成され、特に、前記ネットワーク化されたコンピュータは、複数の許可型ブロックチェーンネットワークへのアクセスを有し、サブネットワークが別のサブネットワークと共通のオブサーバーノードを少なくとも1つ有することを保証する、請求項1に記載のネットワーク化されたコンピュータ。
【請求項9】
前記ネットワーク化されたコンピュータは、オペレーターノードであり、前記オペレーターノードは、その動作の監査の詳細を、デプロイされた前記スマートコントラクトによって前記許可型ブロックチェーンネットワークにアップロードされたカーネルインストルメンテーションデータを提出することによって提供され、特に、前記オペレーターノードは、信頼できるバイナリの形式の前記スマートコントラクトを実行して、前記許可型ブロックチェーンネットワークにログを書き込むように構成される、または、前記オペレーターノードは、ヒューマンインタラクションを可能にするように構成された物理端末に対応付けられ、さらに、前記スマートコントラクトは、組織のために許可型サービスを与えるように構成される、請求項1に記載のネットワーク化されたコンピュータ。
【請求項10】
許可型ブロックチェーンネットワークへのアクセスを有するそれぞれ異なるネットワーク化されたコンピュータを有する分散システムにおいて障害を検出するための方法であって、前記それぞれ異なるネットワーク化されたコンピュータは、コンセンサスに達するためにメッセージを交換することによってその動作を調整し、前記それぞれ異なるネットワーク化されたコンピュータは、少なくとも1つのプロセッサを備える少なくとも1つのブロックチェーン対応のネットワーク化されたコンピュータを含み、前記少なくとも1つのプロセッサは、前記方法を実装する格納された命令に連結され、前記命令は、前記プロセッサによって実行されると、前記方法のステップを実行し、前記ステップは、
前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータのすべてに共通のスマートコントラクトを障害を検出するためにコンパイルおよび実行するステップを含み、前記スマートコントラクトは、1)前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータ間のメッセージのやり取りを示すログを含んだトランザクションを前記許可型ブロックチェーンネットワークに追加し、2)前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとのコンセンサスに達する際に前記少なくとも1つのネットワーク化されたコンピュータの悪意のある行動を検出し、3)前記悪意のある行動を検出すると、前記少なくとも1つのネットワーク化されたコンピュータの前記許可型ブロックチェーンネットワークへの前記アクセスを取り消すように構成され、前記ステップは、さらに、
前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとの前記コンセンサスに達するように構成された分散コンピューティングプログラムを実行するステップを含む、方法。
【請求項11】
前記スマートコントラクトは、前記許可型ブロックチェーンネットワークの前記トランザクションにあるログを解析することによって悪意のある行動を検出するように構成される、請求項
10に記載の方法。
【請求項12】
前記少なくとも1つのネットワーク化されたコンピュータが前記許可型ブロックチェーンネットワークへのアクセスを有するそれぞれ異なるネットワーク化されたコンピュータに同じメッセージの異なる値を伝えたときに、前記スマートコントラクトは、前記悪意のある行動を検出するように構成される、請求項
10に記載の方法。
【請求項13】
前記少なくとも1つのネットワーク化されたコンピュータのカーネルインストルメンテーションの一部として前記スマートコントラクトがデプロイされ、1種類または複数種類のsyscall(システムコール)リクエストの呼び出しが、前記許可型ブロックチェーンネットワーク上に最終的に公開するために、前記スマートコントラクトによって自動的にロギングされ、特に、1種類または複数種類のシステムコールリクエストに関連する監査データを含んだ前記許可型ブロックチェーンネットワークを検査することによって、ユーザ空間のプログラムの悪意のある変更が検出される、請求項
10に記載の方法。
【請求項14】
許可型ブロックチェーンネットワークへのアクセスを有するそれぞれ異なるネットワーク化されたコンピュータを有する分散システムにおいて障害を検出するための方法を実行するためのプログラムを含んだ非一時的なコンピュータ読み取り可能な記憶媒体であって、前記プログラムは、プロセッサによって実行可能であり、前記それぞれ異なるネットワーク化されたコンピュータは、コンセンサスに達するためにメッセージを交換することによってその動作を調整し、前記それぞれ異なるネットワーク化されたコンピュータは、前記方法を実装する少なくとも1つのブロックチェーン対応のネットワーク化されたコンピュータを含み、前記方法は、
前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータのすべてに共通のスマートコントラクトを障害を検出するためにコンパイルおよび実行することを含み、前記スマートコントラクトは、1)前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータ間のメッセージのやり取りを示すログを含んだトランザクションを前記許可型ブロックチェーンネットワークに追加し、2)前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとのコンセンサスに達する際に前記少なくとも1つのネットワーク化されたコンピュータの悪意のある行動を検出し、3)前記悪意のある行動を検出すると、前記少なくとも1つのネットワーク化されたコンピュータの前記許可型ブロックチェーンネットワークへの前記アクセスを取り消すように構成され、前記方法は、さらに、
前記許可型ブロックチェーンネットワークへのアクセスを有する前記ネットワーク化されたコンピュータとの前記コンセンサスに達するように構成された分散コンピューティングプログラムを実行することを含む、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、分散コンピューティングシステムに関し、特に、ブロックチェーンベースのアカウンタブルな分散コンピューティングシステムにおける障害を検出および解消するための方法およびシステムに関する。
【背景技術】
【0002】
分散コンピューティングシステムとは、地理的に異なる場所に分散したネットワーク化されたコンピュータの集まりである。分散コンピューティングシステムの構成要素は、複数のノードを含み得、各ノードは、1つのネットワーク化されたコンピュータであり、これらのノードは、計算(たとえば、ATMトランザクション)を行うなど共通の目標を達成するために、メッセージのやり取りすることによって互いに通信する。いくつかのシナリオでは、分散コンピューティングシステムによって重要な計算が行われるためには、これらの構成要素によるコンセンサスに達しなければならない。これは、その結果、構成要素間の信用と、構成要素の故障に対するロバスト性という、分散コンピューティングシステム内の2つの重要な特性に依拠する。構成要素は、他の構成要素が悪意を持って動作していないと信用する必要がある。信用できなければ、分散コンピューティングシステムがコンセンサスに達することや、重要な計算を実行することは不可能である。このような場合、構成要素は、怪しいメッセージを破棄したり、悪意のある入力からの復旧可能なエラーに遭遇したりすることがせいぜいであり、最悪の場合、構成要素は、悪意を持って動作している信頼できる構成要素からの悪意のある入力によって機能しなくなってしまう。
【0003】
同様に、分散コンピューティングシステムは、中央集権型システムよりもはるかに多くの構成要素を含んでいるため、構成要素に対してロバスト性がなければならない。分散コンピューティングシステムにおける信用の必要性は、多くの悪意のある行為者が悪用しようと試みる脆弱性の根源となる。
【0004】
分散システム(上述したような分散コンピューティングシステムなど)が悪意のある参加者や構成要素の故障に対するトレラント性を持っており、それらが存在していても計算を進行させることを確実にするための1つの周知のソリューションは、BFT(ビザンチンフォールトトレランス)として当業者に知られている。BFT手法が分散システムをビザンチン障害からより早く回復させることを目的としている一方で、分散システムのロバスト性を向上させるための別の手法は、ビザンチン障害を引き起こしている構成要素を排除することである。これは、アカウンタビリティとして知られており、分散システム内の悪意のある参加者を検出、識別、および隔離することを可能にするための分散システムの特性である。アカウンタビリティは、特に、参加者が悪意のある参加者のうちの1人である場合に否認防止可能な責任を分散システム(複数可)の参加者に割り当てるなど別の利点をもたらすことができ、このようなシステム内の透明性をさらに高めることができる。アカウンタビリティは、システムの可監査性にさらに依拠しており、システムにおける悪意のある参加者の問題に対する当技術分野で周知の解決策およびアカウンタビリティを保証するための解決策では、かなり複雑な実装になり、実装にかかる計算コストが高い。
【0005】
アカウンタビリティは、次の3つの特性から構成される。
障害防止:悪意のある行動を、それによる犠牲を大きくすることによって断念させる。
フォールトトレランス:障害の検出および隔離すること、ならびにシステムのその他の部分に広がることを防止する。
障害の解消:不正を働く行為者をシステムから排除してシステムの他の部分への影響を限定する。
【0006】
アカウンタビリティを実現するためには、各参加者のアクションが監査可能でなければならない。システムの可監査性は、セキュアな、耐改ざん性があり、改ざんが防止できる透明性のある監査ログ(同義でセキュアなロギングとも称す)を必要とし、構成要素内のプロセスを監視できる機能も必要とする。監査ログの厳格な要件は監査ログの信用を高める意図があるが、従来技術における多くの解決策は、これらの監査ログを格納およびアクセスするのに中央集権型手法に依拠している。これは、信用の問題を監査ログ自体から監査ログの管理者に転嫁しているので、欠点である。セキュアなロギングを保証するためのいくつかの従来技術の手法は、デジタル台帳を利用して監査ログなどの監査データをセキュリティ保護して格納することを含む。このように、監査データは、メンバーには透明性のあるデータとなり、分散コンピューティングシステムの構成要素自体によって安全に守られる。
【0007】
デジタル台帳は、コンピュータに格納されるトランザクションのレコードである。トランザクションは、システムの状態変化を表す。よって、デジタル台帳は、金融システムなどのシステムの状態または一般的な分散システムの状態を表す。デジタル台帳は、中央集権型システムで実装でき、この中央集権型システムは、すべてのトランザクションの記録を取り、システム自体が所有する記録と別のシステムが一致しなくても、中央集権型システムが行った変更の監査証跡を作成する必要なしでこの記録を変更する。別の方法は、トランザクションを記録でき、複数のシステム間でコンセンサスを決定する方法を実装する非中央集権型または分散型の方法である。これは、有用である。なぜならば、この方法は、分散システムを含むいずれの特定のシステムも利己的に動作して分散システムの信用を損なうやり方で台帳を変更することができないようにする抑止力をもたらすためである。これ自体が、分散コンピューティングシステムに対するユーザの信用を高めることができ、その理由から有用である。
【0008】
デジタル台帳テクノロジーの一例は、ブロックチェーンネットワークである。ブロックチェーンは、リンクされたリスト構造または同類の構造を用いて互いがリンクされた複数のブロックから構成されるアペンドオンリー(append-only)データ構造である。ブロックは、デジタル情報のコンテナであり、ヘッダ、メタデータ、およびトランザクションのリストから構成される。ヘッダおよびメタデータは、ソフトウェアのバージョンについての情報、格納するためにデータの量を圧縮するのに使われる暗号化的ハッシュ、タイムスタンプなどを含み得る。トランザクションとは、デジタルトークンのすべてのトランザクションのリストであり、格納するためにデータの量を減らすためにハッシュ化される可能性がある。ブロックは、あるユーザから別のユーザへのすべてのトランザクションをリストにしている。ユーザ間のトランザクションは、ユーザの対応するデジタルアドレス間のトランザクションによって実施される。
【0009】
ブロックチェーンのデータ構造は、ブロックチェーンネットワークを備えるノードから構成される分散システムが1つのコンピュータとして動作することを容易にし、非中央集権型計算を可能にする。中央集権型システム内の計算はロギングされたり監査されたりすることがほとんどない一方で、非中央集権型計算の結果はブロックチェーントランザクションの形式でブロックチェーン上に記録されるので、計算における信用が向上する。ブロックチェーンの状況において、非中央集権型計算を記述したコンピュータプログラムは、スマートコントラクトとして知られている。
【0010】
ネットワークブロックチェーンの状況において、スマートコントラクトは、スマートコントラクトの実行時に施行しなければならない一連のルール、データ、および関係を定めた実行可能なコンピュータプログラムとして定義され得る。スマートコントラクトは、スマートコントラクトが規定されたブロックチェーンネットワークの分散台帳アーキテクチャに追加されると操作できなくなるという点で、不変である。さらには、ブロックチェーンネットワークのノードがスマートコントラクトを呼び出すとトランザクションが発生し、これらのトランザクションはブロックチェーンネットワーク上に記録される。いくつかの実施態様では、関係のあるスマートコントラクトの群は、チェーンコードと称される。チェーンコードは、関係のあるスマートコントラクトをブロックチェーンネットワーク上にデプロイするために使われる。
【0011】
ブロックチェーンネットワークの一例は、ビットコインネットワークである。当技術分野で周知のブロックチェーンネットワークには、中央集権型ネットワークと比較した場合、様々なノードによって実行される計算を監査することに関連するトランザクションのレイテンシが高い、スループットが低い、および計算コストが高いという問題がある。
【0012】
ブロックチェーンネットワークの別の例は、許可型ブロックチェーンネットワークである。以下、同義で許可型ブロックチェーンと称す。許可型ブロックチェーンネットワークは、許可型ブロックチェーンネットワークの一部になりたい各ノードのアクセス権のチェックを要求する。許可型ブロックチェーンネットワークは、概して、ブロックチェーンネットワークの上で動作するコントロール層を含む。許可型ブロックチェーンネットワークの参加者を、彼らの許可を取り消すだけでネットワークから容易に排除できる。許可型ブロックチェーンネットワークでは、許可型ブロックチェーンネットワークのすべてのメンバーによってスマートコントラクトが認められなければならない。そのため、スマートコントラクトは、許可型ブロックチェーンネットワーク内で信頼できるネットワークサービスとして動作し、許可型ブロックチェーンネットワークにあるノードに対するフォールトトレランス機能および排除機能を保証するためのツールとして用いられ得る。ノードは、完全に機能しているコンピューティングシステムのすべての機能を備えた、ネットワーク化されたコンピュータを含んでもよい。これらの機能は、特に、完全に稼働する汎用オペレーティングシステムを含む。
【0013】
最近の汎用オペレーティングシステムは、基盤をなすコンピュータハードウェア上にsyscall(システムコール)として知られる上位仮想インタフェースがAPI(アプリケーションプログラミングインタフェース)として設けられたモノリシックカーネルである。モノリシックカーネルには、基盤をなすハードウェアの下位の詳細について苦慮する必要からプログラマを解放する目的と、カーネル上で動作するプロセスがその他のプロセスまたはカーネル自体と干渉しないことを保証することによってコンピューティングシステムにセキュリティを提供する目的という2つの目的がある。カーネルの上で動作するプロセスは、ユーザ空間を形成し、アプリケーションおよびライブラリを実行するために割り当てられるメモリの一部を含み、syscallを通してカーネルへのアクセスが与えられる。一方で、モノリシックカーネルなどのカーネルは、カーネル空間として知られるメモリの一部に存在する。syscallを提供することに加えて、最近のカーネルは、プロファイリングおよびイベントロギングを組み込むためのメカニズム、またはカーネル内の可観測性を可能にするためのメカニズムを、カーネルインストルメンテーションとして知られるAPIの形式でユーザに提供する。モノリシックカーネルとして、Linux(登録商標)およびOpenBSD(登録商標)などの主要オペレーティングシステムなどが挙げられる。特に、分散コンピューティングシステムの状況において、プログラムを実行するためのセキュアかつ信頼できる環境を提供する際のモノリシックカーネルの機能、syscallを通したシステムリソースへの制限付きアクセスまたは特権アクセスは、完全に調査されてこなかった。
【0014】
これまで、ネットワークにおいていくつかのノードの特権を昇格させる必要なく、分散コンピューティングシステムの参加者またはノードからの監査データをロギングおよび監視する役割を担う信頼できるノード(ここでも、システム全体を中央集権型フレームワークに引き寄せる)なしで、分散コンピューティングシステムにアカウンタビリティを導入する方法はなかった。また、特権が昇格されたノードのみがネットワークにおける信用を維持する役割を担っているという点で、アカウンタビリティの問題は残っている。アカウンタビリティの問題も、否認防止の1つである。分散コンピューティングシステムにある各ノードがその動作に対してアカウンタブルであり、信用でき、否認防止可能な責任を持つためには、一意に識別可能である必要がある。
【0015】
したがって、ノードまたはシステムの動作を最適または実行可能な方法で制御し、分散コンピューティングシステムアーキテクチャにおけるセキュリティ、可監査性、アカウンタビリティ、および信用を強化するための効率的なシステムが求められている。
【発明の概要】
【0016】
いくつかの実施の形態の目的は、ロバスト性があり、かつフォールトトレラントである分散コンピューティングシステムであって、トランザクションおよび個々の参加者のアカウンタビリティ、信用、可監査性も保証できる分散コンピューティングシステムを提供することである。
【0017】
そのために、本開示のいくつかの実施の形態は、許可型ブロックチェーンネットワークが提供する監査データのセキュアなロギング、耐改ざん性、および検証可能性、アクセス制御、ならびに非中央集権型アーキテクチャの利点を考慮する。これに加えて、本明細書に開示の様々な実施の形態は、悪意のある参加者を識別、隔離する、および悪意のある参加者が分散コンピューティングシステム全体の完全性の脅威とならないようにする際にスマートコントラクトが提供する利点を利用し、許可型ブロックチェーンアーキテクチャの利用により、悪意のある参加者の特権(読出し関連の特権および書込み関連の特権の両方など)の取り消しが可能になり、障害の解消という目的を達成できるようになる。また、いくつかの実施の形態は、syscallの使用によりカーネルレベルのインストルメンテーションを利用し、悪意のあるノードをさらに一意に識別し、システム全体の透明性および可監査性をより良くする。
【0018】
いくつかの実施の形態は、システムのいくつかのノードが所有するネットワーク特権を昇格させる必要なく、障害のあるシステムの特定、障害検出、および分散コンピューティングシステムにいる悪意のある参加者の排除を可能にすることによって分散コンピューティングシステムにアカウンタビリティを導入するためのブロックチェーンベースの方法を提供する。
【0019】
様々な実施の形態は、(1)信頼できるネットワークサービスとしてスマートコントラクトを利用すること、(2)参加者の分類を利用すること、(3)許可型ブロックチェーンネットワークが提供する許可技術によって分散コンピューティングシステム内の参加者を許可すること、という3つの構成要素に基づくシステムおよび方法を提供する。
【0020】
いくつかの実施の形態は、許可型ブロックチェーンネットワークにおけるスマートコントラクトは、ソースコードとして参加者間で共有されなければならないので、ノードのネットワーク特権を昇格させることを必要としない許可型ブロックチェーンネットワーク内では信頼できるサービスである、という認識に基づく。この信用により、参加者全員によって信頼されている許可型ブロックチェーンネットワーク上で公開するための監査データを記録するためのメカニズムとしてスマートコントラクトを利用できる。ユーザがカーネル内のプロセスおよびデータ構造を監視およびロギングすることを可能にするAPIが提供するカーネルレベルのインストルメンテーションを利用することによって、参加者ごとの監査データを取得する。これは、参加者全員によって信頼されている監査データをロギングおよび公開することで悪意のある行動による犠牲が大きくなるため、障害防止に寄与する。
【0021】
いくつかの実施の形態は、ブロックチェーンシステムでは、参加者のものである秘密鍵によって各トランザクションが署名されなければならない、という認識に基づく。これは、許可型ブロックチェーンネットワークの参加者のIDはシステムに記録されていなければならないため、許可型ブロックチェーンフレームワークを利用するという設計上の判断に加えて、フォールトトレランス特性を満たすために利用できる。これは、不正行為に対する否認防止可能な責任を割り当てることを可能にする。最後に、違反ノードまたは悪意のあるノードは、ブロックチェーンネットワーク(許可型ブロックチェーンネットワークなど)に参加する許可を無効にすることによって容易に排除できるので、障害を解消することは許可型ブロックチェーンシステムにおいては容易なことである。
【0022】
いくつかの実施の形態は、ノードの動作を監査するための許可型ブロックチェーンネットワークを分散システム内のノードの権限管理フレームワークとして利用することによって、ブロックチェーンネットワークの上で計算が行われていたら不可能であったであろう分散システムの信用およびロバスト性の両方が大幅に向上する、という理解に基づく。
【0023】
いくつかの実施の形態は、分散コンピューティングシステム内のノードのアクティビティの検証可能な記録を公開することは、ブロックチェーンネットワーク内のすべてのノード上で計算を繰り返す場合よりも少ない計算で済む、という認識に基づく。よって、本明細書に開示のシステムおよび方法は、計算コストの面でかなり節約でき、ロバスト性のある、アカウンタブルでセキュアな、信用のおける分散コンピューティングシステムを提供すための効率を向上させることができる。
【0024】
いくつかの実施の形態によると、障害の検出機能および解消機能を有する分散コンピューティングシステムを実装するためのシステムおよび方法を提供する。分散コンピューティングシステムは、少なくとも1つのブロックチェーン対応のネットワーク化されたコンピュータを備える。少なくとも1つのブロックチェーン対応のネットワーク化されたコンピュータは、許可型ブロックチェーンネットワークを通して1つ以上のそれぞれ異なるネットワーク化されたコンピュータと通信している。ブロックチェーン対応のネットワーク化されたコンピュータは、少なくとも1つのプロセッサ、メモリ、メモリに格納されたオペレーティングシステム、および様々な操作を実行するために少なくとも1つのプロセッサが実行可能な、メモリに格納された1つ以上の命令を含む、一般的なシステムコンポーネントを備える。メモリは、カーネル空間とユーザ空間とに分割されてもよい。メモリは、命令をさらに格納してもよい。この命令は、少なくとも1つのプロセッサによって実行されると、ネットワーク化されたコンピュータにスマートコントラクトをコンパイルおよび実行させる。スマートコントラクトは、許可型ブロックチェーンネットワークの一部であるすべてのネットワーク化されたコンピュータにとって共通のコンピュータプログラムであり得る。スマートコントラクトは、一連の動作を規定するために用いられる一連のルールを含む。一連の動作は、許可型ブロックチェーンネットワークにトランザクションを追加する動作(ここで、トランザクションは、許可型ブロックチェーンネットワークへのアクセスを有するネットワーク化されたコンピュータ間でメッセージがやり取りされていることを示すログを含む)、許可型ブロックチェーンネットワークのその他の参加者とのコンセンサスに達する際にネットワーク化されたコンピュータの悪意のある行動を検出する動作、悪意のある行動を検出するとネットワーク化されたコンピュータの許可型ブロックチェーンネットワークへのアクセスを取り消す動作、のうち少なくとの1つの動作、または、それらの組合せを含む。悪意のある行動の検出は、スマートコントラクトによって有効にされる、ネットワーク化されたコンピュータのカーネルインストルメンテーションに基づいて行われる。さらには、スマートコントラクトがコンパイルおよび実行されると、許可型ブロックチェーンネットワークへのアクセスを有するその他のネットワーク化されたコンピュータとのコンセンサスに達するために分散プログラムが実行される。
【0025】
いくつかの実施の形態は、許可型ブロックチェーンネットワークの参加者であるそれぞれ異なるネットワーク化されたコンピュータは、(1)オブサーバーおよび(2)オペレーターという2つのタイプの参加者のうち少なくとも1つに分類され得る、という認識に基づく。オブサーバーは、特定の(サブ)ネットワークにいる参加者からの監査データを含んだブロックチェーンを複製するために少なくとも1つのブロックチェーンノードを実行するよう要求され得る許可型ブロックチェーンネットワークの参加者またはノードである。オブサーバーは、許可型ブロックチェーンネットワークに1つ以上のトランザクションを提案することによってコンセンサスプロセスに参加する。他方のタイプのノードは、オペレーターノードであって、トランザクションを実行することによってコンセンサスプロセスに積極的に参加する。
【0026】
いくつかの実施の形態は、スマートコントラクトは、スマートコントラクトの実行および許可型ブロックチェーンネットワークの対応するトランザクションに応答してネットワーク化されたコンピュータが生成した1つ以上の監査ログの解析基づいて許可型ブロックチェーンネットワークにいるノードの悪意のある行動を検出するように構成される、という認識に基づく。
【0027】
いくつかの実施の形態は、許可型ブロックチェーンネットワークに接続された様々な異なるノードまたはネットワーク化されたコンピュータに、ネットワーク化されたコンピュータがあるメッセージの異なる値を伝えたときに悪意のある行動が発生する、という認識に基づく。
【0028】
いくつかの実施の形態は、スマートコントラクトがソースコードファイルまたは信頼できるバイナリファイルのうち少なくとも一方の形式で許可型ブロックチェーンネットワークのノードに配布され得る、という認識に基づく。
【0029】
いくつかの実施の形態の目的は、ネットワーク化されたコンピュータ上で実行されるカーネルインストルメンテーションアクティビティの一部としてスマートコントラクトをデプロイすることである。カーネルインストルメンテーションは、スマートコントラクトを用いて様々な異なる種類のsyscallリクエストが実行した監査の結果をロギングすることによって実行された後、許可型ブロックチェーンネットワーク上に公開される。ユーザ空間プログラムの悪意のある変更(1種類または複数種類のsyscallリクエストに関連する監査データを検査することによって特定される)をログが示した場合、許可型ブロックチェーンネットワークの悪意のある参加者を特定して隔離する。
【0030】
さらには、いくつかの実施の形態では、悪意のある参加者に対応付けられたすべての許可を取り消すことによって、悪意のある参加者が許可型ブロックチェーンネットワークから排除される。
【図面の簡単な説明】
【0031】
【
図1A】本開示のいくつかの実施の形態に係る、障害を検出および解消するための許可型ブロックチェーンシステムのアーキテクチャを示すブロック図を示す。
【
図1B】本開示のいくつかの実施の形態に係る、様々な異なるタイプのノードを含む許可型ブロックチェーンシステムのブロック図を示す。
【
図1C】本開示のいくつかの実施の形態に係る、軽量クライアントノードを含む許可型ブロックチェーンシステムのブロック図を示す。
【
図1D】本開示のいくつかの実施の形態に係る、スマートコントラクトを備える許可型ブロックチェーンシステムのブロック図を示す。
【
図2A】本開示のいくつかの実施の形態に係る、ユーザ空間とカーネル空間との分離を示すブロック図を示す。
【
図2B】本開示のいくつかの実施の形態に係る、
図2Aに示すユーザ空間およびカーネル空間の構成要素を示す詳細なブロック図を示す。
【
図2C】本開示のいくつかの実施の形態に係る、カーネル空間のデータを監査するために用いられるインストルメンテーションテクノロジーを示す詳細なブロック図を示す。
【
図3】本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステムの上位ブロック図を示す。
【
図4】本開示のいくつかの実施の形態に係る、組織のブロックチェーンシステムの上位ブロック図を示す。
【
図5】本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステムにおける様々な異なるノードの詳細なブロック図を示す。
【
図6】本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステムにおける様々な異なるノードの詳細なブロック図を示す。
【
図7】本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステムにある様々な異なるノードのフロー図を示す。
【
図8】本開示のいくつかの実施の形態に係る、分散コンピューティングシステムにおける障害を検出および解消するための環境を示す。
【発明を実施するための形態】
【0032】
下記の説明において、説明の便宜上、本開示を十分に理解してもらうために数多くの具体的な詳細を説明する。しかしながら、当業者であれば、これらの具体的な詳細がなくても本開示を実施できることが明らかになるであろう。その他の例では、本開示を曖昧にしてしまわないように、装置および方法をブロック図の形式で示す。
【0033】
本明細書および添付の特許請求の範囲において用いられる場合、「for example」、「for instance」、および「such as」という用語、ならびに「comprising」、「having」、「including」という動詞およびそれらのその他の動詞形は、それぞれ、1つ以上の構成部品やその他の項目の列挙と合わせて使用された場合、非限定的であると解釈されるべきであり、この列挙は、その他の追加の構成部品やその他の項目を排除すると考えられるべきではないことを意味する。「based on」という用語は、少なくとも一部基づいてという意味である。さらには、本願明細書で用いる表現および用語は、説明を目的としており、限定であるとみなされるべきではないと理解されたい。本明細書内で用いられている見出しは便宜上のためだけであり、法的効力や限定する効果はない。
【0034】
図1Aは、本開示のいくつかの実施の形態に係る、障害を検出および解消するための許可型ブロックチェーンシステム100のアーキテクチャを示すブロック図を示す。システム100は、ブロックチェーンネットワーク112、およびブロックチェーンネットワーク120など、1つ以上のブロックチェーンネットワークを備える。システム100は、ノード114、ノード116、ノード118、およびノード122など、複数のノードをさらに備える。ノード114、ノード118、およびノード122は、ブロックチェーンネットワーク120に対応付けられる。ノード116は、ブロックチェーンネットワーク112に対応付けられており、ブロックチェーンネットワーク112の一部である。複数のノードの各々は、ネットワーク化されたコンピュータであってもよい。さらには、ネットワーク化されたコンピュータの各々は、ブロックチェーン対応のネットワーク化されたコンピュータであってもよい。
【0035】
図1Aに示すように、ノードは、2つ以上のネットワークの一部であり得る。たとえば、ノード114は、ブロックチェーンネットワーク112およびブロックチェーンネットワーク120の一部である。当業者であれば、本明細書に記載の具体的な実施の形態の便宜上、ネットワーク112および120がブロックチェーンネットワークとして示されていることがわかるであろう。ブロックチェーンという用語は、分散コンピューティングネットワークを実装するネットワークアーキテクチャを表し、内部に操作およびトランザクションの非中央集権型制御を有し、当該分散コンピューティングネットワークを必要とする。そのため、ノード114、116、118、および122は、このような分散コンピューティングネットワークのノードで有り得る。分散コンピューティングネットワークの具体的な種類として、すべての実現技術を有するブロックチェーンネットワークがある。さらには、いくつかの実施の形態では、ブロックチェーンネットワークは、許可型ブロックチェーンネットワークであって、ブロックチェーン層の上にアクセス層を有し、これは、許可型ブロックチェーンネットワークの一部である様々な異なるノードが利用可能な様々な許可を定義する。
【0036】
許可型ブロックチェーンネットワークアーキテクチャ自体には、別個のブロックチェーンバックボーンを用いることによって許可型ブロックチェーンネットワーク上のノードに関連する監査ログについてのセキュアなロギング機能を提供する、信用ベースのセキュアな分散コンピューティングアーキテクチャを提供するなど、多くの利点がある。同時に、許可型ブロックチェーンアーキテクチャは、フォールトトレランス機能、障害防止機能、および障害解消機能を提供し、これによって、分散型(非中央集権型)コンピューティングシステムを実装するための非常にアカウンタブルなアーキテクチャになる。
【0037】
許可型ブロックチェーンシステム100のノードを、システムの参加者と称する場合があり、オブサーバーおよびオペレーターという2つの大まかなカテゴリに分けられる場合がある。これに加えて、本明細書において提供する様々な実施の形態の説明において後述するが、許可型ブロックチェーンシステム100にはオーダリングノードおよび軽量クライアントも存在する。
【0038】
オブサーバーは、トランザクションを必ずしも作成しないが、システムの悪意のある参加者を検出、識別、および排除する役割を担うノードである。オブサーバーも、許可型ブロックチェーンシステム100におけるコンセンサスに達することに向けて寄与し、許可型ブロックチェーンシステム100のブロックチェーンバックボーンを複製可能である。オブザーバーは、当該ブロックチェーンバックボーンを通じて許可型ブロックチェーンシステム100の参加者に対する監査を行う。
図1Aでは、ノード114は、2つのブロックチェーンサブネットワーク112および120の一部である1つのノードを実行するオブサーバーノードである。オブサーバーは、許可型ブロックチェーンシステム100にある障害を検出することによって許可型ブロックチェーンシステム100のフォールトトレランスを向上させ、許可型ブロックチェーンシステム100の悪意のある参加者を識別することによっても許可型ブロックチェーンシステム100のフォールトトレランスを向上させる。
【0039】
許可型ブロックチェーンシステム100にある他方のタイプのノードは、オペレーターである。オペレーターは、許可型ブロックチェーンシステム100などブロックチェーンシステムに含めるためのトランザクションを作成するノードである。オペレーターノードは、スマートコントラクトを用いた公開監査のために許可型ブロックチェーンシステム100上での動作を記録することによって、信用できるオペレーターノードであることを証明する必要がある。また、オペレーターは、オペレーター自体の監査データを許可型ブロックチェーンシステム100に報告することによって、許可型ブロックチェーンシステム100のフォールトトレランスを向上させる。
図1Aを参照すると、ノード116、118、および122は、ブロックチェーン(サブ)ネットワーク112および120に接続されるオペレーターノードである。
【0040】
いくつかの実施の形態では、許可型ブロックチェーンシステム100は、お互いを完全に信用しているわけではない参加者が信用して参加できる分散システムを含み得る。この例は、企業とその子会社から構成される組織内ネットワークである(
図1Bにおいてさらに示す)。
【0041】
図1Bは、本開示のいくつかの実施の形態に係る、様々な異なるタイプのノードを含む許可型ブロックチェーンシステム126のブロック図を示す。許可型ブロックチェーンシステム126は、枠138(「組織」138と称する場合がある)によって表される組織に属する複数の参加者(またはノード)を含む。さらには、枠136は、許可型ブロックチェーンシステム126に監査データを送るオブサーバーノード124および通常ノードまたはオペレーターノード128という2つのノードから構成される親組織を表す。ノード124および128は、両方とも親組織136内にあるため、互いに通信可能である。また、組織138は、その動作が監査されて許可型ブロックチェーンシステム126に送られる2つのノード130および132から構成される子組織134を含む。
図1Bは、
図1Aの許可型ブロックチェーンシステム100の1種類の実施可能環境しか示していない。別の実施可能例(図示せず)は、参加者全員によって信頼され得る許可型ブロックチェーンシステム100の参加者のサブセットをリアルタイムで自動監査することを含む。許可型ブロックチェーンシステム100の各参加者は、上述したオブサーバー、オペレーター、オーダリング、および軽量クライアントという先に説明した4つのタイプのうち1つであり得る。オペレーターおよびオブサーバーについては、
図1Aとあわせて先に説明済みである。軽量クライアントについては、
図1Cの下記の記載において説明する。
【0042】
図1Cは、本開示のいくつかの実施の形態に係る、軽量クライアントノードを含む許可型ブロックチェーンシステム140のブロック図を示す。許可型ブロックチェーンシステム140は、軽量クライアント142および軽量クライアント144など、2つの軽量クライアントノードを含む。軽量クライアント144は、組込みデバイス146をさらに備える。
【0043】
軽量クライアント142および144は、組込みコンピュータ、ラップトップ、携帯電話、スマートフォン、タブレット端末、スマートウォッチ、ウェアラブルコンピュータ、POS(Point Of Sale)端末、キオスク、ルーティング装置、発電所における監視端末、電子メーターなど、任意の最近のコンピュータを含み得る。いくつかの実施の形態は、多くの最近のコンピュータは、組込みデバイス146に対応付けられた軽量クライアント144など、計算能力が限定された組込みデバイスであるため、これらのコンピュータが一部となっているブロックチェーンの完全なコピーを格納することができない、という認識に基づく。しかしながら、これらの実施の形態および許可型ブロックチェーンシステム140のアーキテクチャを利用すると、計算能力が低いこれらの軽量システムであっても、完全に信用され、セキュアになり、悪意のある行動について効率的に監視されるようになるであろう。これは、本明細書に記載の様々な実施の形態において開示する許可型ブロックチェーンシステム100(すなわち、許可型ブロックチェーンシステム140)において実装されているスマートコントラクトとカーネルインストルメンテーションテクノロジーとの組合せのおかげで可能になっている。
【0044】
図1Dは、本開示のいくつかの実施の形態に係る、スマートコントラクト152を備える許可型ブロックチェーンシステム148のブロック図を示す。許可型ブロックチェーンシステム148は、ノード150を備える。ノード150は、ブロックチェーン対応のネットワーク化されたコンピュータであり得、その他のネットワーク化されたコンピュータ(本明細書では図示せず)と通信し得る。ノード150は、ノード150の監査手続きの一部として、スマートコントラクト152をコンパイルおよび実行するように構成され得る。スマートコントラクト152は、プロセス154に対応付けられ得る。スマートコントラクト152は、スマートコントラクト152の実行および対応する許可型ブロックチェーンネットワーク148のトランザクションに応答してノード150が生成した1つ以上の監査ログの解析に基づいて、ノード150に関連する悪意のある行動を検出するように構成され得る。
【0045】
そのために、スマートコントラクト152は、許可型ブロックチェーンネットワーク148へのアクセスを有する異なるその他のノード(またはネットワーク化されたコンピュータ)に、ノード150が同じメッセージの異なる値を伝えたときに、ノード150の悪意のある行動を検出するように構成される。
【0046】
様々な実施の形態は、スマートコントラクト152のソースコードまたはコンパイルされたスマートコントラクト152に関連する信頼できるバイナリファイルを許可型ブロックチェーンネットワーク148のメンバー(ノード150など)に配布することにより、許可型ブロックチェーンネットワーク148上にスマートコントラクト152をデプロイすることを可能にする。許可型ブロックチェーンネットワーク148のすべてのノードにスマートコントラクト152のソースコードが配布されると、ノードの各々は、スマートコントラクト152をローカルでコンパイルし得る。これにより、許可型ブロックチェーンネットワーク148のフォールトトレランスを保証するための、信用できる、透明性、耐改ざん性、およびロバスト性のあるツールとしてスマートコントラクトが動作することが保証される。これは、スマートコントラクト152自体が不変であることが理由である。そのため、許容できるルール、許可、または認められている許可型ブロックチェーンネットワーク148に対する操作からの逸脱を伴う悪意のある行動は、より下位レベル(カーネルレベルなどで)で発生することになり、当該行動による犠牲が非常に大きくなる。
【0047】
さらにはプロセス154に関連するデータについて許容できるデータ型、動作、依存関係、およびパッケージング情報を規定する一連のルールを定めることによって、プロセス154に対応付けられたスマートコントラクト152を利用してプロセス154が監査され得る。よって、プロセス154の各呼び出しによって、スマートコントラクト152も呼び出され、その対応するルールも実行され得る。ルールからの逸脱は、ノード150のカーネルレベルでインストルメンテーションを実行することによって特定され、許可型ブロックチェーンネットワーク148上に記録され得る。この記録情報を監査することで、ノード150の一部に対する悪意のある行動への試みが検出される。よって、ノード150は、識別および隔離され、さらには、ノード150に対応付けられた許可が取り消されて悪意のあるノードが許可型ブロックチェーンネットワーク148から完全に排除され得る。
【0048】
いくつかの実施の形態では、スマートコントラクト152は、ローカルイベントをトリガすることによってノードの正しい構成を定義するネットワークベースのポリシー実行のためのルールを含む。このトリガに対する応答は、スマートコントラクト152において指定されたルールに基づいてブロックチェーン上に記録される。
【0049】
そのために、ノード150は、少なくとも1つのオペレーターノードまたはオブサーバーノードであり得る(ここで、オペレーターノードおよびオブサーバーノードの機能については、先に説明済みである)。ノード150がオブサーバーノードである場合、ノード150は、当該オブサーバーノードがメンバーであるすべての許可型(サブ)ネットワークから構成されるブロックチェーンを複製するように構成され得る。
図1Aとあわせて先に説明したように、ノード150は、1つ以上の許可型ブロックチェーン(サブ)ネットワークの一部であってもよい。ノード150が2つ以上の許可型ブロックチェーン(サブ)ネットワークの一部である場合、これらの許可型ブロックチェーン(サブ)ネットワークの各々は、別のサブネットワークと共通の少なくとも1つのオブサーバーノードを有する。
【0050】
いくつかの実施の形態では、ノード150は、オペレーターノードとして構成され、その動作の監査の詳細を、デプロイされたスマートコントラクト152が許可型ブロックチェーンネットワーク148にアップロードしたノード150のカーネルインストルメンテーションデータを提出する(スマートコントラクト152の実行に応答して)ことによって提供する。
【0051】
いくつかの実施の形態では、ノード150がオペレーターノードとして構成される場合、ノード150は、ヒューマンインタラクションを可能にするように構成された物理端末にさらに対応付けられ、さらにここでは、スマートコントラクト152は、組織のために人間のオペレーターに許可を与えるように構成される。これについては、
図6およびそれに関連する説明で詳細を説明する。
【0052】
様々な実施の形態は、ノード150が許可型ブロックチェーンネットワーク148においてその他のノードとメッセージをやり取りし、許可型ブロックチェーンネットワーク148の一部であるすべてのノードのアクションを調整するように構成される、とさらに規定する。そして、この調整が行われ、コンセンサスアルゴリズムとして一般に知られている分散コンピューティングプログラムに従って、許可型ブロックチェーンネットワーク148にあるすべてのノード間で、許可型ブロックチェーンネットワーク148の現在の状態に関するコンセンサスに達する。コンセンサスに達するために許可型ブロックチェーンネットワーク148が利用し得るコンセンサスアルゴリズムの一例は、ノードが当該ノードのトランザクションの妥当性に関する承認(confirmation)を許可型ブロックチェーンネットワーク148にあるすべてのその他のノードから受けるように構成されるPBFT(プラティカルビザンチンフォールトトレラント)アルゴリズムである。その後、ノードが受けた承認の総数に基づいてコンセンサスに達する。
【0053】
本明細書に開示のいくつかの実施の形態は、オブサーバーノードは許可型ブロックチェーンネットワーク148のすべてのノードにトランザクションを提案することによってコンセンサスに達することを助ける、という理解に基づく。さらには、オブサーバーノードが提案するトランザクションは、スマートコントラクト152などのスマートコントラクトにおいて指定された一連の共通ルールに従った許可型ブロックチェーンネットワーク148上での監査、および監査結果の記録の対象である。
【0054】
様々な実施の形態は、スマートコントラクト152がノードのアプリケーション空間の一部としてノード150上に格納され、ノード150のカーネルインストルメンテーションの一部としてさらにデプロイされる、と規定する。これについては、
図2A~
図2Cとあわせてさらに詳細を説明する。
【0055】
図2Aは、本開示のいくつかの実施の形態に係る、ノード150に関連するユーザ空間200とカーネル空間202との分離を示すブロック図を示す。
【0056】
ユーザ空間200は、アプリケーションプログラム、アプリケーションデータ、API、ソフトウェアライブラリまたはコードライブラリ、ストアドプロシージャ、アルゴリズム、コンピュータ命令、ユーザファイルなどのユーザプログラムを格納する、ノード150(メモリとプロセッサとを有する演算部)のメモリの一部を含む。ユーザ空間200にあるユーザプログラムは、概して、C#、C++、Java(登録商標)、Python、Solidity、JavaScript(登録商標)など、周知の高位言語のうちいずれかによって書かれている。また、ユーザ空間200は、1つ以上の関数を実行するためのアルゴリズムおよび論理命令を定義する、ビジネスプロセスまたはネットワークインタフェースプロセスなど、様々なプロセスを含む。これらの関数は、アプリケーション固有の関数である。ユーザ空間200にあるユーザプログラムの種類の1つは、スマートコントラクト204(
図1Dに示すスマートコントラクト152に相当する)である。スマートコントラクト204は、スマートコントラクト204が実行されると実行される執行可能なルールを定める。そして、スマートコントラクト204の実行により、システムの(オペレーティングシステム)リソースへのアクセスを必要とする1つ以上のプロセスを呼び出され得る。システムリソースは、ユーザ空間200とは別のメモリ部分(カーネル空間202として知られる)に格納される。
【0057】
カーネル空間202は、オペレーティングシステムおよびその関連プログラムの形式のノード150のコアが格納されるメモリの一部を規定する。カーネル空間202は、ハードウェアおよびファイルシステムなど、様々なシステムリソースの連携を可能にする特殊なプログラムを格納する。カーネル空間202は、デバイスドライバ、メモリ管理プログラム、入出力管理プログラム、プロセス管理プログラムなど、特殊なプログラムおよびデータを含み得る。一般に、カーネル空間プログラムは、Cなどの下位言語で書かれている。
【0058】
カーネル空間202に含まれるシステムリソースは、システムコールまたはsyscallの形式でカーネル空間202に送られた特殊なリクエストによってユーザ空間200のプロセスからアクセスされ得る。各リソースアクセスには、別個のsyscallが必要である。さらには、各syscallおよびそれに関連するシステムリソースは、カーネルレベルのインストルメンテーションテクノロジーとして知られている特殊技術の利用によって監視され得る。カーネルレベルのインストルメンテーションテクノロジーは、特に、コードの可観測性、パフォーマンスメトリックの収集、およびセキュリティ関連イベントのトレースを可能にする。これについては、
図2Aおよび
図2Bとあわせてさらに詳細を説明する。
【0059】
図2Bは、
図2Aに示すユーザ空間200およびカーネル空間202の構成要素を示す詳細なブロック図を示す。
【0060】
図2Bから分かるように、ユーザ空間200にあるいずれのプロセス206も、1つ以上のsyscallを介さないと、カーネル空間202の範囲内に格納されたシステムリソース210にアクセスできない。
【0061】
本明細書に記載の様々な実施の形態は、許可型ブロックシステム212(これまでの
図1A~
図1Dにおいて説明した許可型ブロックチェーンシステムに相当する)に対応付けられたデプロイされたスマートコントラクトであるスマートコントラクト204において指定されているルールに基づいてsyscallを監査できるようにする。syscallの監査は、当技術分野で周知のインストルメンテーションテクノロジーのいずれかに基づいて行われる。
図2Bおよび
図2Cは、本明細書に記載の様々な実施の形態における例示のためであると考えられる周知のインストルメンテーションテクノロジー208を示す。
【0062】
図2Cにおいて詳細が示されているインストルメンテーションテクノロジー208は、カーネル監査214と、プローブ216と、トレースポイント218と、バークリーパケットフィルター220とを備える。
図2Cでは、例示のために、4つのインストルメンテーションテクノロジー208しか示していない。本開示の範囲を逸脱することなく、インストルメンテーションテクノロジー208のリストに任意の数のインストルメンテーションテクノロジーが追加されてもよい。
【0063】
カーネル監査214は、監査サブシステムを含む、監査サブシステムは、システム監査機能およびセキュリティ機能のための、予め構築されたルールに基づいたフレームワークである。カーネル監査214のサブシステムは、ファイルシステムの監査、syscallの監査、信頼できるデータベースアクセスを含む(しかし、これらに限定されない)、幅広いシステムイベントおよびそれらに関連するメタデータをキャプチャするように構成される。機能およびその他の定義済みイベントをインポート/エクスポートすることを試みる。サブシステムは、1)監査記録を生成するためのカーネルコンポーネントと、2)監査記録をローカルファイルまたは外部サーバにロギングするためのユーザ空間デーモンと、3)監査ログを検査および処理するためのユーザ空間ツールのセットとを含む。
【0064】
プローブ216は、カーネルがブレークポイントとハンドラ関数とをアタッチすることによってランタイム時にカーネル空間(Kprobes)またはユーザ空間(Uprobes)にあるアセンブリ言語レベルのコードを変更する、動的インストルメンテーションイネーブラである。プローブは、ノード150のオペレーティングシステムの状態およびそのプロセスをロギングするように構成される。
【0065】
トレースポイント218は、ランタイム中に指定され得る関数を呼び出すフックがコード内の重要な場所に挿入される、監視インストルメンテーションのためのシステムを含む。トレースポイント218は、特定のコードパスに到達した場合に有効化され、対応するカーネルAPIが定義済みイベントを公開する。
【0066】
BPF(バークリーパケットフィルター)220は、システムレベルのインストルメンテーションに関するテクノロジーのセットである。BPFの実装には、次の3つの重要な構成要素が必要である。1)BPFバイトコードとして知られる独自の仮想命令セットを有するカーネル内仮想マシン、2)インタプリタ、BPFプログラムの安全性のための検証ツール、およびBPFバイトコードをネイティブ命令に変換するためのJIT(Just In Time)コンパイラから構成されるカーネルランタイム、3)カーネル空間202とユーザ空間200との間のデータ共有のための、BPFマッピングとして知られるカスタムKey-value型データ構造。BPFは、カーネルモジュールのロード、プロセスのクラッシュ、ページフォールトエラー、疑似使用、SSH認証、暗号の初期化、シェルコマンドなどを監視するのに役立つ。
【0067】
本明細書に開示の様々なインストルメンテーションテクノロジー208が1つ以上のsyscallの監査を可能にするため、1種類または複数種類のsyscall(システムコール)リクエストの呼び出しが、許可型ブロックチェーンネットワーク212上で公開するために、スマートコントラクト204によって自動的にロギングされる。
【0068】
よって、スマートコントラクト204は、ノード150の(上述したカーネルインストルメンテーションテクノロジー208のうちいずれかを用いた)カーネルインストルメンテーションの一部としてデプロイされる。ここで、1種類または複数種類のシステムコールリクエストに関連する監査データを含んだ許可型ブロックチェーンネットワーク212を検査することによって、ユーザ空間200にあるプログラムの悪意のある変更を検出し得る。
【0069】
ノード150が提出した監査データの検査に基づいてノード150が悪意のあるノードと識別された場合、許可型ブロックチェーンネットワーク212にアクセスするためのノード150の許可は取り消され得る。よって、許可型ブロックチェーンネットワーク212のアーキテクチャ、スマートコントラクト204、およびカーネルインストルメンテーションテクノロジー208を上述した方法で使用することにより、障害の検出、障害の解消、およびセキュアなロギング機能が可能になる。これにより、ノード150および許可型ブロックチェーンネットワーク212に対応付けられたシステム全体を非常にアカウンタブルなシステムにすることができる。
【0070】
図3は、本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステム300の上位ブロック図を示す。本明細書に記載の様々な実施の形態は、許可型ブロックチェーンネットワーク300に基づいたアカウンタブルな分散システムを提供する。このようなシステムの主要な構成要素は、許可型ブロックチェーンネットワーク300、スマートコントラクト302、および基盤をなす参加ノード304である。
【0071】
基盤をなす参加ノード304は、1つ以上のネットワーク化されたコンピュータであり、ブロックチェーンに対応している。参加ノード304の各ノードは、1つ以上のブロックチェーン(サブ)ネットワークの一部であり得る。さらには、参加ノード304の各ノードは、オブサーバー、オペレーター、オーダリング、および軽量クライアントなど、4つのタイプのノードのうち1つであり得る。重要なことに、これらの参加ノード304は、オペレーターおよびオブサーバーに分類される。
【0072】
オブサーバーは、監査を必要とするプロセスを有さない参加ノード304の分類に相当するので、許可型ブロックチェーンネットワーク300に追加する必要のあるトランザクションを作成しない。その代わりに、オブサーバーは、ノードを実行してブロックチェーンを複製させ、複製したブロックチェーンネットワークの参加者に対する監査を行う。オブサーバーノードは、監査によって許可型ブロックチェーンネットワーク300の冗長性およびセキュリティを向上させる機能、悪意のある参加者を検出して許可型ブロックチェーンネットワーク300から排除する機能、およびスマートコントラクト302が提供するトランザクションに従ってブロックチェーンに追加するオーダリングサービスを実行する機能を含む機能を実行するが、これらに限定されない。オブサーバーノードによって、許可型ブロックチェーンネットワーク300全体のフォールトトレランスの向上、そして許可型ブロックチェーンネットワーク300全体の障害を防止する能力の向上という利点がもたらされる。なぜならば、オブサーバーノードも、悪意のある参加者の許可型ブロックチェーンネットワーク300の特権を取り消すことによって彼らを許可型ブロックチェーンネットワーク300から排除するように構成されているためである。
【0073】
許可型ブロックチェーンネットワーク300のノードのその他の主要な分類は、オペレーターである。オペレーターは、監査を必要とするプロセスを有するノードである。これは、スマートコントラクト302において指定されたルールに基づいて許可型ブロックチェーンネットワーク300に対するオペレーターノードの動作を記録することによって実現され得る。さらには、オペレーターノードの動作は、
図2Cで説明したようなカーネルインストルメンテーションテクノロジー208を用いて監査される。
【0074】
許可型ブロックチェーンネットワーク300をアカウンタブルな(分散)システムにするために、許可型ブロックチェーンネットワーク300の参加ノード304は、少なくとも1つのオブサーバーノードを備えればよい。
【0075】
本明細書に開示の様々な実施の形態は、許可型ブロックチェーンネットワーク300上のすべてのノードに権限管理機能を与える。権限管理機能は、少なくとも1つのプロセスに関連する許可、ノード関連の許可、およびヒューマンインタフェース関連の許可、または、それらの組合せを含む。
【0076】
プロセス関連の許可は、カーネル内のプロセスがシステムリソースにアクセスするための正式な許可を所有しているかどうかをカーネルインストルメンテーションテクノロジー208を利用して識別することを含む。これについては、
図2Bとあわせて概要を説明した。これは、先に説明したカーネルインストルメンテーションテクノロジー208のいずれかによって実装される。
【0077】
ノード関連の許可は、許可型ブロックチェーンネットワーク300などの分散コンピューティングシステムに参加することをノードが許可されているどうかをチェックすることを含む。これは、十分な許可があるノードは参加者全員によって認められ、十分な許可がないノードは参加できないというブロックチェーンネットワークフレームワークの要件によって行われる。これに加えて、ノード関連の許可は、許可型ブロックチェーンネットワーク300にあるノードが利用可能な複数のネットワーク設定ファイルに記録される。
【0078】
ヒューマンインタフェース関連の許可は、物理インタフェース端末を通してノードと連携している人間のオペレーターに関連する許可を含む。これは、許可型ブロックチェーンネットワーク300に対応付けられたコンピューティングデバイスまたはネットワーク化されたコンピュータは信用されているが、全員が信用のおける者ではない可能性のある複数の人間のオペレーター間で共有されているシナリオにおいて要求される。よって、ヒューマンインタフェース関連の許可は、ネットワーク化されたコンピュータと連携している人間のオペレーターに割り当てられている許可がネットワーク化されたコンピュータのセットアップに結びつけられないようにし、(ネットワーク化されたコンピュータまたはノードがその一部である)組織によってリアルタイムで変更できることを保証する。これは、LDAP(Lightweight Directory Access Protocol)を利用することによって実現されてもよい。これについては、
図6とあわせてさらに詳細を説明する。
【0079】
下記の図面およびそれに関連する説明において記載するが、許可型ブロックチェーンネットワーク300のアーキテクチャは、複数の異なるシナリオを用いて実装されてもよい。
【0080】
図4は、本開示のいくつかの実施の形態に係る、組織のブロックチェーンシステム400の上位ブロック図を示す。組織のブロックチェーンシステム400は、組織のブロックチェーンシステム400の一部として許可型ブロックチェーンネットワークを含み、組織のブロックチェーンシステム400に対応付けられた複数のノードまたはブロックチェーン対応の複数のネットワーク化されたコンピュータを有する。
図4は、親ノード404および関連するオーダリングサービス404a、ならびに1つ以上の子ノードであるノード402、ノード406、およびノード408という、4つのこのようなノードを示す。システムにおいて示されている特定の数のノードは例示のために過ぎないことは、当業者であれば分かるであろう。本開示の範囲を逸脱することなく、任意の数のノードが組織のブロックチェーンシステム400に対応付けられてもよい。
【0081】
親ノード404は、親組織に対応付けられ得、組織のブロックチェーンシステム400に対応付けられたその他のノード(子ノード402、406、および408など)の監査を順序付けするためのオーダリングサービス404aを実行するオーダリングノードとして動作する。組織のブロックチェーンシステム400とのノード404のインタラクションは、読み出し専用であってもよい。また、親ノード404は、トランザクションを提案することによって組織のブロックチェーンシステム400に対応付けられたコンセンサスアルゴリズムに参加することにより、組織のブロックチェーンシステム400の完全なコピーを同期するように構成されてもよい。コンセンサスアルゴリズムは、組織のブロックチェーンシステム400のすべてのノードが組織のブロックチェーンシステム400の現在の状態について同意していることを保証する。
【0082】
さらには、子ノードは、親組織の子会社など、子組織に対応付けられ得、監視される必要がある。子ノードの各々は、組織のブロックチェーンシステム400の読出しおよび書込みが可能であってもよい。ノード402およびノード406は、オペレーターノードとして動作し、先に説明したスマートコントラクトとカーネルインストルメンテーションテクノロジーとの組合せによって当該ノードのプロセスを監査させるように構成され得、また、監査データを含んだトランザクションを生成することによってコンセンサスアルゴリズムに積極的に参加するように構成される。
【0083】
さらには、
図4に示すように、たとえば、子ノード408は、フルブロックチェーン対応のノードを実行できない軽量クライアントデバイスである場合、子ノード406を通して組織のブロックチェーンシステム400と通信してもよい。
【0084】
ブロックチェーンフレームワークに関連する様々なノードおよびサービスの機能は、当業者に知られているであろうAPIおよびコードライブラリの利用によって実装されてもよい。
【0085】
図5は、本開示のいくつかの実施の形態に係る、許可型ブロックチェーンシステム500にある様々な異なるノードを示すシナリオの別のブロック図を示す。許可型ブロックチェーンシステム500は、ノード502およびノード504など、1つ以上のノードに対応付けられてもよい。ノード502は、監査が必要なプロセス506を実行するオペレーターノードであってもよい。プロセス506の呼び出しが、ノード502上のチェーンコード508とノード504上のチェーンコード512の呼び出しにさらにつながり得る。すでに説明したが、チェーンコードは、関連するスマートコントラクトのセットまたは群である。すると、チェーンコード508およびチェーンコード512で定義されたルールを用いると、ノード502および504のトランザクションが周知のカーネルインストルメンテーションテクノロジー(一部については
図2Cにおいて先に説明した)の利用によってカーネルレベルで監視され得る。さらには、チェーンコード508の呼び出しがチェーンコード510の呼び出しにつながり得、チェーンコード512の呼び出しがチェーンコード514の呼び出しにつながり得、これらの結果が許可型ブロックチェーンシステム500上に記録され得る。さらには、チェーンコード508およびチェーンコード512の呼び出しの結果(カーネルインストルメンテーションテクノロジーを用いた監査の結果という形態)が許可型ブロックチェーンシステム500上に記録され得る。
【0086】
図5に示した方法で関連するチェーンコードを許可型ブロックチェーンシステム500上で呼び出すことにより、相互チェーンコード呼び出し機能がもたらされ得、これにより、さらに、スマートコントラクトおよびチェーンコードを用いた監査機能の一部の自動化が可能になり得る。よって、
図5で説明した例示的な実施の形態を用いると、許可型ブロックチェーンシステム500を用いて、半自動または全自動の障害検出およびアカウンタブルな分散コンピューティングシステムを提供できる。
【0087】
アカウンタブルかつフォールトトレラントな分散コンピューティングシステムの別の考えられる実施の形態の実装が
図6で説明されている。
図6は、
図3で簡単に開示した人間の許可型ブロックチェーンネットワーク300との連携のための権限管理を示す。
【0088】
図6は、本開示のいくつかの実施の形態に係る、人間の連携権限管理についての、許可型ブロックチェーンシステム600における様々な異なるノードの詳細なブロック図を示す。
【0089】
許可型ブロックチェーンシステム600は、人間のオペレーター604によってアクセスされ得る。人間のオペレーター604は、許可型ブロックチェーンシステム600にアクセスする権限が付与されていても、付与されていなくてもよい。一方で、ノード602は、許可型ブロックチェーンシステム600へのアクセスが許可され得る。人間のオペレーター604が許可型ブロックチェーンシステム600にアクセスすることを認証するために、RPi(Raspberry Pi)対応端末(ここでは、例示のために示されている)などのコンピューティング端末608を用いてLDAPなどのクレデンシャルサービス606を実行し得る。その後、認証または監査の結果が許可型ブロックチェーンシステム600上に記録される。それにしたがって、人間のオペレーターの許可が回復されたり、取り消されたりする。
【0090】
よって、許可型ブロックチェーンシステム600は、低い計算コストかつスマートコントラクトおよびカーネルインストルメンテーションなどの非常に効率的なセキュリティメカニズムで障害を検出、防止、および解消できるアカウンタブルな分散システムとして機能する。
【0091】
図7は、方法700のフロー図を示し、本開示のいくつかの実施の形態に係る、アカウンタブルな許可型ブロックチェーンネットワークにおいて障害を検出および解消するためのそれぞれ異なるステップを示す。
【0092】
ステップ702では、
図7の方法700は、許可型ブロックチェーンネットワークに関連するスマートコントラクトをコンパイルおよび実行することを含む。たとえば、
図2Bおよび
図2Cを参照すると、許可型ブロックチェーンネットワーク212は、信頼できるバイナリファイル、またはスマートコントラクト204に対応付けられたソースコードファイルを受信し得るノード150に対応付けられ得る。スマートコントラクト204がソースコードファイルの形式である場合、コンパイルされた後に実行され得る。いくつかの実施の形態では、スマートコントラクト204は、実行ファイルそのものの形式であって、コンパイルする必要はない。スマートコントラクト204を実行すると、スマートコントラクト204において指定されている一連のルールが施行されことになる。この一連のルールは、以下のうち少なくとも1つまたはそれらの組合せを実行するための一連の動作に関連し得る。1)許可型ブロックチェーンネットワーク212へのアクセスを有するネットワーク化されたコンピュータ間またはノード間でのメッセージのやり取りを示すログを含んだトランザクションを有するデータを許可型ブロックチェーンネットワーク212に追加すること、(2)コンセンサスに達する際に、ノード150などのネットワーク化されたコンピュータの悪意のある行動を検出すること(この検出は、ネットワーク化されたコンピュータのカーネルインストルメンテーションに基づいて実行される)、(3)悪意のある行動を検出すると、許可型ブロックチェーンネットワーク212へのネットワーク化されたコンピュータのアクセスを取り消すこと。
【0093】
ステップ704では、任意のカーネルインストルメンテーションテクノロジー208を利用してノード150のsyscallを監査することに基づいてノード150などのネットワーク化されたコンピュータの監査データを生成することによって、悪意のある行動の検出を行う。さらには、この監査の結果は、監査データログに対するアペンドオンリーデータ操作によって許可型ブロックチェーンネットワーク212に格納される。監査データログがこのように提出されると、ステップ706では、ノード150側の悪意のある行動が検出され得、必要であれば、ノード150の許可が取り消され得る。
【0094】
図7に記載の方法700を任意の分散コンピューティングシステムにおいて実装し、分散コンピューティングシステム全体のアカウンタビリティ、フォールトトレランス、および信頼性を保証できる。
【0095】
図8は、本開示のいくつかの実施の形態に係る、分散コンピューティングシステムにおいて障害を検出および解消するための作業環境800を示す。作業環境800は、発電所804に対応する。発電所804は、許可型ブロックチェーンネットワーク802を通じて発電所804に接続されたそれぞれ異なるエンティティの監査を順序付けるためのオーダリングサービスを実行する親ノードとして動作し得る。これらの異なるエンティティは、消費者808、工場812、および配電グリッド816を含み得る。エンティティ808、812、および816の各々は、ブロックチェーン対応のネットワーク化されたコンピュータなどの形態のフルノードまたは軽量ノードを実行するコンピューティングシステムを通じて許可型ブロックチェーンネットワーク802に接続され得る。さらには、各エンティティは、スマートコントラクトの個々のコピー、顧客808の場合はスマートコントラクト810、工場812の場合はスマートコントラクト814、配電グリッド816の場合はスマートコントラクト818を、許可型ブロックチェーンネットワーク802から受信するように構成される。各スマートコントラクトは、信頼できるバイナリファイルまたはソースコードファイルのうち一方の形態であり得、不変である。さらには、いくつかの実施の形態は、すべてのノードのスマートコントラクトのコピーがすべてのノードに共通であり得る、という認識に基づく。
【0096】
さらには、各スマートコントラクトは、ノード808、812、および816の各々を監視および監査するためのルールを指定する。たとえば、ルールは、電源ユニットの使用、電力消費の計量および計量ユニットを不正変更する試み、工場での消費に電源ユニットを容認すること、グリッドを通じた配電単位数の許容上限、政府および規制体制の準拠などに関連し得る。
【0097】
スマートコントラクト810、814、および818の各々が施行されると、各タイプのノードは、関連するコンピューティング端末のカーネルレベルのインストルメンテーションを用いて監査され得、監査の結果は、許可型ブロックチェーンネットワーク802上に記録される。さらには、その後、異なるノードは、ノードの各々の信憑性についてのコンセンサスに達するように構成され得、監査の結果およびコンセンサスに従って、ノードの各々は、許可型ブロックチェーンネットワーク802との接続を再開することが許可されて発電所804が発電した電力へのアクセスを引き続き有し得る。そうでない場合、監査手順に合格しなかった場合、ノードの接続は一時的に禁止され得る。
【0098】
よって、本明細書に記載の様々な実施の形態は、セキュアな、耐改ざん性があり、効率的で信頼できる、費用対効果に優れたアカウンタブルな分散コンピューティングシステムを提供する。様々な実施の形態は、デジタル管理によって物理(コンピューティング)を監査可能かつアカウンタブルにすることを可能にする。さらには、完全組込みブロックチェーンノードと同じくらい容易に軽量クライアントを用いて本明細書において説明した様々な技術が実装できることで、システム全体を、非常に効率的、かつスケーラブルで費用対効果に優れたものにする。また、多くの許可型ブロックチェーンでは、クライアントは、様々な参加ノード間で共有される信頼できるバイナリであり、信頼できる軽量ブロックチェーンクライアントとして動作する。
【0099】
上記説明は、例示的な実施の形態を提供しているに過ぎず、本開示の範囲、利用可能性、または構成を限定しない。むしろ、上記例示的な実施の形態の説明は、1つ以上の例示的な実施の形態を実現するための実施可能な説明を当業者に提供する。添付の請求の範囲に記載された主題の趣旨および範囲を逸脱することなく、要素の機能および配置に様々な変更を行ってもよいと考えられる。
【0100】
実施の形態を十分に理解してもらうために、具体的な詳細を上記説明に記載した。しかしながら、当業者であれば、これらの具体的な詳細がなくてもこれらの実施の形態を実施できると理解するであろう。不必要に詳細を説明して実施の形態を曖昧にしてしまわないように、たとえば、開示した主題のシステム、プロセス、およびその他の要素は、ブロック図に構成要素として図示されている場合がある。他の場合、実施の形態を曖昧にしてしまわないように、周知のプロセス、構造、および技術を、不必要に詳細を説明することなく図示している場合がある。さらには、様々な図面において、同じ参照番号および同じ記号で同じ要素を示している。
【0101】
また、個々の実施形態をプロセスとして説明し、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示している場合もある。フローチャートは、逐次プロセスとして動作を示し得るが、動作の多くのは、並列または同時に実行できる。これに加えて、動作の順序が並び替えられてもよい。プロセスは、その動作が完了したときに終了させてもよいが、図面に含まれないステップをさらに有してもよい。さらには、すべての実施の形態において、具体的に説明した処理に含まれる動作のすべてが実行されなくてもよい。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに相当し得る。プロセスが関数に相当する場合、関数の終了は、この関数が呼び出し関数またはメイン関数にリターンすることに相当し得る。
【0102】
さらには、開示した主題の実施の形態の少なくとも一部が手動または自動的に実現されてもよい。手動または自動的な実現は、機械、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを用いることによって行われてもよく、もしくは少なくとも支援されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現された場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントが機械読み取り可能な媒体に格納されてもよい。プロセッサ(複数可)が当該必要なタスクを実行してもよい。
【0103】
本明細書において概要を説明した様々な方法または工程は、様々なオペレーティングシステムまたはプラットフォームのいずれか1つを用いる1つ以上のプロセッサ上で実行可能なソフトウェアとしてコーディングされてもよい。これに加えて、このようなソフトウェアは、複数の適したプログラミング言語および/もしくはプログラミングツールもしくはスクリプティングツールのいずれかを用いて書かれてもよく、または、フレームワークもしくは仮想マシン上で実行される実行可能な機械言語コードもしくは中間コードとしてコンパイルされてもよい。通常、プログラムモジュールの機能は、様々な実施の形態において所望されるように組み合わされたり分散されたりしてもよい。
【0104】
本開示の実施の形態は、方法として実装されてもよく、その例を提供した。方法の一部として実行される動作は、適切に順序付けされてもよい。したがって、例示した順序とは異なる順序で動作が実行される実施の形態が構成されてもよく、この実施の形態は、例示した実施の形態では連続した動作として示されていたとしても、一部の動作を同時に行うことを含んでもよい。特定の好ましい実施の形態を例として本開示を説明したが、本開示の要旨および範囲内において様々なその他の改作および変更が行われてもよいことを理解されたい。そのため、本開示の趣旨および範囲に含まれるすべてのこのような変形例および変更例を対象として含むことは、添付の特許請求の範囲の態様である。