【文献】
Fan Zhang et al.,Town Crier: An Authenticated Data Feed for Smart Contracts,Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security,2016年,pp.270-282
(58)【調査した分野】(Int.Cl.,DB名)
前記鍵管理ノードのアテステーションプロセスによって、前記鍵管理ノードの前記サービス秘密鍵および前記サービス公開鍵を用意するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
前記リクエストは、前記中継システムノードによって暗号解読され、前記鍵管理ノードの前記サービス秘密鍵を使用して前記アクセスデータを取得する、請求項1から5のいずれか一項に記載のコンピュータ実装方法。
前記鍵管理ノードによって、前記複数の中継システムノードの各々およびアテステーションサービスとともにアテステーションプロセスを実行するステップをさらに含む、請求項1から6のいずれか一項に記載のコンピュータ実装方法。
前記鍵管理ノードは、前記複数の中継システムノードとともに鍵配布プロセスを実行し、前記鍵配布プロセスを実行した結果、前記鍵管理ノードの前記サービス秘密鍵が前記複数の中継システムノードに配布される、請求項7に記載の方法。
ブロックチェーンネットワークの外部にある外部データソースからデータを取得するための装置であって、請求項1から8のいずれか一項に記載の方法を実行するための複数のモジュールを備える、装置。
【発明を実施するための形態】
【0011】
様々な図面中の同様の参照番号および名称は同様の要素を示す。
【0012】
本明細書では、ブロックチェーンネットワーク内の処理のために外部データソースからデータを取得する技術を説明している。これらの技術は、一般的に、鍵管理ノードを通じて共有サービス秘密鍵をマルチノードクラスタ内の複数の中継システムノードに提供し、それにより、中継システムノードを通じてデータソースにデータをリクエストするときにクライアントが中継システムノードのアテステーションを繰り返し実行することを回避できるようにすることを伴う。いくつかの実施形態において、鍵管理ノードに対してリモートアテステーションが実行され、リモートアテステーションの実行の結果、鍵管理ノードのサービス鍵ペア(サービス公開鍵、サービス秘密鍵)が得られる。サービス公開鍵は、リモートアテステーションにおいてクライアントによって取得され記憶される。鍵管理ノードは、信頼実行環境(TEE)を使用することで動作する。鍵管理ノードのリモート認証は、公開監査されるものとしてよく、それにより、個別のクライアントがリモート認証を繰り返す必要がなくなる。いくつかの実施形態において、マルチノードクラスタ内の複数の中継システムノードに対して鍵配布プロセスが鍵管理ノードによって実行され、鍵配布プロセスの実行の結果、同じサービス秘密鍵が中継システムノードの各々に配布される。外部データソースにクエリを実行するために、各クライアントリクエストが中継システムスマートコントラクトによってマルチノードクラスタ内の利用可能な中継システムノードに割り当てられる。クエリの結果を含む応答は、サービス秘密鍵を使用して電子署名される。応答は、サービス公開鍵を使用してクライアントによって検証され得る。
【0013】
特定の実施形態で提供されるような本明細書において説明されている主題は、次の技術的効果のうちの1つまたは複数を実現する。いくつかの実施形態において、サービス秘密鍵を複数の中継システムノードに配布するための鍵管理ノードが提供される。本明細書において説明されているように、鍵管理ノードに対してリモートアテステーションが実行されるものとしてよく、これは各クライアントが中継システムノードのリモートアテステーションを独立して実行する必要をなくす。これは、一般的に、各クライアントからの中継システムノードの個別アテステーションによって引き起こされるネットワークボトルネックを軽減する。さらに、複数の中継システムノードから利用可能な中継システムノードを選択するための中継システムスマートコントラクトが提供される。本明細書において説明されているように、中継システムノードがクラスタ内に展開されている場合、中継システムスマートコントラクトは、クライアントリクエストをクラスタ内の利用可能な中継システムノードに自動的に割り当て、それにより、個別の中継システムノードの障害によりサービスが利用不可能になる事態を低減することができる。そのようなものとして、本明細書の実施形態は、インターネットデータソースにクエリを実行するための中継システムノードの全体的なサービス利用可能性を改善する。いくつかの実施形態において、中継システムスマートコントラクトは、クライアントと中継システムノードとの間の直接的接触を回避することを円滑にし、それにより、中継システムノードの位置またはアクセスポイントを顕わにすることを回避する。そのようなものとして、中継システムノードは、たとえば、分散型サービス拒否(DDoS)攻撃などの、多くの形態のネットワーク上の悪意のある行為を行う者によって見つけられ攻撃される可能性は低い。これは、中継システムノードのセキュリティを改善し、それによって、クライアントと中継システムノードとの間の通信のセキュリティをさらに改善する。
【0014】
本明細書の実施形態に対するさらなる文脈を提示するために、また上で導入されたように、コンセンサスネットワーク(たとえば、ピアツーピアノードからなる)と称され得る分散型台帳システム(DLS)、およびブロックチェーンネットワークは、参加エンティティがトランザクションを安全かつ改竄不能に実施し、データを記憶することを可能にする。ブロックチェーンという用語は、一般的に、特定のネットワーク、および/またはユースケースに関連付けられているけれども、ブロックチェーンは、本明細書では、特定のユースケースを参照することなく、DLSを指すために使用される。
【0015】
ブロックチェーンは、トランザクションが改竄不能である仕方でトランザクションを記憶するデータ構造である。したがって、ブロックチェーン上に記録されるトランザクションは、信頼可能であり、信用できる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号化ハッシュを含めることによってチェーン内で直前にある前のブロックにリンクされる。各ブロックは、タイムスタンプ、それの自暗号化ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによってすでに検証済みのトランザクションは、ハッシュ化され、マークルツリーにエンコードされる。マークルツリーは、ツリーのリーフノードのところのデータがハッシュ化されるデータ構造であり、ツリーの各ブランチ内のすべてのハッシュは、ブランチのルートのところで連結される。このプロセスは、ツリー全体のルートに到達するまで、ツリー内のすべてのデータを表すハッシュを記憶しているツリーを上り続ける。ツリー内に記憶されているトランザクションであると主張するハッシュは、ツリーの構造と一致しているかどうかを決定することによって素早く検証され得る。
【0016】
ブロックチェーンは、トランザクションを記憶するための分散化された、または少なくとも部分的に分散化されたデータ構造であるが、ブロックチェーンネットワークは、トランザクションのブロードキャスト、検証、および正当性確認などを行うことによって1つまたは複数のブロックチェーンの管理、更新、および維持を行うコンピューティングノードのネットワークである。上で紹介されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアム型ブロックチェーンネットワークとして提供され得る。本明細書の実施形態は本明細書ではコンソーシアム型ブロックチェーンネットワークを参照しつつさらに詳しく説明される。しかしながら、本明細書の実施形態は、任意の適切なタイプのブロックチェーンネットワークで実現できることが企図されている。
【0017】
一般に、コンソーシアム型ブロックチェーンネットワークは参加エンティティの間でプライベートである。コンソーシアム型ブロックチェーンネットワークにおいて、コンセンサスプロセスは、コンセンサスノードと称され得る、認可された一組のノードによって制御され、1つまたは複数のコンセンサスノードはそれぞれのエンティティ(たとえば、金融機関、保険会社)によって運用される。たとえば、10エンティティ(たとえば、金融機関、保険会社)のコンソーシアムは、コンソーシアム型ブロックチェーンネットワークを運用することができ、各エンティティは、コンソーシアム型ブロックチェーンネットワーク内の少なくとも1つのノードを運用する。
【0018】
いくつかの例において、コンソーシアム型ブロックチェーンネットワーク内では、すべてのノードにわたって複製されるブロックチェーンとしてグローバルブロックチェーンが提供される。すなわち、すべてのコンセンサスノードは、グローバルブロックチェーンに関して完全な状態のコンセンサスを有する。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、コンソーシアムブロックチェーンネットワーク内にコンセンサスプロトコルが実装される。たとえば、コンソーシアムブロックチェーンネットワークは、以下でさらに詳しく説明される、実用的ビザンチン障害耐性(PBFT)コンセンサスを実装することができる。
【0019】
図1は、本明細書の実施形態を実行するために使用できる環境100の一例を示す図である。いくつかの例において、環境100は、エンティティがコンソーシアム型ブロックチェーンネットワーク102に参加することを可能にする。環境100は、コンピューティングデバイス106、108と、ネットワーク110とを備える。いくつかの例において、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例において、ネットワーク110は、有線および/またはワイヤレス通信リンク上でアクセスされ得る。いくつかの例において、ネットワーク110は、コンソーシアム型ブロックチェーンネットワーク102と、およびコンソーシアム型ブロックチェーンネットワーク102内で通信することを可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表している。いくつかの場合において、コンピューティングデバイス106、108はクラウドコンピューティングシステム(図示せず)のノードであり得るか、または各コンピューティングデバイス106、108はネットワークによって相互接続され、分散処理システムとして機能する多数のコンピュータを含む別個のクラウドコンピューティングシステムであり得る。
【0020】
示されている例では、コンピューティングデバイス106、108は、各々、コンソーシアム型ブロックチェーンネットワーク102内のノードとして参加を可能にする任意の適切なコンピューティングシステムを含み得る。コンピューティングデバイスの例は、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例において、コンピューティングデバイス106、108は、コンソーシアム型ブロックチェーンネットワーク102とインタラクティブにやり取りするために1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングデバイス106は、1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために第1のエンティティが使用するトランザクション管理システムなどの、第1のエンティティ(たとえば、ユーザA)のコンピュータ実装サービスをホストすることができる。コンピューティングデバイス108は、1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために第2のエンティティが使用するトランザクション管理システムなどの、第2のエンティティ(たとえば、ユーザB)のコンピュータ実装サービスをホストすることができる。
図1の例において、コンソーシアム型ブロックチェーンネットワーク102はノードのピアツーピアネットワークとして表され、コンピューティングデバイス106、108は、コンソーシアム型ブロックチェーンネットワーク102に参加する、第1のエンティティ、および第2のエンティティのノードをそれぞれ提供する。
【0021】
図2は、本明細書の実施形態によるアーキテクチャ200の一例を示す図である。概念的アーキテクチャ200は、参加者A、参加者B、および参加者Cにそれぞれ対応する参加者システム202、204、206を含む。各参加者(たとえば、ユーザ、企業)は、複数のノード214を含むピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加し、その少なくともいくつかはブロックチェーン216に情報を改竄不能に記録する。単一のブロックチェーン216は、ブロックチェーンネットワーク212内に概略として図示されているが、ブロックチェーン216の複数のコピーが提供され、本明細書においてさらに詳しく説明されるように、ブロックチェーンネットワーク212にまたがって維持される。
【0022】
示されている例において、各参加者システム202、204、206は、参加者A、参加者B、および参加者Cによって、またはそれらに代わって、それぞれ提供され、ブロックチェーンネットワーク内でそれぞれのノード214として機能する。本明細書において使用されているように、ノードは、一般的に、ブロックチェーンネットワーク212に接続され、それぞれの参加者がブロックチェーンネットワークに参加することを可能にする個別のシステム(たとえば、コンピュータ、サーバ)を指す。
図2の例では、参加者は、各ノード214に対応する。しかしながら、参加者はブロックチェーンネットワーク212内の複数のノード214を運用することができ、および/または複数の参加者がノード214を共有することができることが企図されている。いくつかの例において、参加者システム202、204、206は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用し、および/またはリモートプロシージャコール(RPC)を使用してブロックチェーンネットワーク212と、またはブロックチェーンネットワーク212を通じて通信する。
【0023】
ノード214がブロックチェーンネットワーク212に参加する程度は様々であり得る。たとえば、いくつかのノード214はコンセンサスプロセスに参加することができるが(たとえば、ブロックをブロックチェーン216に追加するマイナーノードとして)、他のノード214はコンセンサスプロセスに参加しない。別の例として、いくつかのノード214はブロックチェーン216の完全なコピーを記憶するが、他のノード214はブロックチェーン216の一部分のコピーのみを記憶する。たとえば、データアクセス特権は、それぞれのシステム内にそれぞれの参加者が記憶させるブロックチェーンデータを制限することができる。
図2の例において、参加者システム202、204は、ブロックチェーン216のそれぞれの完全なコピー216'、216''を記憶する。
【0024】
ブロックチェーン(たとえば、
図2のブロックチェーン216)はブロックのチェーンから構成され、各ブロックがデータを記憶する。データの例は、2者またはそれ以上の参加者の間のトランザクションを表すトランザクションデータを含む。トランザクションは本明細書では非限定的な例で使用されているが、任意の適切なデータがブロックチェーン内に記憶され得る(たとえば、文書、画像、動画、音声)ことが企図されている。トランザクションの例は、限定することなく、価値のある何か(たとえば、資産、製品、サービス、通貨)の交換を含むことができる。トランザクションデータは、ブロックチェーン内に改竄不能に記憶される。すなわち、トランザクションデータは変更できない。
【0025】
ブロックに記憶する前に、トランザクションデータはハッシュ化される。ハッシュ化は、トランザクションデータ(文字列データとして提供される)を固定長ハッシュ値(これも文字列データとして提供される)に変換するプロセスである。ハッシュ値を逆ハッシュ化して、トランザクションデータを取得することはできない。ハッシュ化は、トランザクションデータにわずかな変化があっても結果として、完全に異なるハッシュ値をもたらすことを確実にする。さらに、上で指摘されているように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズに関係なくハッシュ値の長さは固定される。ハッシュ化は、ハッシュ関数を通じてトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の一例は、限定することなく、セキュアハッシュアルゴリズム(SHA)-256を含み、これは256ビットハッシュ値を出力する。
【0026】
複数のトランザクションのトランザクションデータがハッシュ化され、1つのブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が提供され、それら自体がハッシュ化され別のハッシュを提供する。このプロセスは、1つのブロックに記憶されるべきすべてのトランザクションについて、単一のハッシュ値が提供されるまで繰り返される。このハッシュ値は、マークルルートハッシュと称され、そのブロックのヘッダに記憶される。それらのトランザクションのうちのどれかに変化が生じると結果として、そのハッシュ値が変化し、最終的にマークルルートハッシュが変化することになる。
【0027】
ブロックは、コンセンサスプロトコルを通じてブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードがコンセンサスプロトコルに参加し、ブロックをブロックチェーンに追加させる作業を遂行する。そのようなノードは、コンセンサスノードと称される。上で導入された、PBFTは、コンセンサスプロトコルの非限定的な例として使用される。コンセンサスノードはコンセンサスプロトコルを実行してトランザクションをブロックチェーンに追加し、ブロックチェーンネットワークの全体の状態を更新する。
【0028】
さらに詳しく言うと、コンセンサスノードは、ブロックヘッダを生成し、ブロック内のトランザクションのすべてをハッシュ化し、ハッシュ値をペアに組み合わせてさらなるハッシュ値を生成し、これを、ブロック内のすべてのトランザクションに対して単一のハッシュ値が提供されるまで続ける(マークルルートハッシュ)。このハッシュは、ブロックヘッダに追加される。コンセンサスノードは、また、ブロックチェーン内の最新ブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。コンセンサスノードは、ノンス値、およびタイムスタンプもブロックヘッダに追加する。
【0029】
一般に、PBFTは、ビザンチン障害に耐える実用的ビザンチン状態機械複製を提供する(たとえば、正常に機能していないノード、悪意のあるノード)。これは、PBFTにおいて、その障害が発生することを仮定する(たとえば、独立したノード障害の存在、および/またはコンセンサスノードによって送信される操作されたメッセージの存在を仮定する)ことによって達成される。PBFTにおいて、コンセンサスノードは、プライマリコンセンサスノード、およびバックアップコンセンサスノードを含む順序で提供される。プライマリコンセンサスノードは、定期的に変更される。トランザクションは、ブロックチェーンネットワークのワールドステートに関して合意に達したブロックチェーンネットワーク内のすべてのコンセンサスノードによってブロックチェーンに追加される。このプロセスにおいて、コンセンサスノードの間でメッセージが伝送され、各コンセンサスノードは、指定されたピアノードからメッセージが受信されたことを証明し、そのメッセージが伝送中に修正されなかったことを検証する。
【0030】
PBFTにおいて、コンセンサスプロトコルは、同じ状態から始まるすべてのコンセンサスノードとともに複数のフェーズで提供される。まず、クライアントがリクエストをプライマリコンセンサスノードに送信して、サービスオペレーションを呼び出す(たとえば、ブロックチェーンネットワーク内でトランザクションを実行する)。リクエストを受信したことに応答して、プライマリコンセンサスノードは、そのリクエストをバックアップコンセンサスノードにマルチキャストする。バックアップコンセンサスノードは、そのリクエストを実行し、各々、返信をクライアントに送信する。クライアントは、閾値個数のリプライが受信されるまで待機する。いくつかの例において、クライアントは、f+1個のリプライが受信されるのを待つが、fはブロックチェーンネットワーク内で耐えることができる障害のあるコンセンサスノードの最大数である。最終的な結果として、十分な数のコンセンサスノードがあればブロックチェーンに追加されるべき記録の順序に関して合意に達し、記録は受け入れられるか、または拒否されるかのいずれかである。
【0031】
いくつかのブロックチェーンネットワークにおいて、トランザクションのプライバシーを維持するために暗号方式が実装される。たとえば、2つのノードがトランザクションを秘密に保ち、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を認識できないようにしたい場合、それらのノードはトランザクションデータを暗号化することができる。暗号方式の一例は、限定はしないが、対称暗号化、および非対称暗号化を含む。対称暗号化は、暗号化(平文から暗号文を生成すること)と暗号解読(暗号文から平文を生成すること)の両方に単一の鍵を使用する暗号化プロセスを指す。対称暗号化において、同じ鍵は複数のノードに利用可能であり、したがって各ノードはトランザクションデータを暗号化/暗号解読することができる。
【0032】
非対称暗号化は、各々秘密鍵と公開鍵とを含む鍵のペアを使用し、秘密鍵はそれぞれのノードにのみ知られており、公開鍵はブロックチェーンネットワーク内のどれかまたはすべての他のノードに知られている。ノードは別のノードの公開鍵を使用してデータを暗号化することができ、暗号化されたデータは他のノードの秘密鍵を使用して暗号解読され得る。たとえば、再び
図2を参照すると、参加者Aは参加者Bの公開鍵を使用してデータを暗号化し、暗号化済みデータを参加者Bに送信することができる。参加者Bはその秘密鍵を使用して暗号化済みデータ(暗号文)を暗号解読し、元のデータ(平文)を抽出することができる。ノードの公開鍵で暗号化されたメッセージは、ノードの秘密鍵を使用してのみ暗号解読され得る。
【0033】
非対称暗号化は、電子署名を提供するために使用され、これはトランザクションに関わっている参加者がトランザクションに関わっている他の参加者、さらにはトランザクションの妥当性を確認することを可能にする。たとえば、一方のノードがメッセージに電子署名し、他方のノードが、参加者Aの電子署名に基づきそのメッセージがノードによって送信されたことを確認することができる。電子署名は、メッセージが伝送中に改竄されないことを確実にするためにも使用され得る。たとえば、再び
図2を参照すると、参加者Aはメッセージを参加者Bに送信しようとしている。参加者Aはメッセージのハッシュを生成し、次いで、その秘密鍵を使用して、ハッシュを暗号化し、電子署名を暗号化済みハッシュとして提供する。参加者Aは電子署名をメッセージに付加し、そのメッセージを電子署名とともに参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用して電子署名を暗号解読し、ハッシュを抽出する。参加者Bは、メッセージをハッシュ化し、ハッシュ同士を比較する。ハッシュが同じであれば、参加者Bは、そのメッセージが本当に参加者Aから来たものであり、改竄されていないことを確認することができる。
【0034】
いくつかの実施形態において、ブロックチェーンネットワークのノード、および/またはブロックチェーンネットワークと通信するノードは、TEEを使用して動作することができる。高水準では、TEEはハードウェアの動作環境(たとえば、オペレーティングシステム(OS)、基本入出力システム(BIOS))から分離されているハードウェア(1つまたは複数のプロセッサ、メモリ)内の信頼できる環境である。さらに詳しく言うと、TEEは、実行するコード、およびメインプロセッサ内にロードされるデータの機密性および完全性を確実にするプロセッサの別個の安全な領域である。プロセッサ内では、TEEは、OSと並列に稼動する。いわゆる信頼できるアプリケーション(TA)の少なくとも一部はTEE内で実行され、プロセッサおよびメモリにアクセスすることができる。TEEを通じて、TAはメインOS内で稼動している他のアプリケーションから保護される。さらに、TEEは、TAをTEEの内側において互いからTAを暗号方式で隔離する。
【0035】
TEEの一例は、米国カリフォルニア州サンタクララ所在のIntel Corporation社によって提供されている「ソフトウェアガードエクステンションズ」(SGX)を含む。SGXは、本明細書において、例を用いて説明されているけれども、本明細書の実施形態は、任意の適切なTEEを使用して実現できることが企図されている。
【0036】
SGXは、ハードウェアベースのTEEを提供する。SGXでは、信頼できるハードウェアは中央演算処理装置(CPU)のダイであり、物理メモリの一部はセレクトコードおよびデータを保護するために隔離される。メモリの隔離された部分は、エンクレーブと称される。より具体的には、エンクレーブは、メモリ内のエンクレーブページキャッシュ(EPC)として用意され、アプリケーションのアドレス空間にマッピングされる。メモリ(たとえば、DRAM)は、SGXに対する予約済みランダムメモリ(PRM)を備える。PRMは、最下位のBIOSレベルの連続メモリ空間であり、いかなるソフトウェアによってもアクセスされ得ない。各EPCは、アプリケーションのデータおよびコードをPRM内にロードするためにOSによって割り振られているメモリセット(たとえば、4KB)である。EPCメタデータ(EPCM)は、それぞれのEPCに対するエントリアドレスであり、各EPCが1つのエンクレーブによってのみ共有され得ることを確実にする。すなわち、単一のエンクレーブが複数のEPCを使用することができるが、EPCは単一のエンクレーブ専用である。
【0037】
TAの実行中に、プロセッサは、エンクレーブ内に記憶されているデータにアクセスするときにいわゆるエンクレーブモードで動作する。エンクレーブモードで動作すると、メモリアクセス毎に余分なハードウェアチェックが強制的に行われる。SGXでは、TAは、信頼できる部分と、信頼できない部分とにコンパイルされる。信頼できる部分は、たとえば、OS、BIOS、特権システムコード、仮想マシンマネージャ(VMM)、システム管理モード(SMM)、などによってアクセスすることはできない。動作時に、TAは実行され、メモリのPRM内にエンクレーブを作成する。エンクレーブ内の信頼できる部分によって実行される信頼できる機能が、信頼できない部分によって呼び出され、エンクレーブ内で実行するコードはデータを平文データ(暗号化されていない)としてみなして、そのデータへの外部アクセスが拒否される。信頼できる部分はその呼び出しへの暗号化された応答を提供し、TAは実行を続ける。
【0038】
アテステーションプロセスが実行され、期待されるコード(たとえば、TAの信頼できる部分)がSGX提供TEE内で安全に実行されていることを検証することができる。一般に、アテステーションプロセスは、TAがチャレンジャー(たとえば、ブロックチェーンネットワーク内の別のノード、またはブロックチェーンネットワークの鍵管理システム(KMS))からのアテステーションリクエストを受信することを含む。それに応答して、TAは、そのエンクレーブがリモートアテステーションを生成することを要求し、これはクオートとも称される。リモートアテステーションを生成することは、ローカルアテステーションがエンクレーブからいわゆるクオーティングエンクレーブに送信され、ローカルアテステーションを検証し、非対称アテステーション鍵を使用してローカルアテステーションに署名することによってローカルアテステーションをリモートアテステーションに変換することを含む。リモートアテステーション(クオート)は、チャレンジャーに提供される(たとえば、ブロックチェーンネットワークのKMS)。
【0039】
チャレンジャーは、アテステーション検証サービスを使用してリモートアテステーションを検証する。SGXのために、IntelはIntel Attestation Service(IAS)を用意しており、これはチャレンジャーからリモートアテステーションを受信し、リモートアテステーションを検証する。より具体的には、IASはリモートアテステーションを処理し、リモートアテステーションが検証されたかどうかを示す、レポート(たとえば、アテステーション検証レポート(AVR))を提供する。検証されていない場合、エラーが示され得る。検証されている(期待されたコードがTEE内で安全に実行されている)場合、チャレンジャーは、TAとのインタラクティブなやり取りを開始するか、または続行することができる。たとえば、検証に応答して、KMS(チャレンジャーとして)は非対称暗号化鍵(たとえば、公開鍵と秘密鍵とのペア)をTEEを実行しているノードに発行し(たとえば、楕円曲線ディフィー-ヘルマン鍵共有(ECDH)などの鍵交換プロセスを通じて)、ノードが他のノードおよび/またはクライアントと安全に通信することを可能にすることができる。
【0040】
いくつかのブロックチェーンネットワークにおいて、いわゆるスマートコントラクトが実行され得る。スマートコントラクトは、様々な当事者に影響を及ぼす契約条項を有する実世界の適法契約のデジタル表現として記述され得る。スマートコントラクトは、例示的な文脈において、コンソーシアム型ブロックチェーンネットワーク内で実装され、記憶され、更新され(必要に応じて)、実行される。スマートコントラクトに関連付けられている契約当事者(たとえば、買手および売手)は、コンソーシアム型ブロックチェーンネットワーク内のノードとして表される。いくつかの例において、契約当事者は、スマートコントラクトに(たとえば、スマートコントラクトへの当事者として)関連付けられているエンティティ(たとえば、企業)を含むことができる。
【0041】
さらに詳しく言うと、スマートコントラクトは、ブロックチェーン上で実行するコンピュータ実行可能プログラム(たとえば、ブロックチェーンネットワーク内のノード)として提供される。スマートコントラクトは、そのスマートコントラクトの当事者が互いにインタラクティブにやり取りすることに合意する際に基づく事前定義されたルールのセットを含む。スマートコントラクトの事前定義されたルールが満たされた場合、スマートコントラクトにおいて定義されている合意が自動的に強制される。スマートコントラクトは、通常、改竄防止対策が施されており、合意またはトランザクションの交渉もしくは履行を円滑にし、検証し、強制する。
【0042】
いくつかの事例において、ブロックチェーンネットワーク内で実行するスマートコントラクトは、事前定義されたルールを評価し、対応するアクションを実行するためにブロックチェーンネットワークの外部からの入力を必要とする。非限定的な例では、株価はブロックチェーンネットワークの外部のデータソースに由来し、決定が基づくべきスマートコントラクトに対してこの株価が必要になることもあり得る。別の非限定的な例として、決定が基づくべきスマートコントラクトに対してブロックチェーンネットワークの外部で維持されるアカウントに対するアカウント情報が必要になることもあり得る。しかしながら、スマートコントラクトそれ自体は外部データソースに直接クエリを実行することができない場合がある。
【0043】
いくつかの実施形態において、外部データを取得しそのデータをブロックチェーンにサブミットしスマートコントラクトにより処理するために中継エージェントが使用され得る。しかしながら、このプロセスは、結果として、セキュア情報(たとえば、外部データソースにアクセスするために必要になり得るであろう資格証明書)の漏洩などのセキュリティ問題を引き起こし得る。いくつかの場合において、TEEは、中継エージェントが指定されたクエリリクエストを誠実に実行したことを証明するために使用され得る。しかしながら、ブロックチェーンの開放性により、すべてのクエリリクエストはブロックチェーンネットワーク内のすべてのユーザ(ノード)から見える。その結果、リクエスト文字列は横取りされ、修正され、再生されて、結果として情報漏洩および他のセキュリティ問題が発生し得るおそれがある。
【0044】
いくつかの場合において、SGX、TA、またはTAの一部は、中継ノードとしてエンクレーブ(エンクレーブプログラム)機能において実行し外部データソースにアクセスするために使用され得る。たとえば、エンクレーブプログラムは、クエリリクエスト(たとえば、HTTPSリクエスト)をインターネットベースのデータソースに送信することができ、その応答をそのリクエストを開始したスマートコントラクトに提供することができる。いくつかの例において、プライバシーフィールド機能が用意され、これはエンクレーブの公開鍵を使用して機密情報(たとえば、アクセス資格証明書)を暗号化するために使用できる。いくつかの例において、中継ノードは、エンクレーブの秘密鍵を使用してプライバシーフィールドを暗号解読し、HTTPSクライアントを呼び出してターゲットのインターネットベースのデータソースにアクセスし、要求されたデータを受信し、秘密鍵を使用して返されたデータに電子署名する。電子署名の後に、データはそのリクエストを開始したスマートコントラクトに返される。
【0045】
いくつかの例において、エンクレーブプログラムを実装する中継システムノードは、リモートアテステーションプロセスにおいて検証される。各クライアントリクエストは、データソースからデータを取得するために検証済み中継システムノードによって処理され得る。
【0046】
しかしながら、そのようなアプローチには不都合な点があり得る。データ取得に特定の中継システムノードを使用する不都合な点の例は、中継システムノードが故障するか、またはアクセス不能になった場合に、クライアントリクエストが正しく処理され得ず、その結果サービスが利用不可能になることである。
【0047】
いくつかの実施形態において、外部データソース(たとえば、インターネットベースのデータソース)に対して、サービス秘密鍵およびTEEを共有する複数の中継システムノードのうちのどれか1つによってクエリが実行され得る。したがって、各クライアントは、中継システムノードのリモートアテステーションを独立して実行しなくてよく、それによって、各クライアントからの中継システムノードの個別のアテステーションによって引き起こされるネットワークボトルネックを軽減し、アテステーションを処理するためのサーバまたはコンピュータの作業負荷を低減する。さらに、中継システムノードは、クラスタ内に配備されてよく、各クライアントリクエストは、クラスタ内の利用可能な中継システムノードに自動的に割り当てられ得る。この方式では、個別の中継システムノードの障害が生じてもサービスが利用不可能にならないので、サービスの利用可能性は改善され得る。
【0048】
図3は、本明細書の実施形態によるシステム300の一例を示す図である。図示されているように、システム300は、ブロックチェーン302、マルチノードクラスタを形成する複数の中継システムノード308、鍵管理ノード310、ネットワーク312(たとえば、インターネット)、およびクライアント314(たとえば、クライアントコンピューティングデバイス)を含む。示されている例では、ブロックチェーン302は、クライアントスマートコントラクト304と中継システムスマートコントラクト306とを含む。いくつかの実施形態において、中継システムノード308および鍵管理ノード310は、TEE技術(たとえば、Intel SGX)を使用して実装される。一般に、中継システムスマートコントラクト306、中継システムノード308、および中継管理ノード310は、ブロックチェーン302の外部にあるデータがインターネットデータソース314から取得され、ブロックチェーン302内で使用されることを可能にする中継システムを提供する。
【0049】
クライアントスマートコントラクト304は、ネットワーク312上のデータソースにデータまたはサービスを要求するスマートコントラクトである。中継システムスマートコントラクト306は、中継システム内のブロックチェーン302のフロントエンドとして働くスマートコントラクトである。中継システムスマートコントラクト306は、クライアントスマートコントラクト304に対するアプリケーションプログラムインターフェース(API)を実装し、クライアントスマートコントラクト304から中継システムの他のコンポーネント(たとえば、中継システムノード308)への、およびその逆の方向の、データの処理および中継に使用する。
【0050】
中継システムノード308は、ブロックチェーン302からのデータリクエストに応答してネットワーク312内の外部データソースからデータを取得するために任意の好適なサーバ、コンピュータ、モジュール、またはコンピューティング要素上に実装され得る。たとえば、中継システムノード308は、クライアントスマートコントラクト304からのオフチェーンデータまたはサービスリクエストを受信し、処理し、ネットワーク312、たとえば、HTTPS対応インターネットサービスにおいて外部データソースに対するクエリを実行するものとしてよい。
【0051】
鍵管理ノード310は、外部データソースからデータを取得するために使用される暗号鍵を管理するために任意の好適なサーバ、コンピュータ、モジュール、またはコンピューティング要素上に実装され得る。本明細書において説明されているように、暗号鍵は、鍵管理ノード310によって生成されるサービス公開鍵とサービス秘密鍵とを備え、サービス秘密鍵はリクエスト結果に署名するために使用することができ、サービス公開鍵はリクエスト結果を認証するために使用できる。
【0052】
一般的に、データ取得プロセスは3つのフェーズを含むことができる。第1のフェーズは、クライアント314が鍵管理ノード310を認証し、鍵管理ノード310の認証鍵(たとえば、サービス公開鍵)を取得するリモートアテステーションプロセスを含む。第2のフェーズでは、鍵管理ノード310は、すべての中継システムノード308が同じ署名鍵を共有するように署名鍵(たとえば、サービス秘密鍵)をマルチノードクラスタ内の中継システムノード308の各々に配布する。第3のフェーズは、クライアント314が中継システムを通じて外部データソースから認可されたデータを取得するデータリクエストプロセスを含む。第3のフェーズでは、データは、ネットワーク312にクエリを実行し、そのサービス秘密鍵を使用してリクエスト結果に署名する中継システムノード308によって中継システムを通じて取得され、クライアント314はそのサービス公開鍵を使用してリクエスト結果を認証することができる。以下では、
図4〜
図10を参照しつつこれら3つのフェーズをさらに詳しく説明する。
【0053】
図4は、本明細書の実施形態によるシステム400の一例を示す図である。図示されているように、システム400は、デベロッパー402(たとえば、デベロッパーサーバ)、クライアント404(たとえば、クライアントコンピューティングデバイス)、鍵管理ノード406、アテステーションサービス408、およびネットワーク410(たとえば、インターネット)を含む。クライアント404、鍵管理ノード406、およびインターネット410は、それぞれ
図3に示されているようなクライアント314、鍵管理ノード310、およびネットワーク312と同じコンポーネントであってよい。クライアント404は、鍵管理ノード406の正当性を決定するためにアテステーションサービス408によって検証され得る、アテステーションエビデンス(attestation evidence)420について鍵管理ノード406にチャレンジすることができる。アテステーションサービス408の一例は、上で説明されている、IASを含む。
【0054】
デベロッパー402は、本明細書において説明されているような方法を実行するようにプログラムされる任意の好適なサーバ、コンピュータ、モジュール、またはコンピューティング要素であってよい。いくつかの例において、デベロッパー402は、鍵管理ノード406に関係するプログラム、データ、またはその両方を記憶し、処理することができる。たとえば、デベロッパー402は、鍵管理ノード406のソースコードおよび測定値(たとえば、初期状態のダイジェスト)を記憶することができる。デベロッパー402は、リクエストがあり次第、鍵管理ノード406の測定値をクライアント404に送信することができる。
【0055】
クライアント404は、鍵管理ノード406の正当性を示すアテステーションエビデンス420に対するリクエスト(チャレンジ)を鍵管理ノード406に送信することができる。いくつかの例において、アテステーションエビデンス420は、鍵管理ノード406が正当なTEEノードであるかどうかを決定するために使用される。クライアント404は、アテステーションエビデンス420をアテステーションサービス408に提供し、アテステーションサービス408からアテステーション検証レポート(AVR)430を受信することができる。いくつかの実施形態において、クライアント404はAVR430を検証して、アテステーションエビデンス420が有効であるかどうかを決定する。いくつかの例において、クライアント404は、鍵管理ノード406から測定値422を取得し、それをデベロッパー402から取得された別の測定値422と比較する。AVR430の検証が成功し、2つの測定値422が一致した場合、クライアント404は、鍵管理ノード406が正当なTEEノードであり、したがって信頼できると決定することができる。
【0056】
鍵管理ノード406は、クライアント404からリクエストがあり次第、アテステーションエビデンス420を生成することができる。いくつかの実施形態において、鍵管理ノード406は、将来の通信の認証および暗号化のためにクライアント404によって使用できる、サービス公開鍵424およびサービス秘密鍵を用意する。いくつかの実施形態において、鍵管理ノード406は、アテステーションエビデンス420に署名するためにアテステーション秘密鍵、たとえば、強化プライバシーID(EPID)秘密鍵をさらに用意する。EPID秘密鍵を使用して署名されたアテステーションエビデンス420は、EPID公開鍵を使用してアテステーションサービス408によって検証され得る。EPIDは、プライバシーを保持しながら、信頼できるシステムのアテステーション用にIntelによって提供されているアルゴリズムである。一般に、ネットワークのメンバー(たとえば、コンピュータまたはサーバ)の各々は、アテステーションエビデンスに署名するためにEPID秘密鍵を割り当てられ、ネットワーク内のアテステーションエビデンスの検証器は、ネットワークの他のメンバーのEPID秘密鍵とペアにされたEPID公開鍵を記憶する。メンバーの各々は、自EPID秘密鍵を使用してアテステーションエビデンスの署名を生成することができ、検証器は、EPID公開鍵を使用して他のメンバーの署名を検証することができる。そのようなものとして、EPID鍵は、コンピュータまたはサーバなどのデバイスが本物のデバイスであることを証明するために使用され得る。
【0057】
いくつかの例において、アテステーションエビデンス420は、鍵管理ノード406の正当性(たとえば、鍵管理ノード406が信頼できるエンティティであるかどうか)を示し、鍵管理ノード406の測定値422(たとえば、ダイジェスト)と、サービス公開鍵424と、電子署名426とを含む。測定値422は、鍵管理ノード406の初期状態のダイジェスト(たとえば、ハッシュ値)を含み得る。サービス公開鍵424は、サービス秘密鍵とともに鍵管理ノード406によって所定の鍵生成アルゴリズム(たとえば、Rivest-Shamir-Adleman(RSA))を使用してランダムに生成され得る。署名426は、測定値422およびサービス公開鍵424に基づき、鍵管理ノード406のアテステーション秘密鍵(たとえば、EPID秘密鍵)を使用して生成される。
【0058】
アテステーションサービス408は、アテステーションエビデンス420の妥当性を検証するために任意の好適なサーバ、コンピュータ、モジュール、またはコンピューティング要素上に実装され得る。上で指摘されているように、アテステーションエビデンス420は、鍵管理ノード406の測定値422、サービス公開鍵424、および署名426を含む。アテステーションエビデンス420を受信した後、アテステーションサービス408は署名426を検証し、AVR430を生成することができる。
【0059】
いくつかの例において、アテステーションサービス408は、アテステーション公開鍵(たとえば、EPID公開鍵)を使用してアテステーションエビデンス420内の署名426を検証することができる。署名426を検証した後、アテステーションサービス408は、アテステーションエビデンス420、アテステーションエビデンス420内の署名426が有効であるかどうかを示す検証結果434、およびアテステーションサービス408の署名436を含むAVR430を生成することができる。
【0060】
いくつかの実施形態において、AVR430は、鍵管理ノード406の署名426を除いたアテステーションエビデンス420を含む。たとえば、AVR430は、鍵管理ノード406の測定値422、サービス公開鍵424、検証結果434、および署名436を含み得る。いくつかの例において、署名436は、レポート署名鍵(たとえば、秘密鍵)を使用してアテステーションエビデンス420および検証結果434に基づき生成される。
【0061】
動作時に、クライアント404は、デベロッパー402から鍵管理ノード406の測定値422を取得する。クライアント404は、鍵管理ノード406にクエリ(チャレンジ)を実行し、アテステーションエビデンス420を受信し、アテステーションエビデンス420をアテステーションサービス408に送信する。アテステーションサービス408は、アテステーションエビデンス420を検証し、AVR430をクライアント404に送信する。クライアント404は、AVR430内の署名436および測定値422に基づきAVR430を検証する。AVR430の検証に成功した後、クライアント404は、鍵管理ノード406が信頼できるエンティティであると決定し、鍵管理ノード406のサービス公開鍵424を登録(たとえば、記憶)する。以下では、
図5を参照しつつ、アテステーションエビデンス420およびAVR430の検証をさらに詳しく説明する。
【0062】
図5は、本明細書の実施形態による信号の流れ500の一例を示す図である。信号の流れ500は、鍵管理ノード(たとえば、鍵管理ノード406)のアテステーション検証プロセスを表す。便宜上、プロセスは、1つまたは複数の場所に配置され、本明細書に従って適切にプログラムされている、1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、分散システム(
図4のシステム400)は、適切にプログラムされ、プロセスを実行することができる。
【0063】
図5の例では、デベロッパー402は、クライアント404からリクエストがあった場合に鍵管理ノード406の測定値422をクライアント404に送信する(502)。たとえば、クライアント404は、鍵管理ノード406の測定値422を求めるリクエストをデベロッパーサーバ402に送信し得る。クライアント404の同一性を検証した後、デベロッパーサーバ402は、要求された測定値422をクライアント404に送信することができる。クライアント404は、将来使用するために鍵管理ノード406の測定値422を記憶する。
【0064】
クライアント404は、アテステーションリクエスト(たとえば、チャレンジ)を鍵管理ノード406に送信する(504)。アテステーションリクエストが鍵管理ノード406に送信され、鍵管理ノード406の正当性を決定するために使用できるアテステーションエビデンス420を要求する。
【0065】
アテステーションリクエストに応答して、鍵管理ノード406はアテステーションエビデンス420を生成する(506)。いくつかの例において、アテステーションエビデンス420は、鍵管理ノード406の測定値422、サービス公開鍵424、および電子署名426を含む。いくつかの実施形態において、測定値422は、鍵管理ノード406の初期状態のダイジェストを含むことができる。たとえば、測定値422は、鍵管理ノード406上で実装されるプロセスコードのハッシュ値を含み得る。サービス公開鍵424は、サービス秘密鍵とともに鍵管理ノード406によって所定の鍵生成アルゴリズム(たとえば、RSA)を使用してランダムに生成され得る。署名426は、測定値422およびサービス公開鍵424に基づき、鍵管理ノード406のアテステーション秘密鍵(たとえば、EPID秘密鍵)を使用して生成され得る。
【0066】
鍵管理ノード406は、アテステーションリクエストに応答して、アテステーションエビデンス420をクライアント404に送信する(508)。クライアント404は、アテステーションエビデンス420をアテステーションサービス408に転送する(510)。いくつかの実施形態において、クライアント404は、アテステーション検証リクエストをアテステーションサービス408に送信する。アテステーション検証リクエストは、鍵管理ノード406のアテステーションエビデンス420、およびたとえば、鍵管理ノード406がSGXプラットフォームサービスを使用するかどうかを示すディスクリプタなどの、何らかの補足的情報を含むことができる。
【0067】
アテステーションサービス408は、クライアント404からアテステーションエビデンス420を受信したことに応答してアテステーションエビデンス420を検証する(512)。指摘されているように、アテステーションエビデンス420は、鍵管理ノード406の測定値422、サービス公開鍵424、および署名426を含む。指摘されているように、署名426は、測定値422およびサービス公開鍵424に基づき、鍵管理ノード406のアテステーション秘密鍵(たとえば、EPID秘密鍵)を使用して生成され得る。いくつかの例において、アテステーションサービス408は、アテステーションエビデンス420内の署名426を検証するために使用できるアテステーション公開鍵(たとえば、EPID公開鍵)を用意する。
【0068】
アテステーションサービス408が、アテステーションエビデンス420内の署名426が有効であると決定した場合、アテステーションサービス408は、鍵管理ノード406が信頼できるエンティティであると決定することができる。アテステーションサービス408が、署名426が無効であると決定した場合、アテステーションサービス408は、鍵管理ノード406が信頼できるエンティティでないと決定することができ、エラーのフラグを立て、鍵管理ノード406からのその後のデータおよびリクエストを拒否することができる。
【0069】
アテステーションサービス408は、アテステーションエビデンス420の検証に基づきAVR430を生成する(514)。いくつかの実施形態において、AVR430は、アテステーションエビデンス420、アテステーション検証結果434、およびアテステーションサービス408の電子署名436を含むことができる。いくつかの実施形態において、AVR430は、鍵管理ノード406の署名426を除いたアテステーションエビデンス420を含み得る。たとえば、AVR430は、測定値422、サービス公開鍵424、アテステーション検証結果434、およびアテステーションサービス408の署名436を含み得る。
【0070】
AVR430内のアテステーション検証結果434は、アテステーションエビデンス420内の署名426が有効であるかどうかを示す。たとえば、アテステーション検証結果430は、「有効」の値、またはアテステーションエビデンス420内の署名426が有効であることを示す「OK」、または署名426が無効であることを示す「無効」の値を含み得る。
【0071】
いくつかの実施形態において、AVR430内の署名436は、レポート署名鍵を使用してアテステーションエビデンス420およびアテステーション検証結果434に基づき生成される。レポート署名鍵は、アテステーションサービス408がAVR430に署名するために使用する秘密鍵であるものとしてよい。いくつかの例において、レポート署名鍵は、所定の鍵生成アルゴリズムを使用してアテステーションサービス408によって生成される。たとえば、レポート署名鍵は、RSAセキュアハッシュアルゴリズム(SHA)256を使用して生成され得る。
【0072】
アテステーションサービス408は、AVR430をクライアント404に送信する(516)。いくつかの実施形態において、クライアント404はAVR430を受信した後AVR430を検証する(518)。いくつかの例において、クライアント404は、レポート署名証明書を使用してAVR430内の署名436を検証することができる。レポート署名証明書はX.509電子証明書であってよい。クライアント404が、AVR430内の署名436が有効であると検証した場合、クライアント404は、AVR430がアテステーションサービス408によって本当に送信されたと決定することができる。クライアント404が、AVR430内の署名436が無効であると決定した場合、クライアント404は、AVR430が本物でないと決定することができ、AVR430を拒否することができる。クライアント404は、AVR430内のアテステーション検証結果434をさらに検査してアテステーションエビデンス420がアテステーションサービス408によって正常に検証されたかどうかを決定し得る。
【0073】
いくつかの実施形態において、クライアント404は、AVR430内のアテステーションエビデンス420の中の測定値422をデベロッパー402からすでに取得されている測定値422と比較し、アテステーションエビデンス420が有効であるかどうかを決定する。
【0074】
クライアント404は、AVR430が本物であると決定したことに応答して鍵管理ノード406を信頼できるエンティティとして登録する(520)。たとえば、クライアント404は、AVR430内の測定値422がデベロッパーサーバ402からすでに取得されている測定値422と一致する、検証結果434が署名426が有効であることを示している、署名436が有効であると検証される、またはこれらの組合せである場合に、鍵管理ノード406は信頼できるノードであるとみなすことができる。クライアント404は、AVR430内のアテステーションエビデンス420に含まれるサービス公開鍵424をさらに記憶するものとしてよい。
【0075】
図6は、本明細書の実施形態によるシステム600の一例を示す図である。図示されているように、システム600は、アドミニストレータ602(たとえば、管理コンピューティングデバイス)、鍵管理ノード604、複数の中継システムノード606、アテステーションサービス608、およびネットワーク610(たとえば、インターネット)を含む。一般に、鍵管理ノード604は、中継システムノード606の正当性に関してアテステーションサービス608によって検証され得る、中継システムノード606のアテステーションエビデンスについて中継システムノード606の各々にチャレンジを実行する。中継システムノード606を正常に検証した後、鍵管理ノード604は、すべての中継システムノード606が同じ署名鍵を共有するように署名鍵(たとえば、サービス秘密鍵)を各中継システムノード606に送信することができる。
【0076】
アドミニストレータ602は、本明細書において説明されているようなアルゴリズムを実行するために任意の好適なサーバ、コンピュータ、モジュール、またはコンピューティング要素上に実装され得る。いくつかの例において、アドミニストレータ602は、中継システムノード606を検証するために鍵管理ノード604にクエリを実行する。いくつかの例において、アドミニストレータ602は、検証されるべき中継システムノード606のネットワークアドレス(たとえば、URL)を含むリクエストを鍵管理ノード604に送信する。
【0077】
鍵管理ノード604は、アテステーションエビデンスに関して中継システムノード606にチャレンジを実行し、アテステーションエビデンスをアテステーションサービス608に送信してアテステーションエビデンスが有効かどうかを検証することができる。いくつかの例において、鍵管理ノード604は、アドミニストレータ602から、検証されるべき中継システムノード606のURLを含むリクエストを受信する。鍵管理ノード604は、中継システムノード606のURLを使用してアテステーションエビデンスに関して中継システムノード604にクエリを実行することができる。いくつかの例において、鍵管理ノード604は、中継システムノード606から、中継システムノード606の測定値、公開鍵、および署名を含むアテステーションエビデンスを受信する。鍵管理ノード604は、中継システムノード606のアテステーションエビデンスをアテステーションサービス608に送信してアテステーションエビデンスが有効かどうかを検証することができる。鍵管理ノード604は、アテステーションサービス608から、アテステーションエビデンス、アテステーションエビデンスのアテステーション検証結果、およびアテステーションサービス608の署名を含むAVRを受信することができる。鍵管理ノード604は、アテステーションエビデンス内の測定値、検証結果、およびアテステーションサービス608の署名に基づきAVRを検証することができる。たとえば、鍵管理ノード604は、AVR内のアテステーションエビデンスの中の中継システムノード606の測定値を鍵管理ノード604に事前記憶されている別の測定値と比較してそれらが一致しているか調べることができる。鍵管理値604では、アテステーション検証結果を検査してアテステーションエビデンスがアテステーションサービス608によって正常に検証されたかどうかを調べることができる。鍵管理値604ではアテステーションサービス608の署名を検証し、AVRがアテステーションサービス608によって本当に送信されたかどうかを決定することができる。いくつかの例において、鍵管理ノード604が、AVR内のアテステーションエビデンスの中の中継システムノード606の測定値が鍵管理ノード604に事前記憶されている別の測定値と一致していると決定し、アテステーション検証
結果が、アテステーションエビデンスが有効であること、アテステーションサービス608の署名が有効であること、またはこれらの組合せを示している場合に、鍵管理ノード604は、AVRが有効であると決定することができる。
【0078】
鍵管理ノード604は、AVRが有効であることを検証した後、AVR内のアテステーションエビデンスに含まれる中継システムノード606の公開鍵を取得し、記憶することができる。鍵管理ノード604は、中継システムノード606の公開鍵をさらに使用して、そのサービス秘密鍵を暗号化し、暗号化されたサービス秘密鍵を中継システムノード606に送信することができる。鍵管理ノード604がそのサービス秘密鍵を複数の中継システムノード606に配布するいくつかの例において、鍵管理ノード604は、各中継システムノードのそれぞれの公開鍵を使用してそのサービス秘密鍵を暗号化することができる。
【0079】
中継システムノード606は、鍵管理ノード604から暗号化されたサービス秘密鍵を暗号解読し、鍵管理ノード604のサービス秘密鍵を取得することができる。たとえば、各中継システムノード606は、そのそれぞれの秘密鍵を使用して、中継システムノード606の公開鍵を使用して暗号化されているサービス秘密鍵を取得することができる。中継システムノード606は、将来使用するために鍵管理ノード604のサービス秘密鍵を記憶する。指摘されているように、複数の中継システムノード606は、鍵管理ノード604の同じサービス秘密鍵を共有する。
【0080】
アテステーションサービス608は、中継システムノード606のアテステーションエビデンスが有効であるかどうかを検証することができる。指摘されているように、中継システムノード606のアテステーションエビデンスは、中継システムノード606の測定値、公開鍵、および署名を含む。いくつかの例において、中継システムノード606の署名は、中継システムノード606のアテステーション秘密鍵(たとえば、EPID秘密鍵)を使用して生成される。アテステーションサービス608は、アテステーション公開鍵(たとえば、EPID公開鍵)を使用して中継システムノード606の署名を検証し、署名の検証結果に基づきアテステーションエビデンスが有効かどうかを決定することができる。アテステーションエビデンスを検証した後、アテステーションサービス608はAVRを鍵管理ノード604に送信することができる。指摘されているように、AVRは、アテステーションエビデンス、アテステーションエビデンスのアテステーション検証結果、およびアテステーションサービス608の署名を含むことができる。
【0081】
動作時に、アドミニストレータ602は、検証されるべき中継システムノード606のネットワークアドレスを鍵管理ノード604に送信する。鍵管理ノード604は、ネットワークアドレスを使用して中継システムノード606へのリモートアテステーションリクエストを開始する。中継システムノード606は、公開鍵と秘密鍵とを含む秘密鍵のペアをランダムに生成し、公開鍵を鍵管理ノード604に返されるアテステーションエビデンスの中に含める。鍵管理ノード604は、中継システムノード606のアテステーションエビデンスをアテステーションサービス608にサブミットしてアテステーションエビデンスの妥当性を検証する。アテステーションサービス608は、鍵管理ノード604からのアテステーションエビデンスを検証し、AVRを返す。鍵管理ノード604はAVRを検証して、中継システムノード606が正当なTEEノードであるかどうかを決定する。いくつかの例において、鍵管理ノード604は、AVR内のアテステーションエビデンスの中に含まれる測定値が期待される測定値と一致しているかどうかを決定する。AVRを正常に検証した後、鍵管理ノード604は、アテステーションエビデンスに含まれる中継システムノード606の公開鍵を使用してそのサービス公開鍵を暗号化する。鍵管理ノード604は、暗号化されたサービス秘密鍵を中継システムノード606に送信する。鍵管理ノードから暗号化されたサービス秘密鍵を受信した後、中継システムノード606は、その秘密鍵を使用してサービス秘密鍵を取得する。そのようなものとして、鍵管理ノード604は、そのサービス秘密鍵を、正当なものであるとすでに検証されている中継システムノード606に配布することができる。以下では、
図7を参照しつつ、サービス秘密鍵の配布をさらに詳しく説明する。
【0082】
図7は、本明細書の実施形態による信号の流れ700の一例を示す図である。信号の流れ700は、署名鍵(たとえば、サービス秘密鍵)配布プロセスを表す。便宜上、プロセスは、1つまたは複数の場所に配置され、本明細書に従って適切にプログラムされている、1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、分散システム(
図6のシステム600)は、適切にプログラムされ、プロセスを実行することができる。
【0083】
図7の例では、アドミニストレータ602は、中継システムノード606が正当なTEEノードであるかどうかを決定するためのリクエストを鍵管理ノード604に送信する(702)。いくつかの例において、このリクエストは、検証されるべき中継システムノード606のネットワークアドレス(たとえば、URL)を含む。
【0084】
鍵管理ノード604は、ネットワークアドレスを使用して中継システムノード606へのリモートアテステーションリクエストを送信する(704)。いくつかの例において、中継システムノード606の正当性を示すアテステーションエビデンスに対するリモートアテステーションリクエストが、中継システムノード606に送信される。アテステーションエビデンスは、検証されるべき中継システムノード606の測定値(たとえば、初期状態のハッシュ値)、公開鍵、および署名を含むことができる。
【0085】
アテステーションリクエストに応答して、中継システムノード606はアテステーションエビデンスを生成する(706)。指摘されているように、アテステーションエビデンスは、中継システムノード606の測定値、公開鍵、および電子署名を含む。いくつかの実施形態において、測定値は、中継システムノード606の初期状態のダイジェストを含むことができる。たとえば、測定値は、中継システムノード606上で実装されるプロセスコードのハッシュ値を含み得る。公開鍵は、秘密鍵とともに中継システムノード606によって所定の鍵生成アルゴリズム(たとえば、RSA)を使用してランダムに生成され得る。署名は、測定値および公開鍵に基づき、中継システムノード606のアテステーション秘密鍵(たとえば、EPID秘密鍵)を使用して生成され得る。
【0086】
中継システムノード606は、アテステーションリクエストに応答して、アテステーションエビデンスを鍵管理ノード604に送信する(708)。鍵管理ノード604は、アテステーションエビデンスをアテステーションサービス608に転送する(710)。いくつかの実施形態において、鍵管理ノード604は、アテステーション検証リクエストをアテステーションサービス608に送信する。アテステーション検証リクエストは、中継システムノード606のアテステーションエビデンス、およびたとえば、中継システムノード606がSGXプラットフォームサービスを使用するかどうかを示すディスクリプタなどの、何らかの補足的情報を含むことができる。
【0087】
アテステーションサービス608は、アテステーションエビデンスを検証する(712)。指摘されているように、アテステーションエビデンスは、中継システムノード606の測定値、公開鍵、および署名を含む。署名は、測定値および公開鍵に基づき、中継システムノード606のアテステーション秘密鍵(EPID秘密鍵)を使用して生成される。いくつかの例において、アテステーションサービス608は、アテステーションエビデンス内の署名を検証するために使用できるアテステーション公開鍵(EPID公開鍵)を用意する。
【0088】
アテステーションサービス608が、アテステーションエビデンス内の署名が有効であると決定した場合、アテステーションサービス608は、中継システムノード606が信頼できるエンティティであると決定することができる。アテステーションサービス608が、署名が無効であると決定した場合、アテステーションサービス608は、中継システムノード606が信頼できるエンティティでないと決定することができ、エラーのフラグを立て、中継システムノード606からのその後のデータおよびリクエストを拒否することができる。
【0089】
アテステーションサービス608は、アテステーションエビデンスの検証に基づきAVRを生成する(714)。いくつかの実施形態において、AVRは、アテステーションエビデンス、アテステーション検証結果、およびアテステーションサービス608の電子署名を含むことができる。いくつかの実施形態において、AVRは、中継システムノード606の署名を除いたアテステーションエビデンスを含み得る。いくつかの例において、AVRの署名は、レポート署名鍵(秘密鍵)を使用してアテステーションエビデンスおよびアテステーション検証結果に基づき生成される。
【0090】
アテステーションサービス608は、AVRを鍵管理ノード604に送信する(716)。いくつかの実施形態において、鍵管理ノード604は、アテステーションサービス608からのAVRを検証する(718)。いくつかの例において、鍵管理ノード604は、レポート署名証明書(公開鍵)を使用してAVRの署名を検証する。いくつかの実施形態において、鍵管理ノード604は、アテステーションエビデンスの中の測定値を鍵管理ノード604に事前記憶されている別の測定値と比較し、アテステーションエビデンスが有効であるかどうかを決定する。AVRおよび測定値を正常に検証した後、鍵管理ノード604は、中継システムノード606の公開鍵を記憶する。
【0091】
鍵管理ノード604は、中継システムノード606の公開鍵を使用してそのサービス秘密鍵を暗号化し(720)、暗号化されたサービス秘密鍵を中継システムノード606に送信する(722)。
【0092】
鍵管理ノード604から暗号化されたサービス秘密鍵を受信した後、中継システムノード606は、その秘密鍵を使用して鍵管理ノードのサービス秘密鍵を取得する(724)。中継システムノード606は、将来使用するためにサービス秘密鍵を記憶することができる。
【0093】
図8は、本明細書の実施形態によるシステム800の一例を示す図である。図示されているように、システム800は、クライアント802(たとえば、クライアントコンピューティングデバイス)、ブロックチェーン804、マルチノードクラスタを形成する複数の中継システムノード810、およびネットワーク812(たとえば、インターネット)を含む。示されている例では、ブロックチェーン804は、クライアントスマートコントラクト806と中継システムスマートコントラクト808とを含む。いくつかの実施形態において、中継システムノード810は、TEE技術(たとえば、Intel SGX)を使用して実装される。
【0094】
一般に、クライアント802は、ネットワーク812内のデータソースにデータを要求し、リクエストおよび取得データの完全性が検証され得るようにブロックチェーン804および中継システムノード810を通じてデータソースから取得されたデータを受信する。
【0095】
動作時に、クライアント802は、平文部分と機密データ部分とを含むリクエストを作成し、機密データ部分は鍵管理ノード(たとえば、鍵管理ノード406および604)からすでに取得されているサービス公開鍵を使用してクライアント802によって暗号化される。クライアント802は、そのリクエストをブロックチェーン804内でクライアントスマートコントラクト806にサブミットする。クライアントスマートコントラクト806は、リクエストを中継システムスマートコントラクト808に転送する。中継システムスマートコントラクト808は、リクエストをマルチノードクラスタ内の中継システムノード810に転送する。いくつかの例において、中継システムスマートコントラクト808は、利用可能である中継システムノード810をランダムに選択する。いくつかの例において、中継システムスマートコントラクト808はログメッセージを通じてリクエストを送信する。中継システムノード810は、リクエストを受信し、鍵管理ノードからすでに取得されているサービス秘密鍵を使用して機密データ部分を取得する。中継システムノード810は、平文部分と機密データ部分とを組み合わせてデータリクエストを形成する。次いで、中継システムノード810はデータリクエストをインターネットデータソース812にサブミットする。中継システムノード810は、インターネットデータソース812からリクエスト結果を受信し、サービス秘密鍵を使用してリクエスト結果に署名する。中継システムノード810は、署名済みリクエスト結果を中継システムスマートコントラクト808にサブミットし、これはさらに、クライアントスマートコントラクト806を通じてクライアント802に転送される。クライアント802は、署名済みリクエスト結果を受信し、サービス公開鍵を使用して署名済みリクエスト結果を検証する。署名済みリクエスト結果を正常に検証した後、クライアント802はその結果を使用することができる。
【0096】
図9は、本明細書の実施形態による信号の流れ900の一例を示す図である。便宜上、プロセス900は、1つまたは複数の場所に配置され、本明細書に従って適切にプログラムされている、1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、分散システム(たとえば、
図1のブロックチェーンシステム100、および
図8のシステム800)は、適切にプログラムされ、プロセス900を実行することができる。
【0097】
クライアント802は、インターネットベースのデータソース812へのデータまたはサービスのリクエストを生成する(902)。いくつかの例において、リクエストは、クライアント802のアカウントに対するアクセス要求であってよい。アクセス要求は、たとえば、ウェブアドレスなどの平文部分、およびたとえば、クライアントアカウントの資格証明書(たとえば、ユーザ名、パスワード)などの機密データ部分を含み得る。いくつかの例において、アクセス要求内の機密データ部分は暗号化されるものとしてよく、これにより、ネットワーク上の悪意ある行為を行う者がユーザアカウントの個人情報を取得してユーザアカウントに侵入することをできなくする。いくつかの例において、機密データ部分は、初期段階でアテステーションプロセスにおいて鍵管理ノードから取得されるサービス公開鍵を使用してクライアント802によって暗号化される。
【0098】
クライアント802は、そのリクエストをクライアントスマートコントラクト806に送信する(904)。クライアントスマートコントラクト806は、リクエストを中継システムスマートコントラクト808に転送する(906)。
【0099】
中継システムスマートコントラクト808は、リクエストを中継システムノード810に転送する(908)。いくつかの実施形態において、中継システムスマートコントラクト808は、定期的に、鍵管理ノードから、初期鍵配布プロセスにおいて正当であると検証されているマルチノードクラスタ内の中継システムノード810のリストを受信する。中継システムスマートコントラクト808は、検証された中継システムノード810をランダムに選択することができるか、またはリストから作業負荷が最小の検証された中継システムノード810を選択することができる。いくつかの例において、中継システムスマートコントラクト808は、ログメッセージを通じてリクエストを選択された中継システムノード810に送信する。
【0100】
いくつかの実施形態において、中継システムノード810は、初期鍵配布プロセスにおいて取得されたサービス秘密鍵を使用してリクエストから機密データ部分を取得する(910)。たとえば、中継システムノード810は、サービス秘密鍵を使用して暗号化された機密データ部分を暗号解読することができる。指摘されているように、マルチノードクラスタ内の中継システムノード810は、同じサービス秘密鍵を取得し、共有する。検証された中継システムノード810の各々は、同じサービス秘密鍵を使用して、暗号化された機密データ部分を処理することができる。
【0101】
中継システムノード810は、平文部分と機密データ部分とを組み合わせてデータリクエストを形成する(912)。インターネットデータソース812にクエリを実行するために、中継システムノード810によって新しいデータリクエストが使用され得る。たとえば、新しいデータリクエストは、クライアント802がアカウントにアクセスすることを望んでいるウェブアドレスを含む平文部分と、アカウントにログインするための資格証明書(たとえば、ユーザ名およびパスワード)を含む機密データ部分とを含み得る。
【0102】
中継システムノード810はデータリクエストをインターネットデータソース812にサブミットする(914)。インターネットデータソース812は、データリクエストを処理し(916)、リクエスト結果を中継システムノード810に返す(918)。
【0103】
中継システムノード810はリクエスト結果を処理して(920)、応答を提供する。本明細書の実施形態により、中継システムノード810は、そのサービス秘密鍵を使用して結果に署名し、応答を提供する。さらに詳しく言うと、結果、すなわち結果の少なくとも一部(たとえば、データ)は、ハッシュ関数を通じて中継システムノード810によって処理され、ハッシュ値を提供する。ハッシュ関数の一例は、限定することなく、SHA-256を含む。中継システムノード810は、ハッシュ値およびサービス秘密鍵に基づき電子署名を生成する。たとえば、ハッシュ値およびサービス秘密鍵は、電子署名を提供する、署名アルゴリズムを通じて処理される。中継システムノード810は、結果(たとえば、データ)と電子署名とを含む、応答を提供する。中継システムノード810は、応答を中継システムスマートコントラクト808に送信する(922)。
【0104】
中継システムスマートコントラクト808は、応答をクライアントスマートコントラクト806に転送する(924)。クライアントスマートコントラクト806は、応答をクライアント802に提供する(926)。
【0105】
いくつかの実施形態において、クライアント802は、応答の中の署名されたリクエスト結果を検証する(928)。いくつかの例において、クライアント802は、そのサービス公開鍵を使用して署名されたリクエスト結果の中の署名を検証する。クライアント802は、ハッシュ関数を使用して第1のハッシュ値を計算することにより応答の中のリクエスト結果を処理する。次いで、クライアント802は、サービス公開鍵を使用して署名に含まれる第2のハッシュ値を取得することでリクエスト結果の署名を処理する。次いで、クライアント802は第1のハッシュ値を第2のハッシュ値と比較する。2つのハッシュ値が一致した場合、クライアント802は、リクエスト結果であると決定し、リクエスト結果を使用することができる。2つのハッシュ値が一致しない場合、クライアント802は、リクエスト結果が無効であると決定し、エラーのフラグを立てることができる。
【0106】
図10は、ブロックチェーンネットワークの外部にある外部データソースからデータを取得するためのプロセス1000の一例のフローチャートである。便宜上、プロセス1000は、1つまたは複数の場所に配置され、本明細書に従って適切にプログラムされている、1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、分散システム、たとえば、
図3の分散システム300は、適切にプログラムされ、プロセス1000を実行することができる。
【0107】
1002において、ブロックチェーンネットワーク内で実行されている中継システムスマートコントラクトは、外部データソースからデータを取得するためにクライアントスマートコントラクトからリクエストを受信する。いくつかの実施形態では、リクエストは暗号化されたデータを含む。暗号化されたデータは、鍵管理ノードのサービス公開鍵を使用して暗号化されている外部データソースにアクセスするためのアクセスデータを含む。いくつかの実施形態において、鍵管理ノードは、ブロックチェーンネットワークの外部に配置される。
【0108】
1004において、中継システムスマートコントラクトは、ブロックチェーンネットワークの外部にある複数の中継システムノードから中継システムノードを選択する。いくつかの実施形態において、複数の中継システムノードは、鍵管理ノードのサービス秘密鍵とともに配布される。
【0109】
1006において、中継システムスマートコントラクトは、リクエストを選択された中継システムノードに伝送する。
【0110】
1008において、中継システムスマートコントラクトは、リクエストに応答して選択された中継システムノードから戻り結果を受信する。いくつかの実施形態において、戻り結果は、外部データソースから取得され、中継システムノードによって取得されたデータと、電子署名とを含む。いくつかの実施形態において、電子署名は、外部データソースから取得されたデータおよび鍵管理ノードのサービス秘密鍵に基づき生成される。
【0111】
1010において、中継システムスマートコントラクトは、戻り結果をクライアントスマートコントラクトに伝送する。
【0112】
図11は、本明細書の実施形態による装置1100のモジュールの一例の図である。装置1100は、外部データソースからデータを取得するように構成されているブロックチェーンネットワークノードの一実施形態の一例であるものとしてよく、スマートコントラクトはブロックチェーンネットワークノード内で実行される。装置1100は、上で説明されている実施形態に対応するものとしてよく、装置1100は、クライアントスマートコントラクトから、データを外部データソースから取得するためのリクエストを受信する受信モジュール1102であって、リクエストは暗号化されたデータを含み、暗号化されたデータはブロックチェーンネットワークの外部にある鍵管理ノードのサービス公開鍵を使用して暗号化されている外部データソースにアクセスするためのアクセスデータを含む、受信モジュール1102と、ブロックチェーンネットワークの外部にある複数の中継システムノードから中継システムノードを選択する選択モジュール1104であって、複数の中継システムノードは、鍵管理ノードのサービス秘密鍵とともに配布される、選択モジュール1104と、リクエストを中継システムノードに伝送する伝送モジュール1106と、リクエストに応答して中継システムノードから戻り結果を受信する受信モジュール1108であって、戻り結果は中継システムノードによって取得された外部データソースから取得されたデータと、電子署名とを含み、電子署名は、外部データソースから取得されたデータおよび鍵管理ノードのサービス秘密鍵に基づき生成される、受信モジュール1108と、戻り結果をクライアントスマートコントラクトに伝送する伝送モジュール1110とを備える。
【0113】
任意選択の一実施形態において、鍵管理ノードのサービス秘密鍵およびサービス公開鍵は、鍵管理ノードのアテステーションプロセスによって用意される。
【0114】
任意選択の一実施形態において、鍵管理ノードおよびアテステーションサービスを伴うアテステーションプロセスは、クライアントデバイスによって実行され、鍵管理ノードのサービス公開鍵は、アテステーションプロセスにおいてクライアントデバイスによって取得される。
【0115】
任意選択の一実施形態において、戻り結果は、鍵管理ノードのサービス公開鍵を使用してクライアントデバイスによって正当性を確認される。
【0116】
任意選択の一実施形態において、複数の中継システムノードは、各々、信頼できる実行環境(TEE)を実行する。
【0117】
任意選択の一実施形態において、リクエストは第1の中継システムノードによって暗号解読され、鍵管理ノードのサービス秘密鍵を使用してアクセスデータを取得する。
【0118】
任意選択の一実施形態において、複数の中継システムノードの各々およびアテステーションサービスを伴うアテステーションプロセスは、鍵管理ノードによって実行される。
【0119】
任意選択の一実施形態において、鍵管理ノードは複数の中継システムノードとともに鍵配布プロセスを実行し、鍵配布プロセスを実行した結果、鍵管理ノードのサービス秘密鍵が複数の中継システムノードに配布される。
【0120】
前述の実装形態において例示されているシステム、装置、モジュール、またはユニットは、コンピュータチップもしくはエンティティを使用することによって実装され得るか、または特定の機能を有する製品を使用することによって実装され得る。典型的な実施形態デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯情報端末、メディアプレーヤー、ナビゲーションデバイス、電子メール受信および送信デバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであってよい。
【0121】
装置内の各モジュールの機能および役割の実施形態プロセスについて、前述の方法における対応するステップの実施形態プロセスが参照され得る。簡単にするため、詳細はここでは省略される。
【0122】
装置実施形態は、方法実施形態に基本的に対応しているので、関係する部分について、方法実施形態における関係する説明を参照することができる。すでに説明されている装置実施形態は、一例にすぎない。分離している部分として説明されるモジュールは、物理的に分離し得るかまたは分離し得ず、およびモジュールとして表示される部分は、物理的モジュールであり得るかまたは物理的モジュールであり得ず、1つの位置に配置され得るか、または多数のネットワークモジュール上に分散され得る。モジュールの一部または全部は、本明細書の解決方法の目的を達成するために実際に必要になるものに基づき選択され得る。当業者であれば、創造的労力を費やすことなく本出願の実施形態を理解し、実装することができる。
【0123】
再び
図11を参照すると、これは内部機能モジュールおよびブロックチェーンデータ取得装置の構造を例示しているものとして解釈され得る。ブロックチェーンデータ取得装置は、外部データソースからデータを取り出すように構成されているスマートコントラクトを実行するブロックチェーンノードの一例であり得る。実行本体は、本質的に電子デバイスであるものとしてよく、電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能命令を記憶するように構成されているメモリとを備える。
【0124】
本明細書の実施形態は、従来のシステムに勝る1つまたは複数の技術的効果をもたらす。いくつかの実施形態において、サービス秘密鍵を複数の中継システムノードに配布するための鍵管理ノードが提供される。本明細書において説明されているように、鍵管理ノードに対してリモートアテステーションが実行されるものとしてよく、これは各クライアントが中継システムノードのリモートアテステーションを独立して実行する必要をなくす。これは、一般的に、各クライアントからの中継システムノードの個別アテステーションによって引き起こされるネットワークボトルネックを軽減する。さらに、複数の中継システムノードから利用可能な中継システムノードを選択するための中継システムスマートコントラクトが提供される。本明細書において説明されているように、中継システムノードがクラスタ内に展開されている場合、中継システムスマートコントラクトは、クライアントリクエストをクラスタ内の利用可能な中継システムノードに自動的に割り当て、それにより、個別の中継システムノードの障害によりサービスが利用不可能になる事態を回避することができる。そのようなものとして、本明細書の実施形態は、ネットワークデータソースにクエリを実行するための中継システムノードの全体的なサービス利用可能性を改善する。いくつかの実施形態において、中継システムスマートコントラクトは、クライアントと中継システムノードとの間に直接的接触があることを回避し、それにより、中継システムノードの位置またはアクセスポイントを顕わにすることを回避する。そのようなものとして、中継システムノードは、たとえば、DDoS攻撃などの、多くの形態のネットワーク上の悪意のある行為を行う者によって見つけられ攻撃される可能性は低い。これは、中継システムノードのセキュリティを改善し、それによって、クライアントと中継システムノードとの間の通信のセキュリティをさらに改善する。
【0125】
主題の説明されている実施形態は、1つまたは複数を、単独で、または組み合わせて含み得る。たとえば、第1の実施形態において、外部データソースからデータを取得するための方法は、クライアントスマートコントラクトから、ブロックチェーンネットワーク内で実行されている中継システムスマートコントラクトによって、外部データソースからデータを取得するリクエストを受信することであって、リクエストは暗号化されたデータを含み、暗号化されたデータはブロックチェーンネットワークの外部にある鍵管理ノードのサービス公開鍵を使用して暗号化されている外部データソースにアクセスするためのアクセスデータを含む、受信することと、中継システムスマートコントラクトによって、ブロックチェーンネットワークの外部にある複数の中継システムノードから中継システムノードを選択することであって、複数の中継システムノードは、鍵管理ノードのサービス秘密鍵とともに配布される、選択することと、中継システムスマートコントラクトによって、リクエストを中継システムノードに伝送することと、中継システムノードから、中継システムスマートコントラクトによって、リクエストに応答して戻り結果を受信することであって、戻り結果は中継システムノードによって取得された外部データソースから取得されたデータと、電子署名とからなり、電子署名は、外部データソースから取得されたデータおよび鍵管理ノードのサービス秘密鍵に基づき生成される、受信することと、中継システムスマートコントラクトによって、戻り結果をクライアントスマートコントラクトに伝送することとを含む。
【0126】
前述および他の説明されている実施形態は、各々、任意選択で、次の特徴のうちの1つまたは複数を含み得る。
【0127】
第1の特徴は、次の特徴のうちのどれかと組合せ可能であり、鍵管理ノードのサービス秘密鍵およびサービス公開鍵が鍵管理ノードのアテステーションプロセスによって用意されることを規定する。
【0128】
第2の特徴は、前のまたは次の特徴のうちのどれかと組合せ可能であり、鍵管理ノードおよびアテステーションサービスによるアテステーションプロセスはクライアントデバイスによって実行されることを規定し、鍵管理ノードのサービス公開鍵は、アテステーションプロセスにおいてクライアントデバイスによって取得される。
【0129】
第3の特徴は、前のまたは次の特徴のうちのどれかと組合せ可能であり、戻り結果が鍵管理ノードのサービス公開鍵を使用してクライアントデバイスによって正当であるか確認されることを規定する。
【0130】
第4の特徴は、前のまたは次の特徴のどれかと組合せ可能であり、複数の中継システムノードが各々信頼できる実行環境(TEE)を実行することを規定する。
【0131】
第5の特徴は、前のまたは次の特徴のうちのどれかと組合せ可能であり、リクエストが鍵管理ノードのサービス秘密鍵を使用してアクセスデータを取得するために第1の中継システムノードによって暗号解読されることを規定する。
【0132】
第6の特徴は、前のまたは次の特徴のうちのどれかと組合せ可能であり、複数の中継システムノードの各々およびアテステーションサービスによるアテステーションプロセスが鍵管理ノードによって実行されることを規定する。
【0133】
第7の特徴は、前のまたは次の特徴のうちのどれかと組合せ可能であり、鍵管理ノードが複数の中継システムノードとともに鍵配布プロセスを実行し、鍵配布プロセスを実行した結果、鍵管理ノードのサービス秘密鍵が複数の中継システムノードに配布されることを規定する。
【0134】
主題ならびに本明細書で説明されているアクションおよび動作の実施形態は、本明細書で開示されている構造およびその構造的等価物を含む、デジタル電子回路で、明白に具現化されたコンピュータソフトウェアもしくはファームウェアで、コンピュータハードウェアで、またはこれらのうちの1つまたは複数のものの組合せで実装することができる。本明細書で説明されている主題の実施形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置による実行のため、またはデータ処理装置のオペレーションを制御するためにコンピュータプログラムキャリア上に符号化されたコンピュータプログラム命令からなる1つまたは複数のモジュールとして実装されることが可能である。たとえば、コンピュータプログラムキャリアは、命令が符号化されるか、または記憶されている1つまたは複数のコンピュータ可読記憶媒体を含むことができる。キャリアは、磁気、光磁気、もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、または他のタイプの媒体などの、有形の非一時的コンピュータ可読媒体であってよい。代替的に、またはそれに加えて、キャリアは、データ処理装置による実行のため好適な受信機装置に伝送する情報を符号化するように生成される人工的に生成された伝搬信号、たとえば、機械で生成された電気、光、または電磁信号であってよい。コンピュータ記憶媒体は、機械可読記憶装置デバイス、機械可読記憶装置基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであるか、またはその一部であってよい。コンピュータ記憶媒体は、伝搬信号ではない。
【0135】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも称されるか、または記述され得る、コンピュータプログラムは、コンパイル言語またはインタプリタ言語または宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書かれるものとしてよく、またスタンドアロンプログラム、またはモジュール、コンポーネント、エンジン、サブルーチン、またはコンピューティング環境において実行するのに適している他のユニットを含む、任意の形態で配備されてよく、この環境は、1つまたは複数の場所にあるデータ通信ネットワークによって相互接続されている1つまたは複数のコンピュータを含んでいてもよい。
【0136】
コンピュータプログラムは、ファイルシステム内のファイルに対応してよいが、そうである必要はない。コンピュータプログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプトを保持するファイルの一部に、注目しているプログラム専用の単一ファイルに、または複数の協調ファイル、たとえば、1つまたは複数のモジュール、副プログラム、またはコードの一部分を記憶するファイルに記憶され得る。
【0137】
コンピュータプログラムの実行のためのプロセッサは、たとえば、汎用マイクロプロセッサ、専用マイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、プロセッサに結合されている非一時的コンピュータ可読媒体から、実行するコンピュータプログラムの命令、さらにはデータを受信する。
【0138】
「データ処理装置」という用語は、たとえばプログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを備える、データを処理するためのすべての種類の装置、デバイス、およびマシンを包含する。データ処理装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)、またはGPU(グラフィックスプロセッシングユニット)を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つまたは複数のものの組合せを構成するコードを含むこともできる。
【0139】
本明細書で説明されているプロセスおよび論理の流れは、入力データを操作し、出力を生成することによってオペレーションを実行するように1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータもしくはプロセッサによって実行され得る。プロセスおよび論理の流れは、専用論理回路、たとえば、FPGA、ASIC、もしくはGPUによって、または専用論理回路と1つもしくは複数のプログラムされたコンピュータとの組合せによって実行されてもよい。
【0140】
コンピュータプログラムの実行に適しているコンピュータは、汎用マイクロプロセッサ、専用マイクロプロセッサ、もしくはその両方、または任意の他の種類の中央演算処理装置に基づくものとしてよい。一般的に、中央演算処理装置は、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの要素は、命令を実行するための中央演算処理装置ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含むことができる。中央演算処理装置およびメモリは、専用論理回路によって補助されるか、または専用論理回路に組み込まれ得る。
【0141】
一般的に、コンピュータは、1つもしくは複数の記憶装置デバイスも備えるか、またはこれらからデータを受け取るか、もしくはこれらにデータを転送するように動作可能なように結合され得る。記憶装置デバイスは、たとえば、磁気、光磁気、もしくは光ディスク、ソリッドステートドライブ、または任意の他のタイプの非一時的コンピュータ可読媒体であってよい。しかしながら、コンピュータは、そのようなデバイスを有している必要はない。したがって、コンピュータは、ローカルおよび/またはリモートにある、1つもしくは複数のメモリなどの、1つもしくは複数の記憶装置デバイスに結合されるものとしてよい。たとえば、コンピュータは、コンピュータの組み込みコンポーネントである1つもしくは複数のローカルメモリを備えることができるか、またはコンピュータは、クラウドネットワーク内にある1つもしくは複数のリモートメモリに結合され得る。さらに、コンピュータは、他のデバイス、たとえば、2、3例を挙げると、携帯電話、携帯情報端末(PDA)、携帯オーディオまたはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれ得る。
【0142】
コンポーネントは、直接的に、または1つもしくは複数の中間コンポーネントを介してのいずれかで、電気的にもしくは光学的になど、通信可能に接続されることによって互いに「結合される」ものとしてよい。コンポーネントは、また、コンポーネントのうちの一方が他方に一体化される場合に互いに「結合される」ものとしてよい。たとえば、プロセッサに一体化されている記憶コンポーネント(たとえば、L2キャッシュコンポーネント)は、プロセッサに「結合される」。
【0143】
ユーザとインタラクティブにやり取りするために、本明細書で説明されている主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、LCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を送るために使用できる入力デバイス、たとえば、キーボードおよびポインティングデバイス、たとえば、マウス、トラックボール、もしくはタッチパッドを有するコンピュータ上に実装され得るか、またはそのようなコンピュータと通信するように構成され得る。他の種類のデバイスも、ユーザとインタラクティブにやり取りするために使用されてよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってよく、ユーザからの入力は、音響、音声、または触覚入力を含む、任意の形態で受信され得る。それに加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザからリクエストが受信されたことに応答してウェブページをユーザのデバイス上のウェブブラウザに送信することによって、またはユーザデバイス、たとえば、スマートフォンもしくは電子タブレット上で実行しているアプリとインタラクティブにやり取りすることによって、ユーザとインタラクティブにやり取りすることができる。また、コンピュータはテキストメッセージまたは他の形態のメッセージを個人用デバイス、たとえば、メッセージングアプリケーションが稼動しているスマートフォンに送信し、それに応えてユーザから応答メッセージを受信することによってユーザとインタラクティブにやり取りすることができる。
【0144】
本明細書では、システム、装置、およびコンピュータプログラムコンポーネントと関連して「構成される」という言い回しを使用する。1つまたは複数のコンピュータのシステムについて、特定の動作またはアクションを実行するように構成されることは、システムがその上に動作時にそれらの動作またはアクションをシステムに実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムについて、特定の動作またはアクションを実行するように構成されることは1つまたは複数のプログラムがデータ処理装置によって実行されたときにそれらの動作またはアクションを装置に実行させる命令を含むことを意味する。専用論理回路に対して、特定のオペレーションまたはアクションを実行するように構成されることは、回路がオペレーションまたはアクションを実行する電子論理回路を有していることを意味する。
【0145】
本明細書は、多くの実施形態固有の詳細事項を含んでいるが、これらは、請求項それ自体によって定義される、請求内容の範囲に対する制限として解釈すべきではなく、むしろ特定の実施形態に特有のものであり得る特徴の説明として解釈すべきである。別の実施形態の文脈において本明細書で説明されているいくつかの特徴も、単一の実施形態において組合せで実現され得る。逆に、単一の実施形態の文脈において説明されている様々な特徴は、複数の実施形態において別個に、または任意の好適な部分組合せで実現されてもよい。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求されることさえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除され、請求項は、部分組合せ、または部分組合せの変形形態を対象としてもよい。
【0146】
同様に、動作は特定の順序で図面に示され、請求項において引用されているが、そのような動作は、望ましい結果を達成するために、示される特定の順序でもしくは順番に実行される必要がないことを、またはすべての図示の動作が実行される必要があるとは限らないことを、理解されたい。ある状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上で説明されている実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離が必要とされるものと理解されるべきではなく、前述のプログラム構成要素およびシステムが概して単一のソフトウェアプロダクトとして一体化されるかまたは複数のソフトウェアプロダクトとしてパッケージ化されてもよいことを理解されたい。
【0147】
主題の特定の実施形態が説明されている。他の実施形態は、次の請求項の範囲内に収まる。たとえば、請求項に記載のアクションは、異なる順序で実行することができ、それでも、所望の結果を得ることができる。一例として、添付図面に示されているプロセスは、必ずしも、望ましい結果を達成するために、図示されている特定の順序、または順番を必要としない。いくつかの場合において、マルチタスキングおよび並列処理が有利であり得る。