(57)【要約】２つのノードが、自律的な特殊化したノードのグループによって信用証明されたものとして、そのようなグループを必要とすること又は中央集権型の証明書マネージャ若しくはオーセンティケータを必要とすることなしに、お互いを認証するための方法及びデバイスが提供される。方法は、第１ノード及び第２ノードが、各自の識別子及びシークレットポイントを必要とする双線形ペアリング操作を使用して、同じセッション鍵を導出することを含んでよい。シークレットポイント及び識別子がグループ秘密鍵を用いてグループから取得されたという条件で、双線形ペアリング操作は、２つのノードの夫々での同じセッション鍵の生成をもたらし、それによって、各自のクレデンシャルを認証し、２つのノード間の信頼できる通信を可能にする。
2020526055.tif 000002
【特許請求の範囲】
【請求項１】
第１ノードが第２ノードとの信頼できる通信を確立するための、コンピュータにより実施される方法であって、前記第２ノードが第２ノード識別子及び第２シークレットポイントを有し、前記第２シークレットポイントが、グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものであり、前記グループ秘密鍵が、クレデンシャルを付与するよう構成されたノードのグループに関連する、前記方法において、
前記グループ秘密鍵に第１ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである第１シークレットポイントを前記ノードのグループから得ることと、
前記第１ノード識別子を前記第２ノードへ送ることと、
前記第２ノード識別子を受け取ることと、
前記第２ノード識別子のマップ・ツー・ポイントハッシュと、前記第１シークレットポイントとによる双線形ペアリング操作を用いて、第１セッション鍵を生成することと、
前記第１セッション鍵が、前記第２ノードによって、前記第２シークレットポイントと、前記第１ノード識別子のマップ・ツー・ポイントハッシュとによる前記双線形ペアリング操作を用いて生成された第２セッション鍵と一致することを確かめることと
を有する方法。
【請求項２】
前記第１セッション鍵を生成するための前記双線形ペアリング操作は、式：
ＫＡ＝ｅ（Ｈ１（ｉｄＢ），ｓＡ）、及び
ＫＡ＝ｅ（ｓＢ，Ｈ１（ｉｄＡ））
のうちの一方を有し、前記第２セッション鍵を生成するための前記双線形ペアリング操作は、前記式のうちの他方を有し、
ｅ（）は、前記双線形ペアリング操作であり、
Ｈ１（）は、前記マップ・ツー・ポイントハッシュであり、
ｉｄＡ及びｉｄＢは、前記第１ノード識別子及び前記第２ノード識別子の夫々１つであり、
ｓＡ及びｓＢは、前記第１シークレットポイント及び前記第２シークレットポイントの夫々１つである、
請求項１に記載の方法。
【請求項３】
前記第１シークレットポイントを得ることは、前記ノードのグループ内の複数のノードの夫々から前記第１シークレットポイントの各々の部分を取得し、該各々の部分を結合して、前記グループ秘密鍵を再構成することなしに前記第１シークレットポイントを形成することを有する、
請求項１又は２に記載の方法。
【請求項４】
前記確かめることは、前記第１セッション鍵により暗号化された課題を前記第１ノードから前記第２ノードへ送り、該課題に対する応答を受け取り、該応答に基づき、前記第２ノードが前記第２セッション鍵を用いて前記課題を有効に暗号解読したことを決定することを有する、
請求項１乃至３のうちいずれか一項に記載の方法。
【請求項５】
前記送ることは、第１ノンスを送ることを更に含み、
前記受け取ることは、第２ノンスと、計算されたＣ０値とを受け取ることを更に含み、
前記Ｃ０値は、前記第２セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する、
請求項１乃至３のうちいずれか一項に記載の方法。
【請求項６】
前記連結は、前記第１ノード識別子及び前記第２ノード識別子を更に含む、
請求項５に記載の方法。
【請求項７】
前記生成することは、前記第１セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する計算されたＣ１値を生成することを含み、
前記確かめることは、前記計算されたＣ０値が前記計算されたＣ１値と一致することを確かめることを有する、
請求項５又は６に記載の方法。
【請求項８】
前記第２シークレットポイントは、前記グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである、
請求項１乃至７のうちいずれか一項に記載の方法。
【請求項９】
前記第１シークレットポイント及び前記第２シークレットポイントは、夫々が、前記ノードのグループによって、秘密分散を用いて夫々前記第１ノード及び前記第２ノードへ供給される、
請求項１乃至８のうちいずれか一項に記載の方法。
【請求項１０】
プロセッサと、
メモリと、
ネットワークインターフェイスと、
第２ノードとの信頼できる通信を確立するためのプロセッサ実行可能命令を含み、前記第２ノードが第２ノード識別子及び第２シークレットポイントを有し、前記第２シークレットポイントが、グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものであり、前記グループ秘密鍵が、クレデンシャルを付与するよう構成されたノードのグループに関連する、ブロックチェーンアプリケーションと
を有する第１ノードであって、
実行されるときに、前記プロセッサ実行可能命令は、当該第１ノードに、
前記グループ秘密鍵に第１ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである第１シークレットポイントを前記ノードのグループから得ることと、
前記第１ノード識別子を前記第２ノードへ送ることと、
前記第２ノード識別子を受け取ることと、
前記第２ノード識別子のマップ・ツー・ポイントハッシュと、前記第１シークレットポイントとによる双線形ペアリング操作を用いて、第１セッション鍵を生成することと、
前記第１セッション鍵が、前記第２ノードによって、前記第２シークレットポイントと、前記第１ノード識別子のマップ・ツー・ポイントハッシュとによる前記双線形ペアリング操作を用いて生成された第２セッション鍵と一致することを確かめることと
を実行させる、第１ノード。
【請求項１１】
前記第１セッション鍵を生成するための前記双線形ペアリング操作は、式：
ＫＡ＝ｅ（Ｈ１（ｉｄＢ），ｓＡ）、及び
ＫＡ＝ｅ（ｓＢ，Ｈ１（ｉｄＡ））
のうちの一方を有し、前記第２セッション鍵を生成するための前記双線形ペアリング操作は、前記式のうちの他方を有し、
ｅ（）は、前記双線形ペアリング操作であり、
Ｈ１（）は、前記マップ・ツー・ポイントハッシュであり、
ｉｄＡ及びｉｄＢは、前記第１ノード識別子及び前記第２ノード識別子の夫々１つであり、
ｓＡ及びｓＢは、前記第１シークレットポイント及び前記第２シークレットポイントの夫々１つである、
請求項１０に記載の第１ノード。
【請求項１２】
前記プロセッサ実行可能命令は、実行されるときに、当該第１ノードに、
前記ノードのグループ内の複数のノードの夫々から前記第１シークレットポイントの各々の部分を取得し、該各々の部分を結合して、前記グループ秘密鍵を再構成することなしに前記第１シークレットポイントを形成することによって、前記第１シークレットポイントを得ることを実行させる、
請求項１０又は１１に記載の第１ノード。
【請求項１３】
前記プロセッサ実行可能命令は、実行されるときに、当該第１ノードに、
前記第１セッション鍵により暗号化された課題を前記第１ノードから前記第２ノードへ送り、該課題に対する応答を受け取り、該応答に基づき、前記第２ノードが前記第２セッション鍵を用いて前記課題を有効に暗号解読したことを決定することによって、前記確かめることを実行させる、
請求項１０乃至１２のうちいずれか一項に記載の第１ノード。
【請求項１４】
前記プロセッサ実行可能命令は、実行されるときに、当該第１ノードに、
第１ノンスを更に送ることによって前記送ることを実行させるとともに、第２ノンスと、計算されたＣ０値とを更に受け取ることによって前記受け取ることを実行させ、
前記Ｃ０値は、前記第２セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する、
請求項１０乃至１２のうちいずれか一項に記載の第１ノード。
【請求項１５】
前記連結は、前記第１ノード識別子及び前記第２ノード識別子を更に含む、
請求項１４に記載の第１ノード。
【請求項１６】
前記プロセッサ実行可能命令は、実行されるときに、当該第１ノードに、
前記第１セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する計算されたＣ１値を生成することによって前記生成することを実行させるとともに、前記計算されたＣ０値が前記計算されたＣ１値と一致することを確かめることによって前記確かめることを実行させる、
請求項１４又は１５に記載の第１ノード。
【請求項１７】
前記第２シークレットポイントは、前記グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである、
請求項１０乃至１６のうちいずれか一項に記載の第１ノード。
【請求項１８】
前記第１シークレットポイント及び前記第２シークレットポイントは、夫々が、前記ノードのグループによって、秘密分散を用いて夫々前記第１ノード及び前記第２ノードへ供給される、
請求項１０乃至１７のうちいずれか一項に記載の第１ノード。
【請求項１９】
１つ以上のプロセッサによって実行されるときに、該１つ以上のプロセッサに、請求項１乃至９のうちいずれか一項に記載の方法の動作を実行させるプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ブロックチェーントランザクションに、より具体的には、ノード間に信頼できるピア・ツー・ピア通信を確立する方法及びシステムに関する。
【背景技術】
【０００２】
本明細書中で、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳（distributed  ledgers）を含むよう語「ブロックチェーン」を使用する。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可（permissioned）及び無許可（un-permissioned）台帳、共有台帳、並びにこれらの変形を含むが限られない。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。
【０００３】
ブロックチェーンは、合意に基づく電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装される。各トランザクション（Ｔｘ）は、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【０００４】
新しいトランザクションを受け取るネットワークノードは、直ちに、そのトランザクションをネットワーク内の他のノードへ押し出そうと試みる。新しいトランザクションを他のノードへ送る前に、それは“妥当性確認”（validated）される。つまり、それは、トランザクションが適用可能なプロトコルに従って適切なトランザクションのための基本要件を満たすことを確かにするために、基準の組に対してチェックされる。
【０００５】
トランザクションがブロックチェーンに書き込まれるために、それはノード（“マイナー”（miner）又は“マイニングノード”（mining  node））によってブロックに組み込まれる。マイナーは、トランザクションを収集し、それらをブロックへと形成するよう設計される。マイナーは、次いで、ブロックに対して“プルーフ・オブ・ワーク”（proof  of  work）を完了しようと試みる。複数のマイナーは、ブロックチェーンネットワークにわたって競争して、トランザクションのブロックをアセンブルしそのブロックについての関連するプルーフ・オブ・ワークを完了する最初のものであろうとする。成功したマイナーは、その承認されたブロックをブロックチェーンに加え、ブロックは、ネットワークを通じて伝播される。それにより、ブロックチェーンのコピーを保持する他のノードは、自身の記録を更新することができる。ブロックを受け取るそれらのノードはまた、そのブロックを“妥当性確認”し、それを確かにするその中の全てのトランザクションは、プロトコルの方式要件に従う。
【０００６】
非中央集権型のピア・ツー・ピアシステムにおける課題の１つは、ノードが、信頼できる原理で、ネットワーク内の他のノードと通信することができることを確かにすることである。いくつかの実施のネットワークアーキテクチャが進化するにつれて、いくつかのノードは、より特殊化されたタスクを引き受ける場合があり、他のノードは、特定のデータのソースとして、又は特定の機能を行うノードとして、それらの特殊化したノードに依存することがある。ノードが情報のために又は正当なソースとして他のノードに依存しようとしている場合に、ノードは、そのノードとの通信のための信頼できる関係を確立することができなければならない。ノードが異なる役割を有している場合において、ノードの役割を決定及び検証するためのメカニズムを有することが有利となる。更に、ノードが正当でないか又は悪意があると分かる場合には、他のノードが、そのようなノードからの将来の通信を無視するためにそのことを思い出すことが可能でなければならない。ピア・ツー・ピアシステムでは、課題は、中央当局（central  authority）を与えることによってシステムのピア・ツー・ピア性質を妥協することなしに、それらの問題を解決することである。
【０００７】
そのような解決法が、現在考案されている。
【発明の概要】
【０００８】
従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
【０００９】
本願は、自律的な特殊化したノードのグループから要求元ノードへのクレデンシャルの安全な分配を管理する方法及びデバイスを記載及び開示し得る。クレデンシャルの安全な分配は、どのノードも再構成又は処理しないグループ秘密鍵及び秘密割り当て（secret  share）を使用してよい。クレデンシャルは、要求元ノードの識別子と、複数の特殊化したノードの夫々によって供給されるシークレットポイント（secrete  point）の部分から要求元ノードが組み立てるシークレットポイントとを含む。シークレットポイントは、グループ秘密鍵と、要求元ノードの識別子のマップ・ツー・ポイント（map-to-point）ハッシュとに基づく。
【００１０】
本願は更に、２つのノードが、自律的な特殊化したノードのグループによって信用証明されたものとして、そのようなグループを必要とすること又は中央集権型の証明書マネージャ（certificate  manager）若しくはオーセンティケータ（authenticator）を必要とすることなしに、お互いを認証するための方法及びデバイスを記載及び開示し得る。方法は、第１ノード及び第２ノードが、各自の識別子及びシークレットポイントを必要とする双線形ペアリング操作（bilinear  pairing  operations）を使用して、同じセッション鍵を導出することを含んでよい。シークレットポイント及び識別子がグループ秘密鍵を用いてグループから取得されたという条件で、双線形ペアリング操作は、２つのノードの夫々での同じセッション鍵の生成をもたらし、それによって、各自のクレデンシャルを認証し、２つのノード間の信頼できる通信を可能にする。
【００１１】
追加の又は代替の態様において、本願は、ノードが特殊化したノードのグループからクレデンシャルを取得するための、コンピュータにより実施される方法であって、前記特殊化したノードの夫々がグループ秘密鍵の秘密鍵割り当て（share）を有している、前記方法について記載する。方法は、識別子を有するノードから複数の特殊化したノードへクレデンシャルの要求を送ることと、前記複数の特殊化したノードの中の各ノードから、そのノードによって、前記識別子とそのノードの秘密鍵割り当てから生成されたシークレットポイントの部分を受け取ることと、前記シークレットポイントの前記受け取られた部分を結合することによって前記シークレットポイントを生成することとを含んでよく、前記シークレットポイントは、グループ秘密鍵に前記識別子のマップ・ツー・ポイントハッシュを掛けたものであり、前記クレデンシャルは、前記識別子及び前記シークレットポイントである。ノードも、特殊化したノードも、グループ秘密鍵の完全なコピーを取得する必要がない。
【００１２】
いくつかの実施において、前記要求を送ることは、前記複数の特殊化したノードの夫々へ別個の要求を送ることを含む。前記識別子は、前記ノードを識別する識別子ストリングと、前記特殊化したノードのグループの役割を識別する役割ストリングとを含んでよい。いくつかの場合に、前記識別子は、前記クレデンシャルの満了時間を更に含み、いくつかの更なる場合には、前記要求を送ることは、前記識別子ストリングを送ることを含み、前記受け取ることは、前記識別子を受け取ることを含む。
【００１３】
いくつかの実施において、前記シークレットポイントを生成することは、前記シークレットポイントの前記受け取られた部分を結合することを伴う。前記結合することは、いくつかの実施例で、加算することを含む。
【００１４】
いくつかの実施において、前記シークレットポイントは、秘密割り当てを用いて生成され、前記グループ秘密鍵に基づく。そのような場合のいくつかで、秘密割り当ては、前記グループ秘密鍵を再構成することなしに、前記複数の特殊化したノードの秘密鍵割り当て及びラグランジュ補間を使用する。
【００１５】
追加の又は代替の態様において、本願は、第１ノードが第２ノードとの信頼できる通信を確立するための、コンピュータにより実施される方法であって、前記第２ノードが第２ノード識別子及び第２シークレットポイントを有し、前記第２シークレットポイントが、グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものであり、前記グループ秘密鍵が、クレデンシャルを付与するよう構成されたノードのグループに関連する、前記方法について記載し得る。方法は、前記グループ秘密鍵に第１ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである第１シークレットポイントを前記ノードのグループから得ることと、前記第１ノード識別子を前記第２ノードへ送ることと、前記第２ノード識別子を受け取ることと、前記第２ノード識別子のマップ・ツー・ポイントハッシュと、前記第１シークレットポイントとによる双線形ペアリング操作を用いて、第１セッション鍵を生成することと、前記第１セッション鍵が、前記第２ノードによって、前記第２シークレットポイントと、前記第１ノード識別子のマップ・ツー・ポイントハッシュとによる前記双線形ペアリング操作を用いて生成された第２セッション鍵と一致することを確かめることとを含んでよい。
【００１６】
いくつかの実施において、前記第１セッション鍵を生成するための前記双線形ペアリング操作は、式：
ＫＡ＝ｅ（Ｈ１（ｉｄＢ），ｓＡ）、及び
ＫＡ＝ｅ（ｓＢ，Ｈ１（ｉｄＡ））
のうちの一方を特徴としてよく、前記第２セッション鍵を生成するための前記双線形ペアリング操作は、前記式のうちの他方を特徴とし、
ｅ（）は、前記双線形ペアリング操作であり、
Ｈ１（）は、前記マップ・ツー・ポイントハッシュであり、
ｉｄＡ及びｉｄＢは、前記第１ノード識別子及び前記第２ノード識別子の夫々１つであり、
ｓＡ及びｓＢは、前記第１シークレットポイント及び前記第２シークレットポイントの夫々１つである。
【００１７】
いくつかの実施において、前記第１シークレットポイントを得ることは、前記ノードのグループ内の複数のノードの夫々から前記第１シークレットポイントの各々の部分を取得し、該各々の部分を結合して、前記グループ秘密鍵を再構成することなしに前記第１シークレットポイントを形成することを含む。
【００１８】
いくつかの実施において、前記確かめることは、前記第１セッション鍵により暗号化された課題を前記第１ノードから前記第２ノードへ送り、該課題に対する応答を受け取り、該応答に基づき、前記第２ノードが前記第２セッション鍵を用いて前記課題を有効に暗号解読したことを決定することを含む。
【００１９】
いくつかの実施において、前記送ることは、第１ノンスを送ることを更に含み、前記受け取ることは、第２ノンスと、計算されたＣ０値とを受け取ることを更に含み、前記Ｃ０値は、前記第２セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する。そのような場合のいくつかにおいて、前記連結は、前記第１ノード識別子及び前記第２ノード識別子を更に含む。そのような場合のいくつかにおいて、前記生成することは、前記第１セッション鍵、前記第１ノンス、及び前記第２ノンスの連結のハッシュを有する計算されたＣ１値を生成することを含み、前記確かめることは、前記計算されたＣ０値が前記計算されたＣ１値と一致することを確かめることを有する。
【００２０】
いくつかの実施において、前記第２シークレットポイントは、前記グループ秘密鍵に前記第２ノード識別子のマップ・ツー・ポイントハッシュを掛けたものである。
【００２１】
いくつかの実施において、前記第１シークレットポイント及び前記第２シークレットポイントは、夫々が、前記ノードのグループによって、秘密分散を用いて夫々前記第１ノード及び前記第２ノードへ供給される。
【００２２】
追加の又は代替の態様において、本願は、１つ以上のプロセッサと、メモリと、ネットワークインターフェイスと、プロセッサ実行可能命令を含むアプリケーションとを含むノードであって、前記プロセッサ実行可能命令は、実行されるときに、当該ノードに、本明細書で記載される方法のうちの１つ以上の動作を実行させる、前記ノードについて記載し得る。
【００２３】
追加の又は代替の態様において、本願は、１つ以上のプロセッサによって実行されるときに、該１つ以上のプロセッサに、本明細書で記載される方法のうちの１つ以上の動作を実行させるプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体について記載し得る。
【００２４】
本発明のそれら及び他の態様は、本明細書で記載される実施形態から明らかとなり、その実施形態を参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【００２５】
【図１】ブロックチェーンノードのネットワークの例を表す。
【図２】特殊化したノードを含むブロックチェーンネットワークの例を表す。
【図３】特殊化したノードがオーバーレイネットワークを形成するブロックチェーンネットワークブロックの例を示す。
【図４】特殊化したブロックチェーンノードのネットワークがマイニングノードと相互作用することを図式的に表す。
【図５】ブロックチェーンノードが特殊化したブロックチェーンノードのグループ又はネットワークにクレデンシャルを要求することを図式的に示す。
【図６】ブロックチェーンノードが特殊化したブロックチェーンノードのグループから部分的なクレデンシャルを取得することの実施例を図式的に示す。
【図７】ブロックチェーンノードのグループからクレデンシャルを取得するプロセスの一例をフローチャート形式で示す。
【図８】２つのブロックチェーンノードが特殊化したブロックチェーンノードのグループから取得されたお互いのクレデンシャルを認証するプロセスの例を表す図である。
【図９】２つのブロックチェーンノードが特殊化したブロックチェーンノードのグループから取得されたお互いのクレデンシャルを認証するプロセスの他の例を表す図である。
【図１０】例となるブロックチェーンノードの略ブロック図である。
【発明を実施するための形態】
【００２６】
本願において、語「及び／又は」（and/or）は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
【００２７】
本願において、「〜又は〜の少なくとも１つ」（at  least  one  of  …  or  …）との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素のうちの任意の１つ以上をカバーするよう意図される。
【００２８】
以下で記載される例は、ブロックチェーンネットワークとの関連で実施を参照するが、本願は、必ずしも、ブロックチェーンノードや、ブロックチェーンネットワークにおける実施に限られないことが理解されるだろう。
【００２９】
最初に図１を参照する。図１は、ブロックチェーンに関連するネットワークの例をブロック図形式で表す。ネットワークは、本明細書中でブロックチェーンネットワーク１００と呼ばれ得る。ブロックチェーンネットワーク１００は、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制ネットワークである。ブロックチェーンネットワーク１００が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク１００に参加し得る。そのような分散した電子デバイスは、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【００３０】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【００３１】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実装され、ノード１０２の一部は、地理的に散開した位置に配置されてよい。
【００３２】
ノード１０２は、夫々がチェーン内の前のブロックのハッシュを含むブロックにグループ化されたブロックチェーン上の全てのトランザクションの大域的な台帳（global  ledger）を保持する。大域的な台帳は分散台帳（distributed  ledger）であり、各ノード１０２は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード１０２によるトランザクションは、大域的な台帳の妥当性が保たれるように、他のノード１０２によって検証される。ビットコインプロトコルを使用するもののような、ブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解されるだろう。
【００３３】
各トランザクションは、通常は、１つ以上の入力及び１つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであることができる。その値は、次いで、未使用トランザクション出力としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
【００３４】
ノード１０２は、それらの機能性に応じて、タイプ又はカテゴリが様々であることができる。ノード１０２に関連した４つの基本機能、すなわち、ウォレット（wallet）、マイニング（mining）、完全ブロックチェーンメンテナンス（full  blockchain  maintenance）、及びネットワークルーティング（network  routing）が存在することが示唆されてきた。それらの機能のバリエーションが存在し得る。ノード１０２は、それらの機能のうちの１よりも多くを有し得る。例えば、“フルノード”（full  node）は４つ全ての機能を提供する。例えば、デジタルウォレットで実装され得るようなライトウェイトノード（lightweight  node）は、ウォレット機能及びネットワークルーティング機能のみを特色とし得る。完全ブロックチェーンを保持することよりむしろ、デジタルウォレットは、ブロックをクエリするときにインデックスとなるブロックヘッダの経過を追ってよい。
【００３５】
上述されたように、マイニングノード（“マイナー”）は、ブロックチェーンにおいて次のブロックを作る競争に参加する。ブロックをアセンブルするよう、マイナーは、未承認のトランザクションのプール（“メモリプール”（mempool））からトランザクションの組としてブロックを構築する。マイナーは次いで、自身がアセンブルしたブロックに対してプルーフ・オブ・ワークを完了しようと試みる。マイナーが、いずれかの他のマイナーがブロックを生成しそのプルーフ・オブ・ワークを完了することに成功したとの通知を受ける前に、何とかプルーフ・オブ・ワークを完了する場合には、次いで、マイナーは、ブロックをネットワーク上でピアノードへ送ることによってそのブロックを伝播する。それらのノードは、ブロックを妥当性確認し、次いで、それを更に、ネットワーク上で他のノードへ送る。マイナーが、自身のプルーフ・オブ・ワークを終了する前に、他のブロックが完成されたとの通知を受ける場合には、次いで、マイナーは、その活動を放棄し、次のブロックを構築しようと試みることを開始する。ブロックの迅速な伝播は、マイナー及び妥当性確認するノードのために無駄な労力を回避するのを助ける。
【００３６】
ビットコインネットワークのようなブロックチェーンの現在の実施では、ブロックを受け取る各ノードは、ブロックを他のノードへ送る前に、最初にブロックを妥当性確認する。ブロックを妥当性確認するのにかかる時間は、ネットワークを通るブロックの伝播を遅くする。既存のプロトコルの進化を含むブロックチェーンのいくつかの実施は、ネットワーク内の各ノードよりむしろノードの一部のみによるブロック妥当性確認を提供し得る点に留意されたい。しかし、ほとんどのノードでのブロック妥当性確認は、妥当でないブロックがネットワーク内を伝播することを防ぐための任意のブロックチェーン実施の特徴であることが依然としてあり得る。
【００３７】
ブロックを妥当性確認することは、適用可能なブロックチェーンプロトコルによってセットされた所定の基準をブロックが満足することを確かめることを含む。ビットコインプロトコルに適用可能な基準の例は、ビットコインコアクライアント関数CheckBlock及びCheckBlockHeaderにおいて定義される。ブロック自体が所定の基準に従うことを確かめることに加えて、ブロック内の各トランザクションが、トランザクションレベルの基準に従うことを評価されてもよい。一例として、ビットコインプロトコルに適用可能なトランザクションレベルの基準は、AcceptToMemoryPool、CheckTransaction及びCheckInputsで詳細に見られ得る。
【００３８】
一般に、トランザクションレベルの妥当性確認基準は、適用可能なブロックチェーンプロトコルの下でトランザクションが妥当と見なされるべきである特性を規定したものである。同様に、ブロックレベルの妥当性確認基準は、適用可能なブロックチェーンプロトコルの下でブロックが妥当と見なされるべきである特性を規定したものである。
【００３９】
ブロックチェーンのいくつかの進化は、更に特殊化したノードを提供し得る。一例として、大量の高速アクセスメモリ及び大量のネットワーク通信資源を備えたストレージノードとして構造化されたノードがある。ストレージノードは、未承認のトランザクションを格納する分散トランザクションデータベース（“メモリプール”）を実装し得る。いくつかの実施において、ストレージノードは、未使用トランザクション出力についての分散ＵＴＸＯデータベースを実装し得る。それらの分散データベースは、いくつかの場合に分散ハッシュテーブルによって実装されてよい。他の例として、いくつかのノードは、トランザクションの迅速な妥当性確認及び伝播に焦点を当てるよう設計されたバリデータ（validator）ノードとして構造化されてもよい。バリデータノード及びストレージノードは、分散された大容量記憶のために且つトランザクションを迅速に妥当性確認し伝播するために設計された高速トランザクションマーチャントネットワークをブロックチェーンネットワーク１００内で形成することによって、大量の支払い処理に関連したトランザクション量の増大を円滑にすることができる。
【００４０】
支払い処理で使用されるトランザクションの数が大幅に増大すると、各メモリプールに格納するトランザクションの量が増大する。５００バイトのトランザクション（ＴＸ）の平均サイズ及び〜１０４ＴＸ／ｓのトランザクションレートを仮定すれば、メモリプールは、最大４００ＧＢまでの毎日の着信データを受信する可能性がある。このデータの全てが、未承認トランザクションのメモリプールに様々な時間保存される必要がある。従って、いくつかの実施において、ノードのネットワークは、各ノードで完全なメモリプールを保持するではなく、未承認トランザクションのプールを保持するために、分散ハッシュテーブル（ＤＨＴ，Distributed  Hash  Table）を用いて実装される共有メモリプールを使用してよい。そのような実施において、マイニングノード及び／又はその他タイプのノードは、未承認トランザクションの非常に大きいプールを保持及び更新する重荷を下ろすために、必ずしもローカルで完全なメモリプールを保持しなくてもよい。代わりに、マイニングノード及び／又は他のタイプの特殊化したノードは、メモリプールのメンテナンスを管理するようストレージ及び／又はバリデータノードのネットワークに依存し得る。以下のいくつかの例において、「特殊化したノード」（specialized  node）との語は、バリデータノード、ストレージノードなどのような、ブロックチェーンネットワークにおいて特定の役割を有しているノードを指すために使用されてよい。
【００４１】
これより図２を参照すると、図２は、ノードのブロックチェーンネットワーク２００の一実施例を示す。ブロックチェーンネットワーク２００は、複数の特殊化したノード２０２と、複数のマイニングノード２０４とを含む。特殊化したノード２０２は、この例では、物理的及び論理的にネットワーク２００にわたって分布している。ブロックチェーンネットワーク２００は、フルノード、簡易支払い検証（ＳＰＶ，Simplified  Payment  Verification）ノード（例えば、ウォレット）、及び焦点を絞られた役割を有している他の特殊化したノードを含む多数の他のタイプのノードを含んでよい。
【００４２】
図３には、ブロックチェーンネットワーク３００の他の実施例が表されている。図３は、特殊化したノード２０２がブロックチェーンネットワーク３００内に（論理）オーバーレイネットワーク３０２を形成することを示す。オーバーレイネットワーク３０２は、共有されているメモリプールに対する迅速なアクセス及び検索を確かにするために、オーバーレイネットワーク３０２内の特殊化したノード２０２間の高速な通信を確かにするよう構成されてよい。
【００４３】
この例における特殊化したノード２０２は、ブロックチェーンネットワーク２００、３００にわたって大量の支払い処理を促進するための構造の部分として、高速なトランザクション妥当性確認及び伝播を助けるよう実装されてよい。これに関連して、特殊化したノード２０２は、トランザクションの妥当性確認及び伝播に焦点を当てるバリデータノードであってよく、マイニングノード２０４は、ブロックマイニングに焦点を当て、メモリプールの記憶又はトランザクションの妥当性確認の必要性を免れる。この例で、特殊化したノード２０２は、それらがそのＤＨＴに基づく記憶に関与する点で直接にメモリプールへのアクセスを有することができ、あるいは、１つ以上のストレージノードを経由してメモリプールへのアクセスを有してもよい。
【００４４】
高速なトランザクション処理を後押しするためのブロックチェーンネットワーク２００、３００及び個々のノードの役割のこのような再構成は、ブロックチェーンの成長及び様々なノードの悪意のない関与を確かにすることにおいて課題を与える可能性がある。１つ以上の中央当局による制御を回避することによって、ブロックチェーンネットワーク２００、３００の非中央集権的な性質を保つことが大いに重要である。ネットワーク２００、２００が適切に機能するために、特殊化したノード２０２及び他の特殊化したノードは、各ノードが自身の機能又は役割を確かに実行することと、他のノードがそれらの機能又は役割を確かに実行すると信頼できることとを確かにするように、相互作用すべきである。この目的を達成するために、特殊化したノード２０２とマイニングノード２０４との間の相互作用は、ブロックの高速なマイニング及び伝播を追求することにおいて協調を促す複数のトランザクションを使用してよい。
【００４５】
これより図４を参照すると、図４は、複数のマイニングノード４０２（個別的に４０２ａ、４０２ｂ、４０２ｃと示される。）と、複数の特殊化したノード２０２を含むオーバーレイネットワーク３０２とを図式的に示す。この例で、特殊化したノード２０２は、特殊化したノード２０２の間で分散して未承認トランザクションの大規模データベースを保持するために、例えば、ＤＨＴを使用する共有メモリプールとして、メモリプールを実装する。なお、これは、１つの実施例であって、いくつかの他の実施では、特殊化したノード２０２の夫々がメモリプールの完全なコピーを保持してもよい。
【００４６】
マイニングノード２０４は、参照番号４０２ｂ及び４０２ｃによって示されるもののような個別的な単独マイナーを含んでよく、参照番号４０２ａによって示されるもののような、複数のマイナーを含むマイニングプールを含んでもよい。
【００４７】
この例におけるマイニングノード４０２は、メモリプールの完全なコピーを有さず、新しいブロックをマイニングするために必要な素材をそれらに提供する特殊化したノード２０２に依存する。特に、特殊化したノード２０２のうちの１つは、その特殊化したノード２０２がメモリプールにおいてアクセスを有している未承認トランザクションの組を用いて、マイニングノード４０２を、新しいブロックをマイニングすることに関与するよう誘うことができる。マイニングノード４０２は、新しい未承認トランザクションの組を受け取ることによって、マイニング活動に参加することに同意することを選択することができる。各マイニングノード４０２からデポジットを受け取ることと引き換えに、特殊化したノード２０２は、それらの夫々に、トランザクションの組（又はトランザクションの組のハッシュ）を供給する。参加するマイニングノード４０２のうちの１つが、トランザクションの組から新しいブロックを作ることに成功する場合に、次いで、そのマイニングノード４０２は、ブロックをマイニングするための通常の手数料に加えて、自身のデポジットの払い戻しを特殊化したノード２０２から受け取る。残りの不成功のマイニングノード４０２は、特殊化したノード２０２への自身のデポジットを没収される。参加するマイニングノード４０２のどれも次のブロックを作ることに成功しない場合には、次いで、特殊化したノード２０２は、１つには、トランザクションを妥当性確認し、妥当性確認されたトランザクションの組をマイニングノードへ供給することにおける自身の労力に対する補償として、特殊化したノード２０２によって徴収される妥当性確認手数料を差し引いて、それらのマイニングノード４０２のデポジットを返金する。
【００４８】
なお、マイニングノード４０２は、この例では、特殊化したノード２０２が特殊化したノードのプールの正当なメンバーであることを認証することが可能でありたいと望む。同様に、特殊化したノード２０２自体の間でも、それらが、特殊化したノード２０２のうちの１つの身元と、共同作業に参加するためのそのノードの権限とを認証する必要があり得る。多くのネットワークアーキテクチャで、この機能は、中央で証明書を管理し、参加ノードを認証する認証局（certificate  authority）などのような中央認証サービスを課すことによって、実現される。しかし、そのようなアーキテクチャは、中央制御又は当局が回避されるべきである分散ピア・ツー・ピアアーキテクチャでは望ましくない。
【００４９】
同じ問題は、ブロックチェーンネットワークの他の部分でも、妥当性確認、記憶、マイニング、又は他の機能のいずれにせよ、特殊な役割を有しているノードに適応するようそのアーキテクチャが進化するにつれて、起こる可能性がある。それらのノードは、特定の役割を有するグループのメンバーとして機能し、その役割を有するそのグループの他のメンバーは、グループ内のメンバーシップを識別及び認証することが可能でありたいと望む。同様に、グループのメンバーではないが、グループ内の特殊化したノードと相互作用し、それを“信頼”する必要があるノードも、グループ内のその特殊化したノードのメンバーシップを認証することが可能でありたいと望む。非中央集権型のブロックチェーンネットワークに中央集権型の認証局を課すことなしに、身元及びメンバーシップを認証することをノードに可能にすることが望ましい。
【００５０】
１つの態様において、本願は、特殊化したノードグループのメンバーであるノードのグループの間の分散した秘密鍵割り当てに依存してノードを信用証明する方法及びデバイスを提供する。それに応じて、特殊化したノードのどれもが単独で有効なクレデンシャルを要求元ノードへ供給しないように、グループ内の特殊化したノードの協働を通じて、クレデンシャルが生成され、要求元ノードへ供給される。
【００５１】
他の態様において、本願は、同じグループのノードによって許可されたクレデンシャルを各ノードが保有していることを確かめることを通じて、２つのノードの間に信頼できる通信チャネルを確立する方法を提供する。信頼できる通信チャネルに関与するノードは両方とも、クレデンシャルを許可したグループのメンバーであってよいが、必ずしもメンバーではない。１つの例において、一方のノードは、特殊化したノードのグループのメンバーであり、他方のノードは、そうではない。２つのノードのクレデンシャルの妥当性を確かめることは、各ノードが双線形ペアリング操作を用いて鍵を生成し、鍵が一致することを確かにすることに基づいてよい。一方のノードの双線形ペアリング操作は、引数として、他方のノードの識別子のマップ・ツー・ポイントハッシュと、ノードのグループによって協力し合って生成されて一方のノードへ供給されたシークレットポイントとを含んでよい。
【００５２】
これより図５を参照すると、図５は、特殊化したノードのグループ５０２を図式的に示す。要求元ノード５０４は、その身元を、特殊化したノードのうちの１つとして、又は特殊化したノードのうちの１つと通信するノードとして証明することが可能であるように、特殊化したノードのグループ５０２からクレデンシャルを取得したいと望む。要求元ノード５０４は、特殊化したノードのグループ５０２の部分であってもなくてもよい。
【００５３】
要求元ノード５０４は、クレデンシャルの要求５０６をノードのグループ５０２へ送る。要求５０６は、要求元ノード５０４の識別子に関連付けられている。いくつかの実施において、識別子は、要求元ノード５０４によって生成され、要求５０６とともに送られてよい。例えば、要求元ノード５０４は、その識別子“Alice”を生成し、そのid=Aliceをノードのグループ５０２に伝えてよい。いくつかの実施において、識別子は、ノードのグループ５０２によって、あるいは、より具体的には、ノードのグループ５０２内の１つのノードによって割り当てられ、要求元ノード５０４へ送られてもよい。いくつかの実施において、要求元ノード５０４は、その“名称”又は識別子ストリング、例えば“Alice”をノードのグループ５０２に供給する。識別子ストリングは、何らかの英数字列又は他の一意の識別子であってよい。ノードのグループ５０２は、要求元ノード５０４の識別子を生成するために、追加情報を識別子ストリングに連結させてもよい。例えば、ノードのグループ５０２は、識別子ストリングをノードのグループ５０２の名称又は識別子と結合してもよい。いくつかの実施において、名称は、“validator”（バリデータ）などのような、ノードのグループ５０２の“role”（役割）又は機能である。いくつかの実施において、ノードのグループ５０２は、識別子をクレデンシャルの満了時間と結合してもよく、それにより、要求元ノード５０４のクレデンシャルを評価する如何なる他のノードも、その識別子から、クレデンシャルが有効期限内にあるかどうかを判断することができる。以下で説明される１つの実施例において、要求元ノード５０４の識別子は、識別子ストリング（例えば、Alice）と、ノードのグループ５０２を識別する役割ストリング又はそれらの機能的役割と、クレデンシャルの満了時間との連結から形成される。識別子の他の可能な実施は、当業者によって理解されるだろう。
【００５４】
ノードのグループ５０２内の各ノードは、秘密鍵ｋの割り当てｋｉを含む。秘密分散（secret  sharing）は、秘密ｋを再構成するために少なくともｔ＋１人の参加者が協力する必要があるように、秘密ｋがｎ人のプレイヤーの間で分けられる閾値暗号方式で使用される。秘密ｋの任意のｔ個の部分の知識は、秘密ｋを未決定のままとする。
【００５５】
秘密分散方式は、多項式補間に基づいており、秘密は、有限体（finite  field）Ｆの元（element）であると考えられる。方式は、ディーラー（ディーラーなしバージョンも存在する。）と、ｎ人の参加者Ｕ１，・・・，Ｕｎの組とを有する。プロトコルにおいて、任意のランダムな秘密が、ｔ次多項式ｆ（ｘ）におけるｆ（０）として格納され、ノードｉのみが、その割り当てｆ（ｘｉ）を計算することができる。ｎ個のノードのうちのｔ＋１個が協働する場合に、それらは、ラグランジュ多項式補間を用いて、ｆ（ｘ１），ｆ（ｘ２），・・・，ｆ（ｘｎ）に対応する（鍵ｋの）それらの割り当てｋ１，ｋ２，・・・，ｋｎによりｆ（ｘ）上の任意の点を再構成することができる。ラグランジュ多項式補間は、次数ｔを有する関数ｆ（ｘ）がｔ＋１個の点ｐ＝｛（ｘ１，ｆ（ｘ１）），（ｘ２，ｆ（ｘ２）），・・・，（ｘｔ＋１，ｆ（ｘｔ＋１））｝により再構成され得ることを提供する：
【数１】
2020526055.tif 000003
ここで、
【数２】
2020526055.tif 000004
なお、ｂｉ，ｐ（ｘｉ）＝１且つｂｉ，ｐ（ｘｊ）＝０に留意されたい。これに関連して、ｂｉは補間係数である。
【００５６】
ディーラーなし割り当て分配（dealerless  shares  distribution）に関する実施では：
１．各ノードｉは、あらゆるものに知られているｘｉを割り当てられる。各ｘｉは、一意でなければならない。  
２．各ノードｉは、次数ｔを有するランダム多項式ｆｉ（ｘ）を生成する。  
３．各ノードｉは、あらゆる他のノードに、多項式ｆｉ（ｘｊ）ｍｏｄｎ上のそれらの各々の点を秘密裏に（受取側の公開鍵により暗号化して）送る。  
４．各ノードｉは、多項式ｆ（ｘ）ｍｏｄｎに対する割り当てであるｋｉ＝ｆ（ｘｉ）ｍｏｄｎを形成するよう、全てのそれらの受け取られたｆ１（ｘ１），ｆ２（ｘ２），・・・，ｆｐ（ｘｉ）、全てのｍｏｄｎ（ここで、ｎは、基礎体（base  field）
［外１］
2020526055.tif 000005
の標数である。）を足し合わせる。
【００５７】
図５の例に戻ると、ノードのグループ５０２の中のノードは、参照番号５０８によって示されるように、要求元ノード５０４のためのシークレットポイントｓＡを生成するよう協働する。シークレットポイントｓＡは、巡回群Ｇ１の中にあり、その有意性は、ハンドシェイク及びペアリングに関する以下の説明から明らかになる。シークレットポイントは：
ｓＡ＝ｋ・Ｈ１（ｉｄＡ）
として識別子に関係がある。ここで、ｉｄＡは、要求元ノード５０４の識別子である。クレデンシャルは、いくつかの実施において、（ｉｄＡ，ｓＡ）であると考えられ得る。Ｈ１は、以下で更に詳細に説明されるように、マップ・ツー・ポイントハッシュである。
【００５８】
グループ秘密鍵ｋを再構成することなしにシークレットポイントを生成するために、ノードのグループ５０２は、秘密割り当て連結（Secret  Share  Joining）の形式を用いてｓＡを生成することにおいて協働する。図６は、ノードのグループ５０２が要求元ノード５０４に対してクレデンシャルを許可する他の例を示す。この実例では、要求元ノード５０４は、クレデンシャル要求をノードのグループの中の少なくともｔ＋１個のノードへ送る。それらのノードは夫々、要求元ノード５０４にｓＡの一部を供給する。特に、シークレットポイントｓＡの各割り当てｓＡｉは、ノードｉによって決定されて要求元ノード５０４へ送られ、次いで、要求元ノード５０４は、それらをシークレットポイントｓＡに組み立てる（すなわち、それらを結合する）。いくつかの例において、割り当てｓＡｉは、シークレットポイントｓＡを得るために、それらを加算することによって結合される。
【００５９】
これより図７を参照すると、図７は、クレデンシャルのグループに基づいた分散生成のためのプロセス７００の一例をフローチャート形式で示す。プロセス７００は要求元ノードによって実行される。それは、要求元ノードが動作７０２においてインデックスｉを１にセットすることから始まる。次いで、要求元ノードは、クレデンシャルをノードｉに要求する。ノードｉは、本明細書で記載されるクレデンシャル許可プロシージャの実施を実行するよう構成されたノードのグループ内の特殊化したノードである。ノードｉは、グループ秘密鍵割り当てｋｉの部分を用いて、シークレットポイントｓＡのｉ番目の部分を決定する。その部分はｓＡｉとして参照され得る。
【００６０】
動作７０６において、要求元ノードは、ｉ番目のノードから部分ｓＡｉを受け取る。すなわち、それは部分的なクレデンシャルを受け取る。動作７０８において、要求元ノードは、インデックスｉがｔ＋１であるかどうかを判断する。そうである場合には、要求元ノードは、ｔ＋１個の部分的なクレデンシャルを受け取っている。しかし、そうでない場合には、要求元ノードは、シークレットポイントｓＡを再構成するために更なる部分的なクレデンシャルを依然として必要とする。ｉが未だｔ＋１に等しくない場合に、次いで、動作７１０で、ｉは１だけ増分され、プロセス７００は動作７０４へ戻って、ノードのグループ内の他のノードに別の部分的なクレデンシャルを要求する。ｉがｔ＋１に等しい場合には、次いで、動作７１２で、要求元ノードは、シークレットポイントｓＡを組み立てる。
【００６１】
ノードのグループの中のノードの共同努力を通じてクレデンシャルが得られると、妥当性確認／認証のために中央当局に依存すること又はグループに戻ることなしに、クレデンシャルをチェック又は妥当性確認するメカニズムを有することが有利である。そのようにして、発行されたクレデンシャルを協力し合って検証し妥当性確認するノードのグループを有することに付随した時間遅延及び通信オーバーヘッドの負担なしで、同じグループのノードからの有効なクレデンシャルを有すると主張する２つのノードは、お互いのクレデンシャルを妥当性確認することができる。
【００６２】
概説として、グループ秘密鍵ｋが有限体の一員、すなわち、
［外２］
2020526055.tif 000006
であると考える。クレデンシャルを取得する要求元ノードは、クレデンシャルを自身の識別子ｉｄＡ及び巡回群Ｇ１内のシークレットポイントｓＡの形で有している。この例となる実施形態で、識別子（又は“仮名”（pseudonym））ｉｄＡは（Alice||role||満了時間）であり、||は、２つのストリングの連結を表し、roleは、グループのノード及び／又はその機能若しくは役割に関連したストリング又は他の英数字識別子である。要求元ノードは、その識別子を誰にでも公開することができるが、ｓＡを秘密のままとする。
【００６３】
他の要求元ノードは、（Bob||role||経過時間）としての識別子ｉｄＢと、シークレットポイントｓＢとを取得する。
【００６４】
シークレットポイントｓＡは、ｓＡ＝ｋ・Ｈ１（ｉｄＡ）によって与えられ、シークレットポイントｓＢは、ｓＢ＝ｋ・Ｈ１（ｉｄＢ）によって与えられる点に留意されたい。
【００６５】
Alice及びBobが、お互いと信頼できる通信を確立したいとき、すなわち、彼らのうちの一方又は両方が他方のクレデンシャルを検証したいとき、２つのノードは、それらのシークレットポイントを開示することなしに、各自の識別子／仮名を交換する。
【００６６】
ノードAliceは、次いで：
ＫＡ＝ｅ（Ｈ１（Bob||role||経過時間），ｓＡ）
を計算することによって、セッション鍵ＫＡを生成する。ここで、ｅ（）は、双線形写像（bilinear  map）、すなわち、ペアリング操作である。ノードBobは：
ＫＢ＝ｅ（ｓＢ，Ｈ１（Alice||role||満了時間））
を計算することによって、セッション鍵ＫＢを求める。
【００６７】
演算Ｈ１（）は、以下で更に記載されるように、マップ・ツー・ポイント関数である。ペアリングの特性により、２つの鍵は同じ、すなわち、ＫＡ＝ＫＢである。課題値を送り、それに対する応答を得ることによって、２つのノードは、プロトコルが成功したこと、すなわち、２つのノードが夫々、同じ役割を示すノードの同じグループによって発行されたクレデンシャルを保持すること、を検証することができる。代替的に、一方のパーティは、ハンドシェイクが成功した場合且つその場合に限り暗号解読に成功する何らかのコンテンツを他方へ送ることができる。
【００６８】
この例におけるペアリング操作は、この場合に同じ巡回群Ｇ１からのｓＡ及びｓＢに依存する。他の場合に、２つは：
ｅ：Ｇ１×Ｇ２→ＧＴ
として他のアーベル群内の値をとる２つのアーベル群として関係がある異なる巡回群Ｇ１及びＧ２からであってもよい。ここで、Ｇ１、Ｇ２及びＧＴは、同じ位数の巡回群である。
【００６９】
公であるクレデンシャルの生成においては特定のパラメータが存在する。それらは、プロセスにおいていずれかのノードによって生成され、他のノードと共有される。ｑが２及び３に対して相対的に素な素数のべき乗であるときに、Ｅは体
［外３］
2020526055.tif 000007
にわたってｎ個の点を含む楕円曲線であるとの仮定から出発すると、公のパラメータは、次の：
ｐａｒａｍｓ＝（ｐ、Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｅ，Ｈ１，Ｈ２）
を含むことができる。ここで、ｇ１（又はｇ２）は、双線形写像ｅ（．，．）を有する素数位数ｐの群Ｇ１（又はＧ２）の生成元である。Ｇ１は、ｒ、ｑが互いに素であるとして、位数ｒの
［外４］
2020526055.tif 000008
の巡回部分群である。そして、ｅ（ｇ１，ｇ２）は、やはり位数ｐを有するＧＴを生成する。Ｈ１及びＨ２は、夫々Ｇ１及びＧ２に対するマップ・ツー・ポイントハッシュである。上述されたように、いくつかの実施において、本明細書で記載される例の多くでは、Ｇ１のみが使用され得る。すなわち、同じマップ・ツー・ポイントハッシュＨ１が、両方のシークレットポイントｓＡ及びｓＢのために使用される。
【００７０】
いくつかの楕円曲線暗号方式において、ハッシュアルゴリズムが、有限体の元であるパスワード又は他のストリングを所与の楕円曲線の点にマッピングするために使用される。それらはマップ・ツー・ポイントハッシュである。より正確には、マップ・ツー・ポイントハッシュＨ１は、入力にメッセージｍを取り、点Ｐ∈Ｅ（Ｋ）を返す変換である。より具体的に、Ｈ１は点Ｐ∈Ｅ（Ｋ）［ｒ］を返す。このとき、Ｅ（Ｋ）［ｒ］は、Ｇ１によって生成されるＥ（Ｋ）の部分群である。この方式において、基礎体
［外５］
2020526055.tif 000009
から曲線への一対一のマッピングｆが存在する。これは、ｆ（Ｈ（ｍ））を用いてハッシングすることを可能にする。このとき、Ｈは古典的なハッシュ関数であり、
［外６］
2020526055.tif 000010
【００７１】
これより図８を参照すると、図８は、お互いのクレデンシャルを妥当性確認することによって信頼できる通信チャネル確立することにおける２つのノードＡ及びＢの間のメッセージフローを示す。この実施例において、ノードＡは、自身の識別子ｉｄＡをノードＢへ供給する。識別子ｉｄＡは、公に利用可能であり、いくつかの場合には、ノードＢによって他のソースから取得されてもよい。このことから、ノードＢは、ノードＡの識別子と、ノードＢによって保持されているシークレットポイントｓＢと、クレデンシャルを発行したノードのグループによって規定されるマップ・ツー・ポイントハッシュＨ１とを用いて、セッション鍵ＫＢを生成することができる。セッション鍵ＫＢは、やはりノードのグループによって規定されるペアリング操作ｅ（）を用いて、生成される：
ＫＢ＝ｅ（ｓＢ，Ｈ１（Alice||role||満了時間））
ここで、この例では、ノードＢの識別子ｉｄＢは、（Alice||role||満了時間）である。
【００７２】
ノードＢは、自身のｉｄＢをノードＡへ供給し、ノードＡは次いで、同様に、ノードＢの識別子と、自身のシークレットポイントｓＡと、同じペアリング操作及びマップ・ツー・ポイントハッシュとを用いて、セッション鍵ＫＡを生成することができる：
ＫＡ＝ｅ（Ｈ１（Bob||role||経過時間），ｓＡ）
【００７３】
シークレットポイントが、各々のノードＡ及びＢの識別子と、同じグループ秘密鍵とを用いて、ノードのグループによって正当に協力し合って生成された場合に、ペアリング操作はＫＡ＝ＫＢをもたらすはずである。これは、様々な方法でテストすることができる。この実施例では、ノードＡは、セッション鍵ＫＡで暗号化された課題をノードＢへ送る。ノードＢは、自身のセッション鍵ＫＢを用いて課題を暗号解読しようと試み、課題に対する応答を送る。応答は、セッション鍵ＫＢによって暗号化され得る。これに基づき、両方のノードは、それらが同じセッション鍵を有することを確信することができる。そのセッション鍵は、２つのノードの間の通信を暗号化するために使用され得る。他の実施では、セッション鍵は、他の鍵のセットアップをもたらす通信を暗号化するために使用されてもよい。更なる他の実施では、２つのノードの間の通信は、お互いのクレデンシャルを妥当性確認／認証するために単に上記のプロシージャに依存し、２つのノードの間の通信は、暗号化されないか、あるいは、ノードの通常の公開−秘密鍵対を用いて暗号化される。
【００７４】
他の実施例は、図９の信号図によって説明される。この例では、ノードＡは、ランダムなノンスｎｏｎｃｅＡを生成することによって開始する。ノードＡは、識別子ｉｄＡ及びそのノンスをノードＢへ送る。ノードＢは、自身のノンスｎｏｎｃｅＢを生成する。ノードＢは次いで、この例では、値Ｃ０を生成する。値Ｃ０は、ペアリング操作の結果のハッシュと、ノンスを含む他のデータとである。この例では、値Ｃ０は：
Ｃ０＝Ｈ（ｅ（ｓＢ，Ｈ１（ｉｄＡ））||ｉｄＡ||ｉｄＢ||ｎｏｎｃｅＡ||ｎｏｎｃｅＢ）
によって与えられ得る。ここで、Ｈは、ストリングごとの衝突困難（collision  resistant）ハッシュ関数である。１つの例において、ＨはＳＨＡ−２５６である。
【００７５】
次いで、ノードＢは、その識別子ｉｄＢと、そのノンスｎｏｎｃｅＢと、値Ｃ０とを供給してノードＡに返信する。次いで、ノードＡは、値Ｃ１を得るために同様の計算を実行する。Ｃ１は、この例では：
Ｃ１＝Ｈ（ｅ（Ｈ１（ｉｄＢ），ｓＡ）||ｉｄＡ||ｉｄＢ||ｎｏｎｃｅＡ||ｎｏｎｃｅＢ）
と表される。
【００７６】
Ｃ０に対するＣ１の式中の引数の唯一の違いは、ペアリング操作にあることが分かる。従って、ノードＡ及びノードＢのクレデンシャルがノードの同じグループから取得されたと双線形ペアリング操作により確かめられる場合に、２つの値は一致するはずである。ノードＡは、それらが一致することを検証することができ、そうである場合に、Ｃ１をノードＢへ送る。ノードＢも、それらが一致することを検証する。１つの実施において、値Ｃ０＝Ｃ１は、次いで、ノードＡとノードＢとの間の通信を暗号化するためにセッション鍵として使用される。いくつかの実施において、ノードは、単に、通信を暗号化するためにそれらの通常の公開鍵−秘密鍵対に依存し、上記の操作は、認証のためであり、セッション鍵を確立するためではない。
【００７７】
いくつかの実施例において、値Ｃ０及びＣ１を形成するために連結及びハッシングされるデータ又はストリングは、他のデータ又はストリングを含んでも、あるいは、先の例のストリングのいくつかを除いてもよい。例えば、１つの実施において、値Ｃ０及びＣ１は、識別子ｉｄＡ及びｉｄＢの連結を含まなくてもよい。なお、ハッシュ及びノンスは、中間者攻撃（man-in-the-middle  attacks）から通信を保護するのを助けることが理解されるだろう。
【００７８】
これより図１０を参照すると、図１０は、ブロックチェーンノード１０００の簡略化された例をブロック図形式で示す。この例におけるブロックチェーンノード１０００は、プロセッサ１００２と、ネットワークインターフェイス１００４と、メモリ１００６とを含む。ブロックチェーンノード１０００は、ネットワーク接続性と、本明細書で記載される機能を実行するのに十分な処理及びメモリ資源とを有している如何なる適切な計算ハードウェアを用いても実装されてよい。ブロックチェーンノード１０００は、本明細書で記載される機能を実装するためのプロセッサ実行可能命令を含んでよい。いくつかの場合に、プロセッサ実行可能命令は、ブロックチェーンアプリケーション１０２０と呼ばれ得る。なお、命令は、ハードウェア及びオペレーティングシステムに応じて、１以上のモジュール、アプリケーション、スクリプト又は他のプログラミング構造で実装されてよいことが理解されるだろう。プロセッサ１００２は、マルチコアプロセッサ及び／又は複数のプロセッサを含んでもよい。
【００７９】
本明細書で記載されるデバイス及びプロセス、並びに映像特徴抽出部を構成するための記載された方法／プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントが、標準のコンピュータプログラミング技術及び言語を用いて実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング仕様、データ構造、又は他のそのような実施詳細に限定されない。
【００８０】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」（comprising及びcomprises）などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」（comprises）は、「〜を含むか、又はそれらから成る」（includes  or  consists  of）を意味し、「有する」（comprising）は、「〜を含むか、又はそれらから成る」（including  or  consisting  of）を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【図１】
2020526055.tif 000011
【図２】
2020526055.tif 000012
【図３】
2020526055.tif 000013
【図４】
2020526055.tif 000014
【図５】
2020526055.tif 000015
【図６】
2020526055.tif 000016
【図７】
2020526055.tif 000017
【図８】
2020526055.tif 000018
【図９】
2020526055.tif 000019
【図１０】
2020526055.tif 000020
【国際調査報告】
2020526055.tif 000021
2020526055.tif 000022
2020526055.tif 000023