(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-16
(45)【発行日】2023-01-24
(54)【発明の名称】投票集計を伴うトポロジードリブンビザンチンフォールトトレラント合意プロトコル
(51)【国際特許分類】
H04L 9/32 20060101AFI20230117BHJP
【FI】
H04L9/32 200Z
H04L9/32 200E
(21)【出願番号】P 2021549964
(86)(22)【出願日】2020-02-19
(86)【国際出願番号】 EP2020054357
(87)【国際公開番号】W WO2021073777
(87)【国際公開日】2021-04-22
【審査請求日】2021-08-26
(32)【優先日】2019-10-14
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】517451940
【氏名又は名称】エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー
(74)【代理人】
【識別番号】100124811
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】フョードロフ セルゲイ
【審査官】金沢 史明
(56)【参考文献】
【文献】米国特許出願公開第2019/0097790(US,A1)
【文献】国際公開第2018/095540(WO,A1)
【文献】LIU, Jian et al.,Scalable Byzantine Consensus via Hardware-Assisted Secret Sharing,IEEE Transactions on Computers,IEEE,2018年12月19日,Vol. 68, No. 1,pp. 139-151
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 11/14
G06F 11/18
G06F 16/182
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
データ通信ネットワーク(1)を介して接続され、1つのリーダーノード(3)が含まれた複数のアクティブノード(2)を含む複数の分散ノード間の合意を確立する方法であって、
前記複数の分散ノードは、それぞれプロセッサおよびコンピュータ可読媒体を含み、
前記リーダーノード(3)が、
提案を準備し、
第一通信トポロジーを構築し、
前記第一通信トポロジーに従って、前記提案を前記アクティブノード(2)に伝搬し、
前記アクティブノード(2)から十分とされる投票集計のセットを受信した場合に、前記投票集計を使用して提案コミットメントを生成し、前記提案を受け入れる、または、
前記アクティブノード(2)の障害
がある場合に、前記第一通信トポロジーとは異なる更新された通信トポロジーを生成し、当該更新された通信トポロジーに従って同じ前記提案を前記アクティブノード(2)に伝播し続
け、
さらに、前記リーダーノード(3)は、前記アクティブノード(2)の投票の集計に前記提案を結び付けて含むコミットメントバインディングの作成を、後に前記リーダーノード(3)が前記提案の合意に達するために十分な数の投票を集計するまで延期する、
ことを特徴とする方法。
【請求項2】
請求項1に記載の方法であって、
1つ以上の前記更新された通信トポロジー
を生成した後に、前記アクティブノード(2)の障害
がある場合に、前記リーダーノード(3)によってフォールバック通信トポロジーを構築し、
前記フォールバック通信トポロジーに従って、同じ前記提案を前記アクティブノード(2)に伝播し続ける、
ことを特徴とする方法。
【請求項3】
請求項2に記載の方法であって、
前記フォールバック通信トポロジーは、アクティブリーフノードである複数の前記アクティブノード(2)を含み、
前記リーダーノード(3)は、前記フォールバック通信トポロジーが使用されたときであって、障害のある非リーダーの前記アクティブノード(2)が予め設定された数である場合に、提案コミットメントを生成するために十分な投票を収集可能な十分な数の前記アクティブリーフノードに直接通信を行う、
ことを特徴とする方法。
【請求項4】
請求項1乃至
3のいずれかに記載の方法であって、
前記提案コミットメントは、対応するコミットメント投票集計と共にコミットメントバイディングを含む、
ことを特徴とする方法。
【請求項5】
請求項1乃至
4のいずれかに記載の方法であって、
前記アクティブノード(2)が、前記提案コミットメントを受信し、
前記アクティブノード(2)が、前記提案コミットメントのコミットメント投票集計とコミットメントバインディングを検証し、
検証のステップで、コミットメント投票集計とコミットメントバインディングとの両方が有効であると判断された場合に、前記アクティブノード(2)がそれぞれの提案を受け入れる、
ことを特徴とする方法。
【請求項6】
請求項1乃至
5のいずれかに記載の方法であって、
前記リーダーノード(3)が、前記第一通信トポロジーと、前記更新された通信トポロジーおよび/またはフォールバック通信トポロジーのいずれか、を構築することは、前記リーダーノード(3)をルートとするツリー構造内に複数の前記アクティブノード(2)を組み込むことを含む、
ことを特徴とする方法。
【請求項7】
請求項1乃至
6のいずれかに記載の方法であって、
前記更新された通信トポロジーを生成することは、以前の通信トポロジーの疑わしい前記アクティブノード(2)を、パッシブノード(4)に置き換えると共に、ツリー構造のリーフ位置に移動することによって、通信トポロジーのツリー構造を更新することを含む、
ことを特徴とする方法。
【請求項8】
請求項1乃至
7のいずれかに記載の方法であって、
前記リーダーノード(3)が、前記リーダーノード(3)のtrusted execution environmentであるTEE内で実行される信頼できるアプリケーションを利用して、提案識別子を提案ペイロードに結び付ける、
ことを特徴とする方法。
【請求項9】
請求項1乃至
8のいずれかに記載の方法であって、
前記アクティブノード(2)が、前記アクティブノード(2)のtrusted execution environmentであるTEE内で実行される信頼できるアプリケーションを実行し、
前記アクティブノード(2)が、信頼できるアプリケーションを使用して、有効な提案に対する当該アクティブノード(2)の投票を生成する、
ことを特徴とする方法。
【請求項10】
請求項1乃至
9のいずれかに記載の方法であって、
投票は、秘密分散として利用される2進数として表される、
ことを特徴とする方法。
【請求項11】
請求項
10に記載の方法であって、
投票集計または投票部分集計は、対応する秘密分散にビット単位のXOR演算を適用することによって得られる、
及び/又は、
投票集計または投票部分集計は、対応する秘密分散の連結に暗号化ハッシュ関数を適用することによって得られる、
ことを特徴とする方法。
【請求項12】
請求項
10又は11に記載の方法であって、
前記秘密分散は、信頼されたアプリケーションによって、非リーダーの前記アクティブノード(2)のそれぞれ及び提案識別子に対してランダムに生成され、
及び/又は、
前記秘密分散は、対応する提案識別子を使用して、秘密鍵値から鍵導出関数を備えた信頼できるアプリケーションによって生成される、
ことを特徴とする方法。
【請求項13】
請求項1乃至
12のいずれかに記載の方法であって、
投票及び/又は投票集計は、対応する提案の少なくとも一部に、信頼できるアプリケーションによって生成されたデジタル署名またはメッセージ認証コードとして表される、
ことを特徴とする方法。
【請求項14】
データ通信ネットワーク(1)を介して接続され、1つのリーダーノード(3)が含まれた複数のアクティブノード(2)を含む複数の分散ノード間の合意を確立する方法を実行するための処理命令を記憶したコンピュータにて読み取り可能な記憶媒体であって、
前記複数の分散ノードは、それぞれプロセッサおよびコンピュータ可読媒体を含み、
前記方法は、
提案を準備し、
第一通信トポロジーを構築し、
前記第一通信トポロジーに従って、前記提案を前記アクティブノード(2)に伝搬し、
前記アクティブノード(2)から十分とされる投票集計のセットを受信した場合に、前記投票集計を使用して提案コミットメントを生成し、前記提案を受け入れる、または、
前記アクティブノード(2)の障害
がある場合に、前記第一通信トポロジーとは異なる更新された通信トポロジーを生成し、当該更新された通信トポロジーに従って同じ前記提案を前記アクティブノード(2)に伝播し続
け、
さらに、前記リーダーノード(3)は、前記アクティブノード(2)の投票の集計に前記提案を結び付けて含むコミットメントバインディングの作成を、後に前記リーダーノード(3)が前記提案の合意に達するために十分な数の投票を集計するまで延期する、
ことを特徴とするコンピュータにて読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビザンチンフォールトトレラント(BFT)合意プロトコルと分散型台帳技術に関する。より具体的に、本発明は、データ通信ネットワークを介して接続され、リーダーノードを含む複数のアクティブノードをさらに含む複数の分散ノード間で合意を確立する方法に関する。
【背景技術】
【0002】
近年、分散型台帳技術は、幅広い産業利用事例において応用が可能であるため、大きな注目を集めている。基本的に、分散型台帳システムは、複製されたデータの整合性を保証するために、承諾又は合意の概念に頼っている。そのため、ビザンチンフォールトトレラント(BFT)投票ベースの合意プロトコルは、復元力と合意の完了状態の観点から望ましい特性を有している。しかしながら、そのようなプロトコルは、計算と通信のコストが高いという問題がある。
【0003】
このため、研究者や実務家は、実際の設備において高い拡張性や性能を実現することを目的とした新しいBFT合意プロトコルを考案しようとしている。例えば、FastBFTプロトコル(Jian Liu, Wenting Li, Ghassan Karame, N.Asokan, : "Scalable Byzantine Consensus via Hardware-assisted Secret Sharing", IEEE Transaction on Computers, 2019)は、低遅延で高スループットを実現するため、パッシブレプリケーション及び先端的通信トポロジーを組み合わせた投票集計に対するハードウェア補助による秘密分散というような最適化を採用した良い例である。別の例として、CheapBFTプロトコル(R. Kapitza, J.Behl, C.Cachin, T.Distler, S.Kuhnle, S.V.Mohammadi、W.Schroder-Preikschat, K.Stengel, : CheapBFT:resource-efficient byzantine fault tolerance", in Proceedings of the 7th ACM European conference on Computer Systems, 2012)は、これらの最適化のサブセット、つまりパッシブレプリケーションと信頼できるハードウェア支援を採用している。
【発明の概要】
【発明が解決しようとする課題】
【0004】
既知のリーダーベースBFT合意プロトコルには、通常、リーダーノードの考えられる障害を処理するためのビュー変更と呼ばれる特別なメカニズムが含まれている。加えて、パッシブレプリケーションで最適化されたプロトコルは、通常、いくつかの非リーダーの障害シナリオを処理するための別のより保守的な合意プロトコルを使用する。その場合、失敗した合意ラウンドを中止し、フォールバックプロトコルに切り替えるためのシステムを準備するために、特別な遷移メカニズムが呼び出される。
【0005】
このため、本発明の目的は、実装の複雑さが軽減され、それによって正確性の検証が容易にするために、複数の分散ノード間の合意を確立するための上述した形式の方法を改善してさらに改良することにある。
【課題を解決するための手段】
【0006】
実施形態において、本発明は、データ通信ネットワークを介して接続された複数の分散ノード間の合意を確立するための方法を提供する。複数の分散ノードは、リーダーノードを含む複数のアクティブノードを含む。複数の分散ノードのそれぞれは、プロセッサとコンピュータ可読媒体を含む。本発明の方法は、リーダーノードによって、提案の準備を実行することを含み、第一通信トポロジーを構築し、第一通信トポロジーに従って提案をアクティブノードに伝播する。本発明の方法はさらに、リーダーノードによって、アクティブノードから十分な数の投票集計のセットを受信する場合、投票集計を使用して提案コミットメントを作成して提案を受け入れ、あるいは、第一通信トポロジーがアクティブノードの障害により提案が合意に達することの信頼性がないと疑わしい場合に、第一通信トポロジーとは異なる更新された通信トポロジーを作成し、更新された通信トポロジーに従って同じ提案をアクティブノードに伝播し続ける。
【0007】
実施形態によると、本発明は、データ通信ネットワークを介して接続された複数の分散ノード間で合意を確立するための方法を実行する命令を格納したコンピュータにて読み取り可能な記憶媒体を提供する。
【0008】
さらに、実施形態によると、本発明は、データ通信ネットワークを介して接続され、合意を確立するように構成された複数の分散ノードを含むシステムを提供する。
【0009】
本発明の実施形態では、パッシブレプリケーション、高度な通信トポロジー、および投票集計のような高度な最適化技術を採用しつつ非リーダーの障害を許容する複雑なメカニズムを必要としない新規のビザンチンフォールトトレラント合意プロトコルの方法によって合意を確立する方法を提供する。最適化合意プロトコル技術に対する拡張として、本発明の実施形態では、高度な最適化技術と同じコアセットを備えつつ、フォールバックおよび遷移サブプロトコルなどの非リーダーの障害を許容する複雑なメカニズムを排除することを可能としている。これにより、分散型台帳技術の重要な構成要素で必要とされる、正確性の検証が容易となり、より簡易な合意プロトコルの実装が可能となる。
【0010】
実施形態よると、本発明は、投票集計を使用したトポロジードリブンフォールトトレラント合意の方法に関連する。この方法は、リーダーノードによって、楽観的通信トポロジー(本明細書では、「第一通信トポロジー」との用語で示す)を用いた提案に関する合意ラウンドを開始するステップを有する。リーダーノードは、第一通信トポロジーに基づいて合意ラウンドを終了することもできる。あるいは、1つ以上のアクティブな非リーダーノードの障害が疑われる場合、リーダーノードは、更新された通信トポロジーに切り替え、この新しい(更新された)通信トポロジーを使用して合意ラウンドを再開することもできる。実施形態によると、更新は、第一通信トポロジーから障害動作が疑われるアクティブノードの削除/置換が含まれる場合がある。つまり、通信トポロジーを更新するときに、アクティブノードのセットが変更される場合がある。
【0011】
上記プロセス、つまり、現在の通信トポロジーから更新された通信トポロジーへの切り替えは、アクティブな非リーダーノードの障害が疑われる場合にそれぞれ繰り返すことができる。実施形態では、許容される繰り返しの最大数を示すしきい値が適用される場合がある。しきい値は、事前に設定されたり、あるいは、特定のアルゴリズムに従って動作中に決定されうる。
【0012】
一旦しきい値に達すると、つまり、リーダーノードが異なる楽観的通信トポロジーで最大数の合意ラウンドを実行すると、リーダーノードは、悲観的信頼通信トポロジー(本明細書では、「フォールバック通信トポロジー」との用語で示す)を使用する状態にフォールバックし、フォールバック通信トポロジーを使用した合意ラウンドを再開することができる。つまり、このことは、設定された数の楽観的通信トポロジーが合意に達するのに信頼できないと疑われる場合、リーダーノードがフォールバック通信トポロジーの使用に切り替えることを意味している。通信トポロジーの更新の場合と同様に、フォールバック通信トポロジーに切り替えると、アクティブノードのセットが変更されうる。フォールバック通信トポロジーの使用への切り替えは、フォールバック通信トポロジーの使用に替えてフォールバックプロトコルへの移行を実行する従来技術のソリューションとは異なることに注意すべきである。ただし、プロセス全体がより複雑になる。
【0013】
実施形態によると、アクティブな非リーダーノードは、リーダーノードの提案に対して投票し、もし存在すれば自身の投票と共に容認され期待された有効な投票集計に集約し、通信トポロジーに従い投票集計を伝送する。
【0014】
実施形態によると、リーダーノードは、提案を投票集計に結び付け、十分な投票数が集計されると、投票集計と結びつけられた結合物を他のノードに伝送する。プロトコルをさらに簡潔にするために、リーダーノードが十分な投票数を集計するまで、提案を投票集計に結び付けることを延期することが行われてもよい。アクティブノードとパッシブノードは、有効で十分な投票集計と共に、集計と提案との有効な結合物を取得すると、提案を受け入れることができる。
【0015】
基本的に、本明細書で開示される合意プロトコルは、非リーダーのアクティブノードの障害の処理を改善するだけである。したがって、本発明の実施形態によると、リーダー障害の場合には、ビュー変更として知られる特別なメカニズムが、状態機械レプリケーションプロトコルを構築するよう実装されてもよい。
【0016】
本発明における教示内容を設計し、さらに発展させる好適な方法はいくつかある。このため、一方では、従属請求項を参照し、他方では、図面によって示されるような例示の方法による本発明の実施形態の説明を参照する必要がある。図面を用いた本発明の好ましい実施形態の説明に関連して、一般的に好ましい実施形態と教示内容のさらなる改良が説明されうる。
【図面の簡単な説明】
【0017】
【
図1】本発明の実施形態におけるリーダーノードで実行される処理手順を示すフローチャートである。
【
図2】本発明の実施形態におけるアクティブノードで実行される処理手順を示すフローチャートである。
【
図3】本発明の実施形態におけるパッシブノードで実行される処理手順を示すフローチャートである。
【
図4】本発明の実施形態における最適化通信トポロジーを構成する複数の分散ノードを含むネットワークを示す図である。
【
図5】本発明の実施形態におけるフィードバック通信トポロジーを構成する複数の分散ノードを含むネットワークを示す図である。
【発明を実施するための形態】
【0018】
ブロックチェーンテクノロジーに対する近年の関心は、BFTプロトコルの開発と改善に対して新たに刺激を与えている。ブロックチェーンは、分散合意の成功の鍵となり、デジタル通貨(ビットコインなど)やその他のアプリケーションのパブリック台帳を提供している。ビットコインのブロックチェーンは、トランザクションの順序と正確性に関する確率的な一貫性の保証を確保するために、よく知られているプルーフオブワーク(PoW)メカニズムに依存している。通信が複雑であることの制約により従来のBHTプロトコルによって実現できないような数千のノード間のトランザクション順序合意を、PoWに制御させることは大きな成功である。ただし、ビットコインのPoWは、多量のエネルギー消費とわずかなトランザクションスループット(1秒あたり約7トランザクション)のために厳しく批判されている。
【0019】
これらの制限を改善するために、数十のノードでのトランザクションスループットに関して優れており、数千が参加するノードの合意を処理するために拡張可能であるようなBFTプロトコルを作成するいくつかの提案されている。MinBFT(G. S. Veronese, M.Correia, A. Neves Bessani, L. C. Lung, P. Verissimo, 「Efficient byzantine fault-tolerance」, IEEE Transactions on Computers, 2013)、及び、CheapBFT(R. Kapitza, S. Johannes Behl, C. Cachin, T. Distler, S. Kuhnle, S. V. Mohammadi, W. Schroder-Preikschat, K. Stengel, "CheapBFT : resource-efficient byzantine fault tolerance" , Proceedings of the 7th ACM european conference on Computer Systems, 2012)では、TEE(Trusted Execution Environment)を使用して、ピアの総数を3f+1から2f+1に減らすことを最初に提案している。ここで、fは許容される障害のあるノードの数を示す。ただし、通信の複雑さは依然として0(n2)であるため、ネットワークを数百のノードに拡張することはできない。
【0020】
Cosi (described in E. Syta, I. Tamas, D. Visher, D. Isaac Wolinsky, P. Jovanovic, L. Gasser, N. Gailly, I. Khoffi and B. Ford, "Keeping authorities" honest or bust" with decentralized witness cosigning", Security and Privacy, 2016)では、ツリー構造と署名の集計を活用して通信の複雑さを0(n)に減らしているが、各ノードでパブリック署名を使用するとコストがかかり、システムにはまだ3f+1ノードが必要である。FastBFT (described in J. Liu, W. Li, G. O. Karame and N. Asokan, "Scalable Byzantine Consensus via Hardware-assisted Secret Sharing", arXiv preprint arXiv:1612.04997, 2016)では、TEEと秘密共有に基づく効率的なメッセージ集計手法を組み合わせたものである。2f+1ノードのみを使用してより効率的なプロトコルを実現する。
【0021】
しかしながら、上述したリーダーベースのBFT合意プロトコルは、一般に、非リーダーノードの考えられる障害の処理に関して、かなり複雑なメカニズムを呼び出す。本発明の実施形態は、所定の最適化BFT合意プロトコルに適用し、実装の複雑さを軽減するという点でさらなる最適化に寄与する。重要なメカニズムであるため、合意プロトコルの実装は、複雑さが軽減されるというメリットがあり、その結果、正確性をより容易に検証できるようになる。
【0022】
本発明の実施形態では、データ通信ネットワークによって接続された多数の分散計算ノードが提案について合意に達するためのメカニズムを提供する。提案は、提案ペイロードを参照するか、提案ペイロードに結び付けられる。実施形態では、ペイロードは、分散型台帳に追加される一連のトランザクションを表す。別の実施形態では、ペイロードは、複製された状態マシンによって実行される一連の操作を表す。
【0023】
実施形態において、データ通信ネットワークを介して接続された複数の分散ノードは、合意アルゴリズムと呼ばれる共通の一部のアルゴリズムを実行するよう構成されている。合意アルゴリズムを正しく実行しているノードは、正しいノードと呼ばれる。残りのノードは障害ノードと呼ばれる。障害ノードの数には、所定の上限が設定されうる。アルゴリズムに従って提案に合意して受け入れることにより、正しいノード間で合意が確立される。
【0024】
いくつかの実施形態では、ノードは、Trusted Execution Environment(TEE)が提供されている。ここで、TEEは、相互作用する厳密に定義されたメカニズムとともに、分離された計算環境として定義される。TEEは、TEE内で実行されるコードが正確に実行されるよう一定レベルの保証を提供し、コードの整合性、及び、コードによって処理されるデータの整合性と秘密性を維持する。このような保護されたコードとデータの分離されたインスタンスは、本明細書では信頼できるアプリケーションと呼ばれる。
【0025】
別の実施形態では、TEEは、所定の分離レベルに応じて、専用ハードウェアデバイス(例えば、信頼できるプラットフォームモジュール)、CPU(例えば、インテル(登録商標)SGXまたはARMトラストゾーン)、仮想化技術(例えば、XENまたはKVM)、OSカーネル(例えば、LinuxコンテナまたはOSプロセス)、または、純粋にアプリケーションソフトウェア(例えば、安全なモジュラープログラミング技術を使用)、によって提供されうる。
【0026】
本発明の実施形態では、提案は、リーダーノードと呼ばれる指定されたノードによって準備される。提案には、他の提案と区別するための固有の提案識別子が含まれる場合がある。
【0027】
本発明の実施形態では、リーダーノードは、予め設定されたアルゴリズムに従って、例えばランダムに、ノードのサブセットを選択する。リーダーノードは、選択されたノードと共にアクティブノードと呼ばれる。追加のノードはパッシブノードと呼ばれる。アクティブな非リーダーノードは、提案が受け入れられるように投票することができる。投票は、対応する提案識別子を参照する、あるいは、提案識別子に結び付けられる。同じ提案識別子に結び付けられた投票は、(部分的な)投票集計と呼ばれるよりコンパクトな表現体に結合または集約される。便宜上、単一の投票は、その投票のみで構成される単純な投票集計と見なすことができる。
【0028】
実施形態では、リーダーノードは、異なるアクティブノードによって生成された十分な数の投票を表す投票集計のセットを収集すると、収集された投票集計をさらに集約することによってコミットメント投票集計を取得する。次に、リーダーノードは、対応する提案をコミットメント投票集計に結び付けて、コミットメントバインディングを取得する。その後、リーダーノードは、対応する投票集計と共にコミットメントバインディングを含む提案コミットメントを作成する。有効な提案コミットメントが与えられることで、アクティブノードとパッシブノードとは、対応する提案を安全に受け入れることができる。
【0029】
本発明の実施形態では、パッシブレプリケーションと楽観的通信トポロジーで最適化されたBFT合意プロトコルに適用されると、更新された通信トポロジーで、疑わしいアクティブノード障害のために中断された合意ラウンドを再開することを可能にしている。悲観的であるが信頼性の高い通信トポロジーの使用にフォールバックすることで、異なるフォールバックプロトコルが不要となる。
【0030】
図1,2,3は、本発明の実施形態における、複数の分散ノード間の合意を確立するための処理手順を示すフローチャートである。
図1に、リーダーノードで実行される処理を示し、
図2及び
図3に、非リーダーのアクティブノードとパッシブノードで実行された処理をそれぞれ示す。一般的に、この手順は、
図4に例示されるようなネットワーク内で実行されうる。本実施形態においては、ネットワーク1は、複数のノードを含み、その中にアクティブノード2で形成されたサブセットを含む。そして、アクティブノードの1つがリーダーノード3として選択される。残りのノードはパッシブノード4である。
【0031】
S101に示すように、リーダーノード1は、予め設定されたアルゴリズムに従って、最適化された通信トポロジーを構築する。本実施形態における最適化された通信トポロジーは、ツリー構造を有する
図4に示されるネットワークの1つである。最適化された通信トポロジーは、合意プロトコルの最初のラウンドを開始するために使用される第一通信トポロジーとして構築される。
【0032】
S102に示すように、リーダーノード1は、新しい提案識別子を提案ペイロードに結び付けることによって新しい提案を準備する。なお、予期される提案投票集計への識別子の結び付けは、後のステップに据え置かれている注意が必要である(以下のステップS106を参照)。
【0033】
S103に示すように、リーダーノード1は、通信トポロジーに従って提案を他のノード2に伝搬する。アクティブノード2としては、
図2のS201に示すように、有効な提案を待つこととなる。アクティブノード2は、新しい提案を受信すると、提案を受け入れるかどうかを検証する。検証が失敗した場合、アクティブノード2は、以下のステップのいずれも実行しない。一方、検証が成功した場合、アクティブノード2は、
図2のS202,S203に示すように、提案識別子に結び付けられた投票を生成し、その投票をメモリに格納し、通信トポロジーに従って提案を他のノードに伝播する。
【0034】
次に、S204に示すように、アクティブノード2は、通信トポロジーに従って他のノードから有効な投票集計を受信することを待つ。S205に示すように、アクティブノード2は、通信トポロジーに従って別のアクティブノード2から投票集計を受信すると、投票集計が有効かどうかを確認し、有効な集計を受け入れる。これは、アクティブノード2が、S210で期待する有効な集計セットを受け入れたと判断するまで続く。
【0035】
非リーダーのアクティブノード2は、通信トポロジーに従って期待される有効な投票集計のセットを受け入れると(ないかもしれないが)、S206に示すように、収集された投票を自身の投票と一緒にさらに集約し、その後、S207に示すように、集約した結果の投票集計を通信トポロジーに従って別のアクティブノード2に伝播する。
【0036】
図1に戻り、リーダーノード3は、S104で有効で十分な投票集計のセットを受け入れており、S105でどのアクティブノードにも障害がないと判断されると、リーダーノード3は、S106で投票集計を使用して提案コミットメントを生成し、S107で提案を受け入れる。さらに、リーダーノード3は、S108に示すように、通信トポロジーに従って提案コミットメントを他のノードに伝播する。
【0037】
図2のS208に示すように、アクティブノード2は提案コミットメントを受信すると、提案コミットメントに含まれるコミットメント投票集計及びコミットメントバインディングの両方が有効であるかどうかを検証し、その後、S209で対応する提案を受け入れる。
【0038】
本発明の実施形態において、リーダーノード3は、第一通信トポロジーのように構成されたトポロジーが、ノード障害のために合意に達することの信頼性がないと疑うことができる。このような判断は、
図1のS105で行うことができる。この場合、リーダーノード3は、S110に示すように、予め設定されたアルゴリズムに従って、新しい最適化された通信トポロジーとして、第一通信トポロジーとは異なる更新された第二通信トポロジーを構築する。その後、リーダーノード3は、少なくともトポロジーの変更された部分に対して、更新された第二通信トポロジーと同じ提案を使用して、ステップS103から開始される方法の実行を呼び出す(以下でさらに詳細に説明するように、フォールバックトポロジーに切り替える場合を除く)。
【0039】
S105で、同じノード障害のため第二の最適化された通信トポロジーでも合意に達することの信頼性がないと疑われる場合には、リーダーノード2は、S109で別の最適化通信トポロジー(第一通信トポロジー及び第二通信トポロジーとは異なる)を試すかどうか判断する、あるいは、フォールバックトポロジーを構築する。後者の場合、リーダーノード2は、フォールバックトポロジーと同じ提案を使用して、S103から開始する方法の実行を呼び出す。フォールバックトポロジーでは、障害のある非リーダーのアクティブノードが想定される数の場合には、リーダーノード3は、提案コミットメントを形成するために十分な投票を収集できるよう、十分な数のアクティブリーフノードと直接通信を行う。
図5に、考えられうるフォールバックトポロジーを示す。
【0040】
アクティブノード2の動作に関して、S204に示すように、アクティブノード2が新しい有効な投票集計の受信を待っているとき、又は、S208に示すように、アクティブノード2が有効な提案コミットメントを待っているときに、リーダーノード3によって決定された通信トポロジーの更新が発生し得ることに注意されたい。どちらの場合も、アクティブノード2は、S211及びS212に示すように、上述したように通常のプロセスを停止ししたり継続するといったそれぞれの場合に、S203に示すように、少なくとも通信トポロジーの変更された部分については、現在の提案を新しい通信トポロジーに従い送信する。
【0041】
パッシブノード4の動作を、
図3に例示的に示す。この動作はかなり制限されており、
図3のS301に示すように、有効な提案の受信を待機するステップと、S302に示すように、有効な提案コミットメントの受信を待機するステップが含まれる。両方が正常に受信されると、パッシブノード4はS303で提案を受け入れる。
【0042】
一実施形態では、通信トポロジーは、リーダーノードをルートとする平衡ツリーのようであってもよく、このとき、ツリーのノードはコンピューティングノードを表し、ツリーのエッジは通信パスを表す。アクティブノードに障害の疑いがある場合には、疑わしいノードをパッシブノードに置き換え、障害の可能性を通知したノードをリーフ位置に移動することによりツリーが更新される。
【0043】
一実施形態では、各アクティブノードにTEEが提供され、各アクティブノードが信頼できるアプリケーションを実行する。リーダーノードは、信頼できるアプリケーションを利用して、提案に対して固有の識別子を割り当てる(結びつける)。さらなる実施形態では、提案識別子は単調カウンタから得られる。
【0044】
さらなる実施形態では、アクティブノードは、有効な提案に対する投票を生成するために、信頼できるアプリケーションを利用する。
【0045】
さらなる実施形態では、投票は秘密分散と呼ばれる2進数として表される。さらなる実施形態では、対応する秘密分散においてビット単位のXOR演算を使用して、投票(部分的)集計が取得される。さらに別の実施形態では、投票(部分的)集計は、対応する秘密分散および/または投票集計の連結に適用される暗号化ハッシュ関数を用いて取得される。
【0046】
別のさらなる実施形態では、信頼できるアプリケーションによって、非リーダーのアクティブノード及び提案識別子ごとに秘密分散がランダムに生成される。別のさらなる実施形態では、秘密分散は、対応する提案識別子を使用して秘密鍵値から鍵導出関数を備えた信頼できるアプリケーションによって生成される。さらなる実施形態では、信頼できるアプリケーションによって、非リーダーのアクティブノードごとに秘密鍵が生成される。別のさらなる実施形態では、非リーダーの各アクティブノードの秘密鍵は、信頼できるアプリケーションによって生成される共通の秘密鍵から鍵導出関数を備えた信頼できるアプリケーションによって生成される。別のさらなる実施形態では、2ステップの鍵導出が1ステップの鍵導出に結合される。
【0047】
さらに別に実施形態では、投票及び投票集計は、対応する提案の少なくとも一部に、信頼できるアプリケーションによって生成されたデジタル署名またはメッセージ認証コードとして表される。
【0048】
さらに別の実施形態では、ノードは信頼できるアプリケーションを利用して、投票の集計が有効かどうかを検証する。さらなる実施形態では、ノードは、有効な投票集計を証明するために信頼できるアプリケーションを利用する。これにより、そのような証明書は、TEEを備えていないコンピューティングデバイスによって検証することができる。リーダーノードによって生成される上記のような投票集計証明書は、集計に対して結び付けられた提案識別子としての役割を果たす。さらなる実施形態では、投票集計証明書は、対応する提案の少なくとも一部に信頼できるアプリケーションによって生成されるデジタル署名又はメッセージ認証コードとして表されうる。さらなる実施形態では、投票集計証明書の署名又はメッセージ認証コードは、対応する投票集計の暗号ダイジェストも含む。
【0049】
本発明の多くの変形例および実施形態は、上述した説明および関連する図面に記載された教示により、本発明が関係する当業者には思い浮かぶであろう。したがって、本発明は、開示された特定の実施形態に限定されるものではなく、変形例および実施形態は添付の特許請求の範囲内に含まれることが意図されていることを理解されたい。本明細書では特定の用語が使用されているが、それらは一般的かつ説明的な意味でのみ使用されており、限定の目的では使用されていない。