(57)【要約】  本明細書では、信頼できる実行環境(TEE)においてスマート契約動作をセキュアに実行するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む、方法、システム、および装置が開示される。本方法のうちの1つは、ブロックチェーンネットワークに参加しているブロックチェーンノードによって、ブロックチェーンノードによってホストされたサービスTEEにおいて1つまたは複数のソフトウェア命令を実行するようにとの要求を受信するステップであって、要求が、サービスTEEに関連付けられた公開鍵によって暗号化された、受信するステップと、サービスTEEに関連付けられた第1の秘密鍵を用いて要求を解読するステップであって、第1の秘密鍵が公開鍵とペアにされた、解読するステップと、要求の解読に応答して、実行結果を作成するために1つまたは複数のソフトウェア命令を実行するステップと、暗号化された結果を作成するために、サービスTEEに関連付けられたクライアント暗号化鍵を用いて実行結果を暗号化するステップと、署名された暗号化された結果を作成するために、TEEに関連付けられた第2の秘密鍵を使用して暗号化された結果に署名するステップとを含む。
2020528224.tif 000002
【特許請求の範囲】
【請求項１】
信頼できる実行環境(TEE)においてスマート契約動作をセキュアに実行するためのコンピュータで実行される方法であって、前記方法は、
ブロックチェーンネットワークに参加しているブロックチェーンノードによって、前記ブロックチェーンノードによってホストされたサービスTEEにおいて1つまたは複数のソフトウェア命令を実行するようにとの要求を受信するステップであって、前記要求が、前記サービスTEEに関連付けられた公開鍵によって暗号化されている、ステップと、
前記サービスTEEにおいて前記ブロックチェーンノードによって、前記サービスTEEに関連付けられた第1の秘密鍵を用いて前記要求を解読するステップであって、前記第1の秘密鍵が、前記公開鍵とペアにされた、ステップと、
前記要求の解読に応答して、前記サービスTEEにおいて前記ブロックチェーンノードによって、実行結果を作成するために前記1つまたは複数のソフトウェア命令を実行するステップと、
前記サービスTEEにおいて前記ブロックチェーンノードによって、暗号化された結果を作成するために、前記サービスTEEに関連付けられたクライアント暗号化鍵を用いて前記実行結果を暗号化するステップと、
前記TEEにおいて前記ブロックチェーンノードによって、署名された暗号化された結果を作成するために、前記TEEに関連付けられた第2の秘密鍵を使用して前記暗号化された結果に署名するステップとを含む、
コンピュータで実行される方法。
【請求項２】
前記公開鍵が、第1の公開鍵であり、
前記クライアント暗号化鍵が、第2の公開鍵、または鍵導出関数に基づいてルート鍵から導出された対称鍵のうちの1つである、
請求項1に記載のコンピュータで実行される方法。
【請求項３】
前記ブロックチェーンノードが、前記第1の秘密鍵、前記第2の秘密鍵のうちの1つまたは複数を記憶する鍵管理TEEをさらにホストし、
前記鍵管理TEEは、前記鍵管理TEEによって開始されるローカル構成証明を実施することに基づいて前記サービスTEEの識別情報が認証された後、前記第1の秘密鍵、前記第2の秘密鍵、および前記ルート鍵を前記サービスTEEに提供する、
請求項2に記載のコンピュータで実行される方法。
【請求項４】
前記第1の秘密鍵、前記第2の秘密鍵、およびルート鍵は、鍵管理センタによって生成され、前記鍵管理センタによって開始されるリモート構成証明を実施することに基づいて鍵管理TEEの識別情報が認証された後、前記鍵管理TEEに提供される、
請求項1から3のいずれか一項に記載のコンピュータで実行される方法。
【請求項５】
前記第1の秘密鍵およびルート鍵が、前記サービスTEEのリブート動作に応答して、鍵管理TEEによって前記サービスTEEに提供される、
請求項1から4のいずれか一項に記載のコンピュータで実行される方法。
【請求項６】
前記1つまたは複数のソフトウェア命令が、スマート契約に関連付けられ、
ルート鍵が、前記スマート契約の状態に基づいて、鍵管理TEEに記憶された複数の前記ルート鍵から選択される、
請求項1から5のいずれか一項に記載のコンピュータで実行される方法。
【請求項７】
第1の公開鍵が、鍵管理センタによって生成され、前記要求を暗号化するためにクライアントに提供される、
請求項1から6のいずれか一項に記載のコンピュータで実行される方法。
【請求項８】
前記ブロックチェーンノードによって受信された前記要求が、前記1つまたは複数のソフトウェア命令を暗号化するために前記クライアント暗号化鍵を使用することをさらに含む、
請求項1から7のいずれか一項に記載のコンピュータで実行される方法。
【請求項９】
前記第1の秘密鍵を用いて前記要求を解読するステップが、
前記第1の秘密鍵を用いて前記クライアント暗号化鍵を解読するステップと、
前記クライアント暗号化鍵を用いて前記1つまたは複数のソフトウェア命令を解読するステップとを含む、
請求項8に記載のコンピュータで実行される方法。
【請求項１０】
鍵管理センタが、前記第2の秘密鍵に対応する検証公開鍵を記憶し、前記署名された暗号化された結果を検証するために前記検証公開鍵をクライアントに提供する、
請求項1から9のいずれか一項に記載のコンピュータで実行される方法。
【請求項１１】
信頼できる実行環境(TEE)においてスマート契約動作をセキュアに実行するシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合され、請求項1から10のいずれか一項に記載の方法を実行するために、前記1つまたは複数のプロセッサによって実行可能である命令を記憶した1つまたは複数のコンピュータ可読メモリとを含む、
システム。
【請求項１２】
信頼できる実行環境(TEE)においてスマート契約動作をセキュアに実行する装置であって、前記装置が、請求項1から10のいずれか一項に記載の方法を実施するための複数のモジュールを含む、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、信頼できる実行環境(trusted execution environment)においてスマート契約動作(smart contract operation)をセキュアに実行することに関する。
【背景技術】
【０００２】
コンセンサス(consensus)ネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS:distributed ledger system)は、参加エンティティがデータをセキュアに不変に記憶することを可能にする。DLSは、一般に、特定の使用事例に言及することなく、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの一例は、コンセンサスプロセスを制御するエンティティの選択グループのために与えられたコンソーシアムブロックチェーンネットワーク(consortium blockchain network)を含むことができ、アクセス制御レイヤを含む。
【０００３】
スマート契約は、ブロックチェーン上で実行するプログラムである。スマート契約は、あらかじめ定義された規則のセットを含んでおり、その規則の下でそのスマート契約の関係者が互いに対話することに合意する。スマート契約のあらかじめ定義された規則が満たされる場合、スマート契約において定義された合意は自動的にエンフォース(enforce)される。スマート契約は、通常、改ざん耐性(tamper resistant)であり、合意またはトランザクションのネゴシエーションまたは実施を容易にし、検証し、エンフォースする。
【０００４】
コンソーシアムブロックチェーンネットワークでは、選択されたグループのノードのみがコンセンサスプロセスを制御するので、攻撃者は、コンセンサスプロセスに影響を及ぼすために、比較的少数のノードの制御権を得る必要がある。コンソーシアムブロックチェーンネットワークにおけるこれらのタイプのセキュリティ問題に対処するための技法が提案されてきたが、より効果的でセキュアなソリューションが有利であろう。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書は、ブロックチェーンノードによって実行される、信頼できる実行環境(TEE)における、要求されたスマート契約動作をセキュアに実行するための技術について説明する。より詳細には、本明細書の実施形態は、関係者が、動作が実行される環境が改ざんされていないかまたは損なわれていないことを信頼することができるように、ブロックチェーンノードが、TEE内で、セキュアで検証可能な様式においてスマート契約動作を実施することを可能にする。
【０００６】
本明細書はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実施形態による動作を実施させる命令を記憶した、1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
【０００７】
本明細書は、本明細書で提供される方法を実装するためのシステムをさらに提供する。本システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供される方法の実施形態による動作を実施させる命令を記憶したコンピュータ可読記憶媒体とを含む。
【０００８】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることを諒解されたい。すなわち、本明細書による方法は、本明細書で詳細に説明される態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せをも含む。
【０００９】
本明細書の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。本明細書の他の特徴および利点が、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本明細書の実施形態を実行するために使用され得る環境の一例を示す図である。
【図２】本明細書の実施形態によるアーキテクチャの一例を示す図である。
【図３】本明細書の実施形態によるシステムの一例を示す図である。
【図４】本明細書の実施形態によるシステムの一例を示す図である。
【図５】本明細書の実施形態に従って実行され得るプロセスの一例を示す図である。
【図６】本明細書の実施形態による装置のモジュールの例を示す図である。
【発明を実施するための形態】
【００１１】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【００１２】
本明細書は、ブロックチェーンノードによって実行される、信頼できる実行環境(TEE)における、要求されたスマート契約動作をセキュアに実行するための技術について説明する。より詳細には、本明細書の実施形態は、関係者が、動作が実行される環境が改ざんされていないかまたは損なわれていないことを信頼することができるように、ブロックチェーンノードが、TEE内で、セキュアで検証可能な様式においてスマート契約動作を実施することを可能にする。
【００１３】
本明細書の実施形態に関してさらなる文脈を提供するために、および上記で紹介されたように、(たとえば、ピアツーピアノードからなる)コンセンサスネットワークおよびブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS)は、参加エンティティが、トランザクションをセキュアに不変に行い、データを記憶することを可能にする。ブロックチェーンという用語は、概して、特定のネットワークおよび/または使用事例に関連付けられるが、ブロックチェーンは、本明細書では、特定の使用事例に言及することなく、概してDLSを指すために使用される。
【００１４】
ブロックチェーンは、トランザクションが不変であるやり方でトランザクションを記憶するデータ構造である。したがって、ブロックチェーン上に記録されたトランザクションは、確実であり、信頼できる。ブロックチェーンは1つまたは複数のブロックを含む。チェーン中の各ブロックは、チェーン中でその直前にある前のブロックの暗号化ハッシュを含めることによって、前のブロックにリンクされる。各ブロックはまた、タイムスタンプと、それ自体の暗号化ハッシュと、1つまたは複数のトランザクションとを含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシングされ、マークルツリー(Merkle tree)に符号化される。マークルツリーは、ツリーのリーフノードにおけるデータがハッシングされ、ツリーの各ブランチにおけるすべてのハッシュが、ブランチのルートにおいて連結されるデータ構造である。このプロセスは、ツリーを上ってツリー全体のルートまで続き、これは、ツリー中のすべてのデータを表すハッシュを記憶する。ツリーに記憶されたトランザクションのものであると主張するハッシュは、それがツリーの構造に一致するかどうかを決定することによって、迅速に検証され得る。
【００１５】
ブロックチェーンは、トランザクションを記憶するための分散されたまたは少なくとも部分的に分散されたデータ構造であるが、ブロックチェーンネットワークは、トランザクションなどをブロードキャストし、検証し、確認することによって、1つまたは複数のブロックチェーンを管理し、更新し、維持するコンピューティングノードのネットワークである。上記で紹介されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。本明細書の実施形態は、コンソーシアムブロックチェーンネットワークを参照しながら、本明細書でさらに詳細に説明される。しかしながら、本明細書の実施形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現され得ることが企図される。
【００１６】
概して、コンソーシアムブロックチェーンネットワークは、参加エンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスノードと呼ばれることがある、許可されたノードのセットによって制御され、1つまたは複数のコンセンサスノードは、それぞれのエンティティ(たとえば、金融機関、保険会社)によって動作させられる。たとえば、10個のエンティティのコンソーシアム(たとえば、金融機関、保険会社)は、コンソーシアムブロックチェーンネットワークを動作させることができ、エンティティの各々は、コンソーシアムブロックチェーンネットワーク内で少なくとも1つのノードを動作させる。
【００１７】
いくつかの例では、コンソーシアムブロックチェーンネットワーク内で、グローバルブロックチェーンが、すべてのノードにわたって複製されるブロックチェーンとして提供される。すなわち、すべてのコンセンサスノードがグローバルブロックチェーンに関して完全にコンセンサスのとれた状態にある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、コンソーシアムブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。たとえば、コンソーシアムブロックチェーンネットワークは、以下でさらに詳細に説明される実用的ビザンチンフォールトトレランス(PBFT:practical Byzantine fault tolerance)コンセンサスを実装することができる。
【００１８】
図1は、本明細書の実施形態を実行するために使用され得る環境100の一例を示す図である。いくつかの例では、例示的な環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングデバイス106、108と、ネットワーク110とを含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、ワイヤードおよび/またはワイヤレス通信リンクを介してアクセスされ得る。
【００１９】
示された例では、コンピューティングシステム106、108は、各々、コンソーシアムブロックチェーンネットワーク102内のノードとして参加を可能にする任意の適切なコンピューティングシステムを含むことができる。例示的なコンピューティングデバイスは、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティのコンピュータ実装サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティのコンピュータ実装サービスをホストすることができる。図1の例では、コンソーシアムブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、それぞれ、第1のエンティティおよび第2のエンティティのノードを提供し、それらのノードはコンソーシアムブロックチェーンネットワーク102に参加する。
【００２０】
図2は、本明細書の実施形態による概念アーキテクチャ200の一例を示す。概念アーキテクチャ200は、エンティティレイヤ202と、ホストされたサービスレイヤ204と、ブロックチェーンネットワークレイヤ206とを含む。示された例では、エンティティレイヤ202は、3人の参加者、参加者A、参加者B、および参加者Cを含み、各参加者は、それぞれのトランザクション管理システム208を有する。
【００２１】
示された例では、ホストされたサービスレイヤ204は、各トランザクション管理システム210のためのインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS:hypertext transfer protocol secure))を使用してネットワーク(たとえば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例では、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信は、リモートプロシージャコール(RPC:remote procedure call)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンネットワークノードを「ホストする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【００２２】
本明細書で説明されるように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を不変に記録する複数のノード214を含む、ピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実施形態では、ブロックチェーン216は、コンソーシアムブロックチェーンネットワークに参加している2つまたはそれ以上のエンティティ間で実施されるトランザクションに関連付けられた情報を記憶する。
【００２３】
ブロックチェーン(たとえば、図2のブロックチェーン216)は、ブロックのチェーンからなり、各ブロックはデータを記憶する。例示的なデータは、2人またはそれ以上の参加者間のトランザクションを表すトランザクションデータを含む。トランザクションは、本明細書では、非限定的な例として使用されるが、任意の適切なデータがブロックチェーンに記憶され得ることが企図される(たとえば、ドキュメント、画像、ビデオ、オーディオ)。例示的なトランザクションは、限定はしないが、価値のある何か(たとえば、資産、製品、サービス、通貨)の交換を含むことができる。トランザクションデータは、ブロックチェーン内に不変に記憶される。すなわち、トランザクションデータは変更され得ない。
【００２４】
ブロックに記憶する前に、トランザクションデータはハッシングされる。ハッシングは、(ストリングデータとして与えられる)トランザクションデータを、(同じくストリングデータとして与えられる)固定長ハッシュ値に変換するプロセスである。ハッシュ値をアンハッシング(un-hash)してトランザクションデータを取得することは可能でない。ハッシングは、トランザクションデータのわずかな変更でも、まったく異なるハッシュ値を生じることを保証する。さらに、上述のように、ハッシュ値は固定長のものである。すなわち、トランザクションデータのサイズにかかわらず、ハッシュ値の長さは固定である。ハッシングは、ハッシュ値を生成するためのハッシュ関数を通してトランザクションデータを処理することを含む。ハッシュ関数の一例は、限定はしないが、256ビットハッシュ値を出力するセキュアハッシュアルゴリズム(SHA:secure hash algorithm)-256を含む。
【００２５】
複数のトランザクションのトランザクションデータは、ハッシングされ、ブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が与えられ、それら自体ハッシングされて別のハッシュを与える。このプロセスは、ブロックに記憶されるべきすべてのトランザクションについて、単一のハッシュ値が与えられるまで繰り返される。このハッシュ値は、マークルルートハッシュ(Merkle root hash)と呼ばれ、ブロックのヘッダに記憶される。トランザクションのいずれかの変更は、そのハッシュ値の変更を生じ、最終的に、マークルルートハッシュの変更を生じる。
【００２６】
ブロックは、コンセンサスプロトコルを通してブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードは、コンセンサスプロトコルに参加し、ブロックをブロックチェーンに追加させるための作業を実施する。そのようなノードはコンセンサスノードと呼ばれる。上記で紹介されたPBFTは、コンセンサスプロトコルの非限定的な例として使用される。コンセンサスノードは、コンセンサスプロトコルを実行してブロックチェーンにトランザクションを追加し、ブロックチェーンネットワークの全体的状態を更新する。
【００２７】
さらに詳細には、コンセンサスノードは、ブロックヘッダを生成し、ブロック中のトランザクションのすべてをハッシングし、ブロック中のすべてのトランザクションのための単一のハッシュ値が与えられるまで、ペアでハッシュ値を組み合わせてさらなるハッシュ値を生成する(マークルルートハッシュ)。このハッシュはブロックヘッダに追加される。コンセンサスノードはまた、ブロックチェーン中の直近のブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。コンセンサスノードはまた、ブロックヘッダにナンス(nonce)値およびタイムスタンプを追加する。
【００２８】
概して、PBFTは、ビザンチン障害(Byzantine fault)(たとえば、誤動作ノード、悪意のあるノード)を許容する実用的ビザンチン状態機械の複製を提供する。これは、PBFTにおいて、障害が発生すると仮定すること(たとえば、独立したノード故障の存在、および/またはコンセンサスノードによって送られた改ざんされたメッセージを仮定すること)によって達成される。PBFTでは、コンセンサスノードは、プライマリコンセンサスノードとバックアップコンセンサスノードとを含むシーケンスで提供される。プライマリコンセンサスノードは周期的に変更される。ブロックチェーンネットワークの世界的状態に関する合意に達しているブロックチェーンネットワーク内のコンセンサスノードによって、トランザクションがブロックチェーンに追加される。このプロセスでは、コンセンサスノード間でメッセージが送信され、各コンセンサスノードは、指定されたピアノードからメッセージが受信されたことを証明し、送信中にメッセージが変更されなかったことを検証する。
【００２９】
PBFTでは、コンセンサスプロトコルは、複数のフェーズにおいて提供され、すべてのコンセンサスノードは同じ状態で始まる。初めに、クライアントは、サービス動作を呼び出す(たとえば、ブロックチェーンネットワーク内のトランザクションを実行する)ために、プライマリコンセンサスノードに要求を送る。要求の受信に応答して、プライマリコンセンサスノードは、バックアップコンセンサスノードに要求をマルチキャストする。バックアップコンセンサスノードは、要求を実行し、各々、クライアントに返答を送る。クライアントは、しきい値数の返答が受信されるまで待つ。いくつかの例では、クライアントは、f+1個の返答が受信されるのを待ち、ここで、fは、ブロックチェーンネットワーク内で許容され得る障害コンセンサスノードの最大数である。最終結果は、十分な数のコンセンサスノードが、ブロックチェーンに追加されることになる記録のオーダーに関して合意に達し、記録が受け入れられるかまたは拒否されるかのいずれかであることである。
【００３０】
いくつかのブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために、暗号が実装される。たとえば、2つのノードが、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を認識することができないように、トランザクションをプライベートに保つことを希望する場合、それらのノードは、トランザクションデータを暗号化することができる。例示的な暗号は、限定はしないが、対称暗号化と非対称暗号化とを含む。対称暗号化は、(平文から暗号文を生成する)暗号化と(暗号文から平文を生成する)解読の両方について、単一の鍵を使用する暗号化プロセスを指す。対称暗号化では、同じ鍵が複数のノードにとって利用可能であるので、各ノードがトランザクションデータを暗号化/解読することができる。
【００３１】
非対称暗号化は、各々が秘密鍵と公開鍵とを含む鍵ペアを使用し、秘密鍵はそれぞれのノードのみに知られ、公開鍵は、ブロックチェーンネットワーク内のいずれかまたはすべての他のノードに知られる。ノードは、別のノードの公開鍵を使用してデータを暗号化することができ、暗号化されたデータは、その別のノードの秘密鍵を使用して解読され得る。たとえば、再び図2を参照すると、参加者Aは、参加者Bの公開鍵を使用してデータを暗号化し、暗号化されたデータを参加者Bに送ることができる。参加者Bは、その秘密鍵を使用して、暗号化されたデータ(暗号文)を解読し、元のデータ(平文)を抽出することができる。ノードの公開鍵で暗号化されたメッセージは、そのノードの秘密鍵を使用してのみ解読され得る。
【００３２】
非対称暗号化は、デジタル署名を提供するために使用され、デジタル署名は、トランザクションの参加者が、トランザクションの他の参加者、ならびにトランザクションの有効性を確認することを可能にする。たとえば、ノードは、メッセージにデジタル署名することができ、別のノードは、参加者Aのデジタル署名に基づいて、そのメッセージがそのノードによって送られたことを確認することができる。デジタル署名はまた、伝送中にメッセージが改ざんされないことを保証するために使用され得る。たとえば、再び図2を参照すると、参加者Aは、参加者Bにメッセージを送ることになる。参加者Aは、メッセージのハッシュを生成し、次いで、その秘密鍵を使用してハッシュを暗号化して、暗号化されたハッシュとしてデジタル署名を提供する。参加者Aは、メッセージにデジタル署名を付加し、参加者Bにデジタル署名をもつメッセージを送る。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を解読し、ハッシュを抽出する。参加者Bは、メッセージをハッシングして、ハッシュを比較する。ハッシュが同じである場合、参加者Bは、メッセージが、実際に参加者Aからのものであり、改ざんされなかったことを確認することができる。
【００３３】
いくつかの実施形態では、ブロックチェーンネットワークのノード、および/またはブロックチェーンネットワークと通信するノードは、TEEを使用して動作することができる。高レベルにおいて、TEEは、ハードウェアの動作環境(たとえば、オペレーティングシステム(OS)、基本入出力システム(BIOS))から分離された、ハードウェア(1つまたは複数のプロセッサ、メモリ)内の信頼できる環境である。さらに詳細には、TEEは、実行しているコードとメインプロセッサ内にロードされたデータとの機密性および完全性を保証する、プロセッサの別個のセキュアエリアである。プロセッサ内では、TEEはOSと並行して実行する。いわゆる信頼できるアプリケーション(TA:trusted application)の少なくとも一部は、TEE内で実行し、プロセッサおよびメモリへのアクセスを有する。TEEを通して、TAは、メインOSにおいて実行している他のアプリケーションから保護される。さらに、TEEは、TEE内でTAを互いから暗号学的に分離する。
【００３４】
TEEの一例は、Santa Clara、California、United StatesのIntel Corporationによって提供されるソフトウェアガードエクステンションズ(SGX:Software Guard Extensions)を含む。本明細書ではSGXが例として説明されるが、本明細書の実施形態は、任意の適切なTEEを使用して実現され得ることが企図される。
【００３５】
SGXはハードウェアベースのTEEを提供する。SGXでは、信頼できるハードウェアは、中央処理ユニット(CPU)のダイであり、物理メモリの一部分が、選択されたコードおよびデータを保護するために分離される。メモリの分離された部分はエンクレーブ(enclave)と呼ばれる。より詳細には、エンクレーブは、メモリ中のエンクレーブページキャッシュ(EPC:enclave page cache)として提供され、アプリケーションアドレス空間にマッピングされる。メモリ(たとえば、DRAM)は、SGXのための保存されたランダムメモリ(PRM:preserved random memory)を含む。PRMは、最も低いBIOSレベルにおける連続するメモリスペースであり、どんなソフトウェアによってもアクセスされ得ない。各EPCは、アプリケーションデータおよびコードをPRMにロードするためにOSによって割り当てられたメモリセット(たとえば、4KB)である。EPCメタデータ(EPCM)は、それぞれのEPCのためのエントリアドレスであり、各EPCが1つのエンクレーブのみによってシェアされ得ることを保証する。すなわち、単一のエンクレーブは、複数のEPCを使用することができるが、EPCは単一のエンクレーブに専用化される。
【００３６】
TAの実行中、プロセッサは、エンクレーブに記憶されたデータにアクセスするとき、いわゆるエンクレーブモードで動作する。エンクレーブモードにおける動作は、各メモリアクセスに対する追加のハードウェアチェックをエンフォースする。SGXでは、TAは、信頼できる部分と信頼できない部分とにコンパイルされる。信頼できる部分は、たとえば、OS、BIOS、特権的システムコード、仮想マシンマネージャ(VMM:virtual machine manager)、システム管理モード(SMM:system management mode)などによってアクセス不可能である。動作中、TAは、実行し、メモリのPRM内にエンクレーブを作る。エンクレーブ内の信頼できる部分によって実行される信頼できる関数(trusted function)が、信頼できない部分によって呼び出され、エンクレーブ内で実行しているコードは、(暗号化されていない)平文データとしてデータを参照し、データへの外部アクセスは拒否される。信頼できる部分は、呼出しに対して暗号化された応答を与え、TAは実行し続ける。
【００３７】
予想されるコード(たとえば、TAの信頼できる部分)が、SGX提供TEE内でセキュアに実行していることを検証するために、構成証明(attestation)プロセスが実施され得る。概して、構成証明プロセスは、TAが、チャレンジャー(たとえば、ブロックチェーンネットワーク内の別のノード、ブロックチェーンネットワークの鍵管理システム(KMS:key management system))から、構成証明要求を受信することを含む。応答して、TAは、そのエンクレーブが、クォート(quote)とも呼ばれる、リモート構成証明(remote-attestation)を作成することを要求する。リモート構成証明を作成することは、ローカル構成証明(local-attestation)が、エンクレーブから、いわゆるクォーティングエンクレーブ(quoting enclave)に送られることを含み、クォーティングエンクレーブは、ローカル構成証明を検証し、非対称構成証明鍵を使用してローカル構成証明に署名することによって、ローカル構成証明をリモート構成証明に変換する。リモート構成証明(クォート)は、チャレンジャー(たとえば、ブロックチェーンネットワークのKMS)に提供される。
【００３８】
チャレンジャーは、リモート構成証明を検証するために、構成証明検証サービスを使用する。SGXの場合、IntelはIntel Attestation Service(IAS)を提供し、これは、チャレンジャーからリモート構成証明を受信し、リモート構成証明を検証する。より詳細には、IASは、リモート構成証明を処理し、リモート構成証明が検証されたかどうかを指示する報告(たとえば、構成証明検証報告(AVR:attestation verification report))を提供する。検証されない場合、エラーが指示され得る。検証された(予想されるコードがTEEにおいてセキュアに実行している)場合、チャレンジャーは、TAとの対話を開始するかまたは続けることができる。たとえば、検証に応答して、(チャレンジャーとしての)KMSは、(たとえば、楕円曲線ディフィーヘルマン(ECDH:elliptical curve Diffie-Hellman)など、鍵交換プロセスを通して、)TEEを実行しているノードに非対称暗号化鍵(たとえば、公開鍵と秘密鍵とのペア)を発行して、ノードがセキュアに他のノードおよび/またはクライアントと通信することを可能にすることができる。
【００３９】
いくつかのブロックチェーンネットワークでは、いわゆるスマート契約が実行され得る。スマート契約は、様々な関係者に影響を及ぼす契約条件を有する、現実世界の法的契約のデジタル表現として説明され得る。スマート契約は、例示的な文脈では、コンソーシアムブロックチェーンネットワーク内で実装され、記憶され、(必要に応じて)更新され、実行される。スマート契約に関連付けられた契約関係者(たとえば、購入者および販売者)は、コンソーシアムブロックチェーンネットワークにおいてノードとして表される。いくつかの例では、契約関係者は、(たとえば、スマート契約の関係者として)スマート契約に関連付けられたエンティティ(たとえば、企業)を含むことができる。
【００４０】
さらに詳細には、スマート契約は、ブロックチェーン(たとえば、ブロックチェーンネットワーク内のノード)上で実行するコンピュータ実行可能プログラムとして提供される。スマート契約は、あらかじめ定義された規則のセットを含んでおり、その規則の下でそのスマート契約の関係者が互いに対話することに合意する。スマート契約のあらかじめ定義された規則が満たされる場合、スマート契約において定義された合意は自動的にエンフォースされる。スマート契約は、通常、改ざん耐性であり、合意またはトランザクションのネゴシエーションまたは実施を容易にし、検証し、エンフォースする。
【００４１】
図3は、本明細書の実施形態によるシステム300の一例を示す図である。示されているように、システム300は、ブロックチェーンノード304a〜304dを含む、ブロックチェーンネットワーク302を含む。ブロックチェーンノード304a〜304dは、サービスTEE306a〜306dと、鍵管理(KM)TEE308a〜308dとを含む。ノード304a〜304dは、スマート契約サービス論理330へのアクセスを有する。鍵管理センタ310は、ノード304a〜304dに通信可能に結合される。
【００４２】
ノード304a〜304dの各々は、ブロックチェーンネットワーク302に参加し、ブロックチェーンネットワーク302に関連付けられたブロックチェーンの保守に寄与している(図示せず)、ブロックチェーンノードである。上記で説明されたように、ノード304a〜304dは、ブロックチェーンネットワーク302に関連付けられたコンセンサスプロセスに参加することができ、ブロックチェーンへの追加のためにトランザクションを収集してブロックにすることができ、ブロックチェーンネットワーク302のユーザによって要求されたトランザクションを処理することができ、スマート契約において符号化された動作を実行することができ、ブロックチェーンの管理に関係する他のタスクを実施する。いくつかの実施形態では、各ノードは、1つまたは複数のプロセッサとストレージデバイスと他の構成要素とを含む、コンピューティングデバイス(たとえば、サーバ)であり得る。いくつかの場合には、ノード304a〜304dは、互いに、およびブロックチェーンネットワーク302に参加している他のノードに、通信ネットワーク(図示せず)を介して通信する。図3の説明の残りについて、ノード304b〜304dもノード304aの特徴を含むことができるという理解とともに、ノード304aが一例として説明される。
【００４３】
ノード304aはサービスTEE306aを含む。いくつかの実施形態では、サービスTEE306aは、TEE技術(たとえば、インテルSGX)を使用して実装されるセキュアアプリケーション環境である。1つまたは複数のソフトウェアプログラムまたはライブラリが、サービスTEE306aによって実行され得る。本明細書では、サービスTEE306aは、セキュア環境(TEE)、ならびに説明される動作を実施するTEE内で実行するソフトウェアを指す。いくつかの実施形態では、サービスTEE306aは、暗号化されたクライアント要求によって指定されたスマート契約動作を実行し、スマート契約動作に関連付けられた暗号化された結果を出力する。この機能性は、以下で図4に関してより詳細に説明される。
【００４４】
ノード304aは鍵管理TEE(KM TEE)308aをも含む。いくつかの実施形態では、KM TEE308aは、TEE技術(たとえば、インテルSGX)を使用して実装されるセキュアアプリケーション環境である。1つまたは複数のソフトウェアプログラムまたはライブラリが、KM TEE308aによって実行され得る。本明細書では、KM TEE308aは、セキュア環境(TEE)、ならびに説明される動作を実施するTEE内で実行するソフトウェアを指す。いくつかの実施形態では、KM TEE308aは、以下で図4に関してより詳細に説明されるように、鍵管理センタ310から暗号化鍵を取得する。
【００４５】
鍵管理センタ310は、暗号化鍵を生成し、記憶し、維持することができる。鍵管理センタ310はまた、リモート構成証明および鍵展開プロセス320を通して、KM TEE308a〜308dの識別情報を認証し、ノード304a〜304dに暗号化鍵を提供することができる。いくつかの実施形態では、鍵管理は、クライアントに、ノード304a〜304dと対話するための暗号化鍵をさらに提供することができる。この機能性は、以下で図4に関してより詳細に説明される。いくつかの実施形態では、鍵管理センタ310は、通信ネットワーク(図示せず)を介してブロックチェーンネットワーク302の1つまたは複数のノードと通信している、1つまたは複数のサーバまたは他のコンピューティングデバイスであり得る。鍵管理センタ310はまた、暗号化鍵および他のデータを記憶するために、鍵管理センタ310に結合された、または通信ネットワークを介してアクセス可能な、1つまたは複数のストレージデバイスを含むことができる。
【００４６】
いくつかの場合には、鍵管理センタ310は、暗号化鍵展開を実施する前に、KM TEE308a〜308dの識別情報を認証するように動作する。たとえば、KM TEE308aに1つまたは複数の暗号化鍵を提供すること(以下で説明される)より前に、鍵管理センタ310は、KM TEE308aの真正性を検証することができる。この検証は、KM TEE308aによって実行されるソフトウェアが、プロビジョニングされた後に改ざんされていないことを保証する。いくつかの実施形態では、検証は、上記で説明されたものなど、リモート構成証明プロセス320を含むことができる。
【００４７】
KM TEE308a〜308dが、鍵管理センタ310から1つまたは複数の暗号化鍵を取得した後、鍵は、暗号化動作を実施するためのサービスTEE306a〜306dにフォワーディングされ得る。いくつかの場合には、KM TEEとサービスTEEとのペア(たとえば、KM TEE308aとサービスTEE306a)は、単一のノード(たとえば、ノード304a)上で動作するが、それらは、各々、それら自体の独立したTEEを有する。その結果、KM TEE308a〜308dとサービスTEE306a〜306dとの間で通信される情報は、信頼できないエリアを通って送信される。そのような場合、KM TEE308a〜308dは、たとえば、ローカル構成証明プロセスを実施することによって、サービスTEE306a〜306dの識別情報を認証することができる。
【００４８】
ローカル構成証明は、エンクレーブが、その識別情報または真正性を、同じローカルプラットフォーム内の別のエンクレーブに証明することを可能にすることができる。たとえば、KM TEE308aは、サービスTEE306aの真正性を検証するためにチャレンジを送ることができる。チャレンジを受信すると、サービスTEE306aは、サービスTEE306aがノード304a上に存在するという暗号化証明を含む報告を生成するように、ノード304aのハードウェア(たとえば、CPU)に要求することができる。その報告は、KM TEE308aに提供されて、そのエンクレーブ報告が、同じプラットフォーム上でノード304aによって生成されたことを検証することができる。いくつかの場合には、ローカル構成証明は、報告を検証するKM TEE308aおよび報告を生成するエンクレーブハードウェアのみが、ノード304aのハードウェアプラットフォーム中に埋め込まれた対称鍵を知る、対称鍵システムに基づいて実施され得る。
【００４９】
サービスTEE306a〜306dが、ローカル構成証明を通して認証された後、KM TEE308a〜308dは、サービスTEE306a〜306dに1つまたは複数の暗号化鍵を提供することができる。いくつかの場合には、KM TEE308a〜308dは、サービスTEE306a〜306dの認証に応答して暗号化鍵を提供することができるか、またはサービスTEE306a〜306dによる1つまたは複数の要求に応答して鍵を提供することができる。
【００５０】
スマート契約サービス論理330は、1つまたは複数のスマート契約定義を含む。ノード304a〜304dは、(たとえば、図4に示されているように、クライアントの要求時に)スマート契約サービス論理330からの特定の動作を実行する。いくつかの実施形態では、スマート契約サービス論理330におけるスマート契約定義は、ブロックチェーンネットワーク302のノードによって実行される命令を含む。スマート契約サービス論理330は、ブロックチェーンネットワーク302によって維持される1つまたは複数のブロックチェーンに記憶されたスマート契約定義を含むことができる(図示せず)。
【００５１】
図4は、本明細書の実装形態によるシステム400の一例を示す図である。示されているように、システム400は、図3に関して説明された、(サービスTEE306aとKM TEE308aとを含む)ノード304aと、鍵管理センタ310とを含む。システム400は、鍵管理センタ310に通信可能に結合されたクライアント480をも含む。
【００５２】
動作中、システム400は、スマート契約命令をセキュアに実行し、(たとえば、ブロックチェーン中に含めるための)動作の暗号化された結果を作成することができる。上記で説明されたように、鍵管理センタ310は、暗号化鍵を用いて、KM TEE308aの識別情報を信頼する前にそれを認証するために、リモート構成証明を実施することができる。KM TEE308が認証された後、鍵管理センタ310は、ノード304aのKM TEE308aに、アンシール(unseal)秘密鍵402、ルート鍵404および署名秘密鍵406を提供することができる。鍵管理センタ310はまた、シール(seal)公開鍵414および検証公開鍵416をホストする。鍵管理センタ310は、以下で説明されるように、サービスTEE306aに関連付けられた様々なデータの暗号化および解読を実施するために、許可されたクライアントにこれらの鍵を提供する。
【００５３】
示されているように、鍵管理センタ310は、クライアント480にシール公開鍵414を提供する。いくつかの場合には、鍵管理センタ310は、クライアント480を認証し、シール公開鍵414を、クライアント480がそれにアクセスすることを許可されている場合にのみ提供する。鍵管理センタ310は、この決定を行うために、内部または外部パーミッションリソースを調べることができる。シール公開鍵414は、KM TEE308aに提供されたアンシール秘密鍵402に関連付けられる。シール公開鍵414とアンシール秘密鍵402とは鍵ペアを形成し、これは、シール公開鍵414で暗号化されたデータが、アンシール秘密鍵402を使用して解読され得ることを意味する。
【００５４】
クライアント480は、サービスTEE306aにおいて展開されるイーサリアム仮想マシン(VM)460によって実行されることになるスマート契約動作である、要求された契約動作450を識別する。いくつかの場合には、スマート契約動作450は、スマート契約プログラミング言語に符号化された、その言語の命令を実行するように動作可能なVMが実行するための1つまたは複数の命令を含む。スマート契約動作450は、要求契約動作450に関連付けられたスマート契約についての実行状態を含むことができる。スマート契約の実行中に、ブロックチェーンネットワークの複数のノードは、個々にスマート契約の各命令を実行し、命令の完了の後にスマート契約の実行状態を指示する結果を作成する。実行状態は、スマート契約に関連付けられたデータを含むことができる。契約の各実行される命令は、(たとえば、スマート契約における後の命令によって使用されるべき値を記憶するために)データの内容を変更することができる。スマート契約の命令の実行の後、ブロックチェーンネットワークのノードは、命令の実行の後の新しい実行状態に関してコンセンサスに達する。このコンセンサスプロセスは、スマート契約において実行される各命令について実施され、スマート契約の実行経路に関する、および、最終的に、実行の最終結果に関するコンセンサスにつながる。
【００５５】
452において、クライアント480は、ノード304aによって実行されるサービスTEE306aへの送信のために、要求された契約動作450をデジタルエンベロープ454に符号化する(またはシールする)。たとえば、クライアント480は、一時対称鍵408を生成し、その鍵408を使用して、要求された契約動作450を暗号化する。次いで、クライアント480は、シール公開鍵414を使用して一時対称鍵408を暗号化し、暗号化された契約動作450と暗号化された鍵408とを連結してデジタルエンベロープ454を作成する。
【００５６】
クライアント480は、ノード304aにデジタルエンベロープ454を送信し、それはサービスTEE306aに提供される。いくつかの場合には、クライアント480は、要求された契約動作450の処理を要求するために、複数のノード304a〜304dにデジタルエンベロープ454を送ることができる。いくつかの場合には、クライアント480は、特定のノードに固有のシール公開鍵を使用して作られたデジタルエンベロープを送ることができる。クライアント480はまた、同じシール公開鍵414およびアンシール秘密鍵402が、すべてのノード304a〜304dに関連付けられる場合、ノード304a〜304dにデジタルエンベロープ454をブロードキャストすることができる。
【００５７】
サービスTEE306aは、クライアント480からデジタルエンベロープ454を受信し、デジタルエンベロープ454から、要求された契約動作450を復元する。示されているように、サービスTEE306aは、KM TEE308aから取得されたアンシール秘密鍵402を使用して、デジタルエンベロープ454を復号する。いくつかの場合には、サービスTEE306aは、(456において)アンシール秘密鍵402を使用して一時対称鍵408を解読し(アンシールし)、次いで、(458において)一時対称鍵408を使用して、要求された契約動作450を解読する。
【００５８】
次いで、サービスTEE306aは、サービスTEE306aにおいて展開されるVM460を使用して、要求された契約動作450を実行する。いくつかの実施形態では、VM460は、イーサリアムVMまたは他のタイプのVMなど、スマート契約プログラミング言語の命令を実行するように構成されたVMであり得る。いくつかの場合には、VM460は、動作450の実行中に、たとえば、外部サーバ、ブロックチェーン、データベース、または動作450によって指示される他のリソースなど、サービスTEE306aの外部のリソースにアクセスすることができる。いくつかの実施形態では、外部リソースにアクセスすることは制限または拒否され得、その結果、動作の実行の全体が、(スマート契約状態などの)サービスTEE306aに記憶されたデータのみに依存する。このタイプの制限は、動作450の実行を改ざんする可能性をさらに低減することができる。
【００５９】
VM460による動作450の実行は、1つまたは複数の結果を作成することができる。いくつかの場合には、結果は、上記で説明されたように、動作450を実行した後のスマート契約の実行状態を含むことができる。462において、スマート契約動作450の結果は、契約鍵412を使用してサービスTEE306aによって暗号化される。契約鍵412は、(410において)鍵導出関数(KDF:key derivation function)に基づいてルート鍵404から導出される。いくつかの例では、KDFは、HMACベースの抽出および展開鍵導出関数(HKDF:HMAC-based extract-and-expand key derivation function)または擬似ランダム関数(PRF:pseudo-random function)など、反復ハッシュアルゴリズムに基づいて実施され得る。契約鍵は、KM TEE308aによってサービスTEE306aに提供され得る。いくつかの実施形態では、ルート鍵404は、ノード304aに関連付けられた対称暗号化鍵であり得る。ルート鍵404はまた、ルート鍵404から導出され得る1つまたは複数のサブ鍵を含むことができる。契約鍵412はこれらのサブ鍵のうちの1つであり得る。いくつかの場合には、ルート鍵404自体が、462において結果を暗号化するために使用され得る。
【００６０】
結果を暗号化した後、サービスTEE308aは、464において、署名された結果466を作成するために、KM TEE308aによってサービスTEE 306aに提供された署名秘密鍵406を使用して、暗号化された結果に署名する。これは、鍵管理センタ310によって維持された(対応して署名秘密鍵406とペアにされた)検証公開鍵416を使用する、第三者(たとえば、クライアント)による、署名された結果の後の検証を可能にすることができる。いくつかの場合には、署名秘密鍵406によって、暗号化された結果に署名することは、結果を暗号化するために使用された契約鍵412とともに、暗号化された結果を暗号化することを含むことができる。そのような場合、検証公開鍵416を保持する第三者は、最初に契約鍵412を解読し、さらに契約鍵412を使用して結果を解読することができる。
【００６１】
いくつかの場合には、サービスTEE306aは、署名された結果466をブロックチェーンに記憶することができる。上記で説明されたように、検証公開鍵416を保持する第三者は、検査するためにその鍵を使用して結果466を解読することができる。たとえば、クライアント480は、(たとえば、前に説明された認証を条件として)鍵管理センタ310から検証公開鍵416を取り出すことができ、検証公開鍵416を使用して、署名された結果466にアクセスし、それを解読することができる。次いで、クライアント480は、スマート契約における次の動作がサービスTEE306aによって実行されることを要求することができ、要求される次の動作と、(解読された署名された結果466からの)スマート契約の実行状態とを、サービスTEE306aに送られるデジタルエンベロープに含めることができる。
【００６２】
図5は、本明細書の実施形態に従って実行され得るプロセスの一例を示す。502において、ブロックチェーンネットワーク(たとえば、302)に参加しているブロックチェーンノード(たとえば、304a)が、ブロックチェーンノードによってホストされたサービスTEEにおいて1つまたは複数のソフトウェア命令を実行するようにとの要求を受信し、要求は、サービスTEEに関連付けられた公開鍵によって暗号化される。
【００６３】
504において、ブロックチェーンノードは、サービスTEEに関連付けられた第1の秘密鍵を用いて要求を解読し、第1の秘密鍵は公開鍵とペアにされる。
【００６４】
506において、ブロックチェーンノードは、実行結果を作成するために1つまたは複数のソフトウェア命令を実行する。
【００６５】
508において、ブロックチェーンノードは、暗号化された結果を作成するために、サービスTEEに関連付けられたクライアント暗号化鍵を用いて実行結果を暗号化する。
【００６６】
510において、ブロックチェーンノードは、署名された暗号化された結果を作成するために、TEEに関連付けられた第2の秘密鍵を使用して暗号化された結果に署名する。
【００６７】
いくつかの場合には、公開鍵は第1の公開鍵であり、クライアント暗号化鍵は、第2の公開鍵、または鍵導出関数に基づいてルート鍵から導出された対称鍵のうちの1つである。
【００６８】
いくつかの場合には、ブロックチェーンノードは、第1の秘密鍵、第2の秘密鍵のうちの1つまたは複数を記憶する鍵管理TEEをさらにホストし、鍵管理TEEは、鍵管理TEEによって開始されるローカル構成証明を実施することに基づいてサービスTEEの識別情報が認証された後、第1の秘密鍵、第2の秘密鍵、およびルート鍵をサービスTEEに提供する。
【００６９】
いくつかの場合には、第1の秘密鍵、第2の秘密鍵、およびルート鍵は、鍵管理センタによって生成され、鍵管理センタによって開始されるリモート構成証明を実施することに基づいて鍵管理TEEの識別情報が認証された後、鍵管理TEEに提供される。
【００７０】
いくつかの場合には、第1の秘密鍵およびルート鍵は、サービスTEEのリブート動作に応答して、鍵管理TEEによってサービスTEEに提供される。
【００７１】
いくつかの場合には、1つまたは複数のソフトウェア命令は、スマート契約に関連付けられ、ルート鍵は、スマート契約の状態に基づいて、鍵管理TEEに記憶された複数のルート鍵から選択される。
【００７２】
いくつかの場合には、第1の公開鍵は、鍵管理センタによって生成され、要求を暗号化するためにクライアントに提供される。
【００７３】
いくつかの場合には、ブロックチェーンノードによって受信された要求は、1つまたは複数のソフトウェア命令を暗号化するためにクライアント暗号化鍵を使用することをさらに含む。
【００７４】
いくつかの場合には、第1の秘密鍵を用いて要求を解読することは、第1の秘密鍵を用いてクライアント暗号化鍵を解読することと、クライアント暗号化鍵を用いて1つまたは複数のソフトウェア命令を解読することとをさらに含む。
【００７５】
図6は、本明細書の実施形態による装置600のモジュールの例を示す。装置600は、ブロックチェーンネットワーク内で実行するブロックチェーンノードの例示的な実施形態であり得る。装置600は、上記で説明された実施形態に対応することができ、装置600は、以下、すなわち、ブロックチェーンノードによってホストされたサービスTEEにおいて1つまたは複数のソフトウェア命令を実行するようにとの要求を受信する受信モジュール602であって、要求が、サービスTEEに関連付けられた公開鍵によって暗号化された、受信モジュール602と、サービスTEEに関連付けられた第1の秘密鍵を用いて要求を解読する解読モジュール604であって、第1の秘密鍵が公開鍵とペアにされた、解読モジュール604と、実行結果を作成するために1つまたは複数のソフトウェア命令を実行する実行モジュール606と、暗号化された結果を作成するために、サービスTEEに関連付けられたクライアント暗号化鍵を用いて実行結果を暗号化する暗号化モジュール608と、署名された暗号化された結果を作成するために、TEEに関連付けられた第2の秘密鍵を使用して暗号化された結果に署名する署名モジュール610とを含む。
【００７６】
前の実施形態において示されたシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用することによって実装され得るか、あるいはある機能を有する製品を使用することによって実装され得る。典型的な実施形態デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、セルラーフォン、カメラフォン、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであり得る。
【００７７】
装置中の各モジュールの機能および役割の実施形態プロセスについて、前の方法における対応するステップの実施形態プロセスへの参照が行われ得る。簡単のために、詳細はここでは省略される。
【００７８】
装置実施形態は、基本的に方法実施形態に対応するので、関係する部分について、方法実施形態における関係する説明への参照が行われ得る。前に説明された装置実施形態は一例にすぎない。別個の部分として説明されるモジュールは、物理的に別個であることも別個でないこともあり、モジュールとして表示される部分は、物理モジュールであることも物理モジュールでないこともあり、1つの位置にあり得るか、またはいくつかのネットワークモジュール上に分散され得る。モジュールの一部または全部は、本明細書のソリューションの目的を達成するために、実際の需要に基づいて選択され得る。当業者は、創造的な労力なしに本出願の実施形態を理解および実装することができる。
【００７９】
再び図6を参照すると、図6は、ブロックチェーンネットワーク内で実行し、実行本体として機能するブロックチェーンノードの内部機能モジュールおよび構造を示すものとして解釈され得る。実行本体は本質的に電子デバイスであり得、電子デバイスは、以下、すなわち、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能な命令を記憶するように構成されたメモリとを含む。
【００８０】
本明細書で説明される技法は、1つまたは複数の技術的効果を生み出す。たとえば、説明される技法は、スマート契約動作を実行することと、それらの動作の結果に関してコンセンサスに到達することとを担当する、コンソーシアムブロックチェーンネットワーク内のブロックチェーンノードが、攻撃者によって損なわれていないことを、そのネットワークの関係者が検証することを可能にする。この検証は、攻撃者が、ブロックチェーンノードのうちの1つまたは複数を制御し、スマート契約動作またはコンセンサスプロセスの実行を改ざんすることに成功することを妨げるか、あるいはその可能性を低減し、攻撃に対してより耐性があるコンソーシアムブロックチェーンネットワークのよりセキュアな実施形態をもたらすという効果を有する。
【００８１】
主題の説明される実施形態は、1つまたは複数の特徴を、単独でまたは組合せで含むことができる。一実施形態は、ブロックチェーンネットワークに参加しているブロックチェーンノードによって、ブロックチェーンノードによってホストされたサービスTEEにおいて1つまたは複数のソフトウェア命令を実行するようにとの要求を受信するアクションであって、要求が、サービスTEEに関連付けられた公開鍵によって暗号化された、受信するアクションと、サービスTEEにおいてブロックチェーンノードによって、サービスTEEに関連付けられた第1の秘密鍵を用いて要求を解読するアクションであって、第1の秘密鍵が公開鍵とペアにされた、解読するアクションと、要求の解読に応答して、サービスTEEにおいてブロックチェーンノードによって、実行結果を作成するために1つまたは複数のソフトウェア命令を実行するアクションと、サービスTEEにおいてブロックチェーンノードによって、暗号化された結果を作成するために、サービスTEEに関連付けられたクライアント暗号化鍵を用いて実行結果を暗号化するアクションと、TEEにおいてブロックチェーンノードによって、署名された暗号化された結果を作成するために、TEEに関連付けられた第2の秘密鍵を使用して暗号化された結果に署名するアクションとを含む、コンピュータで実行される方法を含む。
【００８２】
上記および他の説明される実施形態は、各々、随意に、以下の特徴のうちの1つまたは複数を含むことができる。
【００８３】
以下の特徴のうちのいずれかと組合せ可能な第1の特徴は、公開鍵が第1の公開鍵であり、クライアント暗号化鍵が、第2の公開鍵、または鍵導出関数に基づいてルート鍵から導出された対称鍵のうちの1つであることを指定する。
【００８４】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第2の特徴は、ブロックチェーンノードが、第1の秘密鍵、第2の秘密鍵のうちの1つまたは複数を記憶する鍵管理TEEをさらにホストし、鍵管理TEEは、鍵管理TEEによって開始されるローカル構成証明を実施することに基づいてサービスTEEの識別情報が認証された後、第1の秘密鍵、第2の秘密鍵、およびルート鍵をサービスTEEに提供することを指定する。
【００８５】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第3の特徴は、第1の秘密鍵、第2の秘密鍵、およびルート鍵は、鍵管理センタによって生成され、鍵管理センタによって開始されるリモート構成証明を実施することに基づいて鍵管理TEEの識別情報が認証された後、鍵管理TEEに提供されることを指定する。
【００８６】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第4の特徴は、第1の秘密鍵およびルート鍵が、サービスTEEのリブート動作に応答して、鍵管理TEEによってサービスTEEに提供されることを指定する。
【００８７】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第5の特徴は、1つまたは複数のソフトウェア命令が、スマート契約に関連付けられ、ルート鍵が、スマート契約の状態に基づいて、鍵管理TEEに記憶された複数のルート鍵から選択されることを指定する。
【００８８】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第6の特徴は、第1の公開鍵が、鍵管理センタによって生成され、要求を暗号化するためにクライアントに提供されることを指定する。
【００８９】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第7の特徴は、ブロックチェーンノードによって受信された要求が、1つまたは複数のソフトウェア命令を暗号化するためにクライアント暗号化鍵を使用することをさらに含むことを指定する。
【００９０】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第8の特徴は、第1の秘密鍵を用いて要求を解読することが、第1の秘密鍵を用いてクライアント暗号化鍵を解読することと、クライアント暗号化鍵を用いて1つまたは複数のソフトウェア命令を解読することとをさらに含むことを指定する。
【００９１】
前のまたは以下の特徴のうちのいずれかと組合せ可能な第9の特徴は、鍵管理センタが、第2の秘密鍵に対応する検証公開鍵を記憶し、署名された暗号化された結果を検証するために検証公開鍵をクライアントに提供することを指定する。
【００９２】
本明細書で説明される主題の実施形態、ならびにアクションおよび動作は、本明細書で開示される構造およびそれらの構造等価物を含む、デジタル電子回路において、有形に具現化されたコンピュータソフトウェアまたはファームウェアにおいて、コンピュータハードウェアにおいて、あるいはそれらのうちの1つまたは複数の組合せにおいて実装され得る。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置が実行するために、またはデータ処理装置の動作を制御するために、コンピュータプログラムキャリア上に符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。たとえば、コンピュータプログラムキャリアは、命令を符号化または記憶した、1つまたは複数のコンピュータ可読記憶媒体を含むことができる。キャリアは、磁気ディスク、光磁気ディスク、または光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、あるいは他のタイプの媒体など、有形非一時的コンピュータ可読媒体であり得る。代替的に、または追加として、キャリアは、人工的に生成された伝搬される信号、たとえば、データ処理装置が実行するための好適な受信機装置への送信のための情報を符号化するために生成される、機械生成の電気信号、光信号、または電磁信号であり得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つまたは複数の組合せであるか、あるいはそれらの一部であり得る。コンピュータ記憶媒体は、伝搬される信号ではない。
【００９３】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれるかまたはそれらとして説明されることもある、コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語、あるいは宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書かれ得、それは、スタンドアロンプログラムとして、あるいはモジュール、構成要素、エンジン、サブルーチン、またはコンピューティング環境において実行するのに好適な他のユニットとしてを含む、任意の形態において展開され得、その環境は、1つまたは複数のロケーション中でデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含み得る。
【００９４】
コンピュータプログラムは、ファイルシステム中のファイルに対応し得るが、それに対応する必要はない。コンピュータプログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトを保持するファイルの一部分に、当該のプログラムに専用の単一のファイルに、あるいは複数の協調ファイル(coordinated file)、たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに記憶され得る。
【００９５】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータのいずれか1つまたは複数のプロセッサを含む。概して、プロセッサは、プロセッサに結合された非一時的コンピュータ可読媒体から、実行のためのコンピュータプログラムの命令、ならびにデータを受信する。
【００９６】
「データ処理装置(data processing apparatus)」という用語は、例として、プログラマブルプロセッサ、コンピュータ、あるいは複数のプロセッサまたはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。データ処理装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作るコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せをなすコードをも含むことができる。
【００９７】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによって動作を実施するために、1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のコンピュータまたはプロセッサによって実施され得る。プロセスおよび論理フローは、専用論理回路、たとえば、FPGA、ASIC、またはGPUによって、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実施され得る。
【００９８】
コンピュータプログラムの実行に好適なコンピュータは、汎用マイクロプロセッサまたは専用マイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理ユニットに基づき得る。概して、中央処理ユニットは、読取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から、命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含むことができる。中央処理ユニットおよびメモリは、専用論理回路によって増補されるか、または専用論理回路に組み込まれ得る。
【００９９】
概して、コンピュータはまた、1つまたは複数の記憶デバイスを含み、あるいは、それらからデータを受信するように、またはそれらにデータを転送するように動作可能に結合される。記憶デバイスは、たとえば、磁気ディスク、光磁気ディスク、または光ディスク、ソリッドステートドライブ、あるいは任意の他のタイプの非一時的コンピュータ可読媒体であり得る。ただし、コンピュータはそのようなデバイスを有する必要はない。したがって、コンピュータは、ローカルおよび/またはリモートである、1つまたは複数のメモリなど、1つまたは複数の記憶デバイスに結合され得る。たとえば、コンピュータは、コンピュータの一体構成要素である1つまたは複数のローカルメモリを含むことができるか、または、コンピュータは、クラウドネットワーク内にある1つまたは複数のリモートメモリに結合され得る。その上、コンピュータは、別のデバイス、ほんのいくつかの例を挙げれば、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、あるいはポータブル記憶デバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ中に埋め込まれ得る。
【０１００】
構成要素は、直接的にまたは1つまたは複数の中間構成要素を介してのいずれかで、電気的にまたは光学的になど、相互的に互いに接続されることによって互い「に結合され(coupled to)」得る。構成要素はまた、構成要素のうちの1つが他のものに統合される場合、互い「に結合され」得る。たとえば、プロセッサに統合される記憶構成要素(たとえば、L2キャッシュ構成要素)が、プロセッサ「に結合され」る。
【０１０１】
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、ユーザへの情報を表示するためのディスプレイデバイス、たとえば、LCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与えることができる入力デバイス、たとえば、キーボード、および、ポインティングデバイス、たとえば、マウス、トラックボールまたはタッチパッドとを有する、コンピュータ上に実装されるか、あるいはそのコンピュータと通信するように構成され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態において受信され得る。さらに、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信することと、そのデバイスからドキュメントを受信することとによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送信することによって、あるいは、ユーザデバイス、たとえば、スマートフォンまたは電子タブレット上で実行しているアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、パーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに、テキストメッセージまたは他の形態のメッセージを送ることと、返信としてユーザから応答メッセージを受信することとによって、ユーザと対話することができる。
【０１０２】
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して「ように構成される(configured to)」という用語を使用する。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  鍵管理TEE、KM TEE
310  鍵管理センタ
320  リモート構成証明および鍵展開プロセス、リモート構成証明プロセス
330  スマート契約サービス論理
400  システム
402  アンシール秘密鍵
404  ルート鍵
406  署名秘密鍵
408  一時対称鍵、暗号化された鍵
410  KDF
412  契約鍵
414  シール公開鍵
416  検証公開鍵
450  要求された契約動作、スマート契約動作
452  シール
454  デジタルエンベロープ
456  アンシール
458  解読
460  イーサリアム仮想マシン、VM
462  暗号化
464  署名
466  署名された結果
480  クライアント
600  装置
602  受信モジュール
604  解読モジュール
606  実行モジュール
608  暗号化モジュール
610  署名モジュール
【図１】
2020528224.tif 000003
【図２】
2020528224.tif 000004
【図３】
2020528224.tif 000005
【図４】
2020528224.tif 000006
【図５】
2020528224.tif 000007
【図６】
2020528224.tif 000008
【国際調査報告】
2020528224.tif 000009
2020528224.tif 000010