(57)【特許請求の範囲】
【請求項１】
トラステッド実行環境(TEE)の信憑性を検証するためのコンピュータによって実施される方法であって、
鍵管理(KM)ノードのKM TEEによって、複数のKM TEEとの相互アテステーションを実行することにより複数のKMノードのそれぞれにおけるKM TEEとの信頼関係を確立するステップであって、前記KMノードおよび前記複数のKMノードが、コンソーシアムブロックチェーン内にある、ステップと、
前記KMノードのサービスTEEに1つまたは複数の暗号化鍵を提供するという合意に達するために前記複数のKM TEEとの合意プロセスを前記KM TEEによって開始するステップと、
前記複数のKM TEEと前記合意に達することに応じて、前記KMノードのサービスTEEによるローカルアテステーションプロセスを前記KM TEEによって開始するステップと、
前記ローカルアテステーションプロセスが成功であると前記KM TEEによって判定するステップと、
前記ローカルアテステーションプロセスが成功であるとの判定に応じて、前記KM TEEによって、コンピューティングデバイス上で実行される前記サービスTEEに1つまたは複数の暗号化鍵を提供するステップと
を含む、コンピュータによって実施される方法。
【請求項２】
前記KMノードによって前記コンソーシアムブロックチェーンに前記暗号化鍵を記憶するステップであって、前記コンソーシアムブロックチェーンに記憶される前記暗号化鍵が、前記コンソーシアムブロックチェーンのすべてのノードによってアクセスされ得る前記暗号化鍵の合意バージョンを表す、ステップをさらに含む請求項1に記載のコンピュータによって実施される方法。
【請求項３】
前記KM TEEが、第1のKM TEEであり、前記信頼関係を確立するステップが、前記第1のKM TEEが前記複数のKM TEEの中の第2のKM TEEおよび第3のTEEとの相互アテステーションプロセスを実行することを含む請求項1または2に記載のコンピュータによって実施される方法。
【請求項４】
前記KM TEEおよび前記複数のKM TEEが、前記コンソーシアムブロックチェーンのKM TEEの組を形成し、前記信頼関係を確立するステップが、前記複数のKM TEEの任意の各々が前記KM TEEの前記組のうちの2つとの相互アテステーションプロセスを実行することをさらに含む請求項1から3のいずれか一項に記載のコンピュータによって実施される方法。
【請求項５】
前記信頼関係を確立するステップが、前記KM TEEが前記複数のKM TEEの各々との相互アテステーションを実行することをさらに含む請求項1、2、または3のいずれか一項に記載のコンピュータによって実施される方法。
【請求項６】
前記KM TEEおよび前記複数のKM TEEが前記暗号化鍵に関する合意プロセスを成功裏に実行することに応じて前記暗号化鍵が前記コンソーシアムブロックチェーンに記憶される請求項1から5のいずれか一項に記載のコンピュータによって実施される方法。
【請求項７】
前記合意プロセスが、実用的ビザンチン障害耐性(PBFT)プロセスである請求項1から6のいずれか一項に記載のコンピュータによって実施される方法。
【請求項８】
前記KM TEEが、第1のKM TEEであり、前記暗号化鍵が、前記サービスTEEに関連するTEE公開鍵およびTEE秘密鍵を含み、前記第1のKM TEEまたは第2のKM TEEが、前記コンソーシアムブロックチェーンから前記TEE公開鍵を取り出し、要求に応じて前記TEE公開鍵をクライアントに提供する請求項1から7のいずれか一項に記載のコンピュータによって実施される方法。
【請求項９】
トラステッド実行環境(TEE)の信憑性を検証するためのシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合され、請求項1から8のいずれか一項に記載の方法を実行するために前記1つまたは複数のプロセッサによって実行可能な命令を記憶した1つまたは複数のコンピュータ可読メモリと
を含む、システム。
【請求項１０】
トラステッド実行環境(TEE)の信憑性を検証するための装置であって、請求項1から8のいずれか一項に記載の方法を実行する複数のモジュールを含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、トラステッド実行環境に関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークとも呼ばれ得る分散型台帳システム(DLS)は、参加主体がデータを安全で不変的に記憶することを可能にする。DLSは、通常、いかなる特定のユースケースにも関係なく、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークの種類の例は、合意プロセスを制御し、アクセス制御レイヤを含む、選ばれた一群の主体のために提供されるコンソーシアムブロックチェーンネットワークを含み得る。
【０００３】
トラステッド実行環境(TEE)は、マイクロプロセッサ内で実行されるかまたは記憶されるソフトウェア命令およびデータが改ざんまたは変更されなかったことを保証するマイクロプロセッサの隔離された安全な領域である。TEE内で実行されるアプリケーションは、信頼できる機関(たとえば、マイクロプロセッサの製造業者)によって検証され、検証が終わると、アプリケーションとその他のノードおよびトラステッドアプリケーションの間の通信を可能にするために暗号化鍵を発行される。これらの暗号化鍵は、信頼できる機関によるアプリケーションの検証(「アテステーション(attestation)」とも呼ばれる)を容易にする集中的な鍵管理システム(KMS)によって発行され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
集中的なKMSの1つの潜在的な問題は、単一障害点をもたらすことである。集中的なKMSの停止は、それが解決されるまでTEEにおいて実行されるアプリケーションが検証されることを妨げ得る。さらに、攻撃者は、集中的なKMSの制御を獲得することによってシステム全体を脅かすことができる可能性がある。したがって、KMSとして機能する安全な分散型システムが、望ましい。
【課題を解決するための手段】
【０００５】
本明細書は、鍵管理(KM)ノードの組を含む分散型鍵管理システムを実装するためのテクノロジーを説明する。KMノードは、それぞれ、TEE内で鍵管理アプリケーションを実行し、それぞれ、組内のすべてのKMノードを接続する信頼関係を確立するために相互アテステーション論理に基づいてその他のKMノードのうちの1つまたは複数との相互アテステーションプロセスを実行する。この信頼が確立されると、KMノードは、信頼できる環境内で1つまたは複数のスマートコントラクト動作を安全に実行するために1つまたは複数のサービスTEEに暗号化鍵を割り振る合意に達することができる。
【０００６】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されるときに1つまたは複数のプロセッサに本明細書において提供される方法の実施形態による動作を実行させる命令を記憶した1つまたは複数の非一時的コンピュータ可読ストレージ媒体も提供する。
【０００７】
本明細書は、本明細書において提供される方法を実施するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されるときに1つまたは複数のプロセッサに本明細書において提供される方法の実施形態による動作を実行させる命令を記憶した、1つまたは複数のプロセッサに結合されたコンピュータ可読ストレージ媒体とを含む。
【０００８】
本明細書による方法は、本明細書において説明される態様および特徴の任意の組合せを含む可能性があることが理解される。つまり、本明細書による方法は、特に本明細書において説明される態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せを含む。
【０００９】
本明細書の1つまたは複数の実施形態の詳細が、添付の図面および以下の説明に記載されている。本明細書のその他の特徴および利点は、それらの説明および図面から、ならびに請求項から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本明細書の実施形態を実行するために使用され得る環境の例を示す図である。
【図２】本明細書の実施形態によるアーキテクチャの例を示す図である。
【図３】本明細書の実施形態によるシステムの例を示す図である。
【図４】本明細書の実施形態によるシステムの例を示す図である。
【図５】本明細書の実施形態によって実行され得るプロセスの例を示す。
【図６】本明細書の実施形態による装置のモジュールの例を示す図である。
【図７】本明細書の実施形態による相互アテステーション論理の例を示す図である。
【図８】本明細書の実施形態による別の相互アテステーション論理の例を示す図である。
【発明を実施するための形態】
【００１１】
様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
【００１２】
本明細書は、鍵管理(KM)ノードの組を含む分散型鍵管理システムを実装するためのテクノロジーを説明する。KMノードは、それぞれ、TEE内で鍵管理アプリケーションを実行し、それぞれ、組内のすべてのKMノードを接続する信頼関係を確立するために相互アテステーション論理に基づいてその他のKMノードのうちの1つまたは複数との相互アテステーションプロセスを実行する。この信頼が確立されると、KMノードは、信頼できる環境内で1つまたは複数のスマートコントラクト動作を安全に実行するために1つまたは複数のサービスTEEに暗号化鍵を割り振る合意に達することができる。
【００１３】
本明細書の実施形態に関するさらなる文脈を与えるために、上記で紹介されたように、(たとえば、ピアツーピアノードによって構成される)コンセンサスネットワークとも呼ばれ得る分散型台帳システム(DLS)が、参加主体が安全で不変的にトランザクションを行い、データを記憶することを可能にする。ブロックチェーンという用語は、概して、特定のネットワークおよび/またはユースケースに関連付けられるが、ブロックチェーンは、本明細書においては、いかなる特定のユースケースにも関連せずに広くDLSを指すために使用される。
【００１４】
ブロックチェーンは、トランザクションが変更不可能な方法でトランザクションを記憶するデータ構造である。したがって、ブロックチェーンに記録されたトランザクションは、信頼性があり、信用できる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号学的ハッシュを含むことによってチェーン内のそのブロックの直前のブロックにリンクされる。各ブロックは、タイムスタンプ、そのブロック自体の暗号学的ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによって既に検証されたトランザクションは、ハッシュされ、マークル木へと符号化される。マークル木は、木の葉ノードのデータがハッシュされ、木の各枝のすべてのハッシュが枝の根において連結されるデータ構造である。このプロセスは、木のすべてのデータを表すハッシュを記憶する木全体の根まで木を登り続ける。木に記憶されたトランザクションのものであると称するハッシュが、そのハッシュが木の構造に一致するかどうかを判定することによって迅速に検証され得る。
【００１５】
ブロックチェーンはトランザクションを記憶するための非集中的なまたは少なくとも部分的に非集中的なデータ構造であるが、ブロックチェーンネットワークは、トランザクションなどをブロードキャストし、検証し、有効化することによって1つまたは複数のブロックチェーンを管理し、更新し、維持するコンピューティングノードのネットワークである。上記で紹介されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。本明細書の実施形態は、コンソーシアムブロックチェーンネットワークを参照して本明細書においてさらに詳細に説明される。しかし、本明細書の実施形態は任意の適切な種類のブロックチェーンネットワークにおいて実現され得ることが想定される。
【００１６】
概して、コンソーシアムブロックチェーンネットワークは、参加主体の間の非公開のものである。コンソーシアムブロックチェーンネットワークにおいて、合意プロセスは、コンセンサスノードと呼ばれ得るノードの認可された組によって制御され、1つまたは複数のコンセンサスノードは、それぞれの主体(たとえば、金融機関、保険会社)によって運用される。たとえば、10個の主体(たとえば、金融機関、保険会社)のコンソーシアムが、コンソーシアムブロックチェーンネットワークを運用することができ、10個の主体の各々が、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを運用する。
【００１７】
一部の例においては、コンソーシアムブロックチェーンネットワーク内で、グローバルブロックチェーンが、すべてのノードに複製されるブロックチェーンとして提供される。つまり、すべてのコンセンサスノードは、グローバルブロックチェーンに関して完全な状態の合意をしている。合意(たとえば、ブロックチェーンへのブロックの追加の同意)を実現するために、合意プロトコルが、コンソーシアムブロックチェーンネットワーク内に実装される。たとえば、コンソーシアムブロックチェーンネットワークは、下記でさらに詳細に説明される実用的ビザンチン障害耐性(PBFT)合意を実装することができる。
【００１８】
図1は、本明細書の実施形態を実行するために使用され得る環境100の例を示す図である。一部の例において、例示的な環境100は、主体がコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングデバイス106、108およびネットワーク110を含む。一部の例において、ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。一部の例において、ネットワーク110は、有線および/またはワイヤレス通信リンクを介してアクセスされ得る。
【００１９】
示された例において、コンピューティングシステム106、108は、それぞれ、コンソーシアムブロックチェーンネットワーク102内のノードとして参加することを可能にする任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスは、限定することなく、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。一部の例において、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102とインタラクションするための1つまたは複数のコンピュータによって実施されるサービスをホストする。たとえば、コンピューティングシステム106は、第1の主体(たとえば、ユーザA)が1つまたは複数のその他の主体(たとえば、その他のユーザ)とのその第1の主体のトランザクションを管理するために使用するトランザクション管理システムなどの第1の主体のコンピュータによって実施されるサービスをホストすることができる。コンピューティングシステム108は、第2の主体(たとえば、ユーザB)が1つまたは複数のその他の主体(たとえば、その他のユーザ)とのその第2の主体のトランザクションを管理するために使用するトランザクション管理システムなどの第2の主体のコンピュータによって実施されるサービスをホストすることができる。図1の例において、コンソーシアムブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に参加する第1の主体および第2の主体のノードをそれぞれ提供する。
【００２０】
図2は、本明細書の実施形態による概念的なアーキテクチャ200の例を示す。概念的なアーキテクチャ200は、主体レイヤ202、ホストされるサービスレイヤ204、およびブロックチェーンネットワークレイヤ206を含む。示された例において、主体レイヤ202は、3つの参加者、参加者A、参加者B、および参加者Cを含み、各参加者は、それぞれのトランザクション管理システム208を有する。
【００２１】
示された例において、ホストされるサービスレイヤ204は、各トランザクション管理システム208のためのインターフェース210を含む。一部の例において、それぞれのトランザクション管理システム208は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS: hypertext transfer protocol secure))を使用してネットワーク(たとえば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。一部の例において、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。一部の例において、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して行われる。一部の例において、インターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンネットワークノードを「ホストする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【００２２】
本明細書において説明されるように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を不変的に記録する複数のノード214を含むピアツーピアネットワークとして提供される。単一のブロックチェーン216が図示されているが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212中で維持される。たとえば、各ノード214が、ブロックチェーンのコピーを記憶する。一部の実施形態において、ブロックチェーン216は、コンソーシアムブロックチェーンネットワークに参加する2つ以上の主体の間で実行されるトランザクションに関連する情報を記憶する。
【００２３】
ブロックチェーン(たとえば、図2のブロックチェーン216)は、ブロックの連鎖からなり、各ブロックが、データを記憶する。例示的なデータは、2つ以上の参加者の間のトランザクションを表すトランザクションデータを含む。本明細書においてはトランザクションが非限定的な例として使用されるが、任意の適切なデータ(たとえば、文書、画像、動画、音声)がブロックチェーンに記憶され得ると想定される。例示的なトランザクションは、限定することなく、価値のある何らかのもの(たとえば、資産、製品、サービス、通貨)の交換を含み得る。トランザクションデータは、ブロックチェーン内に不変的に記憶される。つまり、トランザクションデータは、変更され得ない。
【００２４】
ブロックに記憶する前に、トランザクションデータは、ハッシュされる。ハッシングは、(文字列データとして与えられる)トランザクションデータを(やはり文字列データとして与えられる)固定長のハッシュ値に変換するプロセスである。トランザクションデータを得るためにハッシュ値からハッシュされた元のデータを求めることはできない。ハッシュは、トランザクションデータのわずかな変化でさえも完全に異なるハッシュ値をもたらすことを保証する。さらに、上述のように、ハッシュ値は、固定長である。つまり、トランザクションデータのサイズにかかわらず、ハッシュ値の長さは決まっている。ハッシュは、ハッシュ値を生成するためにハッシュ関数によってトランザクションデータを処理することを含む。ハッシュ関数の例は、限定することなく、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256を含む。
【００２５】
複数のトランザクションのトランザクションデータが、ハッシュされ、ブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が、提供され、それらのハッシュ値自体が、別のハッシュを提供するためにハッシュされる。このプロセスが、ブロックに記憶されるすべてのトランザクションに関して、単一のハッシュ値が与えられるまで繰り返される。このハッシュ値は、マークル根ハッシュ(Merkle root hash)と呼ばれ、ブロックのヘッダに記憶される。トランザクションのいずれにおける変化も、そのトランザクションのハッシュ値に変化を引き起こし、最終的に、マークル根ハッシュの変化を引き起こす。
【００２６】
ブロックは、合意プロトコルによってブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードが、合意プロトコルに参加し、ブロックをブロックチェーンに追加させるための仕事を実行する。そのようなノードは、コンセンサスノードと呼ばれる。上記で紹介されたPBFTは、合意プロトコルの非限定的な例として使用される。コンセンサスノードは、ブロックチェーンにトランザクションを追加するために合意プロトコルを実行し、ブロックチェーンネットワークの全体の状態を更新する。
【００２７】
さらに詳しくは、コンセンサスノードは、ブロックヘッダを生成し、ブロック内のトランザクションのすべてをハッシュし、ブロックのすべてのトランザクションに関して単一のハッシュ値が与えられるまで、ハッシュ値を2つ1組で組み合わせてさらなるハッシュ値を生成する。このハッシュが、ブロックヘッダに追加される。また、コンセンサスノードは、ブロックチェーン内の最新のブロック(つまり、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。さらに、コンセンサスノードは、ブロックヘッダにナンス値およびタイムスタンプを追加する。
【００２８】
概して、PBFTは、ビザンチン障害(たとえば、機能不全のノード、悪意のあるノード)に耐える実用的ビザンチン状態機械複製を提供する。これは、障害が発生することを想定すること(たとえば、独立したノードの障害の存在および/またはコンセンサスノードによって送信された操作されたメッセージを想定すること)によってPBFTにおいて実現される。PBFTにおいて、コンセンサスノードは、プライマリコンセンサスノードおよびバックアップコンセンサスノードを含むひと続きで提供される。プライマリコンセンサスノードは、周期的に変更される。トランザクションは、ブロックチェーンネットワーク内のコンセンサスノードがブロックチェーンネットワークのワールド状態(world state)について同意に達することによってブロックチェーンに追加される。このプロセスにおいては、コンセンサスノードの間でメッセージが送信され、各コンセンサスノードは、メッセージが指定されたピアノードから受信されることを証明し、メッセージが送信中に修正されなかったことを検証する。
【００２９】
PBFTにおいて、合意プロトコルは、すべてのコンセンサスノードが同じ状態で始まるようにして複数のフェーズで提供される。まず始めに、クライアントが、サービスの動作を呼び出す(たとえば、ブロックチェーンネットワーク内でトランザクションを実行する)ためにプライマリコンセンサスノードに要求を送信する。要求を受信することに応じて、プライマリコンセンサスノードは、要求をバックアップコンセンサスノードにマルチキャストする。バックアップコンセンサスノードは、要求を実行し、それぞれ、クライアントに応答を送信する。クライアントは、閾値の数の応答が受信されるまで待つ。一部の例において、クライアントは、f+1個の応答が受信されるのを待ち、fは、ブロックチェーンネットワーク内で許容され得る問題のあるコンセンサスノードの最大数である。最終結果は、十分な数のコンセンサスノードがブロックチェーンに追加されるレコードの順序に関して同意に至ることであり、レコードは、受け入れられるかまたは拒否されるかのどちらかである。
【００３０】
一部のブロックチェーンネットワークにおいては、トランザクションのプライバシーを保つために暗号化技術が実装される。たとえば、2つのノードが、ブロックチェーンネットワーク内のその他のノードがトランザクションの詳細を見分けることができないようにトランザクションを内密にしておきたい場合、ノードは、トランザクションデータを暗号化することができる。例示的な暗号化技術は、限定することなく、対称暗号化および非対称暗号化を含む。対称暗号化は、暗号化(平文から暗号文を生成する)と復号(暗号文から平文を生成する)との両方に単一の鍵を使用する暗号化プロセスを指す。対称暗号化においては、同じ鍵が複数のノードに利用されることが可能であり、したがって、各ノードがトランザクションデータを暗号化/復号することができる。
【００３１】
非対称暗号化は、秘密鍵および公開鍵をそれぞれ含む鍵ペアを使用し、秘密鍵は、それぞれのノードにだけ知られており、公開鍵は、ブロックチェーンネットワークの任意のまたはすべてのその他のノードに知られている。ノードは、データを暗号化するために別のノードの公開鍵を使用することができ、暗号化されたデータは、別のノードの秘密鍵を使用して復号され得る。たとえば、再び図2を参照すると、参加者Aが、参加者Bの公開鍵を使用してデータを暗号化し、暗号化されたデータを参加者Bに送信することができる。参加者Bは、その参加者Bの秘密鍵を使用して、暗号化されたデータ(暗号文)を復号し、元のデータ(平文)を抽出することができる。ノードの公開鍵を用いて暗号化されたメッセージは、ノードの秘密鍵を使用してのみ復号され得る。
【００３２】
非対称暗号化は、トランザクションの参加者がトランザクションのその他の参加者およびトランザクションの有効性を確認することを可能にするデジタル署名を提供するために使用される。たとえば、ノードは、メッセージにデジタル署名することができ、別のノードは、メッセージが参加者Aのデジタル署名に基づいてノードによって送信されたことを確認することができる。デジタル署名は、メッセージが運ばれている間に改ざんされていないことを保証するためにも使用され得る。たとえば、再び図2を参照して、参加者Aが、参加者Bにメッセージを送信することになる。参加者Aは、メッセージのハッシュを生成し、それから、その参加者Aの秘密鍵を使用してハッシュを暗号化してデジタル署名を暗号化されたハッシュとして提供する。参加者Aは、メッセージにデジタル署名を付加し、デジタル署名付きのメッセージを参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。参加者Bは、メッセージをハッシュし、ハッシュを比較する。ハッシュが同じである場合、参加者Bは、メッセージが確かに参加者Aから来たものであり、改ざんされなかったことを確認することができる。
【００３３】
一部の実施形態において、ブロックチェーンネットワークのノードおよび/またはブロックチェーンネットワークと通信するノードは、TEEを使用して動作することができる。高レベルで、TEEは、ハードウェアの動作環境(たとえば、オペレーティングシステム(OS)、基本入出力システム(BIOS))から隔離されるハードウェア(1つまたは複数のプロセッサ、メモリ)内の信頼できる環境である。さらに詳しくは、TEEは、実行されるコードおよび主プロセッサ内にロードされたデータの機密性および完全性を保証するプロセッサの分離された安全な領域である。プロセッサ内で、TEEは、OSと並列に実行される。いわゆるトラステッドアプリケーション(TA)の少なくとも一部は、TEE内で実行され、プロセッサおよびメモリにアクセスすることができる。TEEによって、TAが、主OSにおいて実行されるその他のアプリケーションから保護される。さらに、TEEは、TEE内でTAを互いから暗号化技術によって隔離する。
【００３４】
TEEの例は、米国、カリフォルニア州、サンタクララのIntel Corporationによって提供されるSoftware Guard Extensions (SGX)を含む。本明細書においては例としてSGXが検討されるが、本明細書の実施形態は任意の適切なTEEを使用して実現され得ると想定される。
【００３５】
SGXは、ハードウェアに基づくTEEを提供する。SGXにおいて、信頼できるハードウェアは、中央演算処理装置(CPU)のダイであり、物理メモリの一部が、選ばれたコードおよびデータを保護するために隔離される。メモリの隔離された部分は、エンクレーブ(enclave)と呼ばれる。より詳細には、エンクレーブは、メモリ内のエンクレーブページキャッシュ(EPC: enclave page cache)として提供され、アプリケーションのアドレス空間にマッピングされる。メモリ(たとえば、DRAM)は、SGXのためのプリザーブドランダムメモリ(PRM: preserved random memory)を含む。PRMは、最も低いBIOSレベルの連続したメモリ空間であり、いかなるソフトウェアによってもアクセスされ得ない。各EPCは、PRMにアプリケーションデータおよびコードをロードするためにOSによって割り当てられるメモリセット(memory set) (たとえば、4KB)である。EPCメタデータ(EPCM)は、それぞれのEPCに関するエントリアドレスであり、各EPCが1つのエンクレーブによってのみ分担され得ることを保証する。つまり、単一のエンクレーブは、複数のEPCを使用することができるが、EPCは、単一のエンクレーブに専用である。
【００３６】
TAの実行中、プロセッサは、エンクレーブに記憶されたデータにアクセスするとき、いわゆるエンクレーブモードで動作する。エンクレーブモードの動作は、各メモリアクセスに対する追加的なハードウェアチェックを強制する。SGXにおいては、TAは、信頼できる部分および信頼できない部分へとコンパイルされる。信頼できる部分は、たとえば、OS、BIOS、特権的なシステムコード、仮想マシンマネージャ(VMM)、システム管理モード(SMM)などによってアクセスされ得ない。動作中、TAは、実行され、メモリのPRM内にエンクレーブを作成する。エンクレーブ内で信頼できる部分によって実行される信頼できる関数が、信頼できない部分によって呼び出され、エンクレーブ内で実行されるコードは、データを(暗号化されていない)平文データとみなし、データに対する外部アクセスは、拒否される。信頼できる部分は、呼び出しに対する暗号化された応答を提供し、TAは、実行を継続する。
【００３７】
期待されるコード(たとえば、TAの信頼できる部分)が認証されたTEE内で安全に実行されていることを検証するために、アテステーションプロセスが実行され得る。概してアテステーションプロセスは、TEEがチャレンジャ(たとえば、ブロックチェーンネットワークの鍵管理システム(KMS))からアテステーション要求を受信することを含む。それに応じて、TEEは、リモートアテステーションを実行するためのクォート(quote)を生成することができる。リモートアテステーションを実行することは、ローカルアテステーションがエンクレーブからいわゆるクォーティングエンクレーブに送信されることを含み、クォーティングエンクレーブは、ローカルアテステーションを検証し、非対称アテステーション鍵を使用してローカルアテステーションに署名することによってローカルアテステーションをリモートアテステーションに変換する。クォートは、チャレンジャ(たとえば、ブロックチェーンネットワークのKMS)に提供される。
【００３８】
チャレンジャは、アテステーション検証サービスを使用してリモートアテステーションを検証する。SGXのために、Intelは、チャレンジャからリモートアテステーションを受信し、リモートアテステーションを検証するIntel Attestation Service (IAS)を提供する。より詳細には、IASは、リモートアテステーションを処理し、リモートアテステーションが検証されるかどうかを示すレポート(たとえば、アテステーション検証レポート(AVR))を提供する。検証されない場合、エラーが示され得る。検証される(期待されるコードがTEEにおいて安全に実行されている)場合、チャレンジャは、TEEとのインタラクションを開始するかまたは継続することができる。たとえば、検証に応じて、(チャレンジャとしての) KMSが、(たとえば、楕円曲線Diffie-Hellman (ECDH)などの鍵交換プロセスを通じて) TEEを実行するノードに非対称暗号化鍵(たとえば、公開鍵および秘密鍵のペア)を発行して、ノードがその他のノードおよび/またはクライアントと安全に通信することを可能にすることができる。
【００３９】
相互アテステーションプロセスが、第1のTEEを実行するノードが第2のTEEを実行するノードのリモートアテステーションを実行することを含み、そのリモートアテステーションの実行後、第2のTEEを実行するノードが、第1のTEEを実行するノードのリモートアテステーションを実行する。両方のノードが互いを検証すると、ノードは、それらのノードの間の安全な通信を可能にするために鍵交換プロセスを実行することができる。
【００４０】
一部のブロックチェーンネットワークにおいては、いわゆるスマートコントラクトが実行され得る。スマートコントラクトは、様々な関係者に影響を与える契約条項を有する現実の世界の法的契約のデジタル表現として説明され得る。スマートコントラクトは、例の文脈においてはコンソーシアムブロックチェーンネットワーク内で実施され、記憶され、(必要に応じて)更新され、実行される。スマートコントラクトに関連する契約者(たとえば、買い手および売り手)は、コンソーシアムブロックチェーンネットワーク内のノードとして表される。一部の例において、契約者は、(たとえば、スマートコントラクトの関係者として)スマートコントラクトに関連する主体(たとえば、企業)を含み得る。
【００４１】
さらに詳しくは、スマートコントラクトは、ブロックチェーン(たとえば、ブロックチェーンネットワーク内のノード)において実行されるコンピュータによって実行可能なプログラムとして提供される。スマートコントラクトは、1組の予め定義された規則を含み、それらの規則の下で、そのスマートコントラクトの関係者は、互いにインタラクションすることに同意する。スマートコントラクトの予め定義された規則が満たされる場合、スマートコントラクトにおいて定義された取り決めが、自動的に施行される。スマートコントラクトは、通常、耐タンパー性があり、取り決めまたはトランザクションのネゴシエーションまたは実行を促進し、検証し、施行する。
【００４２】
図3は、本明細書の実施形態によるシステム300の例を示す図である。示されるように、システム300は、ブロックチェーンノード304a〜dを含むブロックチェーンネットワーク302を含む。ブロックチェーンノード304a〜dは、サービスTEE 306a〜dおよび鍵管理(KM) TEE 308a〜dを含む。ノード304a〜dは、スマートコントラクトサービス論理330にアクセスすることができる。鍵管理センター310が、ノード304a〜dに通信可能なように結合される。
【００４３】
ノード304a〜dの各々は、ブロックチェーンネットワーク302に参加し、ブロックチェーンネットワーク302 (図示せず)に関連するブロックチェーンの維持に寄与するブロックチェーンノードである。上述のように、ノード304a〜dは、ブロックチェーンネットワーク302に関連する合意プロセスに参加することができ、ブロックチェーンに追加するためにトランザクションを集めてブロックにすることができ、ブロックチェーンネットワーク302のユーザによって要求されたトランザクションを処理することができ、スマートコントラクトに符号化された動作を実行し、ブロックチェーンの管理に関連するその他のタスクを実行することができる。一部の実施形態において、各ノードは、1つまたは複数のプロセッサ、ストレージデバイス、およびその他の構成要素を含むコンピューティングデバイス(たとえば、サーバ)であることが可能である。場合によっては、ノード304a〜dは、互いに、およびブロックチェーンネットワーク302に参加するその他のノードと通信ネットワーク(図示せず)を介して通信する。図3の説明の残りに関して、ノード304b〜dもノード304aの特徴を含み得ることを理解した上で、ノード304aが例として説明される。
【００４４】
ノード304aは、サービスTEE 306aを含む。一部の実施形態において、サービスTEE 306aは、TEEテクノロジー(たとえば、Intel SGX)を使用して実装された安全なアプリケーション環境である。1つまたは複数のソフトウェアプログラムまたはライブラリが、サービスTEE 306aによって実行され得る。本明細書の目的のために、サービスTEE 306aは、安全な環境(TEE)と、説明された動作を実行するTEE内で実行されるソフトウェアとを指す。一部の実施形態において、サービスTEE 306aは、暗号化されたクライアントの要求によって指定されたスマートコントラクト動作を実行し、スマートコントラクト動作に関連する暗号化された結果を出力する。この機能は、下記で図4に関連してより詳細に説明される。
【００４５】
ノード304aは、鍵管理TEE (KM TEE) 308aも含む。一部の実施形態において、KM TEE 308aは、TEEテクノロジー(たとえば、Intel SGX)を使用して実装された安全なアプリケーション環境である。1つまたは複数のソフトウェアプログラムまたはライブラリが、KM TEE 308aによって実行され得る。本明細書の目的のために、KM TEE 308aは、安全な環境(TEE)と、説明された動作を実行するTEE内で実行されるソフトウェアとを指す。一部の実施形態において、KM TEE 308aは、下記で図4に関連してより詳細に説明されるように、鍵管理センター310から暗号化鍵を得る。
【００４６】
鍵管理センター310は、暗号化鍵を生成し、記憶し、維持することができる。また、鍵管理センター310は、KM TEE 308a〜dのアイデンティティを認証し、リモートアテステーションおよび鍵配置プロセス320によってノード304a〜dに暗号化鍵を提供することができる。一部の実施形態において、鍵管理は、さらに、ノード304a〜dとインタラクションするためにクライアントに暗号化鍵を提供することができる。この機能は、下記で図4に関連してより詳細に説明される。一部の実施形態において、鍵管理センター310は、通信ネットワーク(図示せず)を介してブロックチェーンネットワーク302の1つまたは複数のノードと通信する1つまたは複数のサーバまたはその他のコンピューティングデバイスであることが可能である。鍵管理センター310は、暗号化鍵およびその他のデータを記憶するために鍵管理センター310に結合されたまたは通信ネットワークを介してアクセスされ得る1つまたは複数のストレージデバイスも含み得る。
【００４７】
場合によっては、鍵管理センター310は、暗号化鍵の配置を実行する前にKM TEE 308a〜dのアイデンティティを認証するために動作する。たとえば、KM TEE 308aに(下記で説明される) 1つまたは複数の暗号化鍵を提供する前に、鍵管理センター310は、KM TEE 308aの信憑性を検証することができる。この検証は、KM TEE 308aによって実行されるソフトウェアがプロビジョニングされた後に改ざんされていないことを保証する。一部の実施形態において、検証は、上述のリモートアテステーションプロセスなどのリモートアテステーションプロセス320を含み得る。
【００４８】
KM TEE 308a〜dが鍵管理センター310から1つまたは複数の暗号化鍵を取得した後、鍵は、暗号化動作を実行するためにサービスTEE 306a〜dに転送され得る。場合によっては、KM TEEおよびサービスTEEのペア(たとえば、KM TEE 308aおよびサービスTEE 306a)は単一のノード(たとえば、ノード304a)上で動作するが、それらは、独自の独立したTEEをそれぞれ有する。結果として、KM TEE 308a〜dとサービスTEE 306a〜dとの間で伝達された情報が、信頼できない領域を通じて送信される。そのような場合、KM TEE 308a〜dは、たとえば、ローカルアテステーションプロセスを実行することによってサービスTEE 306a〜dのアイデンティティを認証することができる。
【００４９】
ローカルアテステーションは、エンクレーブがそのエンクレーブのアイデンティティまたは信憑性を同じローカルプラットフォーム内の別のエンクレーブに対して証明することを可能にし得る。たとえば、KM TEE 308aが、サービスTEE 306aの信憑性を検証するためのチャレンジ(challenge)を送信することができる。チャレンジを受信すると、サービスTEE 306aは、サービスTEE 306aがノード304a上に存在するという暗号学的証拠を含むレポートを生成するようにノード304aのハードウェア(たとえば、CPU)に要求することができる。レポートは、エンクレーブレポートがノード304aによって同じプラットフォーム上で生成されたことを検証するためにKM TEE 308aに提供され得る。場合によっては、ローカルアテステーションは、レポートを検証するKM TEE 308aおよびレポートを生成するエンクレーブハードウェアのみがノード304aのハードウェアプラットフォームに組み込まれる対称鍵を知っている対称鍵システムに基づいて実行され得る。
【００５０】
サービスTEE 306a〜dがローカルアテステーションによって認証された後、KM TEE308a〜dは、サービスTEE 306a〜dに1つまたは複数の暗号化鍵を提供することができる。場合によっては、KM TEE 308a〜dは、サービスTEE 306a〜dの認証に応じて暗号化鍵を提供することができ、またはサービスTEE 306a〜dによる1つもしくは複数の要求に応じて鍵を提供することができる。
【００５１】
鍵管理センター310を暗号化鍵を配置する中心機関として信頼する代わりに、本明細書は、KM TEE 308a〜dによって実装される非集中的な鍵管理方式をさらに提供する。KM TEE 308a〜dは、信頼関係を確立し、それぞれのサービスTEE 306a〜dに暗号化鍵を提供するための合意に達することができる。
【００５２】
高レベルで、非集中的な鍵管理方式は、相互アテステーション(MA)段階および合意段階を含み得る。MA段階において、KM TEE 308a〜dの各々は、ブロックチェーンネットワーク302内のその他のKM TEEのうちの1つまたは複数とのMAを実行するためにアテスタ(attester)とチャレンジャとの両方として働くことができる。MAは、ブロックチェーンネットワーク302内のKM TEEの間の信頼関係を確立するためのMA論理に基づいて実行され得る。信頼関係を確立するためのMA論理は、異なる論理構造を有することが可能である。2つの例示的なMA論理が、図7および図8の説明においてさらに詳細に検討される。
【００５３】
信頼関係がKM TEE 308a〜dの間で確立された後、非集中的な鍵管理方式は、合意段階に入ることができる。合意段階において、KM TEE 308a〜dは、暗号化鍵を生成し、互いに共有し、どの暗号化鍵がサービスTEE 306a〜dに配置されるかに関する合意に達することができる。合意は、上述のPBFTなどのコンソーシアムブロックチェーンに好適な合意プロセスを実行することに基づいて達せられ得る。暗号化鍵の配置は、ローカルアテステーションによってそれぞれのサービスTEE 306a〜dを認証することに基づいて実行され得る。
【００５４】
一部の実施形態において、KM TEE 308a〜dは、鍵管理センター310を集団で管理することができる。そのような場合、暗号化鍵は、引き続き鍵管理センター310によって生成され、成功したリモートアテステーションの後にKM TEE 308a〜dに提供され得る。しかし、どの暗号化鍵がKM TEE 308a〜dまたはサービスTEE 306a〜dのうちのどれに配置されるかは、KM TEE 304a〜dの間の合意プロセスによって決定され得る。
【００５５】
一部の実施形態において、KM TEE 308a〜dは、合意プロセスによって、暗号化鍵を生成し、維持するための鍵管理センター310として働くKM TEE 308a〜dのうちの1つまたは複数を選出し、信頼できるTEEに暗号化鍵を配置することができる。
【００５６】
図7を参照すると、図7は、本明細書の実施形態によるMA論理700の例を示す図である。上述のように、高レベルで、相互アテステーションプロセスが、第1のTEEを実行するノードが第2のTEEを実行するノードのリモートアテステーションを実行することを含み、そのリモートアテステーションの実行後、第2のTEEを実行するノードが、第1のTEEを実行するノードのリモートアテステーションを実行する。両方のノードが互いを検証すると、ノードは、それらのノードの間の安全な通信を可能にするために鍵交換プロセスを実行することができる。
【００５７】
たとえば、KM TEE 308aとKM TEE 308bとの間の相互アテステーションプロセスを使用して、相互アテステーションプロセス中に、KM TEE 308aは、まず、KM TEE 308bのリモートアテステーションを実行する。リモートアテステーションプロセス中に、KM TEE 308aとKM TEE 308bとの両方が、シグマプロトコルなどの鍵生成プロトコルを使用して、共有鍵を導出することができる。そして、KM TEE 308aは、ナンスを生成し、KM TEE 308a自体のおよびKM TEE 308bのSGXレポートのハッシュ値を計算し、それから、それらのハッシュ値をKM TEE 308bに送信することができる。そして、KM TEE 308bは、KM TEE 308aのリモートアテステーションを実行し、ハッシュされたレポートの署名を検証することができる。検証が成功である場合、KM TEE 308bは、正しいKM TEE 308aと通信していると確認され得る。それから、KM TEE 308bは、セッション鍵を生成し、ナンスとセッション鍵との両方をKM TEE 308aに送り返す。
【００５８】
そして、KM TEE 308aは、受信されたナンスと初めに送信されたナンスとのマッチングを実行することができる。それらのナンスが一致する場合、KM TEE 308aは、正しいKM TEE 308bと通信していると確認され得る。したがって、MAは、成功裏に実行される。それから、KM TEE 308aは、データの暗号化のためにセッション鍵を使用することによってKM TEE 308bと安全に通信することができる。その他のKM TEEの間のMAは、同様に実行され得る。
【００５９】
MA論理700の下で、KM TEE 308a〜dのいずれか1つが、閉ループ認証「リング」を形成するために2つのその他のKM TEE 308a〜dとのMAを実行する。場合によっては、KM TEEは、KM TEE 308a〜dのMA全体が閉ループで実行される限りにおいて、MAを実行するために場所が近いかまたは高い通信効率を有する2つのKM TEEを選択することができる。
【００６０】
図7に示された例において、KM TEE 308aは、KM TEE 308bとのMAにおいてチャレンジャとアテスタとの両方を実行し、KM TEE 308bは、KM TEE 308cとのMAにおいてチャレンジャとアテスタとの両方を実行し、KM TEE 308cは、KM TEE 308dとのMAにおいてチャレンジャとアテスタとの両方を実行し、KM TEE 308dは、KM TEE 308aとのMAにおいてチャレンジャとアテスタとの両方を実行する。MAがKM TEE 308a〜dのすべてを含む閉ループを形成するために実行されるので、各KM TEEのアイデンティティが、連続的に認証され、信頼関係が、KM TEE 308a〜dの間で形成される。
【００６１】
図8は、本明細書の実施形態による別のMA論理800の例を示す図である。MA論理800の例において、MAは、ラウンドロビン式に実行される。言い換えると、各KM TEEは、ブロックチェーンネットワーク内のその他のKM TEEの各々とMAを1回実行する。たとえば、図7の説明において検討されたようにMA論理700の下でMAを実行することに加えて、KM TEE 308aは、KM TEE 308cとのMAにおいてチャレンジャとアテスタとの両方を実行し、KM TEE 308bは、KM TEE 308dとのMAにおいてチャレンジャとアテスタとの両方を実行する。
【００６２】
ブロックチェーンネットワーク内のKM TEEのうちの任意の2つのアイデンティティが相互に認証されるので、MA論理800は、MA論理700よりも安全であることが可能である。一方、より少ないMAがMA論理700の下で実行されるので、MA論理700は、認証の迅速さおよびリソースの消費の点でより効率的であり得る。MA論理800は、より少ない数のコンセンサスノードまたはより高いセキュリティの要件を有するブロックチェーンネットワークにより好適であり得る。MA論理700は、より多い数のコンセンサスノードまたはより低いセキュリティの要件を有するブロックチェーンネットワークにより好適であり得る。
【００６３】
再び図3を参照すると、スマートコントラクトサービス論理330は、1つまたは複数のスマートコントラクトの定義を含む。ノード304a〜304dは、(たとえば、図4に示されるように、クライアントの要求に応じて)スマートコントラクトサービス論理330から特定の動作を実行する。一部の実施形態において、スマートコントラクトサービス論理330内のスマートコントラクトの定義は、ブロックチェーンネットワーク302のノードによって実行される命令を含む。スマートコントラクトサービス論理330は、ブロックチェーンネットワーク302 (図示せず)によって維持される1つまたは複数のブロックチェーンに記憶されたスマートコントラクトの定義を含み得る。
【００６４】
図4は、本明細書の実施形態によるシステム400の例を示す図である。示されるように、システム400は、図3に関連して説明された(サービスTEE 306aおよびKM TEE 308aを含む)ノード304aおよび鍵管理センター310を含む。システム400は、鍵管理センター310に通信可能なように結合されたクライアント480も含む。
【００６５】
動作中、システム400は、スマートコントラクトの命令を安全に実行し、(たとえば、ブロックチェーンに含めるために)動作の暗号化された結果を生成することができる。上記で検討されたように、鍵管理センター310は、KM TEE 308aを信頼して暗号化鍵を渡す前に、リモートアテステーションを実行してKM TEE 308aのアイデンティティを認証することができる。KM TEE 308が認証された後、鍵管理センター310は、ノード304aのKM TEE 308aに開封秘密鍵402、ルート鍵404、署名秘密鍵406を提供することができる。鍵管理センター310は、封印公開鍵414および検証公開鍵416もホストする。鍵管理センター310は、以下で説明されるように、サービスTEE 306aに関連する様々なデータの暗号化および復号を実行するためにこれらの鍵を認可されたクライアントに提供する。
【００６６】
示されるように、鍵管理センター310は、封印公開鍵414をクライアント480に提供する。場合によっては、鍵管理センター310は、クライアント480を認証し、クライアント480が封印公開鍵414にアクセスすることを認可される場合にのみ封印公開鍵414を提供する。鍵管理センター310は、この判定を行うために内部または外部のパーミッションリソースと協議することができる。封印公開鍵414は、KM TEE 308aに提供される開封秘密鍵402に関連付けられる。封印公開鍵414および開封秘密鍵402は、鍵ペアを形成し、つまり、封印公開鍵414を用いて暗号化されたデータは、開封秘密鍵402を使用して復号され得る。
【００６７】
クライアント480は、サービスTEE 306aに配置されたイーサリアム仮想マシン(VM) 460によって実行されるスマートコントラクト動作である要求される契約動作450を特定する。場合によっては、スマートコントラクト動作450は、スマートコントラクトプログラミング言語の命令を実行するように動作可能なVMによる実行のためにその言語で符号化された1つまたは複数の命令を含む。スマートコントラクト動作450は、要求契約動作450に関連するスマートコントラクトに関する実行状態を含み得る。スマートコントラクトの実行中に、ブロックチェーンネットワークの複数のノードは、スマートコントラクトの各命令を個々に実行し、命令の完了後のスマートコントラクトの実行状態を示す結果を生成する。実行状態は、スマートコントラクトに関連するデータを含み得る。コントラクトのそれぞれの実行された命令は、(たとえば、スマートコントラクトのもっと後の命令によって使用される値を記憶するために)データの内容を変更することができる。スマートコントラクトの命令の実行後、ブロックチェーンネットワークのノードは、命令の実行後の新しい実行状態に関する合意に達する。この合意プロセスは、スマートコントラクトにおいて実行される各命令に関して実行され、スマートコントラクトの実行経路についておよび最終的には実行の最終結果についての合意に至る。
【００６８】
452において、クライアント480は、ノード304aによって実行されるサービスTEE 306aに送信するために、要求される契約動作450をデジタル封筒454に符号化する(または封印する)。たとえば、クライアント480は、一時的対称鍵408を生成し、要求される契約動作450を鍵408を使用して暗号化する。それから、クライアント480は、封印公開鍵414を使用して一時的対称鍵408を暗号化し、暗号化された契約動作450および暗号化された鍵408を連結してデジタル封筒454を生成する。
【００６９】
クライアント480は、デジタル封筒454をノード304aに送信し、ノード304aにおいて、そのデジタル封筒454は、サービスTEE 306aに提供される。場合によっては、クライアント480は、要求される契約動作450の処理を要求するために複数のノード304a〜dにデジタル封筒454を送信し得る。場合によっては、クライアント480は、特定のノードに固有の封印公開鍵を使用して生成されたデジタル封筒を送信し得る。クライアント480は、同じ封印公開鍵414および開封秘密鍵402がすべてのノード304a〜dに関連付けられる場合、デジタル封筒454をノード304a〜dにブロードキャストすることもできる。
【００７０】
サービスTEE 306aは、クライアント480からデジタル封筒454を受信し、デジタル封筒454から要求される契約動作450を復元する。示されるように、サービスTEE 306aは、KM TEE 308aから得られた開封秘密鍵402を使用してデジタル封筒454を復号する。場合によっては、サービスTEE 306aは、(456において)開封秘密鍵402を使用して一時的対称鍵408を復号し(開封し)、それから、(458において)一時的対称鍵408を使用して要求される契約動作450を復号する。
【００７１】
そして、サービスTEE 306aは、サービスTEE 306aに配置されたVM 460を使用して要求される契約動作450を実行する。一部の実施形態において、VM 460は、イーサリアムVMまたはその他の種類のVMなどの、スマートコントラクトプログラミング言語の命令を実行するように構成されたVMであることが可能である。場合によっては、VM 460は、動作450の実行中に、たとえば、外部サーバ、ブロックチェーン、データベース、または動作450によって示されたその他のリソースなどのサービスTEE 306aの外部のリソースにアクセスすることができる。一部の実施形態においては、動作の実行の全部が(スマートコントラクトの状態などの)サービスTEE 306aに記憶されたデータのみに依存するように、外部のリソースにアクセスすることは制約され得るかまたは拒否され得る。さらに、この種の制約は、動作450の実行の改ざんの可能性を減らすことができる。
【００７２】
VM 460による動作450の実行は、1つまたは複数の結果を生成することができる。場合によっては、結果は、上述のように、動作450の実行後のスマートコントラクトの実行状態を含み得る。462において、スマートコントラクト動作450の結果が、契約鍵(contract key) 412を使用してサービスTEE 306aによって暗号化される。契約鍵412は、鍵導出関数(KDF)に基づいてルート鍵404から(410において)導出される。一部の例において、KDFは、HMACに基づく抽出および展開鍵導出関数(HKDF: HMAC-based extract-and-expand key derivation function)または擬似乱数関数(PRF)などの反復ハッシュアルゴリズムに基づいて実行され得る。契約鍵は、KM TEE 308aによってサービスTEE 306aに提供され得る。一部の実施形態において、ルート鍵404は、ノード304aに関連する対称暗号化鍵であることが可能である。また、ルート鍵404は、ルート鍵404から導出され得る1つまたは複数の副鍵を含み得る。契約鍵412は、これらの副鍵のうちの1つであることが可能である。場合によっては、ルート鍵404自体が、462において結果を暗号化するために使用され得る。
【００７３】
結果を暗号化した後、サービスTEE 308aは、464において、署名された結果466を生成するために、サービスTEE 306aにKM TEE 308aによって提供された署名秘密鍵406を使用して暗号化された結果に署名する。これは、鍵管理センター310によって維持された(署名秘密鍵406と対応してペアにされた)検証公開鍵416を使用する第三者(たとえば、クライアント)による署名された結果のその後の検証を可能にし得る。場合によっては、署名秘密鍵406によって暗号化された結果に署名することは、結果を暗号化するために使用された契約鍵412と一緒に暗号化された結果を暗号化することを含み得る。そのような場合、検証公開鍵416を保有する第三者は、まず、契約鍵412を復号し、さらに、契約鍵412を使用して結果を復号することができる。
【００７４】
場合によっては、サービスTEE 306aは、署名された結果466をブロックチェーンに記憶することができる。上述のように、検証公開鍵416を保有する第三者は、検査するために鍵を使用して結果466を復号することができる。たとえば、クライアント480は、(たとえば、上述のように認証を受け)鍵管理センター310から検証公開鍵416を取り出すことができ、署名された結果466にアクセスし、検証公開鍵416を使用して署名された結果466を復号することができる。クライアント480は、それから、スマートコントラクトの次の動作がサービスTEE 306aによって実行されることを要求することができ、サービスTEE 306aに送信されるデジタル封筒に要求された次の動作および(復号された署名された結果466からの)スマートコントラクトの実行状態を含めることができる。
【００７５】
図5は、本明細書の実施形態によって実行され得るプロセスの例を示す。502において、ブロックチェーンネットワーク(たとえば、302)に参加するブロックチェーンノード(たとえば、304a)が、複数のKM TEEとの相互アテステーションを実行することに基づいて複数のKMノード内の複数のKM TEEとの信頼関係を確立し、そのKMノードおよび複数のKMノードは、コンソーシアムブロックチェーン内にある。
【００７６】
504において、ブロックチェーンノードが、KMノードのサービスTEEに1つまたは複数の暗号化鍵を提供することに関する合意に達するために複数のKM TEEとの合意プロセスを開始する。
【００７７】
506において、ブロックチェーンノードが、KMノードのサービスTEEによるローカルアテステーションプロセスを開始する。
【００７８】
508において、ブロックチェーンノードが、ローカルアテステーションプロセスが成功であると判定する。
【００７９】
510において、ブロックチェーンノードが、コンピューティングデバイス上で実行されるTEEに1つまたは複数の暗号化鍵を提供する。
【００８０】
場合によっては、ブロックチェーンノードは、コンソーシアムブロックチェーンに暗号化鍵を記憶し、コンソーシアムブロックチェーンに記憶される暗号化鍵は、コンソーシアムブロックチェーンのすべてのノードによってアクセスされ得る暗号化鍵の合意バージョンを表す。
【００８１】
場合によっては、KM TEEは、第1のKM TEEであり、信頼関係を確立することは、第1のKM TEEが複数のKM TEEの中の第2のKM TEEおよび第3のTEEとの相互アテステーションプロセスを実行することを含む。
【００８２】
場合によっては、KM TEEおよび複数のKM TEEは、コンソーシアムブロックチェーンのKM TEEの組を形成し、信頼関係を確立することは、複数のKM TEEの任意の各々がKM TEEの組のうちの2つとの相互アテステーションプロセスを実行することをさらに含む。
【００８３】
場合によっては、信頼関係を確立することは、KM TEEが複数のKM TEEの各々との相互アテステーションを実行することをさらに含む。
【００８４】
場合によっては、KM TEEおよび複数のKM TEEが暗号化鍵に関する合意プロセスを成功裏に実行することに応じて暗号化鍵がコンソーシアムブロックチェーンに記憶される。
【００８５】
場合によっては、合意プロセスは、実用的ビザンチン障害耐性(PBFT)プロセスである。
【００８６】
場合によっては、KM TEEは、第1のKM TEEであり、暗号化鍵は、サービスTEEに関連するTEE公開鍵およびTEE秘密鍵を含み、第1のKM TEEまたは第2のKM TEEは、コンソーシアムブロックチェーンからTEE公開鍵を取り出し、要求に応じてTEE公開鍵をクライアントに提供する。
【００８７】
図6は、本明細書の実施形態による装置600のモジュールの例を示す。装置600は、ブロックチェーンネットワーク内で実行されるブロックチェーンノードの例示的な実施形態であることが可能である。装置600は、上述の実施形態に対応することが可能であり、装置600は、以下、すなわち、複数のKM TEEとの相互アテステーションを実行することに基づいて複数のKMノード内の複数のKM TEEとの信頼関係を確立する確立モジュール602であって、そのKMノードおよび複数のKMノードが、コンソーシアムブロックチェーン内にある、確立モジュール602と、KMノードのサービスTEEに1つまたは複数の暗号化鍵を提供することに関する合意に達するために複数のKM TEEとの合意プロセスを開始し、KMノードのサービスTEEによるローカルアテステーションプロセスを開始する開始モジュール604と、ローカルアテステーションプロセスが成功であると判定する判定モジュール606と、コンピューティングデバイス上で実行されるTEEに1つまたは複数の暗号化鍵を提供する送信モジュール608とを含む。
【００８８】
上述の実施形態に示されたシステム、装置、モジュール、またはユニットは、コンピュータチップもしくはエンティティを使用することによって実装されることが可能であり、または特定の機能を有する製品を使用することによって実装されることが可能である。典型的な実施形態のデバイスは、コンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、セルラ電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレイヤー、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであることが可能である。
【００８９】
装置の各モジュールの機能および役割の実施形態のプロセスに関しては、上述の方法の対応するステップの実施形態のプロセスが参照され得る。簡潔にするために、詳細はここでは省略される。
【００９０】
装置の実施形態は基本的に方法の実施形態に対応するので、関連する部分に関して、方法の実施形態の関連する説明が参照され得る。上述の装置の実施形態は、例であるに過ぎない。別々の部分として説明されたモジュールは、物理的に分かれている可能性があり、または物理的に分かれていない可能性があり、モジュールとして示された部分は、物理的なモジュールである可能性があり、または物理的なモジュールではない可能性があり、1つの位置に置かれる可能性があり、またはいくつかのネットワークモジュールに分散される可能性がある。モジュールの一部またはすべては、本明細書の解決策の目的を達成するために実際の要求に基づいて選択され得る。当業者は、創造的な努力なしに本出願の実施形態を理解し、実装し得る。
【００９１】
図6を再び参照すると、図6は、ブロックチェーンネットワーク内で実行され、実行主体として機能するブロックチェーンノードの内部機能モジュールおよび構造を示すものと解釈され得る。実行主体は、本質的に、電子デバイスであることが可能であり、電子デバイスは、以下、すなわち、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能な命令を記憶するように構成されたメモリとを含む。
【００９２】
本明細書において説明される技術は、1つまたは複数の技術的効果を生む。一部の実施形態において、説明される技術は、複数のノードが、暗号化鍵を用いてその他のコンピューティングデバイス上のトラステッド実行環境を認可し、構成するために分散型鍵管理センター(KMC)として機能することを可能にする。場合によっては、鍵は、ブロックチェーンに記憶され、たとえ要求された鍵が要求を受信するノードとは異なるノードによって構成され、記憶されたとしても複数のノードのいずれかがその他のコンピューティングデバイスから受信された暗号化鍵の要求に答えることを可能にする。一部の例において、技術は、(集中的な解決策とは異なり)複数のノードのうちの1つの障害が鍵管理サービスの中断を引き起こさないので、システムを停止させずに動作し続けるさらなる能力も提供する。一部の実施形態において、技術は、暗号化鍵をブロックチェーンに記憶することに関連する合意プロセスのおかげで、システムを侵害するために攻撃者がすべての鍵管理ノードの制御を掌握しなければならないので、向上したセキュリティを提供することができる。
【００９３】
対象の説明される実施形態は、1つまたは複数の特徴を単独でまたは組み合わせて含み得る。1つの実施形態は、クライアントから、スマートコントラクト動作を実行する暗号化された要求を、ブロックチェーンネットワークに参加するブロックチェーンノードによって受信する行為と、ブロックチェーンノードによってホストされるTEE内でブロックチェーンノードによって、要求されたスマートコントラクト動作を生成するためにTEEに関連する第1の秘密鍵を用いて暗号化された要求を復号する行為であって、第1の秘密鍵が、暗号化された要求を暗号化するために使用されたTEEに関連する公開鍵に対応する、復号する行為と、スマートコントラクトの結果を生成するために要求されたスマートコントラクト動作をTEE内でブロックチェーンノードによって実行する行為と、TEE内でブロックチェーンノードによって、暗号化された結果を生成するためにスマートコントラクトの結果をTEEに関連する対称鍵を用いて暗号化する行為と、TEE内でブロックチェーンノードによって、署名された暗号化された結果を生成するために暗号化された結果にTEEに関連する第2の秘密鍵を使用して署名する行為であって、第2の秘密鍵が、第1の秘密鍵と異なる、署名する行為と、ブロックチェーンノードによって、ブロックチェーンネットワークによって維持されるブロックチェーンに署名された暗号化された結果を記憶する行為とを含むコンピュータによって実施される方法を含む。
【００９４】
上述のおよびその他の説明される実施形態は、それぞれ、任意で、以下の特徴のうちの1つまたは複数を含み得る。
【００９５】
以下の特徴のいずれとも組み合わされ得る第1の特徴は、ブロックチェーンノードが、コンソーシアムブロックチェーンに暗号化鍵を記憶し、コンソーシアムブロックチェーンに記憶される暗号化鍵は、コンソーシアムブロックチェーンのすべてのノードによってアクセスされ得る暗号化鍵の合意バージョンを表すと規定する。
【００９６】
上述のまたは以下の特徴のいずれとも組み合わされ得る第2の特徴は、KM TEEが、第1のKM TEEであり、信頼関係を確立することが、第1のKM TEEが複数のKM TEEの中の第2のKM TEEおよび第3のTEEとの相互アテステーションプロセスを実行することを含むと規定する。
【００９７】
上述のまたは以下の特徴のいずれとも組み合わされ得る第3の特徴は、KM TEEおよび複数のKM TEEが、コンソーシアムブロックチェーンのKM TEEの組を形成し、信頼関係を確立することが、複数のKM TEEの任意の各々がKM TEEの組のうちの2つとの相互アテステーションプロセスを実行することをさらに含むと規定する。
【００９８】
上述のまたは以下の特徴のいずれとも組み合わされ得る第4の特徴は、信頼関係を確立することが、KM TEEが複数のKM TEEの各々との相互アテステーションを実行することをさらに含むと規定する。
【００９９】
上述のまたは以下の特徴のいずれとも組み合わされ得る第5の特徴は、KM TEEおよび複数のKM TEEが暗号化鍵に関する合意プロセスを成功裏に実行することに応じて暗号化鍵がコンソーシアムブロックチェーンに記憶されると規定する。
【０１００】
上述のまたは以下の特徴のいずれとも組み合わされ得る第6の特徴は、合意プロセスが、実用的ビザンチン障害耐性(PBFT)プロセスであると規定する。
【０１０１】
上述のまたは以下の特徴のいずれとも組み合わされ得る第7の特徴は、KM TEEが、第1のKM TEEであり、暗号化鍵が、サービスTEEに関連するTEE公開鍵およびTEE秘密鍵を含み、第1のKM TEEまたは第2のKM TEEが、コンソーシアムブロックチェーンからTEE公開鍵を取り出し、要求に応じてTEE公開鍵をクライアントに提供すると規定する。
【０１０２】
本明細書に記載の対象の実施形態ならびに行為および動作は、本明細書で開示された構造およびそれらの構造的均等物を含むデジタル電子回路、有形で具現化されたコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装されることが可能である。本明細書に記載の対象の実施形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータプログラム担体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。たとえば、コンピュータプログラム担体は、命令を符号化させ、または記憶している1つまたは複数のコンピュータ可読ストレージ媒体を含み得る。担体は、磁気、光磁気、もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、またはその他の種類の媒体などの有形の非一時的コンピュータ可読媒体である可能性がある。代替的にまたは追加的に、担体は、データ処理装置による実行のために好適なレシーバ装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号である可能性がある。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであるかまたはその一部であることが可能である。コンピュータストレージ媒体は、伝播信号ではない。
【０１０３】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれるまたは称される可能性もあるコンピュータプログラムは、コンパイラ型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述されることが可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境内での実行に適したその他のユニットとしての形態を含む任意の形態で配置されることが可能であり、その環境は、1つまたは複数の場所のデータ通信ネットワークによって相互に接続された1つまたは複数のコンピュータを含む可能性がある。
【０１０４】
コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。コンピュータプログラムは、その他のプログラムもしくはデータを保持するファイルの一部、たとえば、マークアップ言語の文書に記憶された1つもしくは複数のスクリプト、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル、たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイルに記憶され得る。
【０１０５】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、プロセッサに結合された非一時的コンピュータ可読媒体から実行するためのコンピュータプログラムの命令およびデータを受信する。
【０１０６】
用語「データ処理装置」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、およびマシンを包含する。データ処理装置は、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)、ASIC (特定用途向け集積回路)、またはGPU (グラフィックス処理装置)を含み得る。装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。
【０１０７】
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって動作を実行するために1つまたは複数のコンピュータプログラムを1つまたは複数のコンピュータが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA、ASIC、もしくはGPUによって、または専用の論理回路と1つもしくは複数のプログラミングされたコンピュータとの組合せによって実行されることが可能である。
【０１０８】
コンピュータプログラムの実行に好適なコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくはそれら両方、または任意のその他の種類の中央演算処理装置に基づくことが可能である。概して、中央演算処理装置は、読み出し専用メモリ、またはランダムアクセスメモリ、またはそれら両方から命令およびデータを受け取る。コンピュータの要素は、命令を実行するための中央演算処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含み得る。中央演算処理装置およびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれることが可能である。
【０１０９】
また、概してコンピュータは、1つまたは複数のストレージデバイスを含むか、またはこれらのストレージデバイスからデータを受け取るかもしくはこれらのストレージデバイスにデータを転送するために動作可能なように結合される。ストレージデバイスは、たとえば、磁気、光磁気、もしくは光ディスク、ソリッドステートドライブ、または任意のその他の種類の非一時的コンピュータ可読媒体であることが可能である。しかし、コンピュータは、そのようなデバイスを有していなくてもよい。したがって、コンピュータは、ローカルのおよび/またはリモートの1つまたは複数のメモリなどの1つまたは複数のストレージデバイスに結合される可能性がある。たとえば、コンピュータは、コンピュータの一体的な構成要素である1つもしくは複数のローカルのメモリを含むことが可能であり、またはコンピュータは、クラウドネットワーク内にある1つもしくは複数のリモートのメモリに結合されることが可能である。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつか例を挙げるとすれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)レシーバ、またはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込まれることが可能である。
【０１１０】
構成要素は、直接かまたは1つまたは複数の中間構成要素を介してかのどちらかで互いに電気的にまたは光学的になど通信可能なように接続されることによって互いに「結合される」ことが可能である。構成要素は、構成要素のうちの一方が他方に統合される場合も、互いに「結合される」ことが可能である。たとえば、プロセッサに統合されたストレージ構成要素(たとえば、L2キャッシュ構成要素)は、プロセッサに「結合される」。
【０１１１】
ユーザとのインタラクションを提供するために、本明細書に記載の対象の実施形態は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、LCD (液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与えることができる入力デバイス、たとえば、キーボードおよびポインティングデバイス、たとえば、マウス、トラックボール、またはタッチパッドとを有するコンピュータ上に実装され得るかまたはそのようなコンピュータと通信するように構成され得る。その他の種類のデバイスが、ユーザとのインタラクションを提供するためにやはり使用されることが可能であり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られることが可能である。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイスのウェブブラウザにウェブページを送信すること、またはユーザデバイス、たとえば、スマートフォンもしくは電子タブレット上で実行されるアプリとインタラクションすることによってユーザとインタラクションすることができる。また、コンピュータは、メッセージングアプリケーションを実行しているパーソナルデバイス、たとえば、スマートフォンにテキストメッセージまたはその他の形態のメッセージを送信し、返報としてユーザから応答メッセージを受信することによってユーザとインタラクションすることができる。
【０１１２】
本明細書は、用語「構成される」をシステム、装置、およびコンピュータプログラムの構成要素に関連して使用する。1つまたは複数のコンピュータのシステムが特定の動作または行為を実行するように構成されることは、システムが、動作中にシステムに動作または行為を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをそのシステム上にインストール済みであることを意味する。1つまたは複数のコンピュータプログラムが特定の動作または行為を実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されるときに装置に動作または行為を実行させる命令を含むことを意味する。専用の論理回路が特定の動作または行為を実行するように構成されることは、回路が動作または行為を実行する電子的な論理を有することを意味する。
【０１１３】
本明細書は多くの特定の実施形態の詳細を含むが、これらは、請求項自体によって定義される特許請求されているものの範囲に対する限定と見なされるべきではなく、むしろ、特定の実施形態に固有である可能性がある特徴の説明と見なされるべきである。別々の実施形態の文脈で本明細書において説明されている特定の特徴が、単一の実施形態において組み合わせて実現されることも可能である。反対に、単一の実施形態の文脈で説明されている様々な特徴が、複数の実施形態に別々にまたは任意の好適な部分的組合せで実現されることも可能である。さらに、特徴は、特定の組合せで動作するものとして上記で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除されることが可能であり、主張は、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
【０１１４】
同様に、動作が特定の順序で図中に示され、請求項に記載されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることが理解されるべきである。
【０１１５】
対象の特定の実施形態が、説明された。その他の実施形態は、添付の請求項の範囲内にある。たとえば、請求項に挙げられた行為は、異なる順序で実行され、それでも所望の結果を達成することができる。一例として、添付の図に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序を必要としない。場合によっては、マルチタスクおよび並列処理が有利である可能性がある。
【符号の説明】
【０１１６】
100  環境
102  コンソーシアムブロックチェーンネットワーク
106  コンピューティングデバイス
108  コンピューティングデバイス
110  ネットワーク
200  概念的なアーキテクチャ
202  主体レイヤ
204  ホストされるサービスレイヤ
206  ブロックチェーンネットワークレイヤ
208  トランザクション管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  システム
302  ブロックチェーンネットワーク
304a〜d  ブロックチェーンノード
306a〜d  サービスTEE
308a〜d  鍵管理(KM) TEE
310  鍵管理センター
320  リモートアテステーションプロセス
330  スマートコントラクトサービス論理
400  システム
402  開封秘密鍵
404  ルート鍵
406  署名秘密鍵
408  一時的対称鍵
412  契約鍵
414  封印公開鍵
416  検証公開鍵
450  スマートコントラクト動作、契約動作
454  デジタル封筒
460  イーサリアム仮想マシン(VM)
466  署名された結果
480  クライアント
600  装置
602  確立モジュール
604  開始モジュール
606  判定モジュール
608  送信モジュール
700  MA論理
800  MA論理
【図１】
0006869374.tif 000002
【図２】
0006869374.tif 000003
【図３】
0006869374.tif 000004
【図４】
0006869374.tif 000005
【図５】
0006869374.tif 000006
【図６】
0006869374.tif 000007
【図７】
0006869374.tif 000008
【図８】
0006869374.tif 000009