(58)【調査した分野】(Int.Cl.,DB名)
ブロックチェーンシステムの第1のエンティティが、前記第1のエンティティが所与のタスクを実行するために選択されていることを、前記ブロックチェーンシステムに関連付けられた他のエンティティに対して証明することを可能にする方法であって、
第1の暗号化手順に従って、ブロックチェーンの既存のブロックのシーケンスに基づいてストリングを生成することと、
秘密鍵を用いて、前記ストリングに一意に関連付けられている証明を計算することと、
第2の暗号化手順に従って、前記証明に基づいて数量を決定することと、
前記数量が所与の閾値を満たすかを判定することと、
前記判定に応じて、前記証明を前記ブロックチェーンに伝播させることと、を含む方法。
前記第1のエンティティは、潜在的な検証者を含み、前記タスクは、前記ブロックチェーンに投稿される情報の一部が正しいことを検証することを含む、請求項1乃至3のいずれか1項に記載の方法。
前記第1のエンティティは潜在的な検証者を含み、前記タスクは、一組のトランザクションを正しく処理すること、を含む、請求項1乃至3のいずれか1項に記載の方法。
ブロックチェーンシステムの第1のエンティティが、前記第1のエンティティが所与のタスクを実行するために選択されていることを、前記ブロックチェーンシステムに関連付けられた他のエンティティに対して証明することを可能にするシステムであって、
第1の暗号化手順に従って、ブロックチェーンの既存のブロックのシーケンスに基づいてストリングを生成する手段と、
秘密鍵を用いて、前記ストリングに一意に関連付けられている証明を計算する手段と、
第2の暗号化手順に従って、前記証明に基づいて数量を決定する手段と、
前記数量が所与の閾値を満たすかを判定する手段と、
前記判定に応じて、前記証明を前記ブロックチェーンに伝播させる手段と、を備えるシステム。
【発明を実施するための形態】
【0033】
様々な実施形態の詳細な説明
本明細書で説明するシステムは、エンティティがトランザクション情報を検証および/または伝播する計算を行うことに対して単独で責任を負わないように、トランザクションの検証および伝播を分散させるためのメカニズムを提供する。代わりに、参加エンティティのそれぞれは、検証可能かつ信頼性をもってトランザクションを伝播するために行われる計算を共有する。
【0034】
図1を参照すると、図は、インターネット等のデータネットワーク24に接続されている複数のコンピューティングワークステーション22a〜22cを示している。本明細書の他の箇所でより詳細に説明するように、ワークステーション22a〜22cはネットワーク24を介して互いに通信し、分散型トランザクションの伝播および検証を提供する。ワークステーション22a〜22cが互いに通信可能であることを条件に、システムは、本明細書で説明する機能を提供することのできる任意の数のワークステーションに対応することができる。本明細書の他の箇所でより詳細に説明するように、ワークステーション22a〜22cのそれぞれは、トランザクションをシステム内の他のワークステーションのすべてに伝播し、トランザクションを検証するための処理を独立して行うことができる。
【0035】
図2は、アルゴランドシステムのラウンドrの最初のステップを図式的かつ概念的にまとめたものであり、少数の選択されたユーザのそれぞれが、r番目のブロックについて自分自身の候補を提案する。具体的には、ステップは、システムのユーザa,...,zが個々に秘密暗号くじプロセスを経ることから始まり、ブロックの提案にどのユーザが選択され、選択された各ユーザがブロックを生成する権利を与えられていることを証明するクレデンシャルを当該ユーザがどこで秘密に計算するかを決定する。
図2の実施例では、ユーザb、dおよびhのみがブロックの提案に選択され、それぞれの計算されたクレデンシャルはσ
br,1,σ
dr,a1およびσ
hr,1である。選択された各ユーザiは自分自身の提案ブロックB
irをアセンブルし、それに一時的に署名し(すなわち、後で説明するように、一時的な鍵を使ってそれに電子署名する)、自分自身のクレデンシャルと一緒にネットワークに伝播する。ラウンドのリーダーは、クレデンシャルが最も小さいハッシュを有する、選択されたユーザである。図は、リーダーがユーザdであることを示している。したがって、ユーザdの提案ブロックB
drは、バイナリ合意プロトコルへの入力として与えられるものである。
【0036】
図3は、合意に達し、提案ブロックを正式なr番目のブロックB
rとして認定するためのアルゴランドのプロセスを図式的かつ概念的にまとめたものである。アルゴランドの最初のステップは新たなブロックを提案するステップからなるため、このプロセスは第2ステップから始まる。このステップは、実際には、アルゴランドの好適なビザンチン合意プロトコルBA
★の最初のステップと同時に起こる。このプロトコルの各ステップは、秘密暗号くじによってランダムに選択されたプレーヤからなる、異なる「委員会」によって実行される(図には示していない)。したがって、各ステップを行うために選択されるユーザは全く異なることがある。BA
★のステップの数も異なることがある。
図3は、アルゴランドの2からアルゴランドのステップ8までの7つのステップを含むBA
★の実行を示す。
図3の実施例では、ステップ2を行うために選択されるユーザはa,eおよびqである。各ユーザi∈{a,e,q}はネットワークに自分のクレデンシャルσ
ir,2を伝播するが、これは、iがアルゴランドのラウンドrのステップ2でメッセージを送る権利を実際に与えられていることを証明するものであり、当該ユーザiの、このステップに適切なメッセージm
ir,sは一時的に署名される。ステップ3〜7は図示していない。最後のステップ8で、図は、ラウンドrの正式なブロックとしてB
rに関して合意に達した、対応する選択されたユーザb,fおよびxがブロックB
rの自分自身の一時的な署名(合わせて、これらの署名がB
rを認定する)および自分自身のクレデンシャルを伝播して、ステップ8で行為する権利が自分に与えられていることを証明することを示している。
【0037】
図4は、マークル木およびその認証経路のうちの1つを模式的に示す。具体的には、
図4.Aは、深さ3の完全なマークル木を示す。xが長さ≦3のバイナリストリングによって表される場合、各ノードxは、値v
xを格納する。xが長さ≦2を有する場合、v
x=H(v
x0,v
x1)である。
図4.aのマークル木について、
図4.Bは値v
010の認証経路を示す。
【0038】
図5は、深さ3の完全なバイナリツリー内で構築される、ブロックツリーで構築される最初の8個のブロックに対応するマークル木を模式的に示す。
図5.iにおいて、整数によって記されるノードはマークル木T
iに属す。i(それぞれ、i)によって記されるノードの内容は一時的なものである(それぞれ、永久的)。
【0039】
具体性のためにのみ、我々の説明において、すべてのトランザクションが支払であると仮定し、アルゴランドを金融プラットフォームとしてのみ説明することに専念する。当業者は、アルゴランドがあらゆる種類のトランザクションも同様に扱うことができることを認識するであろう。
【0040】
アルゴランドは非常にフレキシブルな設計を有し、多様な、ただし関係する方法で実施することができる。我々はそのフレキシビリティを、その一般的な設計の2つの可能な実施形態を詳述することによって例示する。かかる例示から、当業者は、あらゆる種類の他の実施態様も同様に導き出す方法を理解することができる。
【0041】
本発明の理解を助け、その様々な部分の内部相互参照を可能にするために、その提示を、番号を振って見出しを付けたセクションに分けて整理する。最初のセクションは、詳細な実施形態のどちらにも共通である。
【0042】
1 序論
マネーはますます仮想になってきている。現在、合衆国ドルの約80%は台帳記入としてしか存在していないと見積もられている。他の金融商品もそれに倣ってきている。
【0043】
起こり得るすべてのサイバー攻撃を受けず、普遍的に信頼のおける中央エンティティに頼ることができる理想的な社会では、マネーおよび他の金融取引は電子だけにできるであろう。残念ながら、そのような社会に我々は生きていない。したがって、ビットコイン等の非集中型暗号通貨およびイーサリアム(Ethereum)等の「スマートコントラクト」システムが提案されている。これらのシステムの核となるのが、支払およびコントラクトといった多様なトランザクションのシーケンスを、改ざん防止して信頼性をもって記録する共有台帳である。このような改ざん防止性を保証するために選ばれる技術がブロックチェーンである。ブロックチェーンは、暗号通貨、金融アプリケーション、およびインターネット・オブ・シングス等のアプリケーションの背後にある。ブロックチェーンベースの台帳を管理するためのいくつかの手法、すなわち、プルーフ・オブ・ワーク、プルーフ・オブ・ステーク、プラクティカル・ビザンチン・フォールト・トレランス、またはいくつかの組み合わせ、が提案されている。
【0044】
しかし、現在、台帳は管理するのに非効率的であることがある。例えば、ビットコインのプルーフ・オブ・ワークのアプローチは膨大な量の計算を必要とし、無駄が多く、スケーラビリティが低い。加えて、事実上、ごく少数の手中に権力を集中させる。
【0045】
そのため、我々は、現在の非集中型実施態様の非効率性と弱点とがない、信頼のおける侵すことのできない権限機関によって運営される集中型システムの便宜および効率を提供する、公開台帳を実施する新たな方法を提案したい。それまでに構築された台帳に基づいて、有効なトランザクションの次のブロックの構築を担当する検証者の集合を選ぶためにアルゴリズム的ランダムネス(algorithmic randomness)を使用するので、我々は、我々のアプローチをアルゴランド(Algorand)と呼ぶ。当然、我々は、このような選択がおそらく最後の最後まで改ざんや不測の事態を免れることを保証するが、最終的には例外なく不正がないこともまた保証する。
【0046】
アルゴランドのアプローチは、原則的にも事実上でもユーザの異なるクラス(ビットコインの「マイナー」および「普通ユーザ」として)を生み出さないという意味で、極めて民主的である。アルゴランドでは、「すべての権力が全ユーザの集合にある」。
【0047】
アルゴランドの、ある注目すべき特性は、その取引履歴がごく小さい確率でしか分岐しないことである(例、1兆分の1、すなわち、またはさらに10
−18)。アルゴランドは、いくつかの法律上および政治上の問題にも対処することができる。
【0048】
アルゴランドのアプローチは、ブロックチェーンに適用され、より一般的には、ブロックの改ざん防止シーケンスを生成するあらゆる方法に適用される。我々は、実際に、ブロックチェーンに代わる、またブロックチェーンよりも効率的な、独自の重要性があり得る新たな方法を提案する。
【0049】
1.1 ビットコインの仮定および技術的な課題
ビットコインは非常に巧妙なシステムであり、後続の研究を大量に呼び起こしている。しかし、課題もある。その基になっている仮定と技術的な課題とを要約してみよう。これは実際に、ビットコイン等、プルーフ・オブ・ワークに基づく基本的にすべての暗号通貨に共通するものである。
【0050】
この要約のためには、ビットコインでは、ユーザは電子署名スキームの複数の公開鍵を所有することができ、マネーは公開鍵に関連付けられており、支払は、ある公開鍵から別の公開鍵へ何らかの金額のマネーを移転する電子署名であることを思い出せば十分である。本質的に、ビットコインは処理されるすべての支払を、それぞれ複数の支払からなるブロックのチェーンB
1,B
2,...,に整理するので、任意の順番で選ばれて、その後に任意の順番でB
2の支払がくる、等、B
1のすべての支払が、有効な支払のシステムを構成する。各ブロックは、平均で、10分ごとに生成される。
【0051】
このブロックのシーケンスは、単一のブロックにおけるものであれ、いかなる変化も後続のすべてのブロックに行き渡らせ、支払履歴のあらゆる改変を発見しやすくすることを確実にするので、チェーンである。(後で述べるように、これは、各ブロックに前のブロックの暗号学的ハッシュを含むことによって実現される。)このようなブロック構造は、ブロックチェーンと呼ばれる。
【0052】
仮定:計算力の誠実な過半数
ビットコインは、悪意のエンティティ(および協調的な悪意のエンティティの連合体)が、ブロックの生成に充てられる計算能力の過半数を支配しないと仮定している。このようなエンティティは、実際には、ブロックチェーンを変更することができ、そのため、好きなように、支払の履歴を書き換えることができるであろう。特に、支払
【数1】
[この文献は図面を表示できません]
に、支払われる利益を得させた後、
【数2】
[この文献は図面を表示できません]
の一切の痕跡を「消去する」ことができるであろう。
【0053】
技術的課題1:計算の無駄な消費
ブロック生成に対するビットコインのプルーフ・オブ・ワークアプローチには、桁外れの量の計算が必要である。現在、システムにわずか数十万の公開鍵しかないが、上位500の最もパワフルなスーパーコンピュータは、ビットコインのプレーヤから要求される総計算力のわずか12.8%にしか対応できていない。万が一システムに参加するユーザが大幅に増えると、この計算の量は大きく増大するであろう。
【0054】
技術的課題2:権力の集中
現在、途方もない量の計算が必要とされているため、普通のデスクトップ(ましてや携帯電話)を使用して新たなブロックを生成しようとするユーザはマネーを失うと考える。実際、普通のコンピュータを使用して新たなブロックを計算するためには、計算を行うために必要な電力の予想コストは、期待される報酬を超える。特別に構築したコンピュータのプール(「新たなブロックをマイニングすること」以外には何もしない)を使用しなければ、新たなブロックの生成によって利益を得ることは期待できないであろう。したがって、現在、事実上、互いに素の2つのユーザのクラスがある。支払のみを行う普通ユーザと、新たなブロックを探すことだけをする専用マイニングプールである。
【0055】
そのため、現在の時点で、ブロック生成のための総計算力がわずか5つのプールにあるというのは驚くべきことではない。このような状況では、計算力の過半数が誠実であるという仮定には、説得力がなくなってくる。
【0056】
技術的課題3:曖昧さ
ビットコインでは、ブロックチェーンは必ずしも一意ではない。実際、その最新の部分はしばしば分岐する。ブロックチェーンは、例えば、あるユーザによるとB
1,...,B
k,B’
k+1,B’
k+2で、別のユーザによるとB
1,...,B
k,B”
k+1,B”
k+2,B”
k+3であるかもしれない。いくつかのブロックがチェーンに追加された後でしか、最初のk+3ブロックが全ユーザについて同じになることを合理的に確信することができない。したがって、チェーンの最後のブロックに含まれる支払をすぐに信頼することはできない。ブロックがブロックチェーンにおいて十分に深くなるかどうか、また、そのため十分に安定するかどうかを待って確認する方が、より分別があることである。
【0057】
別に、ビットコイン(脚注1参照)については、法執行および金融政策の課題も生じている。
【0058】
脚注1
ビットコインの支払が提供する(疑似)匿名性は、マネーロンダリングおよび/または個人の犯罪者もしくはテロ組織の資金調達に悪用されるかもしれない。原則的に完璧な匿名性を提供する伝統的な銀行券または金の延棒は、同じ課題をもたらすとしても、これらの通貨の物理的存在が実質的にマネーの移転を鈍らせるので、法執行機関による監視をある程度可能にする。
「マネーを印刷」できることは、非常に基本的な国家権力の1つである。そのため、原則的に、独立して流通する通貨の大量採用は、この権力を減じるおそれがある。しかし、現在、ビットコインは政府の金融政策に対する驚異とはほど遠く、そのスケーラビリティの問題のために、絶対にそうならないであろう。
【0059】
1.2 アルゴランド,簡潔な要約
設定
アルゴランドは、非常に厳しい設定でも機能する。簡単にいうと、
(a)非許可型環境および許可型環境。アルゴランドは、いかなる種類の審査も許可もなしに任意に多くのユーザがいつでもシステムに参加することを許される、完全な非許可型環境でも効率的かつセキュアに機能する。当然、アルゴランドは、許可型環境においてよりよく機能する。
(b)非常に敵対的な環境。アルゴランドは、以下のことができる非常にパワフルな敵対者に耐える。
(1)非許可型環境において、システム内のマネーの2/3が誠実なユーザに属しているとして、敵対者が望む任意のユーザを、敵対者が望む任意の時点で即座に腐敗させること。(許可型環境では、マネーに関係なく、ユーザの2/3が誠実であれば十分である。)
(2)腐敗させたユーザ全員を完全に支配し、完全に協調させること。
(3)誠実なユーザによって送られる各メッセージmが、ある時間λ
m以内にすべての(または十分多くの)誠実なユーザに届き、時間λ
mがmのサイズにのみ依存するとして、すべてのメッセージの配信のスケジュールを組むこと。
【0060】
主な性質
パワフルな敵対者の存在に関わらず、アルゴランドでは、
・必要な計算量は最小限である。
本質的に、いかに多くのユーザがシステム内に存在しようとも、1,500名のユーザのそれぞれが、たかだか数秒の計算を行わなければならない。
・新たなブロックはすぐに生成され、事実上、ブロックチェーンを絶対に離れない。
すなわち、アルゴランドのブロックチェーンは、無視できる確率でしか分岐しない(すなわち、1兆分の1未満、または10
−18)。したがって、ユーザは、ブロックが出現するや否や、その新たなブロックに含まれる支払を信用することができる。
・すべての権力はユーザ自身にある。
アルゴランドは真に分散型のシステムである。具体的には、どのトランザクションが認められるかを管理することのできる外生的なエンティティ(ビットコインの「マイナー」のような)が存在しない。
【0061】
アルゴランドの手法
1.新規かつ高速のビザンチン合意プロトコル
アルゴランドは、発明による暗号学的な、メッセージパッシングの、バイナリビザンチン合意(BA)プロトコルBA
★により新たなブロックを生成する。プロトコルBA
★はいくつかの追加の性質(これはすぐに述べる)を満たすだけでなく、非常に高速でもある。大雑把にいうと、そのバイナリ入力バージョンは3ステップループからなり、プレーヤiが単一のメッセージm
iを他のすべてのプレーヤに送る。完全な同期ネットワークで実行されると、プレーヤの2/3超が確率>1/3で誠実であれば、各ループの後、プロトコルは合意に終わる。(プロトコルBA
★が、一切の弱化なくビザンチン合意の元の定義を満たすことを強調しておく。)
【0062】
アルゴランドは、各新たなブロックに対して、我々の異なる通信モデルで、合意に達するためにこのバイナリBAプロトコルを利用する。合意されたブロックはさらに、適切な検証者の規定数の電子署名によって認定されて、ネットワークを通じて伝播される。
【0063】
2.秘密暗号くじ
非常に高速であるが、プロトコルBA
★は、数百万のユーザによってプレイされるとき、さらなる高速化から利益を得るであろう。したがって、アルゴランドは、BA
★のプレーヤを、全ユーザの集合のうちのはるかに小さい部分集合にするように選ぶ。異なる種類の権力集中の課題を避けるために、新たな各ブロックB
rは、BA
★の新たな実行を介して、選択された検証者SV
rの個別の集合によって構築され、合意される。原則的に、このような集合を選択することは、B
rを直接選択するのと同等に困難であろう。我々は、この潜在的な課題を、秘密暗号くじと名付ける新規なアプローチによって乗り切る。くじとは、資格のある個人の大きな集合からランダムに公務員を選出する慣習である。(くじは、何世紀にもわたり、例えば、アテネ、フィレンツェ、およびヴェネツィアの共和国によって実践された。現代の司法制度では、ランダムな選択は、陪審員の選出にしばしば使用される。ランダムサンプリングは、選挙についても提唱されている。)非集中型システムでは、当然、各検証者集合SV
rのメンバーをランダムに選択するために必要なランダムコインを選ぶことには問題がある。したがって、各検証者集合を、全ユーザの母集団から、自動的(すなわち、メッセージの交換が必要ない)かつランダムであることが保証されるように選択するために、暗号法に頼る。同様に、新たなブロックB
rの提案を担当するリーダーであるユーザと、リーダーによって提案されるブロックに関して合意に達することを担当する検証者集合SV
rとを選択する。本発明によるシステムは、前のブロックの内容から推論可能である何らかの情報Q
r−1を利用し、非常に強力な敵対者の存在があっても改ざんは不可能である。
【0064】
3.数量(シード)Q
r
新たなブロックB
rの構築を担当するための次の検証者集合とリーダーとを自動的に判定するために、ブロックチェーン内の最後のブロックB
r−1を使用する。このアプローチの課題は、前のラウンドでわずかに異なる支払を選ぶだけで、パワフルな敵対者が次のリーダーに対して巨大な支配力を得ることである。敵対者がシステム内のプレーヤ/マネーの1/1000だけを支配しただけでも、すべてのリーダーを悪意にすることが確実にできるであろう。(直観セクション4.1を参照。)この課題はすべてのプルーフ・オブ・ステークアプローチにとって中心的なものであり、我々の知る限りにおいて、現在まで、満足に解決されていない。
【0065】
この課題に答えるために、我々は、個別かつ慎重に定義された数量Q
rを意図的に構築して継続的に更新するが、これはおそらく、パワフルな敵対者にとって予測不可能なだけでなく、当該敵対者による影響を受けない。アルゴランドは、秘密暗号くじを介して、Q
rから、r番目のブロックの生成において特別な役割を果たすすべてのユーザを選択するため、Q
rをr番目のシードと呼ぶことがある。シードQ
rは、ブロックB
r−1から推論可能になる。
【0066】
4.秘密のクレデンシャル
新たなブロックの構築を担当する検証者集合とリーダーとを選ぶために、その時点での最後のブロックB
r−1をランダムかつ曖昧さなく使用することは十分ではない。B
r−1はB
rを生成する前に分かっていなければならないため、B
r−1から推論可能な、影響力を持つことができない最後の数量Q
r−1も知らなければならない。したがって、ブロックB
rの計算を担当する検証者とリーダーについてもそうである。このように、パワフルな敵対者は、当該検証者とリーダーとが認定するブロックを完全に支配するために、当該検証者およびリーダーがB
rに関する何らかの議論に参加する前に、その全員を直ちに腐敗させるかもしれない。
【0067】
この問題を防止するために、リーダー(および実際には検証者も)自分の役割を秘かに知るが、その役割を実際に有する全員に提供することが可能な適切なクレデンシャルを計算することができる。自分が次のブロックのリーダーであるとユーザが秘かに気づく場合、当該ユーザは、まず自分自身の提案される新たなブロックを秘密にアセンブルしてから、それを自分自身のクレデンシャルと一緒に広める(認定されることができるように)。このように、敵対者は、次のブロックのリーダーが誰かを直ちに気づいても、また、すぐにそのリーダーを腐敗させることができるとしても、敵対者が新たなブロックの選択に影響を及ぼすには遅すぎるだろう。実際、ウィキリークスが急速に広めたメッセージを力のある政府が元に戻すことができないのと同じく、敵対者はリーダーのメッセージを「取り消」すことはできない。
【0068】
後で述べるように、我々は、リーダーの一意性を保証することも、また、リーダー自身を含めて、誰がリーダーであるかを皆が確信することを保証することもできない! しかし、アルゴランドでは、曖昧さのない進行が保証される。
【0069】
5.プレーヤ代替性
リーダーは、新たなブロックを提案した後、自分の仕事が済んだため、「死」んだ方が良い(そうでなければ敵対者によって腐敗させられる)。しかし、SV
rの検証者の場合は、事はそれほど単純ではない。実際、十分に多くの署名で新たなブロックB
rの認定を担当する検証者は、まずリーダーが提案したブロックに対してビザンチン合意を実行しなければならない。問題は、それがいかに効率的でも、BA
★には複数のステップとそのプレーヤの>2/3の誠実者を要することである。これは、効率上の理由で、BA
★のプレーヤ集合が、全ユーザの集合の中からランダムに選択された小さな集合SV
rを成すため、問題である。したがって、パワフルな敵対者は、全ユーザの1/3を腐敗させることができなくても、SV
rの全メンバーを間違いなく腐敗させることができる!
【0070】
幸いなことに、メッセージをピアツーピアで伝播することによって実行されるプロトコルBA
★がプレーヤ代替性であることをこれから証明する。この新規な要件は、このプロトコルが、そのステップのそれぞれが、全く新しい、ランダムに独立して選択されたプレーヤの集合によって実行されるとしても、正確かつ効率的にコンセンサスを取ることを意味する。したがって、数百万のユーザがいれば、BA
★のステップに関連付けられているそれぞれ小さなプレーヤの集合は、ほぼ確実に次の集合と空の交わりを有する。
【0071】
加えて、BA
★の異なるステップのプレーヤの集合は、おそらく全く異なる濃度を有する。さらに、各集合のメンバーは誰が次のプレーヤの集合になるかを知らず、いかなる内部状態も秘かに渡さない。
【0072】
代替可能プレーヤの性質は、我々が想定するダイナミックで非常にパワフルな敵対者を打ち負かすのに実際に極めて重要である。多数のコンテキストおよびアプリケーションにおいて代替可能プレーヤプロトコルが極めて重要であることを証明する、と考えている。具体的には、全プレーヤの小さな部分でも腐敗させることができ、より小さいサブプロトコルのプレーヤ全員を何の困難もなく腐敗させるダイナミックな敵対者とともに、プレーヤのより大きな母集団に埋め込まれる小さなサブプロトコルをセキュアに実行するためには、この代替可能プレーヤプロトコルが極めて重要になる。
【0073】
追加の性質/手法:怠惰な誠実者
誠実なユーザは、自分の規定された命令に従うが、当該命令はオンラインであることを含み、プロトコルを実行する。アルゴランドは適度な計算および通信の要求事項のみを有するため、オンラインであることと「バックグラウンド」でプロトコルを実行することは大きな犠牲ではない。当然ながら、接続性が突然失われたり、または再起動する必要があったりすること等に起因する、誠実なプレーヤの中の少数の「不在」は自動的に黙認される(このような少数のプレーヤを一時的に悪意であると常にみなすことができるため)。しかし、指摘したいのは、アルゴランドが、誠実なユーザがほとんどの時間オフラインであるとする新たなモデルで機能するように単純に適応できる点である。我々の新たなモデルは、以下のように略式に紹介することができる。
【0074】
怠惰な誠実者
大雑把にいうと、(1)プロトコルへの参加が求められるときに、自分の規定された命令のすべてに従い、(2)プロトコルへの参加を求められることは稀であり、かつ、参加要求が適切な事前の通知をもって行われる場合に、ユーザiは、怠惰であるが誠実である。誠実さについてのこのような厳格ではない概念によって、我々は、我々が必要とするときには誠実な人がすぐに対応できることをなお一層確信することができ、アルゴランドは、これが当てはまる場合に、以下のことを保証する。すなわち、
「所与の時点で、参加するプレーヤの過半数が悪意でも、システムはセキュアに動作する。」
【0075】
2 準備
2.1 暗号プリミティブ
理想的なハッシング
我々は、任意の長さのストリングを固定長のバイナリストリングにマッピングする、効率的に計算可能な暗号学的ハッシュ関数Hに依拠するものとする。長い伝統の後、我々は、Hを、本質的に各候補ストリングsを選ばれた長さのランダムかつ独立して選択された(そして固定される)バイナリストリングH(s)にマッピングする関数である、ランダムオラクルとしてモデル化する。
【0076】
我々の説明する実施形態において、Hは256ビット長の出力を有する。実際、このような長さは、システムを効率的にするのに十分に短く、また、システムをセキュアにするのに十分に長い。例えば、我々はHを衝突耐性にしたい。すなわち、H(x)=H(y)になるような異なる2つのストリングであるxとyとを見つけにくくするべきである。Hが256ビット長の出力を持つランダムオラクルである場合、このようなストリングペアを見つけることは実に難しい。(ランダムで試して、誕生日のパラドックスに依拠しても、2
256/2=2
128回の試行が必要だろう。)
【0077】
電子署名
電子署名は、任意の秘密鍵を共有しなくても、ユーザに情報を互いに認証させる。電子署名スキームは、確率的キージェネレータG、署名アルゴリズムSおよび検証アルゴリズムVの3つの高速アルゴリズムからなる。
【0078】
セキュリティパラメータを、十分に大きい整数kとすると、ユーザiは、Gを使用して、kビットの鍵ペア(すなわち、ストリング)と、「公開」鍵pk
iと対をなす「秘密」署名鍵sk
iとを生成する。重大なことに、公開鍵はその対応する秘密鍵を「漏ら」さない。すなわち、pk
iを知っているとしても、i以外の誰も、天文学的な時間をかけなければsk
iを計算することはできない。
【0079】
ユーザiは、sk
iを使用してメッセージに電子署名する。各候補メッセージ(バイナリストリング)mについて、iは、まず、mをハッシュ化してから、入力H(m)およびsk
iにアルゴリズムSを実行して、
【数3】
[この文献は図面を表示できません]
(脚注2参照)のkビットストリングを生成する。バイナリストリング
【数4】
[この文献は図面を表示できません]
は、iによるmへの(pk
iに対する)電子署名と呼ばれ、公開鍵pk
iがコンテキストから明確である場合は、より単純にsig
i(m)で表すことができる。
【0080】
脚注2
Hは衝突耐性であるため、mに署名することによって異なるメッセージm’に「偶然に署名する」ことは実際的に不可能である。
【0081】
pk
iを知っている誰もがそれを使用して、iが生成した電子署名を検証することができる。具体的には、入力((a)プレーヤiの公開鍵pk
i、(b)メッセージm、および(c)ストリングs)、すなわち、iによるメッセージmへの電子署名とされるものに対して、検証アルゴリズムVは、YESまたはNOのいずれかを出力する。
【0082】
電子署名スキームから我々が要求する性質は次の通りである:
1.適法な署名は必ず検証される:s=sig
i(m)であれば、V(pk
i,m,s)=YESであり、かつ、
2.電子署名は偽造しにくい:sk
iを知らなければ、メッセージmについて、V(pk
i,m,s)=YESになるようなストリングsを見つけるための時間は天文学的に長い。
(強力なセキュリティ要件に従い、任意の他のメッセージの署名を取得できたとしてもこれは真実である。)
【0083】
したがって、他の誰かが自分に代わってメッセージに署名することを防止するために、プレーヤiは自分の署名鍵sk
iを秘密にしておかなければならず(したがって、用語「秘密鍵」)、自分の署名するメッセージを誰かが検証できるようにするために、iは自分の鍵pk
iを公開化することに関心を持つ(したがって、用語「公開鍵」)。
【0084】
メッセージ検索可能性を有する署名
一般に、メッセージmは、その署名sig
i(m)から取り出すことはできない。概念上便利な「メッセージ検索可能性」の性質を満たす電子署名を仮想で取り扱うために(すなわち、署名者およびメッセージが署名から容易に計算可能であることを保証するために)、我々は次のように定義する。
【数5】
[この文献は図面を表示できません]
および、pk
iが明確な場合、
【数6】
[この文献は図面を表示できません]
【0085】
一意の電子署名
我々は、次の追加性質を満たす電子署名スキーム(G,S,V)も検討する。
【0086】
3.一意性
次のようになるストリングpk’,m,sおよびs’は見つけにくい。
【数7】
[この文献は図面を表示できません]
かつ
【数8】
[この文献は図面を表示できません]
(一意性の性質は、公開鍵が適法に生成されていないストリングpk’についてもあてはまることに留意されたい。しかし、具体的には、一意性の性質は、ある者が指定の鍵ジェネレータGを使用して対となる秘密鍵skと一緒に公開鍵pkを計算し、そうしてskを知った場合、pkに関する同じメッセージの2つの異なる電子署名を見つけることも本質的に不可能であるだろうことを含意する。)
【0087】
備考
・一意の署名から検証可能なランダム関数まで
一意性の性質を有する電子署名スキームに関連し、マッピングm→H(sig
i(m))は、一意にランダムに選択された256ビットのストリングである各候補ストリングmと関連し、このマッピングの正当性は、署名sig
i(m)があれば証明することができる。
【0088】
すなわち、一意性の性質を満たす理想的なハッシングおよび電子署名スキームは、本質的に、検証可能なランダム関数(VRF)の基本的な実施態様を提供する。
【0089】
VRFは、特殊な種類の電子署名である。我々は、メッセージmのiのこのような特殊な署名を示すために、VRF
i(m)を書くことができる。一意性の性質を満たすことに加えて、検証可能なランダム関数は、十分にランダムであることを保証される出力を生成する。すなわち、VRF
i(m)は本質的にランダムであり、それが生成されるまで予測できない。対して、SIG
i(m)は、十分にランダムである必要はない。例えば、ユーザiは、SIG
i(m)が(辞書式順序で)小さい(すなわち、その最初の数ビットを必ず0とすることができるであろう)kビットストリングに必ずなるように自分の公開鍵を選ぶことができる。しかし、Hは理想的なハッシュ関数であるため、H(SIG
i(m))は必ずランダムな256ビットのストリングになることに留意されたい。我々の好適な実施形態において、一意のランダム数である各メッセージmと各ユーザiとに厳密に関連付けることができるよう、一意性の性質を満たす電子署名のハッシュ化を広範に利用する。万が一VRFを用いてアルゴランドを実施しても、H(SIG
i(m))をVRF
i(m)に置換することができる。具体的には、ユーザiは、最初にSIG
i(m)を計算してからH(SIG
i(m))を計算する必要がない(例えば、H(SIG
i(m))を数pと比較するために)。当該ユーザは、VRF
i(m)を直接計算することができるだろう。要するに、H(SIG
i(m))は、VRF
i(m)として、または、プレーヤiによって容易に計算されるが他の誰にも予測できず、iとmとに曖昧さなく関連付けられている十分にランダムな数として解釈することができることは理解されるべきである。
【0090】
・電子署名の3つの異なるニーズ
アルゴランドでは、ユーザiは次のことについて電子署名に依拠する。
(1)認証するi自身の支払
このアプリケーションでは、鍵は「長期」にすることができ(すなわち、多くのメッセージに署名するために長期間使用される)、普通署名スキームに由来する。
(2)ラウンドrのいくつかのステップsで行為する権利をiが与えられていることを証明するクレデンシャルの生成
ここでは、鍵は長期であることができるが、一意性の性質を満たすスキームに由来しなければならない。
(3)自分が行為する各ステップでiが送るメッセージの認証
ここでは、鍵は一時的でなければならない(すなわち、最初に使用した後破壊される)が、普通署名スキームに由来することができる。
【0091】
・小コストでの単純化
単純化のために、我々は、各ユーザiが単一の長期的な鍵を有することを想定する。したがって、このような鍵は、一意性の性質を有する署名スキームに由来しなければならない。このような単純さの計算コストは少ない。通例、実際に、一意の電子署名は、生成および検証のコストが普通署名よりもわずかに高いだけである。
【0092】
2.2 理想化された公開台帳
アルゴランドは、理想化された公開台帳に基づいて、以下の支払システムに近づけることに努める。
【0093】
1.初期ステータス
マネーは、個々の公開鍵に関連付けられている(ユーザによって内密に生成されて所有される)。pk
1,...,pk
jを初期の公開鍵とし、a
1,...,a
jをそのそれぞれのマネー単位の初期金額とすると、初期ステータスは次の通りであり、
【数9】
[この文献は図面を表示できません]
は、システム内の共通知識であると想定される。
【0094】
2.支払
pkを現在a≧0マネー単位を有する公開鍵とし、pk’を別の公開鍵とし、a’を、aより大きくない負ではない数とする。すると、(有効な)支払
【数10】
[この文献は図面を表示できません]
は、pkに対し、a’の通貨単位のpkからpk’への移転をいくつかの追加情報と一緒に明記する電子署名である。記号で表すと、
【数11】
[この文献は図面を表示できません]
である。上記式において、Iは、有用であるがセンシティブではないと見なされる任意の追加情報(例、時間情報および支払識別子)を表し、
【数12】
[この文献は図面を表示できません]
は、センシティブと見なされる任意の追加情報(例、支払の理由、場合によってはpkおよびpk’の所有者のアイデンティティ等)を表す。
【0095】
我々は、pk(またはその所有者)を支払人と呼び、pk’(またはその所有者)を受取人と呼び、a’を支払
【数13】
[この文献は図面を表示できません]
の金額と呼ぶ。
【0096】
支払を介した自由参加
ユーザは、自分自身の公開/秘密鍵ペアを生成することによって、参加したいときにいつでもシステムに参加できることに留意されたい。従って、上記支払
【数14】
[この文献は図面を表示できません]
で出現する公開鍵pk’は、以前にマネーを「所有」したことのない、新たに生成された公開鍵であり得る。
【0097】
3.マジック台帳
理想化されたシステムでは、すべての支払が有効であり、誰もが
【数15】
[この文献は図面を表示できません]
を確認できるように、すべての支払が「天に転記された(posted on the sky)」支払の集合の改ざん防止リストLに表示される。
【0098】
各ブロックPAY
r+1は、ブロックPAY
rの出現以降に行われたすべての支払の集合からなる。理想的なシステムでは、新たなブロックは、固定(または有限)量の時間後に出現する。
【0099】
考察
・より一般的な支払および未使用のトランザクション出力
より一般的には、公開鍵pkが金額aを所有する場合、pkの有効な支払
【数16】
[この文献は図面を表示できません]
は、Σ
ja’
j≦aである限り、鍵pk’
1,pk’
2,...,にそれぞれ金額a’
1,a’
2,...,を移転することができる。
【0100】
ビットコインおよび同様なシステムでは、公開鍵pkが所有するマネーは個別の金額に分けられ、pkが行う支払
【数17】
[この文献は図面を表示できません]
は、このように分けられた金額aの全体を移転しなければならない。pkがaの一部分a’<aのみを別の鍵に移転したい場合、未使用のトランザクション出力である残高も、別の鍵に、場合によってはpk自体に移転しなければならない。
【0101】
アルゴランドも、金額を分けた鍵を用いて機能する。しかし、アルゴランドの新規な態様に注目するために、支払およびそれに関連付けられている単一の金額を有する鍵の単純化した形態に専念することが概念的により単純である。
【0102】
・現在のステータス
理想化されたスキームは、システムの現在のステータスに関する(すなわち、各公開鍵がどれくらいのマネー単位を有するかに関する)情報を直接提供しない。この情報は、マジック台帳から推論可能である。
【0103】
理想的なシステムでは、アクティブユーザは、最新のステータス情報を継続的に格納および更新するか、そうでなければ、最初から、または当該情報を計算した最後の時点から、当該情報を再構築しなければならないであろう。(ただし、アルゴランドのユーザが現在のステータスを効率的に再構築することを可能にすべく、アルゴランドをどのように拡大するかを後で示す。)
【0104】
・セキュリティおよび「プライバシー」
電子署名は、誰も他のユーザの支払を偽造できないことを保証する。支払
【数18】
[この文献は図面を表示できません]
では、公開鍵および金額は隠されていないが、センシティブ情報
【数19】
[この文献は図面を表示できません]
は隠されている。実際、
【数20】
[この文献は図面を表示できません]
のみが
【数21】
[この文献は図面を表示できません]
に出現し、Hは理想的なハッシュ関数であるため、
【数22】
[この文献は図面を表示できません]
はランダムな256ビット値であり、したがって、
【数23】
[この文献は図面を表示できません]
が何であったかを導き出すには、それを単に推測する以上の良い方法はない。しかし、
【数24】
[この文献は図面を表示できません]
が何であったかを証明するためには(例、支払の理由を証明するために)、支払人は
【数25】
[この文献は図面を表示できません]
を明らかにするだけでよい。明らかにされた
【数26】
[この文献は図面を表示できません]
の正当性は、
【数27】
[この文献は図面を表示できません]
を計算し、それから得られた値を
【数28】
[この文献は図面を表示できません]
の最後の項と比較することによって検証することができる。実際、Hは衝突耐性であるため、
【数29】
[この文献は図面を表示できません]
であるような第2の値
【数30】
[この文献は図面を表示できません]
を見つけるのは難しい。
【0105】
2.3 基本的な概念および表記法
鍵、ユーザおよび所有者
特に明記されない限り、各公開鍵(略して「鍵」)は長期的なものであり、一意性の性質を有する電子署名スキームに関連するものである。公開鍵iは、既にシステムにある別の公開鍵jがiに支払を行うと、システムに加入する。
【0106】
特徴付けのため、鍵は擬人化される。鍵iは「彼(he)」と呼ばれ、iは正直である、iはメッセージを送受信する、等のように表現される。ユーザは鍵の同義語である。鍵をその持ち主である人から区別したい場合、それぞれ「デジタル鍵」および「所有者」という用語を使用する。
【0107】
非許可型システムと許可型システム
システムは、デジタル鍵がいつでも自由に加入し、所有者が複数のデジタル鍵を所有することができる場合に非許可型であり、それ以外は許可型である。
【0108】
一意の表現
アルゴランド内の各オブジェクトは一意の表現を有する。具体的には、各集合{(x,y,z,...):x∈X,y∈Y,z∈Z}は、予め指定されたように順序付けされる。例えば、辞書式順序で最初にxに、次にyに、等。
【0109】
同一スピードのクロック
グローバルなクロックは存在しない。むしろ、各ユーザは自分自身のクロックを有する。ユーザのクロックは一切同期させる必要はない。しかし、ユーザのクロックはすべて同一スピードを有すると想定される。
【0110】
例えば、ユーザiのクロックで午後12時のとき、別のユーザjのクロックでは午後2時30分かもしれないが、iのクロックで12時01分になるとき、jのクロックでは2時31分になる。すなわち、「1分はすべてのユーザにとって同じ(十分に、本質的に同じ)である」。
【0111】
ラウンド
アルゴランドは、ラウンドと呼ばれる論理ユニットr=0,1,...,に整理される。
【0112】
我々は、ラウンドを示すために一貫して上付き文字を使用する。非数値数量Q(例、ストリング、公開鍵、集合、電子署名、等)がラウンドrを参照することを示すために、単にQ
rと書く。Qが(数として解釈できるバイナリストリングではなく)本物の数であるときに限り、Q
(r)と書いて、記号rがQの指数として解釈できないようにする。
【0113】
ラウンドr>0(の始まり)で、全公開鍵の集合はPK
rであり、システムのステータスは次の通りである。
【数31】
[この文献は図面を表示できません]
上記式において、a
i(r)は、公開鍵iが利用できるマネーの金額である。PK
rはS
rから推論可能であり、S
rは各公開鍵iの他の成分も指定できることに留意されたい。
【0114】
ラウンド0の場合、PK
0は初期公開鍵の集合であり、S
0は初期ステータスである。PK
0およびS
0のどちらも、システムにおいて共通知識であると想定される。単純にするために、ラウンドrの始まりで、PK
1,...,PK
rおよびS
1,...,S
rもそうする。
【0115】
ラウンドrで、システムのステータスはS
rからS
r+1に移行する。記号で表すと、
【数32】
[この文献は図面を表示できません]
である。
【0116】
支払
アルゴランドにおいて、ユーザは継続的に支払を行う(また、サブセクション2.7で説明するようにそれを伝播する)。ユーザi∈PK
rの支払
【数33】
[この文献は図面を表示できません]
は、理想的なシステムと同じフォーマットおよび意味論を有する。すなわち、
【数34】
[この文献は図面を表示できません]
である。
【0117】
支払
【数35】
[この文献は図面を表示できません]
は、(1)その金額aがa
i(r)以下の場合、かつ、(2)r’<rの正式な支払集合PAY
r’に出現していない場合、ラウンドrで個々に有効である(略して、ラウンドr支払である)。(以下に説明するように、2番目の条件は、
【数36】
[この文献は図面を表示できません]
がまだ有効になっていないことを意味する。)
【0118】
iのラウンドr支払の集合は、その金額の総額がたかだかa
i(r)である場合に、集合的に有効である。
【0119】
支払集合
ラウンドr支払集合
【数37】
[この文献は図面を表示できません]
は、各ユーザiについて、
【数38】
[この文献は図面を表示できません]
内のiの支払(場合によっては、無い)が集合的に有効であるようなラウンドr支払の集合である。すべてのラウンドr支払集合の集合は
【数39】
[この文献は図面を表示できません]
である。ラウンドr支払集合
【数40】
[この文献は図面を表示できません]
は、
【数41】
[この文献は図面を表示できません]
のどの上位集合もラウンドr支払集合ではない場合に極大になる。
【0120】
我々は、支払
【数42】
[この文献は図面を表示できません]
はラウンドρ,
【数43】
[この文献は図面を表示できません]
も指定し、負ではないいくつかの一定の整数kについて、[ρ,ρ+k]以外のどのラウンドでも有効にできないことを実際に提案する(脚注3参照)。
【0121】
脚注3
これは、
【数44】
[この文献は図面を表示できません]
が「有効」になったかどうかのチェックを単純にする(すなわち、いくつかの支払集合PAY
rが
【数45】
[この文献は図面を表示できません]
を含むかどうかの判定を単純にする)。k=0のとき、
【数46】
[この文献は図面を表示できません]
かつ
【数47】
[この文献は図面を表示できません]
であれば、iは
【数48】
[この文献は図面を表示できません]
を再提出しなければならない。
【0122】
正式な支払集合
どのラウンドrについても、アルゴランドは、ラウンドの正式な支払集合である単一の(場合によっては空の)支払集合PAY
rを(後で説明するやり方で)公開で選択する。(本質的に、PAY
rは、「実際に」起こったラウンドr支払を表す。)
【0123】
理想的なシステム(およびビットコイン)と同様に、(1)新たなユーザjがシステムに入る唯一の方法は、所与のラウンドrの正式な支払集合PAY
rに属す支払の受取人になることであり、(2)PAY
rは、現行のラウンドS
rのステータスから、次のラウンドS
r+1のステータスを判定する。記号にすると、
【数49】
[この文献は図面を表示できません]
具体的には、
1.ラウンドr+1の公開鍵の集合PK
r+1は、PK
rと、初めてPAY
rの支払で出現するすべての受取人の鍵の集合との和集合からなり、
2.ユーザiがラウンドr+1に所有するマネーa
i(r+1)の金額は、a
i(r)の総額、すなわち、前のラウンドでiが所有したマネーの金額(
【数50】
[この文献は図面を表示できません]
の場合0)、およびPAY
rの支払に従いiに支払われた金額の総額である。
【0124】
要するに、理想的なシステムと同様に、各ステータスS
r+1は前の支払履歴
【数51】
[この文献は図面を表示できません]
から推論可能である。
【0125】
2.4 ブロックおよび証明済みブロック
アルゴランド
0では、ラウンドrに対応するブロックB
rは、r自体、ラウンドrの支払の集合PAY
r、説明される数量
【数52】
[この文献は図面を表示できません]
、および前のブロックのハッシュH(B
r−1)を指定する。したがって、いくつかの固定ブロックB
0から始まる従来のブロックチェーン
【数53】
[この文献は図面を表示できません]
を有する。
【0126】
アルゴランドでは、ブロックの真正性は、実際は個々の情報の「ブロック証明書」CERT
rによって保証され、これはB
rを証明済みブロック
【数54】
[この文献は図面を表示できません]
に変える。そのためマジック台帳は、証明済みブロックのシーケンス
【数55】
[この文献は図面を表示できません]
によって実施される。
【0127】
考察
後で述べるように、CERT
rは、SV
rのメンバーの過半数のものであるH(B
r)の電子署名の集合と、当該メンバーのそれぞれが実際にSV
rに所属していることの証明とを合わせたものからなる。当然、我々は、ブロック自体に証明書CERT
rを含むことができるだろうが、CERT
rを分けておく方が概念的により明解であると考える。
【0128】
ビットコインでは、各ブロックが特別な性質を満たさなければならず、すなわち、「暗号パズルの解を含まな」ければならず、そのため、ブロック生成が計算集約的になり、分岐は不可避であり、かつ、珍しいことではない。対して、アルゴランドのブロックチェーンには2つの主な利点がある。すなわち、アルゴランドのブロックチェーンは、最小限の計算で生成されることと、圧倒的に高い確率で分岐しないことである。各ブロックB
rは、ブロックチェーンに入るや否や、安全に確定的になる。
【0129】
2.5 許容可能な故障確率
アルゴランドのセキュリティを分析するために、我々は、何かがうまくいかない(例、検証者集合SV
rが誠実な過半数を持たない)ことを許容しても構わない確率Fを指定する。暗号学的ハッシュ関数Hの出力長の場合と同じく、Fもパラメータである。しかし、その場合と同じく、アルゴランドで、十分なセキュリティと十分な効率とを同時に享受することが実際に可能であることをより直観的に理解できるように、Fを具体的な値に設定することが便利だと考える。Fが望みどおりに設定することのできるパラメータであることを強調するために、第1および第2の実施形態で、我々はそれぞれ次のように設定する。
【数56】
[この文献は図面を表示できません]
および
【数57】
[この文献は図面を表示できません]
【0130】
考察
10
−12は実際には1兆分の1未満であることに留意し、このようなFの選択は我々のアプリケーションに適切であると考える。10
−12は、敵対者が誠実なユーザの支払を偽造することのできる確率ではないことを強調させてほしい。すべての支払は電子署名され、したがって、正規の電子署名が使用される場合、支払を偽造する確率は10
−12よりもはるかに低く、実際、本質的に0である。確率Fで許容しても構わない不都合なイベントは、アルゴランドのブロックチェーンが分岐することである。我々のFの設定と1分の長いラウンドの場合、フォークがアルゴランドのブロックチェーンで起こるのは、190万年で(ほぼ)1回程度と稀であると予想されることに注意されたい。対して、ビットコインでは、フォークはかなり頻繁に起こる。
【0131】
より多くを要求する人は、Fをさらに低い値に設定するかもしれない。このために、我々の第2の実施形態では、Fを10
−18に設定することを検討する。ブロックが毎秒生成されると仮定すると、10
18は、ビッグバンから現在まで、今までに宇宙が経た推定秒数である。したがって、F=10
−18の場合、ブロックが1秒で生成されるとすると、宇宙の年齢でフォークを1回経験すると見込めるだろう。
【0132】
2.6 敵対的なモデル
アルゴランドは、非常に敵対的なモデルにおいてセキュアであるように設計される。説明しよう。
【0133】
誠実なユーザと悪意のユーザ
ユーザは、自分のプロトコル命令のすべてに従い、メッセージの送受信を完璧にすることが可能である場合、誠実である。ユーザは、自分の規定された命令から任意に逸脱できる場合、悪意である(すなわち、分散コンピューティングの専門用語で、ビザンチン)。
【0134】
敵対者
敵対者とは、本物のように擬人化されて、自分の望むどのユーザも、自分の望むいかなる時にでも直ちに悪意にすることのできる、効率的な(技術的に多項式時間)アルゴリズムである(腐敗させることのできるユーザ数に上限のみが課される)。
【0135】
敵対者は、すべての悪意のユーザを完全に支配し、完璧に協調させる。当該敵対者は、当該悪意のユーザのメッセージの送受信を含め、当該悪意のユーザの代わりにあらゆるアクションを取り、当該悪意のユーザを、その規定された命令から任意の方法で逸脱させることができる。または、メッセージを送受信する腐敗したユーザを単に隔離することができる。iの悪意は、敵対者がユーザiに取ったアクションによって発生することがあるが、ユーザiが悪意であることは他の誰にも自動的には分からないことを明確にさせてほしい。
【0136】
しかし、このパワフルな敵対者は、
・無限の計算力を持つわけではなく、無視できる確率を除き、誠実なユーザの電子署名をうまく偽造することはできず、
・誠実なユーザ間のメッセージ交換に一切干渉することはできない。
【0137】
また、敵対者の、誠実なユーザを攻撃できる能力は、次の仮定のうちの1つによって制限される。
【0138】
マネーの誠実な過半数
我々は、「マネーの誠実な過半数(HMM)」の仮定の連続体を検討する。すなわち、負ではない各整数kおよび実数h>1/2について、
「HHM
k>h:すべてのラウンドrの誠実なユーザは、ラウンドr−kにおけるシステム内のすべてのマネーhよりも大きな割合を占めた。」
【0139】
考察
悪意のユーザ全員が(まるで単一のエンティティの敵対者によって支配されるように)自分たちのアクションを完璧に協調させると仮定することは、かなり悲観的な仮説である。多すぎる個人の間での完璧な協調は、実現するのが難しい。多分、協調は悪意のプレーヤの個別の集団内でしか起こらないかもしれない。しかし、悪意のユーザが享受できる協調のレベルに関して確信することはできないので、用心に越したことはない。
【0140】
敵対者が、秘密裡に、ダイナミックに、かつ、直ちにユーザを腐敗させることができると仮定することも悲観的である。結局、現実的には、ユーザの操作を完全に支配するには多少時間がかかるはずである。
【0141】
例えば、仮定HMM
k>hは、(平均して)1ラウンドが1分で実施される場合、k=120であれば、所与のラウンドにおけるマネーの過半数は少なくとも2時間は誠実者の手元に残ることになり、k=10,000であれば少なくとも1週間になる。
【0142】
HMMの仮定と、前の計算力の誠実な過半数の仮定とは、計算力がマネーで買えることから、悪意のユーザがマネーのほとんどを所有している場合、悪意のユーザが計算力のほとんどを取得することができるという意味で関連していることに留意されたい。
【0143】
2.7 通信モデル
我々は、メッセージの伝播、すなわち「ピアツゥピアゴシップ」(脚注4参照)を唯一の通信手段にすることを想定し、伝播されるすべてのメッセージが、ほぼ全員の誠実なユーザに適時に到達すると仮定する。誠実なユーザによって伝播される各メッセージmは、mの長さに依存する所与の時間量内に誠実なユーザ全員に到達すると本質的に仮定する。(実際には、mは、誠実なユーザの十分に高いパーセンテージに到達すれば十分である。)
【0144】
脚注4
本質的に、ビットコインと同様に、ユーザがメッセージmを伝播する場合、初めてmを受信するすべてのアクティブユーザiは、自分がmを転送する、適切に小さい数のアクティブユーザの「隣人」を、場合によっては隣人から受領確認を受信するまで、ランダムかつ独立して選択する。mの伝播は、初めてmを受信するユーザがいなくなると終了する。
【0145】
3 従来の設定におけるBAプロトコルBA
★
既に強調したように、ビザンチン合意はアルゴランドの重要な構成要素である。実際、アルゴランドがフォークによる影響を受けないのは、このようなBAプロトコルを使用するからである。しかし、パワフルな敵対者に対してセキュアでいるために、アルゴランドは、新たなプレーヤ代替性の制約を満たすBAプロトコルに依拠しなければならない。加えて、アルゴランドが効率的であるために、このようなBAプロトコルは非常に効率的でなければならない。
【0146】
BAプロトコルは、最初に、理想化された通信モデル、同期完全ネットワーク(SCネットワーク)について定義された。このようなモデルは、BAプロトコルのより単純な設計および分析を可能にする。したがって、このセクションでは、SCネットワークの新たなBAプロトコルであるBA
★を紹介し、プレーヤ代替性の問題は完全に無視する。プロトコルBA
★は、個別の価値のある寄与分である。実際、今まで分かっている中で最も効率的な、SCネットワーク用の暗号学的BAプロトコルである。
【0147】
これを我々のアルゴランドプロトコル内で使用するために、BA
★をわずかに変更して、我々の異なる通信モデルおよびコンテキストを考慮できるようにする。
【0148】
我々は、BA
★が動作するモデルとビザンチン合意の概念とを思い出すことから始める。
【0149】
3.1 同期完全ネットワークおよび合致する敵対者
SCネットワークでは、各整数時刻r=1,2,...に時を刻む共通のクロックがある。
【0150】
各偶数のタイムクリックrで、各プレーヤiは、自分自身を含めた各プレーヤjに単一のメッセージm
ri,j(場合によっては空のメッセージ)を即座にかつ同時に送信する。各m
ri,jは、タイムクリックr+1でプレーヤjによって、送信者iのアイデンティティとともに正しく受信される。
【0151】
ここでも、通信プロトコルで、プレーヤは、自分の規定された命令のすべてに従う場合は誠実で、そうでない場合は悪意である。すべての悪意のプレーヤは敵対者によって完全に支配され、完璧に協調され、敵対者は、具体的には、悪意のプレーヤに宛てて送られたすべてのメッセージを直ちに受信し、当該悪意のプレーヤが送信するメッセージを選ぶ。
【0152】
敵対者は、自分が望む誠実なユーザを、自分が望む奇数のタイムクリックで直ちに悪意にすることができ、悪意のプレーヤの数に対し、考えられる上限tのみが課される。すなわち、敵対者は「誠実なユーザiによって既に送信されたメッセージを妨害することはできず」、そうしたメッセージは通常通り配信される。
【0153】
敵対者は、各偶数ラウンドで、現時点では誠実なプレーヤが送信するメッセージを即座に見て、同じタイムチックで悪意のプレーヤが送信するメッセージを選ぶためにこの情報を即座に使用する追加能力も有する。
【0154】
3.2 ビザンチン合意の概念
ビザンチン合意の概念が初めて紹介されたのは、バイナリケースについて、すなわちすべての初期値が1ビットからなるときであったかもしれない。しかし、任意の初期値にすぐに拡張された。BAプロトコルによって、我々は任意の値1を意味する。
【0155】
定義 3.1.
同期ネットワークでは、
【数58】
[この文献は図面を表示できません]
をnプレーヤプロトコルにし、そのプレーヤ集合はプレーヤt間の共通知識であり、tはn≧2t+1になるような正の整数である。特殊記号⊥を含まない値Vのすべての集合(それぞれ、V={0,1})について、プレーヤのうちのたかだかt人が悪意であり、すべてのプレーヤiが初期値v
i∈Vから始まる実行において、すべての誠実なプレーヤjが確率1で停止し、値out
i∈V∪{⊥}を出力するので、少なくともσの確率で、以下の2つの条件を満たす場合、
【数59】
[この文献は図面を表示できません]
は、健全性σ∈(0,1)を有する任意の値(それぞれ、バイナリ)(n,t)ビザンチン合意プロトコルであるという。
1.合意:out
i=すべての誠実なプレーヤiのoutになるようなout∈V∪{⊥}が存在する。
2.一貫性:プレーヤi全員について、ある値v∈V,v
i=vの場合、out=v。
我々は、outを
【数60】
[この文献は図面を表示できません]
の出力といい、各out
iをプレーヤのiの出力という。
【0156】
3.3 BAの記号#
我々のBAプロトコルでは、プレーヤには、どれくらいの数のプレーヤが自分に所与のメッセージを所与のステップで送信したかを数えるよう要求される。したがって、送信されるかもしれない起こり得る各値vについて、
【数61】
[この文献は図面を表示できません]
(または、sが明確である場合、単に#
i(v))は、iがステップsでvを受信したプレーヤjの数である。
【0157】
プレーヤiが各プレーヤjからまさしく1つのメッセージを受信することを思い出すと、プレーヤの数がnの場合、すべてのiおよびsについて、
【数62】
[この文献は図面を表示できません]
である。
【0158】
3.4 新たなバイナリBAプロトコルBBA
★
このセクションでは、プレーヤの3分の2よりも多くの誠実者に依拠し、かつ非常に高速な新たなバイナリBAプロトコル、BBA
★を提示する。悪意のプレーヤがどのようなことを行おうとも、その主なループの各実行は自明に実行されるだけでなく、1/3の確率でプレーヤを合意に至らせる。
【0159】
BBA
★では、各プレーヤは、一意署名性質を満たす電子署名スキームの、自分自身の公開鍵を有する。このプロトコルは同期完全ネットワークで実行されることが意図されるため、プレーヤiが自分のメッセージのそれぞれに署名する必要はない。
【0160】
電子署名は、ステップ3で十分に一般的なランダムビットを生成するために使用される。(アルゴランドでは、電子署名は、他のすべてのメッセージを認証するためにも同様に使用される。)
【0161】
プロトコルは、最低限のセットアップ、すなわち、プレーヤの鍵とは独立した一般的なランダムストリングrが必要である。(アルゴランドでは、rは実際には数量Q
rに置換される。)
【0162】
プロトコルBBA
★は3ステップループであり、プレーヤがブール値を繰返し交換し、異なるプレーヤは異なる時点でこのループを出ることができる。プレーヤiは、いくつかのステップで、特殊値0*または特殊値1*のいずれかを伝播し、それによって、プレーヤ全員に、将来のすべてのステップでiから0および1をそれぞれ受信する「ふりをする」よう指示することによって、このループから出る。(別の言い方をすると、プレーヤjが別のプレーヤiから受信する最後のメッセージはビットbであったと仮定する。すると、iからメッセージを受信しないステップでは、jは、iが自分にビットbを送信したものとして行為する。)
【0163】
このプロトコルは、その3ステップループが何回実行されたかを表すカウンタγを使用する。BBA
★の始まりでは、γ=0である。(γをグローバルカウンタとして考えてもよいが、実際にはループが実行される度に、各個々のプレーヤによって増やされる。)
【0164】
tが、悪意のプレーヤの考えられる最大数である場合、n≧3t+1である。バイナリストリングxは、そのバイナリ表現(先頭に0が付く場合あり)がxである整数で識別され、lsb(x)はxの最下位ビットを表す。
【0165】
プロトコルBBA
★
(通信)ステップ1.[コインを0に固定するステップ]各プレーヤiはb
iを送信する。
1.1 #
i1(0)≧2t+1の場合、iはb
i=0を設定し、0*を送信し、out
i=0を出力して、停止する。
1.2 #
i1(1)≧2t+1の場合、iはb
i=1を設定する。
1.3 それ以外は、iはb
i=0を設定する。
【0166】
(通信)ステップ2.[コインを1に固定するステップ]各プレーヤiはb
iを送信する。
2.1 #
i2(1)≧2t+1の場合、iはb
i=1を設定し、1*を送信し、out
i=1を出力して、停止する。
2.2 #
i2(0)≧2t+1の場合、iはb
i=0を設定する。
2.3 それ以外は、iはb
i=1を設定する。
【0167】
(通信)ステップ3.[実際にコインを投げるステップ]各プレーヤiはb
iおよびSIG
i(r,γ)を送信する。
3.1 #
i3(0)≧2t+1の場合、iはb
i=0を設定する。
3.2 #
i3(1)≧2t+1の場合、iはb
i=1を設定する。
3.3 それ以外は、S
i={このステップ3でiに正規のメッセージを送信したj∈N}として、iは
【数63】
[この文献は図面を表示できません]
を設定し、1ずつγ
iを増やし、ステップ1に戻る。
【0168】
定理3.1.
n≧3t+1の場合は必ず、BBA
★は、健全性1のバイナリ(n,t)−BAプロトコルである。
【0169】
定理3.1の証明は、https://people.csail.mit.edu/silvio/Selected−ScientificPapers/DistributedComputation/BYZANTINEAGREEMENTMADETRIVIAL.15pdfに掲載されている。
【0170】
3.5 段階的コンセンサスおよびプロトコルGC
任意の値について、コンセンサスの概念はビザンチン合意よりもはるかに弱いことを思い出そう。
【0171】
定義3.2.
【数64】
[この文献は図面を表示できません]
を、全プレーヤの集合が共通知識で、各プレーヤiが任意の初期値v’
iを秘かに知っているプロトコルとする。
【0172】
n人のプレーヤのいるすべての実行において、そのうちのたかだかt人が悪意である場合、すべての誠実なプレーヤiが以下の3つの条件を満たすように値段階ペア(v
i,g
i)の出力を停止する場合、
【数65】
[この文献は図面を表示できません]
は(n,t)−段階的なコンセンサスであるという。ここでg
i∈{0,1,2}である。
1.すべての誠実なプレーヤiおよびjについて、|g
i−g
j|≦1である。
2.すべての誠実なプレーヤiおよびjについて、g
i,g
j>0⇒v
i=v
jである。
3.ある値vについてv’
i=・・・=v’
n=vの場合、すべての誠実なプレーヤiについて、v
i=v、かつ、g
i=2である。
【0173】
以下の2ステッププロトコルGCは、文献の段階的コンセンサスプロトコルである。セクション4.1のプロトコルアルゴランド’
1のステップと整合させるために、GCのステップをそれぞれ2および3と命名する。(実際、アルゴランド’
1の最初のステップは、他の何か、すなわち、新ブロックの提案に関係する。)
【0174】
プロトコルGC
ステップ2.各プレーヤiは、v’
iを全プレーヤに送信する。
【0175】
ステップ3.各プレーヤiは、#
i2(x)≧2t+1の場合、かつ、その場合にのみ、ストリングxを全プレーヤに送信する。
【0176】
出力の判定.各プレーヤiは、次の通り計算されたペア(v
i,g
i)を出力する。
・あるxについて、#
i3(x)≧2t+1の場合、v
i=x、かつ、g
i=2である。
・あるxについて、#
i3(x)≧t+1の場合、v
i=x、かつ、g
i=1である。
・それ以外は、v
i=⊥、かつ、g
i=0である。
【0177】
プロトコルGCは文献のプロトコルであるため、次の定理が成り立つことが分かっている。
【0178】
定理3.2.
n≧3t+1の場合、GCは(n,t)−段階的ブロードキャストプロトコルである。
【0179】
3.6 プロトコルBA
★
ここで、任意値BAプロトコルBA
★を、バイナリBAプロトコルBBA
★および段階的コンセンサスプロトコルGCにより説明する。以下、各プレーヤiの初期値はv’
iである。
【0180】
プロトコルBA
★
ステップ1および2.各プレーヤiは、入力v’
iにGCを実行して、ペア(v
i,g
i)を計算する。
【0181】
ステップ3,...各プレーヤiは、g
i=2の場合初期入力が0で、それ以外は1として、BBA
★を実行して、ビットout
iを計算する。
【0182】
出力の判定.各プレーヤiは、out
i=0の場合v
iを出力し、それ以外は⊥を出力する。
【0183】
定理3.3.
n≧3t+1の場合は必ず、BA
★は、健全性1の(n,t)−BAプロトコルである。
【0184】
証明.まず、整合性を証明してから、合意を証明する。
整合性の証明
ある値v∈Vについて、v’
i=vと仮定する。さらに、段階的コンセンサスの性質3によって、GCの実行後、すべての誠実なプレーヤは(v,2)を出力する。したがって、0は、BBA
★の実行の終了時のすべての誠実なプレーヤの初期ビットである。したがって、BA
★の実行の終了時点で、バイナリビザンチン合意の合意性質によって、すべての誠実なプレーヤについてout
i=0である。これは、BA
★における各誠実なプレーヤiの出力がv
i=vであることを含意する。
【0185】
合意の証明
BBA
★がバイナリBAプロトコルであるため、次のいずれかである。
(A)すべての誠実なプレーヤiについてout
i=1、または
(B)すべての誠実なプレーヤiについてout
i=0
【0186】
ケースAでは、すべての誠実なプレーヤはBA
★で⊥を出力し、したがって合意が成り立つ。ここでケースBを考えてみる。この場合、BBA
★の実行において、少なくとも1人の誠実なプレーヤiの初期ビットは0である。(実際、すべての誠実なプレーヤの初期ビットが1だった場合、BBA
★の整合性の性質によって、すべての誠実者jについてout
j=1になるであろう。)したがって、GCの実行後、iは、ある値vについてペア(v,2)を出力する。このように、段階的コンセンサスの性質1によって、すべての誠実なプレーヤjについてg
j>0である。したがって、段階的コンセンサスの性質2によって、すべての誠実なプレーヤjについてv
j=vである。これは、BA
★の終了時点で、すべての誠実なプレーヤjがvを出力することを含意する。ケースBでも合意は成り立つ。
【0187】
整合性および合意の両方が成り立つため、BA
★は任意値BAプロトコルである。
【0188】
プロトコルBA
★はゴシップネットワークでも機能し、実際、想定される非常に敵対的なモデルでアルゴランドがセキュアであるために極めて大事な、プレーヤ代替性の性質を満たす。
【0189】
BBA
★およびBA
★のプレーヤ代替性
ここで、プロトコルBA
★およびBBA
★が、通信がピアツーピアゴシップを介するネットワークで実行されて、プレーヤ代替性を満たすようになぜ適応できるのかについての、いくつかの直観を提供しよう。具体的にするために、ネットワークは1千万人のユーザを有し、BBA
★(またはBA
★)の各ステップxが10,000人のプレーヤの委員会によって実行され、当該プレーヤは、秘密暗号くじによりランダムに選択されて、したがってステップxでメッセージを送信する権利を与えられていることを証明するクレデンシャルを有すると仮定する。所与のステップで送信された各メッセージはステップ数を明記し、その送信者によって電子署名され、その送信者がそのステップで話す権利を与えられていることを証明するクレデンシャルを含むと仮定する。
【0190】
まず、誠実なプレーヤのパーセンテージhが2/3よりも十分に大きい(例、75%)場合、圧倒的確率で、各ステップで選択される委員会は、必要な2/3の誠実な過半数を有する。
【0191】
加えて、総勢10,000人のランダムに選択される委員会が各ステップで変わることは、BBA
★またはBA
★のいずれについても、それが正当に機能することを邪魔しない。実際、いずれのプロトコルでも、ステップsのプレーヤiは、ステップs−1で当該プレーヤiが所与のメッセージmを一緒に受信した多数の人にしか反応しない。我々はゴシップネットワークにいるので、ステップs−1で送信されるすべてのメッセージは、(この直観のために、直ちに)ステップsでプレイするために選択されたものを含め、全ユーザに到達する。ステップs−1で送信されるすべてのメッセージは、ステップ数を明記し、かつ、ステップs−1で話す許可が送信者に実際に与えられているというクレデンシャルを含む。したがって、ステップs−1でも偶然選択されていたかどうかに関係なく、ステップsでプレイするよう選択されたユーザiは、正当なステップs−1メッセージを一緒に受信した多数の人を正確にカウントすることが完璧にできる。当該ユーザiがそれまでにすべてのステップをプレイしていたかどうかは全く問題ではない。全ユーザは「同じ立場に」あり、したがって他のユーザによって容易に代替することができる。
【0192】
4 アルゴランドの2つの実施形態
述べたように、非常に高次で、アルゴランドのラウンドは理想的には以下のように進行する。まず、ランダムに選択されたユーザであるリーダーが、新たなブロックを提案して、回付する。(このプロセスは、最初に少数の潜在的リーダーを選択し、次に、少なくともある程度の時間、1人の共通のリーダーが出現することを確保することを含む。)次に、ランダムに選択されたユーザの委員会が選択され、リーダーが提案したブロックに対してビザンチン合意に達する。(このプロセスは、BAプロトコルの各ステップが、個別に選択された委員会によって実行されることを含む。)そして、合意されたブロックに、委員会メンバーの所与の閾値(T
H)が電子署名する。新たなブロックがどれかを誰もが確信するように、これらの電子署名を伝播する。(これには、署名者のクレデンシャルを回付することと、新たなブロックのハッシュだけを認証することと、そのハッシュが明確にされたら、誰もが当該ブロックを知ることを保証されることを確実にすることを含む。)
【0193】
次の2つのセクションで、基本的なアルゴランドであるアルゴランド’
1およびアルゴランド’
2の設計の2つの実施形態を提示するが、これらはそれぞれ正規の誠実なユーザの過半数の仮定の下で機能する。セクション8に、「マネーの誠実な過半数」の仮定の下で機能するように、これらの実施形態をどのように採用するかを示す。
【0194】
アルゴランド’
1は、委員会メンバーの>2/3が誠実であることのみを想定する。加えて、アルゴランド’
1では、ビザンチン合意に達するためのステップの数に、適切に高い数の上限を設けるので、合意は、固定数のステップ内で、圧倒的確率で達することが保証される(ただし、潜在的には、アルゴランド’
2のステップよりも長い時間が必要である)。最後のステップでもまだ合意に達しない極稀なケースでは、委員会が空のブロックに合意し、これは必ず有効である。
【0195】
アルゴランド’
2は、委員会の誠実なメンバーの数が必ず固定閾値t
H以上であると想定する(このことは、圧倒的確率で委員会メンバーの少なくとも2/3が誠実であることを保証する)。加えて、アルゴランド’
2は、任意の数のステップ(ただし、時間は潜在的にアルゴランド’
1よりも短い)でビザンチン合意に達する。
【0196】
当業者は、これらの基本的な実施形態の多くの変型が導き出せることを認識するだろう。特に、アルゴランド’
2があれば、ビザンチン合意に任意の数のステップで達することができるようにアルゴランド’
1を修正するのは簡単である。
【0197】
いずれの実施形態も、下記の共通コア、記号、概念およびパラメータを共有する。
【0198】
4.1 共通コア
目的
理想的には、各ラウンドrについて、アルゴランドは次の性質を満たすべきである。
1.完璧な正当性.すべての誠実なユーザは、同じブロックB
rに合意する。
2.完全性1.確率1で、ブロックB
rは、誠実なユーザによって選ばれている。
【0199】
(実際、悪意のユーザは、必ず、支払集合が自分の「友人」だけの支払を含むブロックを選ぶだろう。)
【0200】
当然、完璧な正当性を保証するだけでは自明である。誰もが必ず、空である正式な支払集合PAY
rを選ぶ。しかし、この場合、システムの完全性は0になるだろう。残念ながら、完璧な正当性と完全性1の両方を保証することは、悪意のユーザの存在下では容易ではない。したがって、アルゴランドは、より現実的な目的を採用する。略式に、誠実なユーザの割合をhとすると、アルゴランドの目標であるh>2/3は、
「圧倒的確率で、hに近い完璧な正当性および完全性を保証する。」
【0201】
完全性よりも正当性を特別扱いするのは、合理的な選択のように思える。1ラウンドで処理されない支払は次で処理できるが、可能なら、フォークを避けるべきであるからだ。
【0202】
誘導されるビザンチン合意
しばらくの間、過度な時間および通信を無視すると、完璧な正当性は以下のように保証することができるであろう。ラウンドrの始まりで、各ユーザiは自分自身の候補ブロックB
irを提案する。すると、全ユーザは、候補ブロックのうちの1つだけに関してビザンチン合意に達する。序論に従い、採用するBAプロトコルは2/3の誠実な過半数を必要とし、プレーヤ代替性である。そのステップのそれぞれは、ランダムに選択された、検証者の小さな集合によって実行することができ、検証者は内部変数を一切共有しない。
【0203】
残念ながら、このアプローチはあまり機能しない。誠実なユーザが提案する候補ブロックは、非常に高い確率で、互いに全く異なる。実際、各誠実なユーザは異なる支払を見る。したがって、異なる誠実なユーザによって見られた支払の集合が多数の重複を有していても、誠実なユーザ全員が、提案された同じブロックを構築することは考えにくい。したがって、BAプロトコルの整合性の合意は決して結ばれることがなく、唯一の合意は、正しいブロックに関するものではなく⊥に関するものであり、したがって、⊥に関する合意に必ず至り得る。
【0204】
アルゴランド’は、この問題を次のように回避する。まず、ラウンドrのリーダーl
rが選択される。次に、l
rは自分自身の候補ブロック
【数66】
[この文献は図面を表示できません]
を伝播する。最後に、ユーザは、実際にl
rから受信したブロックに関して合意に達する。l
rが誠実であれば必ず、完璧な正当性および完全性1の両方が成り立つため、アルゴランド’は、l
rがhに近い確率で誠実であることを確実にする。
【0205】
リーダーの選択
アルゴランドでは、r番目のブロックは次の形式である。
【数67】
[この文献は図面を表示できません]
【0206】
序論で既に述べたように、数量Q
r−1は、非常にパワフルな敵対者によって本質的に操作できないように慎重に構築される。(本セクションにおいて、後で、なぜそうなるかについてのいくつかの直観を提供する。)ラウンドrの始まりで、全ユーザは、それまでのブロックチェーンB
0,...,B
r−1を知り、当該ブロックチェーンから、前のラウンドすべてのユーザの集合、すなわち、PK
1,...,PK
r−1を推論する。ラウンドrの潜在的リーダーは、次の式になるようなユーザiである。
【数68】
[この文献は図面を表示できません]
【0207】
説明しよう。基となる電子署名スキームのメッセージ検索可能性の性質のために、数量Q
r−1はブロックB
r−1から推論可能であることに留意されたい。また、基となる署名スキームは一意性の性質を満たす。したがって、SIG
i(r,1,Q
r−1)は、iおよびrに一意に関連付けられているバイナリストリングである。したがって、Hはランダムオラクルであるので、H(SIG
i(r,1,Q
r−1))は、iおよびrに一意に関連付けられているランダムな256ビット長のストリングである。H(SIG
i(r,1,Q
r−1))の前の記号(「.」)は小数(我々のケースではバイナリ)点であるので、
【数69】
[この文献は図面を表示できません]
は、iおよびrに一意に関連付けられている0から1までの間のランダムな256ビット数のバイナリ展開である。したがって、r
iがp以下である確率は本質的にpである。
【0208】
確率pは、圧倒的(すなわち、1−F)確率で、少なくとも1人の潜在的検証者が誠実であるように選ばれる。(事実、pは、そのような確率が最小になるように選ばれる。)
【0209】
iの署名を計算することができるのはiだけであるため、自分がラウンド1の潜在的検証者であるかどうかを判定できるのはiだけであることに留意されたい。しかし、自分自身のクレデンシャル
【数70】
[この文献は図面を表示できません]
を明らかにすることによって、iは、ラウンドrの潜在的検証者であることを誰に対しても証明することができる。
【0210】
リーダーl
rは、ハッシュ化されたクレデンシャルが他のすべての潜在的リーダーjのハッシュ化されたクレデンシャル、すなわち
【数71】
[この文献は図面を表示できません]
よりも小さい潜在的リーダーと定義される。
【0211】
悪意のl
rは自分のクレデンシャルを明らかにしないかもしれないので、ラウンドrの正当なリーダーは決して知られない可能性があること、また、ありそうもないタイを禁止すると、l
rが実際にラウンドrの唯一のリーダーであることに留意されたい。
【0212】
最後に、重要な詳細を提起させてほしい。ユーザiは、少なくともk回のラウンドの間システムに所属している場合にのみ、ラウンドrの潜在的リーダー(ひいてはリーダー)になることができる。このことは、Q
rの操作不可能性および将来のすべてのQ数量を保証する。事実、潜在的リーダーのうちの1人が実際にQ
rを判定する。
【0213】
検証者の選択
ラウンドrの各ステップs>1は、検証者の小さな集合SV
r,sによって実行される。ここでも、各検証者i∈SV
r,sは、既にrよりも前にシステムのk回のラウンドにいたユーザの中から、かつ、ここでも特殊な数量Q
r−1を介して、ランダムに選択される。具体的には、i∈PK
r−kは、次の式が成り立つ場合、SV
r,sの検証者である。
【数72】
[この文献は図面を表示できません]
【0214】
ここでも、iだけが自分がSV
r,sに所属しているかどうかを知っているが、そうである場合、iは、自分のクレデンシャル
【数73】
[この文献は図面を表示できません]
を提示することによってそのことを証明できるであろう。検証者i∈SV
r,sは、ラウンドrのステップsでメッセージm
ir,sを送信し、このメッセージに自分のクレデンシャルσ
ir,sを含めて、m
ir,sが適法なステップsのメッセージであることを次のステップの検証者が認識できるようにする。
【0215】
確率p’は、SV
r,sにおいて、#goodを誠実なユーザの数にし、#badを悪意のユーザの数にして、圧倒的確率で次の2つの条件が成り立つことを確保するように選ばれる。
実施形態アルゴランド’
1の場合:
(1)#good>2・#bad、かつ、
(2)#good+4・#bad<2n、ここで、nはSV
r,sの期待濃度である。
実施形態アルゴランド’
2の場合:
(1)#good>t
H、かつ、
(2)#good+2#bad<2t
H、ここで、t
Hは指定の閾値である。
【0216】
上記条件は、十分に高い確率で、(a)BAプロトコルの最後のステップで、新たなブロックB
rに電子署名する少なくとも所与の数の誠実なプレーヤがいること、(b)ラウンドあたり1ブロックだけが必要な署名数を有することができること、および、(c)使用されたBAプロトコルは(各ステップで)所要の2/3の誠実な過半数を有することを含意する。
【0217】
ブロック世代の明確化
ラウンドrのリーダーl
rが誠実である場合、対応するブロックは次の形式である。
【数74】
[この文献は図面を表示できません]
上記式において、支払集合PAY
rは極大である。(全プレーヤは、定義上、集合的に有効であることを思い出していただきたい。)
【0218】
そうでなければ(すなわち、l
rが悪意である場合)、B
rは、次の2つの可能な形式のうちの一方を有する。
【数75】
[この文献は図面を表示できません]
および
【数76】
[この文献は図面を表示できません]
【0219】
最初の形式において、PAY
rは(必ずしも極大ではない)支払集合であり、
【数77】
[この文献は図面を表示できません]
となり得る。さらに、iはラウンドrの潜在的リーダーである。(ただし、iはリーダーl
rではないかもしれない。l
rが自分のクレデンシャルを秘密にしておき、自分を明かさない場合には、実際にそうなるだろう。)
【0220】
2番目の形式は、BAプロトコルのラウンドrの実行時、すべての誠実なプレーヤがデフォルト値を出力するときに生じ、これは、我々のアプリケーションにおいては空のブロックB
εrである。(定義上、BAプロトコルの可能な出力は、総称的に⊥で表されるデフォルト値を含む。セクション3.2を参照のこと。)
【0221】
支払集合はどちらのケースでも空であるが、
【数78】
[この文献は図面を表示できません]
およびB
εrは統語論的に異なるブロックであり、2つの異なる状況、それぞれ、「BAプロトコルの実行時にすべてが十分にスムーズにいった」および「BAプロトコルで何かがうまくいかなかったので、デフォルト値が出力された」が生じることに留意されたい。
【0222】
ここで、ブロックB
rの世代がアルゴランド’のラウンドrでどのように進行するのかを直観的に説明しよう。最初のステップで、各適格プレーヤ、すなわち、各プレーヤi∈PK
r−kは、自分が潜在的リーダーであるかどうかをチェックする。そうである場合、iは、それまでに自分が見てきた支払のすべておよび現行のブロックチェーンB
0,...,B
r−1を使用して、最大支払集合PAY
irを秘密で準備し、候補ブロックB
r=(r,PAY
ir,SIG
i(Q
r−1),H(B
r−1))を秘密でアセンブルするよう求められる。すなわち、当該プレーヤiはB
irに、その第2成分として、ちょうど準備された支払集合を含めるだけでなく、その第3成分として、最後のブロックB
r−1の第3成分であるQ
r−1の自分自身の署名も含める。最後に、当該プレーヤiは、自分のラウンドrステップ1メッセージm
ir,1を伝播し、これには、(a)自分の候補ブロックB
ir、(b)自分の候補ブロックの自分の正規の署名(すなわち、B
irのハッシュの署名)、および(c)自分が本当にラウンドrの潜在的検証者であることを証明する自分自身のクレデンシャルσ
ir,1を含む。
【0223】
(誠実者iが自分のメッセージm
ir,1を生成するまで、敵対者は、iが潜在的検証者であることの手がかりを持たないことに留意されたい。万が一誠実な潜在的リーダーを腐敗させることを望んでも、敵対者は、ランダムな誠実なプレーヤを腐敗させるのも同然である。しかし、一旦m
ir,1を見てしまえば、そこにiのクレデンシャルが含まれているので、敵対者は、iを知り、腐敗させることができるであろう。だが、敵対者は、急速に伝播されるm
ir,1がシステム内の全ユーザに到達するのを妨げることはできない。)
【0224】
第2ステップでは、選択された各検証者j∈SV
r,2は、ラウンドのリーダーを識別しようとする。具体的には、jは、受信した正規のステップ1メッセージm
ir,1に含まれるステップ1クレデンシャル
【数79】
[この文献は図面を表示できません]
を取得し、そのすべてをハッシュ化する、すなわち、
【数80】
[この文献は図面を表示できません]
を計算し、そのハッシュが辞書式順序で最小であるクレデンシャル
【数81】
[この文献は図面を表示できません]
を見つけ、l
jrをラウンドrのリーダーとみなす。
【0225】
検討される各クレデンシャルはQ
r−1の電子署名であること、SIG
i(r,1,Q
r−1)はiとQ
r−1とによって一意に判定されること、Hはランダムオラクルであること、したがって、各H(SIG
i(r,1,Q
r−1)はラウンドrの各潜在的リーダーiに一意な、ランダムな256ビット長のストリングであることを思い出していただきたい。
【0226】
このことから、我々は、256ビットストリングQ
r−1がそれ自体ランダムかつ独立して選択された場合、ラウンドrのすべての潜在的リーダーのハッシュ化されたクレデンシャルもそうなるであろうと結論付けることができる。事実、すべての潜在的リーダーは十分に定義されているため、そのクレデンシャルも同様である(実際に計算されるかどうかは問わない)。さらに、ラウンドrの潜在的リーダーの集合はラウンドr−kのユーザのランダムな部分集合であり、誠実な潜在的リーダーiは、iのクレデンシャルを含む自分のメッセージm
irを必ず正規に構築して伝播する。このように、誠実なユーザのパーセンテージがhであるので、悪意の潜在的リーダーがどのようなことを行おうとも(例、自分自身のクレデンシャルを明らかにする、または隠す)、最小値の、ハッシュ化された潜在的リーダーのクレデンシャルは誠実なユーザに属し、当該誠実なユーザは必然的に、ラウンドrのリーダーl
rとして全員に識別される。したがって、256ビットストリングQ
r−1がそれ自体ランダムかつ独立して選択される場合、まさしくhの確率で、(a)リーダーl
rは誠実であり、かつ、(b)誠実なステップ2検証者j全員についてl
j=l
rである。
【0227】
現実には、ハッシュ化されたクレデンシャルは、確かに、ランダムに選択されるが、ランダムかつ独立して選択されないQ
r−1に依存する。しかし、ラウンドのリーダーがhに十分に近い確率h’、すなわちh’>h
2(1+h−h
2)で誠実であることを保証するのにQ
r−1が十分に操作不可能であることが、慎重な分析により保証される。例えば、h=80%であれば、h’>0.7424である。
【0228】
ラウンドのリーダーを識別したら(リーダーl
rが誠実なときに検証者が正当に行う)、ステップ2検証者のタスクは、初期値として当該検証者がリーダーのブロックだと考えるものを使用して、BA
★の実行を始めることである。実際には、必要な通信量を最小限にするために、検証者j∈SV
r,2は、ビザンチンプロトコルへのその入力値v’
jとして、(ユーザjがリーダーだと考える)l
rから実際に受信したブロックB
jを使用するのではなく、リーダー、ただしそのブロックのハッシュ、すなわち、v’
j=H(B
i)を使用する。したがって、BAプロトコルの終了時に、最後のステップの検証者は所望のラウンドrブロックB
rを計算するのではなく、H(B
r)を計算(認証および伝播)する。したがって、H(B
r)がBAプロトコルの最後のステップの十分に多くの検証者によって電子署名されるため、システム内のユーザは、H(B
r)が新たなブロックのハッシュであることを認識する。しかし、ユーザはブロックB
r自体も検索しなければならず(または、実行がかなり非同期であるため、待たなければならず)、これによりプロトコルは、敵対者がどのようなことをしようとも、実際に利用可能であることを確実にする。
【0229】
非同期性およびタイミング
アルゴランド’
1およびアルゴランド’
2は、有意な程度の非同期性を有する。そうするのは、敵対者が、伝播されるメッセージの配信の予定を組むことに大きな自由度を有するからである。加えて、ラウンドのステップの総数に上限を設けるかどうかを問わず、実際に取られるステップの数による分散寄与率がある。
【0230】
ユーザiは、B
0,...,B
r−1の証明書を知るや否や、Q
r−1を計算して、ラウンドrに対する作業を開始し、ラウンドrの何らかのステップsにおいて自分が潜在的リーダーかどうか、または検証者かどうかをチェックする。
【0231】
iはステップsで行為しなければならないと仮定すると、上述の非同期性に鑑みて、iは、自分が行為する前に十分な情報を有することを確実にするために様々な戦略に頼る。
【0232】
例えば、当該ユーザiは、前のステップの検証者から少なくとも所与の数のメッセージを受信するのを待つ(アルゴランド’
1のときのように)か、または、前のステップの十分に多くの検証者のメッセージを受信することを確保するための十分な時間の間、待つ(アルゴランド’
2のときのように)。
【0233】
シードQ
rおよびルックバックパラメータk
数量Q
rは、敵対者にとって十分に操作不可能にすれば足りるが、理想としては、ランダムかつ独立しているべきであることを思い出していただきたい。
【0234】
一見すると、H(PAY
r−1)と同時に起こるようにQ
r−1を選べるであろう。しかし、要素分析から、この選択メカニズム(脚注5参照)を悪意のユーザが利用できることが明らかになった。いくらかの追加の努力から、従来のブロック数量に基づく無数の他の代替物は、悪意のリーダーが非常に頻繁に出現するのを確実にするために敵対者が容易に悪用できることが分かる。我々は代わりに具体的かつ帰納的に我々の全く新しい数量Q
rを定義して、敵対者によって操作不可能であることを証明できるようにする。すなわち、
B
rが空ブロックではない場合、
【数82】
[この文献は図面を表示できません]
であり、そうでなければ
【数83】
[この文献は図面を表示できません]
である。
【0235】
脚注5
我々は、ラウンドr−1の始めにいる。したがって、Q
r−2=PAY
r−2は公開で知られ、敵対者は、自分が支配する潜在的リーダーが誰であるかを秘かに知る。敵対者がユーザの10%を支配し、非常に高い確率で、悪意のユーザwがラウンドr−1の潜在的リーダーであると仮定する。すなわち、H(SIG
w(r−2,1,Q
r−2))が非常に小さいので、誠実な潜在的リーダーが実際にラウンドr−1のリーダーになるということはとても起こりそうにないと仮定する。(我々は秘密暗号くじメカニズムにより潜在的リーダーを選んだため、敵対者は誰が誠実な潜在的リーダーかを知らないことを思い出していただきたい。)そのため、敵対者は、自分が望む支払集合PAY’を選び、それをラウンドr−1の正式な支払集合にさせるという羨ましい立場にいる。しかし、当該敵対者はさらに多くのことを行える。当該敵対者は、高い確率で、(
*)自分の悪意のユーザのうちの1人をラウンドrのリーダーにもすることも確実にすることができるので、PAY
rが何になるかを自由に選択することができる。(等々。少なくともしばらくの間、すなわち、これらの高確率イベントが現実に起こる限り。)保証するために(
*)、敵対者は次のように行為する。PAY’を、敵対者がラウンドr−1について好む支払集合にさせる。次に、当該敵対者はH(PAY’)を計算して、いく人かの既に悪意のプレーヤzについて、SIG
z(r,1,H(PAY’))は特に小さいかどうか、すなわち、非常に高い確率でzがラウンドrのリーダーになるのに十分に小さいかどうかをチェックする。そうである場合には、当該敵対者はwに、自分の候補ブロックをB
ir−1=(r−1,PAY’,H(B
r−2))にするように選ぶことを指示する。そうでなければ、当該敵対者は、他の2人の悪意のユーザxおよびyに、新たな支払
【数84】
[この文献は図面を表示できません]
を次から次に、いく人かの悪意のユーザzについて(または、いく人かの固定ユーザzについても)
【数85】
[この文献は図面を表示できません]
が特に小さくなるまで、生成を続けさせる。この実験は、程なくして終わるだろう。そして、この実験が終わると、敵対者はwに、候補ブロック
【数86】
[この文献は図面を表示できません]
を提案するように求める。
【0236】
このようなQ
rの構築がなぜ機能するかの直観は、次の通りである。しばらくの間、Q
r−1が真にランダムかつ独立して選択されると仮定する。その場合、Q
rはそのようになるだろうか? l
rが誠実であるとき、答えは(大雑把にいうと)イエスである。そうなるのは、
【数87】
[この文献は図面を表示できません]
がランダム関数だからである。しかし、l
rが悪意のとき、Q
rはQ
r−1およびl
rから一義的に定義されなくなる。Q
rについては、少なくとも2つの別々の値がある。1つは、
【数88】
[この文献は図面を表示できません]
になるように続き、もう1つはH(Q
r−1,r)である。まず、2つ目の選択肢はやや恣意的であるが、2つ目の選択肢が絶対的に義務的であることを論じさせてほしい。この理由は、悪意のl
rが必ず、全く異なる候補ブロックを第2ステップの誠実な検証者に受信させることができるためである。(脚注6参照)一旦そうなると、ラウンドrのBAプロトコルにより最終的に合意されたブロックがデフォルトになること、したがって、Q
r−1の誰の電子署名も含まないことを確保するのは簡単である。しかし、システムは続けなければならず、このために、ラウンドrのリーダーが必要である。このリーダーが自動的にかつオープンに選択される場合、敵対者は自明に当該リーダーを腐敗させる。同じプロセスで前のQ
r−1によって選択される場合、ラウンドr+1でl
rが再びリーダーになる。我々は同じ秘密暗号くじメカニズムを使用するよう特に提案するが、新たなQ数量、すなわちH(Q
r−1,r)に適用される。この数量をHの出力にすることによって、出力がランダムであることを保証し、rをHの第2入力として含むことによって、Hの他のすべての使用は単一入力または少なくとも3つの入力のいずれかを有するので、このようなQ
rが独立して選択されることを「保証する」。ここでも、我々の特定的な代替Q
rの選択肢は問題ではなく、問題なのはl
rがQ
rについて2つの選択肢を有することであり、したがって当該l
rは、別の悪意のユーザを次のリーダーとする機会を2倍にすることができる。
【0237】
脚注6
例えば、単純にしておくために(ただし極度に)、「第2ステップの時間が終了しそうなとき」、l
rは異なる候補ブロックB
iを各ユーザiに直接電子メール送信することができるであろう。このように、誰がステップ2の検証者であろうとも、全く異なるブロックを受信したことになる。
【0238】
Q
rの選択肢は、悪意のl
rを支配する敵対者についてはさらに数多くあり得る。例えば、x,yおよびzを、ラウンドrの3人の悪意の潜在的リーダーとし、
【数89】
[この文献は図面を表示できません]
かつ、H(σ
zr,1)が特に小さくなるようにする。すなわち、すべての誠実な潜在的リーダーのハッシュ化されたクレデンシャルよりもH(σ
zr,1)が小さくなる可能性が十分になるように小さくする。そして、xに対して自分のクレデンシャルを隠すように求めることによって、敵対者には、yをラウンドr−1のリーダーにする可能性が十分にある。このことは、当該敵対者が、Q
rについての別の選択肢、すなわち、H(SIG
y(Q
r−1),r)を有することを含意する。同様に、敵対者は、xおよびyの両方に対してそのクレデンシャルを与えずにおくよう求めて、zをラウンドr−1のリーダーにさせるようにすることもでき、Q
rについての別の選択肢、すなわち、H(SIG
z(Q
r−1),r)を得る。
【0239】
しかし、当然ながら、敵対者が誠実な潜在的ユーザの電子署名のハッシュを予測することができないので、これらおよび他の選択肢のそれぞれは、失敗する可能性がゼロではない。
【0240】
慎重なマルコフ連鎖のような分析から、ラウンドr−1で敵対者がたとえどのような選択肢を取ることを選ぶにしても、当該敵対者は、システム内に新たなユーザを投入することができない限り、誠実なユーザをラウンドr+40のリーダーにする確率をhよりはるかに低くすることはできない。これが、ラウンドrの潜在的リーダーを、ラウンドr−kに既に存在しているユーザにすることを我々が要求する理由である。これは、ラウンドr−kで、敵対者は誠実なユーザがラウンドrのリーダーになる確率を大幅に改変することができないことを確実にする方法である。事実、敵対者がラウンドr−kからラウンドrでシステムにどのようなユーザを加えようとも、彼らはラウンドrの潜在的リーダー(ましてやリーダー)になるには不適格である。このため、ルックバックパラメータkは、最終的にはセキュリティパラメータである。(ただし、セクション7で見るように、一種の「便利なパラメータ」になることもできる。)
【0241】
一時的な鍵
我々のプロトコルの実行は、無視できる確率を除き、フォークを生成することができないが、敵対者は、適法なブロックrが生成された後で、r番目のブロックでフォークを生成することはできるであろう。
【0242】
大まかにいうと、一旦B
rが生成されると、敵対者は、ラウンドrの各ステップの検証者が誰であるかを知ったことになる。そのため、当該敵対者は当該検証者全員を腐敗させ、当該検証者に新たなブロック
【数90】
[この文献は図面を表示できません]
を認定することを義務付けることができるであろう。この偽ブロックは適法なブロックの後でしか伝播させられないため、注意を払っているユーザは騙されないであろう(脚注7参照)。それでもなお
【数91】
[この文献は図面を表示できません]
は統語論的に正しいであろうが、我々は、製造されるのを防ぎたい。
【0243】
脚注7
大手TVネットワークのニュースアンカーを腐敗させて、クリントン長官が直近の大統領選挙に勝ったことを示すニュース映画を制作して、今日放送することを考えてみる。我々のほとんどは、それがいたずらであることに気づくであろう。しかし、昏睡状態から覚めた誰かは騙される可能性がある。
【0244】
我々は、新ルールによってそのようにする。本質的に、ラウンドrのステップsの検証者集合SV
r,sのメンバーは、自分のメッセージに電子署名するために一時的な公開鍵pk
ir,sを使用する。これらの鍵は1度しか使用できず、それに対応する秘密鍵sk
ir,sは、一旦使用されると破壊される。このように、検証者が後に腐敗させられる場合、敵対者は、検証者が元々署名しなかった他のものに署名させることはできない。
【0245】
当然ながら、我々は、敵対者が新たな鍵
【数92】
[この文献は図面を表示できません]
を計算するのが不可能であることを確実にし、それがステップsで使用するための検証者の正しい一時的な鍵i∈SV
r,sであることを誠実なユーザに確信させなければならない。
【0246】
4.2 共通の記号、概念およびパラメータのまとめ
記号
・r≧0:現在のラウンド番号。
【0247】
・s≧1:ラウンドrにおける現在のステップ番号。
【0248】
・B
r:ラウンドrで生成されたブロック。
【0249】
・PK
r:ラウンドr−1の終わりまで、および、ラウンドrの始まりにおける公開鍵の集合。
【0250】
・S
r:ラウンドr−1の終わりまで、および、ラウンドrの始まりにおけるシステムのステータス(脚注8参照)。
【0251】
脚注8
同期しないシステムでは、「ラウンドr−1の終わり」および「ラウンドrの始まり」という概念は慎重に定義する必要がある。数学的には、PK
rおよびS
rは初期ステータスS
0およびブロックB
1,...,B
r−1から計算する。
【0252】
・PAY
r:B
rに含まれる支払集合。
【0253】
・l
r:ラウンドrのリーダー。l
rはラウンドr支払集合PAY
rを選ぶ(そして、次のQ
rを判定する)。
【0254】
・Q
r:ラウンドrのシードで、ラウンドrの終わりに生成され、ラウンドr+1の検証者を選ぶために使用される数量(すなわち、バイナリストリング)。Q
rはブロックの支払集合とは独立しており、l
rが操作することはできない。
【0255】
・SV
r,s:ラウンドrのステップsのために選ばれた検証者の集合。
【0256】
・SV
r:ラウンドrのために選ばれた検証者の集合、SV
r=∪
s≧1SV
r,s。
【0257】
・MSV
r,sおよびHSV
r,s:それぞれ、SV
r,sにおける悪意の検証者の集合および誠実な検証者の集合。MSV
r,s∪HSV
r,s=SV
r,s、かつ、
【数93】
[この文献は図面を表示できません]
【0258】
・
【数94】
[この文献は図面を表示できません]
および
【数95】
[この文献は図面を表示できません]
:それぞれ、s>1の場合、各SV
r,1における潜在的リーダーの期待数、および各SV
r,sにおける検証者の期待数。
我々は、s>1の場合、SV
r,1には少なくとも1人の誠実なメンバーを必要とするが、各SV
r,sには少なくとも誠実なメンバーの過半数を必要とするため、n
1<<nであることに注意されたい。
【0259】
・h∈(0,1):2/3より大きい定数。hはシステムにおける誠実者の比率。すなわち、使用する仮定によって、各PK
rにおける誠実なユーザまたは誠実なマネーの部分は少なくともhである。
【0260】
・H:ランダムオラクルとしてモデル化された暗号学的ハッシュ関数。
【0261】
・⊥:Hの出力と同じ長さの特殊ストリング。
【0262】
・F∈(0,1):許容される誤差確率を指定するパラメータ。確率≦Fは「無視できる」と見なされ、確率≧1−Fは「圧倒的」と見なされる。
【0263】
・p
h∈(0,1):ラウンドrのリーダーl
rが誠実である確率。理想的にはp
h=hである。敵対者が存在するときは、p
hの値は分析によって判定される。
【0264】
・
【数96】
[この文献は図面を表示できません]
:ルックバックパラメータ。すなわち、ラウンドr−kはラウンドrの検証者が選ばれるところである。すなわち、SV
r⊆PK
r−k(脚注9参照)。
【0265】
脚注9
厳密にいうと、「r−k」は「最大{0,r−k}」であるべきである。
【0266】
・p
1∈(0,1):ラウンドrの最初のステップについて、ラウンドr−kのユーザは、確率
【数97】
[この文献は図面を表示できません]
でSV
r,1に入るように選ばれる。
【0267】
・p∈(0,1):ラウンドrの各ステップs>1について、ラウンドr−kのユーザは、確率
【数98】
[この文献は図面を表示できません]
でSV
r,sに入るように選ばれる。
【0268】
・CERT
r:B
rの証明書。ラウンドrの正規の検証者からのH(B
r)のt
H署名の集合である。
【0269】
・
【数99】
[この文献は図面を表示できません]
は証明済みブロックである。
ユーザiは、当該ユーザiが証明済みブロックの両方の部分を所有している(かつ、検証がうまくいく)場合にB
rを知る。異なるユーザが見るCERT
rは異なるかもしれないことに留意されたい。
【0270】
・
【数100】
[この文献は図面を表示できません]
:ユーザiがB
rを知る(現地)時刻。アルゴランドプロトコルでは、各ユーザは自分自身のクロックを有する。異なるユーザのクロックは、同期させる必要はないが、同じ速度でなければならない。分析の目的でのみ、我々は基準クロックを考慮し、それに対するプレーヤの関連時刻を測定する。
【0271】
・α
ir,sおよびβ
ir,s:それぞれ、ユーザiがラウンドrのステップsの実行を開始する(現地)時刻および終了する(現地)時刻。
【0272】
・Λおよびλ:本質的に、それぞれアルゴランドプロトコルのステップ1を実行するために必要な時間と他のステップに必要な時間とについての上限。
パラメータΛは、単一の1MBブロックを伝播するために必要な時間に上限を設ける。
パラメータλは、ステップs>1で検証者ごとに1つの小さなメッセージを伝播するために必要な時間に上限を設ける。
我々は、Λ≦4λと仮定する。
【0273】
概念
・検証者の選択
各ラウンドrおよびステップs>1について、
【数101】
[この文献は図面を表示できません]
である。各ユーザi∈PK
r−kは、自分の長期鍵を使用して自分の署名を秘かに計算し、i∈SV
r,sかどうかを決定する。i∈SV
r,sの場合、SIG
i(r,s,Q
r−1)は、iの(r,s)クレデンシャルであり、簡潔にσ
ir,sで表される。
ラウンドrの最初のステップについて、SV
r,1およびσ
ir,1は同様に定義され、pはp
1に置換される。SV
r,1の検証者は潜在的リーダーである。
【0274】
・リーダーの選択
すべての潜在的リーダーj∈SV
r,1について、H(σ
ir,1)≦H(σ
jr,1)の場合、ユーザi∈SV
r,1は、ラウンドrのリーダーである。2人のプレーヤのクレデンシャルのハッシュが比較される場合は必ず、起こりそうにないタイのイベントでは、プロトコルは必ず、潜在的リーダー(の長期公開鍵)に従って辞書式順序でタイをブレークする。
定義上、プレーヤl
rのクレデンシャルのハッシュ値は、PK
r−kの全ユーザの中で最小でもある。潜在的リーダーは、他の潜在的リーダーのクレデンシャルを見なければ、自分がリーダーかどうかを秘かに決定することはできないことに留意されたい。
ハッシュ値はランダムで一様であるため、SV
r,1が空ではない場合、l
rは必ず存在し、少なくともhの確率で誠実である。パラメータn
1は、各SV
r,1が圧倒的確率で空ではないことを確保するのに十分に大きい。
【0275】
・ブロック構造
空ではないブロックは形式
【数102】
[この文献は図面を表示できません]
をとり、空のブロックは、形式
【数103】
[この文献は図面を表示できません]
をとる。
このラウンドで支払が発生していない場合、またはリーダーが悪意である場合には、空ではないブロックはまだ空の支払集合PAY
rを含んでいるかもしれないことに留意されたい。しかし、空ではないブロックは、l
rのアイデンティティであるそのクレデンシャル
【数104】
[この文献は図面を表示できません]
および
【数105】
[この文献は図面を表示できません]
は、すべて適時に明らかにされたことを含意する。プロトコルは、リーダーが誠実である場合、ブロックは圧倒的確率で空ではないことを保証する。
【0276】
・シードQ
r
B
rが空ではない場合、
【数106】
[この文献は図面を表示できません]
であり、そうでなければ
【数107】
[この文献は図面を表示できません]
である。
【0277】
パラメータ
・様々なパラメータ間の関係
−ラウンドrの検証者および潜在的リーダーはPK
r−kのユーザから選択され、ここで、kは、敵対者がラウンドr−k−1に遡ってQ
r−1をFよりも良い確率で予測できないように選ばれる。そうでなければ、敵対者は、ラウンドr−kについて悪意のユーザを導入することができ、その全員が、ラウンドrで潜在的リーダー/検証者になり、敵対者が望むいくつかのステップsについて、SV
r,sに悪意のリーダーまたは悪意の過半数を持つことに成功する。
−各ラウンドrのステップ1について、n
1は、圧倒的確率で
【数108】
[この文献は図面を表示できません]
になるように選ばれる。
【0278】
・重要なパラメータの例示的な選択
−Hの出力は、256ビット長である。
−h=80%、n
1=35。
−Λ=1分、かつ、λ=15秒。
【0279】
・プロトコルの初期化
プロトコルは、r=0で時刻0で始まる。「B
−1」または「CERT
−1」は存在しないので、統語論的に、B
−1は、Q
−1を指定するその3番目の成分を持つ公開パラメータであり、全ユーザは、時刻0でB
−1を知っている。
【0280】
5 アルゴランド’
1
このセクションでは、次の仮定の下で機能するアルゴランド’の1つのバージョンを構築する。
「ユーザの誠実な過半数」の仮定:各PK
rにおいてユーザの2/3超が誠実である。
セクション8では、上記仮定を、所望の「マネーの誠実な過半数」の仮定に置き換える方法を示す。
【0281】
5.1 追加の記号およびパラメータ
記号
・
【数109】
[この文献は図面を表示できません]
:バイナリBAプロトコルの最大ステップ数で、3の倍数。
【0282】
・L
r≦m/3:各試行が
【数110】
[この文献は図面を表示できません]
の確率で1になり、たかだかm/3の試行がある場合、1を見るために必要なベルヌーイ試行の回数を表すランダム変数。すべての試行が失敗する場合、
【数111】
[この文献は図面を表示できません]
になる。L
rは、ブロックB
rを生成するために必要な時間に上限を設けるために使用する。
【0283】
・
【数112】
[この文献は図面を表示できません]
:プロトコルの終了条件に必要な署名数。
【0284】
・CERT
r:B
rの証明書。これは、ラウンドrの正規の検証者からのH(B
r)のt
H署名の集合である。
【0285】
パラメータ
・様々なパラメータ間の関係。
−ラウンドrの各ステップs>1について、nは圧倒的確率で、
【数113】
[この文献は図面を表示できません]
かつ
【数114】
[この文献は図面を表示できません]
になるように選ばれる。
hの値が1に近づくほど、nは小さくなる必要がある。具体的には、チェルノフ限界(の変型)を使用して、所望の条件が圧倒的確率で成り立つことを確実にする。
−mは、圧倒的確率でL
r<m/3になるように選ばれる。
【0286】
・重要なパラメータの例示的な選択。
−F=10
−12。
−
【数115】
[この文献は図面を表示できません]
、k=40およびm=180。
【0287】
5.2 アルゴランド’
1での一時的な鍵の実装
既に述べたように、我々は、検証者i∈SV
r,sが、使用後直ちに破壊する一時的な秘密鍵sk
ir,sを使用して、一時的な公開鍵pk
ir,sに関連し、ラウンドrのステップsの自分のメッセージm
ir,sに電子署名することを望む。したがって、pk
ir,sが実際にiによるm
ir,sの署名を検証するために使用する鍵であることをすべてのユーザが検証することができることを確保する効率的な方法が必要である。アイデンティティベースの署名スキームの(我々が知る限りにおいて)新たな用途によってこれを行う。
【0288】
高次で、このようなスキームでは、中央集権機関Aが公開マスター鍵PMKおよび対応する秘密マスター鍵SMKを生成する。プレーヤUのアイデンティティUがあるとすると、Aは、SMKにより、公開鍵Uに対する秘密署名鍵sk
Uを計算し、sk
UをUに秘かに与える。(実際、アイデンティティベースの電子署名スキームでは、ユーザUの公開鍵はU自体である!)このように、Aが電子署名の生成を可能にしたいユーザの秘密鍵の計算後にAがSMKを破壊して、計算した秘密鍵を保管しておかない場合、Uは、公開鍵Uに対するメッセージに電子署名することのできる唯一の人である。したがって、「Uの名前」を知る人は誰でも自動的にUの公開鍵を知り、そのためUの署名を(おそらく、これも公開マスター鍵PMKを使用して)検証することができる。
【0289】
我々のアプリケーションでは、権限機関Aはユーザiであり、すべての潜在的ユーザの集合Uは、例えば、S={i}×{r’,...,r’+10
6}×{1,...,m+3}において、ラウンドステップペア(r,s)と一致し、上記式において、r’は所与のラウンドであり、m+3は、1ラウンド内に発生してもよいステップ数の上限である。このように、
【数116】
[この文献は図面を表示できません]
は、iの署名
【数117】
[この文献は図面を表示できません]
を見る人が誰でも、圧倒的確率で、r’に続く最初の100万ラウンドrでそれを直ちに検証することができるにするものである。
【0290】
言い換えると、iは、まずPMKおよびSMKを生成する。次に、iは、PMKが任意のラウンドr∈[r’,r’+10
6]のためのiのマスター公開鍵であることを公表し、SMKを使用して各3つ組(i,r,s)∈Sのための秘密鍵sk
ir,sを秘かに生成して格納する。これが終了したら、iはSMKを破壊する。自分がSV
r,sの一部ではないとiが判定する場合、iはsk
ir,sをそのままにしておいてもよい(プロトコルはiがラウンドrのステップsでメッセージを認証することを要求していないため)。そうでなければ、iは、まず、sk
ir,sを使用して、自分のメッセージm
ir,sに電子署名してから、sk
ir,sを破壊する。
【0291】
iは、最初にシステムに入るときに、自分の最初の公開マスター鍵を公表できることに留意されたい。すなわち、iをシステムに(ラウンドr’またはr’に近いラウンドで)参加させる同じ支払
【数118】
[この文献は図面を表示できません]
が、iの要求により、任意のラウンドr∈[r’,r’+10
6]のためのiの公開マスター鍵がPMKであることも、例えば、形式(PMK,[r’,r’+10
6])ペアを含むことによって指定してもよい。
【0292】
また、m+3は1ラウンド内の最大ステップ数であるため、1ラウンドに1分かかると仮定すると、そのように生成される一時的な鍵の隠し場所はiをほぼ2年間維持することにも留意されたい。同時に、これらの一時的な秘密鍵は、iが生成するのに長くなりすぎることもない。32B鍵を持つ楕円曲線ベースのシステムを使用して、各秘密鍵は数マイクロ秒で計算される。したがって、m+3=180であれば、1億8千万個のすべての秘密鍵を1時間未満で計算することができる。
【0293】
現行ラウンドがr’+10
6に近づいてくると、次の100万ラウンドを処理するために、iは新たな(PMK’,SMK’)ペアを生成し、一時的な鍵の次の隠し場所が何であるかを、例えば、SIG
i(PMK’,[r’+10
6+1,r’+2・10
6+1])を、個別の「トランザクション」、または支払の一部であるいくつかの追加通知のいずれかとして、新たなブロックに進入させることによって通知する。そうすることによって、iは、自分がPMK’を使用して次の100万ラウンドでiの一時的な署名を検証することを全員に通知する。以降も同様。
【0294】
(この基本アプローチに従い、アイデンティティベースの署名を使用しなくても、一時的な鍵を実施するための他の方法は確かに可能であることに留意されたい。例えば、マークル木による(脚注10参照)。)
【0295】
脚注10
この方法では、iは、例えば、{r’,...,r’+10
6}×{1,...,m+3}で、各ラウンドステップペア(r,s)の公開・秘密鍵のペア(pk
ir,s,sk
ir,s)を生成する。次に、これらの公開鍵を正規的に順序付けし、j番目の公開鍵をマークル木のj番目のリーフに格納し、ルート値R
iを計算し、これを公表する。iが鍵pk
ir,sに関連するメッセージに署名したい場合、iは、実際の署名を提供するだけでなく、R
iに関連するpk
ir,sの認証経路も提供する。この認証経路は、pk
ir,sがj番目のリーフに格納されていることも証明することに注意されたい。このアイデアから、詳細の残りを容易に埋めることができる。
【0296】
一時的な鍵を実施するための他の方法は、例えば、マークル木により、確かに可能である。
【0297】
5.3 アルゴランド’
1のステップとBA
★のステップとのマッチング
前述のように、アルゴランド’
1の1ラウンドは、たかだかm+3ステップを有する。
【0298】
ステップ1.
このステップでは、各潜在的リーダーiは自分の候補ブロックB
irを計算して、自分自身のクレデンシャルσ
ir,1と一緒に伝播する。
【0299】
このクレデンシャルは明白にiを識別することを思い出していただきたい。そうなるのは、
【数119】
[この文献は図面を表示できません]
であるからである。
【0300】
潜在的検証者iも、自分のメッセージの一部として、H(B
ir)の自分の正規の電子署名を伝播する。支払またはクレデンシャルを処理するのではなく、iのこの署名は自分の一時的な公開鍵pk
ir,1に関連する。すなわち、iは
【数120】
[この文献は図面を表示できません]
を伝播する。
【0301】
我々の規約を考えると、iは、B
irおよび
【数121】
[この文献は図面を表示できません]
を伝播するのではなく、
【数122】
[この文献は図面を表示できません]
を伝播したかもしれない。しかし、我々の分析では、我々は、
【数123】
[この文献は図面を表示できません]
への明白なアクセス権を有する必要がある。
【0302】
ステップ2.
このステップでは、各検証者iは、l
irをそのハッシュ化されたクレデンシャルが最小である潜在的リーダーに、B
irをl
irによって提案されるブロックになるように設定する。効率のために、我々はB
rに対して直接ではなく、H(B
r)に対して合意することを望むので、iは、初期値v’
i=H(B
ir)で、BA
★の最初のステップで伝播したであろうメッセージを伝播する。すなわち、iは、当然ながら、v’
iに一時的に署名した後にv’
iを伝播する。(すなわち、正しい一時的な公開鍵、この場合pk
ir,2に関連してそれに署名した後。)また当然、iは自分自身のクレデンシャルも伝送する。
【0303】
BA
★の最初のステップは段階的コンセンサスプロトコルGCの第1ステップからなるので、アルゴランド’のステップ2はGCの第1ステップに対応する。
【0304】
ステップ3.
このステップでは、各検証者i∈SV
r,2はBA
★の第2ステップを実行する。すなわち、各検証者は、GCの第2ステップで送ったであろう同じメッセージを送る。ここでも、iのメッセージは一時的に署名されて、iのクレデンシャルが添付される。(今後、検証者が自分のメッセージに一時的に署名して自分のクレデンシャルも伝播することを述べるのを省略する。)
【0305】
ステップ4.
このステップでは、すべての検証者i∈SV
r,4はGCの出力(v
i,g
i)を計算し、BA
★の第3ステップで、すなわち、g
i=2の場合は初期ビット0で、そうでなければ1で、BBA
★の第1ステップで送ったであろう同じメッセージに一時的に署名して送る。
【0306】
ステップs=5,...,m+2.
このようなステップは、もし到達した場合、BA
★のステップs−1に対応し、したがってBBA
★のステップs−3に対応する。
【0307】
我々の伝播モデルは十分に非同期であるため、このようなステップsの中央では、ブロックB
rが既に選ばれていることを検証者に証明する情報が検証者i∈SV
r,sに届く可能性を考慮しなければならない。この場合、iはアルゴランド’のラウンドrの自分自身の実行を停止し、自分のラウンド(r+1)の命令の実行を始める。
【0308】
したがって、検証者i∈SV
r,sの命令は、BBA
★のステップs−3に対応する命令に加えて、BBA
★の実行が前のステップs’で中止されたかどうかをチェックすることを含む。BBA
★は、コインを0に固定するステップまたはコインを1に固定するステップでしか中止できないので、命令は、
A(終了条件0):s’−2≡0 mod 3、または
B(終了条件1):s’−2≡1 mod 3
かどうかを区別する。
【0309】
事実、ケースAでは、ブロックB
rは空ではなく、したがって、追加の命令は、iが、その正規の証明書CERT
rと合わせて、B
rを適切に再構築することを確実にするために必要である。ケースBでは、ブロックB
rは空であり、したがって、iは
【数124】
[この文献は図面を表示できません]
を設定し、CERT
rを計算するように命令される。
【0310】
iが、ステップsを実行している間に、ブロックB
rが既に生成されたという証拠を見ない場合、iは、BBA
★のステップs−3で送ったであろう同じメッセージを送る。
【0311】
ステップm+3.
ステップm+3の間に、前のステップs’でブロックB
rが既に生成されたことをi∈SV
r,m+3が見る場合、iは、ちょうど上で説明したように進める。
【0312】
そうでない場合、BBA
★のステップmで送ったであろう同じメッセージを送るのではなく、iは、自分が所有している情報に基づいて、B
rおよびそれに対応する証明書CERT
rを計算するように命令される。
【0313】
実際に、1ラウンドのステップの総数にm+3の上限を設けることを思い出していただきたい。
【0314】
5.4 実際のプロトコル
ラウンドrの各ステップsで、検証者i∈SV
r,sは、s=1のケースのSIG
i(Q
r−1)だけでなく、自分のクレデンシャル
【数125】
[この文献は図面を表示できません]
を生成するために、長期公開・秘密鍵ペアを使用することを思い出していただきたい。検証者iは、一時的な秘密鍵sk
ir,sを使用して、自分の(r,s)メッセージm
ir,sに署名する。簡潔にするために、rおよびsが明白である場合、ラウンドrのステップsにおける値xのiによる正規の一時的な署名を表すために、
【数126】
[この文献は図面を表示できません]
ではなく、esig
i(x)を書き、(i,x,esig
i(x))を表すために、
【数127】
[この文献は図面を表示できません]
の代わりにESIG
i(x)を書く。
【0315】
ステップ1:ブロックの提案
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップ1を始める。
【0316】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,1かどうかをチェックする。
【0317】
・
【数128】
[この文献は図面を表示できません]
の場合、iは自分自身のステップ1の実行をすぐに停止する。
【0318】
・i∈SV
r,1の場合、すなわち、iが潜在的リーダーである場合、iは、それまでに当該iに伝播されてきたラウンドrの支払を収集して、そこから最大支払集合PAY
irを計算する。次に、「候補ブロック」B
ir=(r,PAY
ir,SIG
i(Q
r−1),H(B
r−1))を計算する。最後にメッセージm
ir,s=(B
ir,esig
i(H(B
ir)),σ
ir,1)を計算し、自分の一時的な秘密鍵sk
ir,1を破壊してから、m
ir,1を伝播する。
【0319】
備考
実際上、ステップ1の大域的実行を短縮するために、(r,1)メッセージを選択的に伝播することが重要である。すなわち、システム内の全ユーザiについて、これまでに受信し検証が成功する第1(r,1)メッセージに関し(脚注11参照)、プレーヤiはそれを通常通りに伝播する。プレーヤがiを受信して検証が成功する他のすべての(r,1)メッセージについては、それが含むクレデンシャルのハッシュ値が、当該プレーヤiがそれまでに受信して検証が成功したすべての(r,1)メッセージに含まれるクレデンシャルのハッシュ値の中で最も小さい場合に限り、それを伝播する。また、ジョルジオ・ブラコス(Georgios Vlachos)が提案するように、各潜在的リーダーiも自分のクレデンシャルσ
ir,1を個別に伝播することが有用である。これらの小さなメッセージはブロックよりも高速で移動し、含まれるクレデンシャルが小さいハッシュ値を有する場合に、m
jr,1の適時の伝播を確実にするのに対し、ハッシュ値が大きいものはすぐに消失させる。
【0320】
脚注11
すなわち、すべての署名が正当であり、ブロックおよびそのハッシュが両方とも有効である。ただし、iは、含まれる支払集合がその提案者にとって最大かどうかをチェックしない。
【0321】
ステップ2:段階的コンセンサスプロトコルGCの第1ステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップ2を始める。
【0322】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,2かどうかをチェックする。
【0323】
・
【数129】
[この文献は図面を表示できません]
の場合、iは自分自身のステップ2の実行をすぐに停止する。
【0324】
・i∈SV
r,2の場合、
【数130】
[この文献は図面を表示できません]
の時間量を待った後で、iは次のように行為する。
【0325】
1. それまでに受信し検証が成功した(r,1)メッセージの一部であるすべてのクレデンシャルσ
jr,1について、H(σ
lr,1)≦H(σ
jr,1)になるようなユーザlを見つける(脚注12参照)。
【0326】
脚注12
本質的に、ユーザiはラウンドrのリーダーがユーザlであることを秘かに決定する。
【0327】
2. lから有効なメッセージm
lr,1=(B
lr,esig
l(H(B
lr)),σ
lr,1)を受信した場合(脚注13参照)、iは
【数131】
[この文献は図面を表示できません]
を設定し、そうでなければ、iは
【数132】
[この文献は図面を表示できません]
を設定する。
【0328】
脚注13
ここでも、プレーヤlの署名およびハッシュはすべて検証が成功し、B
lrのPAY
lrはラウンドrの有効な支払集合である。ただし、iは、PAY
lrがlにとって最大かどうかはチェックしない。
【0329】
3. iは、メッセージ
【数133】
[この文献は図面を表示できません]
を計算し(脚注14参照)、自分の一時的な秘密鍵sk
ir,2を破壊してから、m
ir,2を伝播する。
【0330】
脚注14
メッセージm
ir,2は、プレーヤiがv’
iを次のブロックのハッシュとみなす、または次のブロックを空だとみなすことを示す。
【0331】
ステップ3:GCの第2ステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップ3を始める。
【0332】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,3かどうかをチェックする。
【0333】
・
【数134】
[この文献は図面を表示できません]
の場合、iは自分自身のステップ3の実行をすぐに停止する。
【0334】
・i∈SV
r,3の場合、
【数135】
[この文献は図面を表示できません]
の時間量を待った後で、iは次のように行為する。
【0335】
1. 受信した有効なメッセージm
jr,2すべての中で、一切の矛盾なく(脚注15参照)、その2/3超が形式(ESIG
j(v’),σ
jr,2)であるような値v’≠⊥が存在する場合、メッセージ
【数136】
[この文献は図面を表示できません]
を計算する。そうでなければ、iは、
【数137】
[この文献は図面を表示できません]
を計算する。
【0336】
脚注15
すなわち、iは、ESIG
j(v’)および異なるESIG
j(v”)をそれぞれ含む2つの有効なメッセージをプレーヤjから受信していない。ここで、またこれ以降、後で定義する終了条件を除き、誠実なプレーヤが所与の形式のメッセージを望む場合は必ず、互いに矛盾するメッセージは決してカウントされず、または有効と見なされない。
【0337】
2. iは、自分の一時的な秘密鍵sk
ir,3を破壊してから、m
ir,3を伝播する。
【0338】
ステップ4:GCの出力およびBBA
★の第1ステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップ4を始める。
【0339】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,4かどうかをチェックする。
【0340】
・
【数138】
[この文献は図面を表示できません]
の場合、iは自分自身のステップ4の実行をすぐに停止する。
【0341】
・i∈SV
r,4の場合、
【数139】
[この文献は図面を表示できません]
の時間量を待った後で、iは次のように行為する。
【0342】
1. v
iおよびg
i、GCの出力を次のように計算する。
(a)受信した有効なメッセージm
jr,3すべての中で、その2/3超が形式(ESIG
j(v’),σ
jr,3)であるような値v’≠⊥が存在する場合、
【数140】
[この文献は図面を表示できません]
および
【数141】
[この文献は図面を表示できません]
を設定する。
(b)そうでなければ、受信した有効なメッセージm
jr,3すべての中で、その1/3超が形式(ESIG
j(v’),σ
jr,3)であるような値v’≠⊥が存在する場合、
【数142】
[この文献は図面を表示できません]
および
【数143】
[この文献は図面を表示できません]
を設定する。(脚注16参照)
(c)それ以外の場合、
【数144】
[この文献は図面を表示できません]
および
【数145】
[この文献は図面を表示できません]
を設定する。
【0343】
脚注16
ケース(b)のv’は、存在する場合、一意でなければならないことは証明することができる。
【0344】
2. b
i、BBA
★の入力を次のように計算する。
g
i=2の場合
【数146】
[この文献は図面を表示できません]
で、そうでない場合は
【数147】
[この文献は図面を表示できません]
である。
【0345】
3. メッセージ
【数148】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,4を破壊してから、m
ir,4を伝播する。
【0346】
ステップs,5≦s≦m+2,s−2≡0 mod 3: BBA
★の、コインを0に固定するステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップsを始める。
【0347】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0348】
・
【数149】
[この文献は図面を表示できません]
の場合、iは自分自身のステップsの実行をすぐに停止する。
【0349】
・i∈SV
r,sの場合、iは次のように行為する。
−
【数150】
[この文献は図面を表示できません]
の時間量が経過するまで待つ。
【0350】
−終了条件0:このような待機中の任意の時点で、
(a)5≦s’≦s,s’−2≡0 mod 3、すなわち、ステップs’がコインを0に固定するステップであり、
(b)iは少なくとも
【数151】
[この文献は図面を表示できません]
の有効なメッセージm
jr,s’−1=(ESIG
j(0),ESIG
j(v),σ
jr,s’−1)を受信しており(脚注17参照)、かつ、
(c)iがv=H(B
jr)で有効なメッセージm
jr,1=(B
jr,esig
j(H(B
jr)),σ
jr,1)を受信した、
ようなストリングv≠⊥およびステップs’が存在する場合、iは何も伝播せずに、自分自身のステップs(また、実際にはラウンドr)の実行をすぐに停止し、B
r=B
jrを設定し、自分自身のCERT
rをサブステップ(b)のメッセージm
jr,s’−1の集合になるように設定する(脚注18参照)。
【0351】
脚注17
プレーヤjからのこのようなメッセージは、プレーヤiが1について署名するjからのメッセージも受信した場合であってもカウントされる。終了条件1についても同様。分析で示されるように、これは、すべての誠実なユーザが時間λ以内に互いからB
rを知ることを確保するために行われる。
【0352】
脚注18
ユーザiはここでB
rを知り、自身のラウンドrを終わらせる。当該ユーザiはそれでも一般ユーザとしてメッセージの伝播を手伝うが、(r,s)検証者としては伝播を開始しない。具体的には、当該ユーザiは自分のCERT
rですべてのメッセージの伝播を手伝っているが、これは我々のプロトコルにとって十分である。ユーザiはバイナリBAプロトコルについても
【数152】
[この文献は図面を表示できません]
を設定するべきであるが、この場合b
iは一切必要ないことに留意されたい。すべての将来の命令についても同様。
【0353】
−終了条件1:このような待機中の任意の時点で、
(a’)6≦s’≦s,s’−2≡1 mod 3、すなわち、ステップs’がコインを1に固定するステップであり、かつ、
(b’)iが少なくともt
Hの有効なメッセージm
jr,s’−1=(ESIG
j(1),ESIG
j(v
j),σ
jr,s’−1)を受信している(脚注19参照)、
ようなステップs’が存在する場合、iは何も伝播せずに、自分自身のステップs(また、実際にはラウンドr)の実行をすぐに停止し、B
r=B
εrを設定し、自分自身のCERT
rをサブステップ(b’)のメッセージm
jr,s’−1の集合になるように設定する。
【0354】
脚注19
この場合、v
jが何であるかは問題ではない。
【0355】
−そうでなければ、待機の終了時に、ユーザiは次のことを行う。
v
iを、受信した有効なm
jr,s−1すべての第2成分でv
jの過半数票になるように設定する。
iはb
iを次のように計算する。
受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1)の場合、
【数153】
[この文献は図面を表示できません]
を設定する。
そうでなければ、受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(1),ESIG
j(v
j),σ
jr,s−1)の場合、
【数154】
[この文献は図面を表示できません]
を設定する。
そうでなければ、
【数155】
[この文献は図面を表示できません]
を設定する。
メッセージ
【数156】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。
【0356】
ステップs,6≦s≦m+2,s−2≡1 mod 3: BBA
★の、コインを1に固定するステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップsを始める。
【0357】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0358】
・
【数157】
[この文献は図面を表示できません]
の場合、iは自分自身のステップsの実行をすぐに停止する。
【0359】
・i∈SV
r,sの場合、iは次のように行為する。
−
【数158】
[この文献は図面を表示できません]
の時間量が経過するまで待つ。
−終了条件0:コインを0に固定するステップと同じ命令。
−終了条件1:コインを0に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザiは次のことを行う。
v
iを、受信した有効なm
jr,s−1すべての第2成分でv
jの過半数票になるように設定する。
iはb
iを次のように計算する。
受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1)の場合、
【数159】
[この文献は図面を表示できません]
を設定する。
そうでなければ、受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(1),ESIG
j(v
j),σ
jr,s−1)の場合、
【数160】
[この文献は図面を表示できません]
を設定する。
そうでなければ、
【数161】
[この文献は図面を表示できません]
を設定する。
メッセージ
【数162】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。
【0360】
ステップs,7≦s≦m+2,s−2≡2 mod 3: BBA
★の、実際にコインを投げるステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップsを始める。
【0361】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0362】
・
【数163】
[この文献は図面を表示できません]
の場合、iは自分自身のステップsの実行をすぐに停止する。
【0363】
・i∈SV
r,sの場合、iは次のように行為する。
−
【数164】
[この文献は図面を表示できません]
の時間量が経過するまで待つ。
−終了条件0:コインを0に固定するステップと同じ命令。
−終了条件1:コインを0に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザiは次のことを行う。
−v
iを、受信した有効なm
jr,s−1すべての第2成分でv
jの過半数票になるように設定する。
iはb
iを次のように計算する。
受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1)の場合、
【数165】
[この文献は図面を表示できません]
を設定する。
そうでなければ、受信した有効なm
jr,s−1すべての2/3超が形式(ESIG
j(1),ESIG
j(v
j),σ
jr,s−1)の場合、
【数166】
[この文献は図面を表示できません]
を設定する。
そうでなければ、SV
ir,s−1を、有効なメッセージm
jr,s−1を受信した(r,s−1)検証者の集合にする。
【数167】
[この文献は図面を表示できません]
を設定する。
メッセージ
【数168】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。
【0364】
ステップm+3:BBA
★の最後のステップ(脚注20参照)
全ユーザi∈PK
r−kのための命令:ユーザiは、B
r−1を知るや否や、ラウンドrの自分自身のステップm+3を始める。
【0365】
脚注20
圧倒的確率で、BBA
★はこのステップの前に終了しており、このステップを完全性のために明記する。
【0366】
・ユーザiはB
r−1の第3成分からQ
r−1を計算し、i∈SV
r,m+3かどうかをチェックする。
【0367】
・
【数169】
[この文献は図面を表示できません]
の場合、iは自分自身のステップm+3の実行をすぐに停止する。
【0368】
・i∈SV
r,m+3の場合、iは次のことを行う。
−
【数170】
[この文献は図面を表示できません]
の時間量が経過するまで待つ。
−終了条件0:コインを0に固定するステップと同じ命令。
−終了条件1:コインを0に固定するステップと同じ命令。
−そうでなければ、待機の終了時に、ユーザiは次のことを行う。
【数171】
[この文献は図面を表示できません]
および
【数172】
[この文献は図面を表示できません]
を設定する。
メッセージm
ir,m+3=(ESIG
i(out
i),ESIG
i(H(B
r)),σ
ir,m+3)を計算し、自分の一時的な秘密鍵sk
ir,m+3を破壊してから、B
rを認定するためにm
ir,m+3を伝播する(脚注21参照)。
【0369】
脚注21
ステップm+3からの証明書は、ESIG
i(out
i)を含まなければならないわけではない。一様性のためにのみこれを含めている。証明書はこれで、どのステップで生成されようとも一様なフォーマットを有する。
【0370】
非検証者によるラウンドrブロックの再構成
システム内の全ユーザiのための命令:ユーザiは、B
r−1を知るや否や、自分自身のラウンドrを始め、ブロック情報を次のように待つ。
【0371】
−このような待機中の任意の時点で、
(a)s’−2≡0 mod 3で、5≦s’≦m+3、
(b)iが少なくともt
Hの有効なメッセージm
jr,s’−1=(ESIG
j(0),ESIG
j(v),σ
jr,s’−1)を受信しており、かつ、
(c)iがv=H(B
jr)で有効なメッセージm
jr,1=(B
jr,esig
j(H(B
jr)),σ
jr,1)を受信した、
ようなストリングvおよびステップs’が存在する場合、iは自分自身のラウンドrの実行をすぐに停止し、B
r=B
jrを設定し、自分自身のCERT
rをサブステップ(b)のメッセージm
jr,s’−1の集合になるように設定する。
【0372】
−このような待機中の任意の時点で、
(a’)s’−2≡1 mod 3で、6≦s’≦m+3、かつ、
(b’)iが少なくともt
Hの有効なメッセージm
jr,s’−1=(ESIG
j(1),ESIG
j(v
j),σ
jr,s’−1)を受信している、
ようなステップs’が存在する場合、iは自分自身のラウンドrの実行をすぐに停止し、B
r=B
εrを設定し、自分自身のCERT
rをサブステップ(b’)のメッセージm
jr,s’−1の集合になるように設定する。
【0373】
−このような待機中の任意の時点で、iが少なくともt
Hの有効なメッセージm
jr,m+3=(ESIG
j(1),ESIG
j(H(B
εr)),σ
jr,m+3)を受信している場合、iは自分自身のラウンドrの実行をすぐに停止し、B
r=B
εrを設定し、自分自身のCERT
rを1およびH(B
εr)のメッセージm
jr,m+3の集合になるように設定する。
【0374】
5.5 アルゴランド’
1の分析
分析で使用する各ラウンドr≧0について以下の記号を採用する。
・T
rを、第1の誠実なユーザがB
r−1を知る時刻とする。
・I
r+1を、間隔[T
r+1,T
r+1+λ]とする。
【0375】
T
0=0はプロトコルの初期化によることに留意されたい。各s≧1およびi∈SV
r,sについて、α
ir,sおよびβ
ir,sはそれぞれプレーヤiのステップsの開始時刻および終了時刻であることを思い出していただきたい。また、各2≦s≦m+3についてt
s=(2s−3)λ+Λであることを思い出していただきたい。加えて、
【数173】
[この文献は図面を表示できません]
および
【数174】
[この文献は図面を表示できません]
とする。
【0376】
最後に、各試行が
【数175】
[この文献は図面を表示できません]
の確率で1になり、たかだかm/3の試行がある場合、L
r≦m/3は、1を見るために必要なベルヌーイ試行の回数を表すランダム変数であることを思い出していただきたい。すべての試行が失敗すると、
【数176】
[この文献は図面を表示できません]
である。
【0377】
分析では、メッセージを伝播するために必要な時間に対して実際に無視できる程度であるため、計算時間を無視する。いずれにしても、やや大きいλおよびΛを使用することにより、計算時間を分析に直接組み入れることができる。以下の記述のほとんどは「圧倒的確率で」成り立つので、この事実については分析で繰返し強調しないこともある。
【0378】
5.6 主要定理
定理5.1.
以下の性質は、各ラウンドr≧0について、圧倒的確率で成り立つ。
1.すべての誠実なユーザが同じブロックB
rに合意する。
2.リーダーl
rが誠実である場合、ブロックB
rはl
rによって生成され、B
rは、時刻
【数177】
[この文献は図面を表示できません]
までにl
rが受信した最大支払集合を含み、T
r+1≦T
r+8λ+Λおよびすべての誠実なユーザが時間間隔I
r+1でB
rを知る。
3.リーダーl
rが悪意の場合、T
r+1≦T
r+(6L
r+10)λ+Λおよびすべての誠実なユーザが時間間隔I
r+1でB
rを知る。
4.L
rについてp
h=h
2(1+h−h
2)のとき、リーダーl
rは少なくともp
hの確率で誠実である。
【0379】
我々の主要定理を証明する前に、2つの注意点を述べよう。
【0380】
ブロック生成および真のレイテンシ
ブロックB
rを生成する時間は、T
r+1−T
rと定義される。すなわち、ある誠実なユーザがB
rを知った初めてのときと、ある誠実なユーザがB
r−1を知った初めてのときと、の差と定義される。ラウンドrのリーダーが誠実である場合、性質2の我々の主要定理は、h>2/3の正確な値が何であろうと、B
rを生成するまさにその時間が8λ+Λ時間であることを保証する。リーダーが悪意の場合、ここでも、hの正確な値が何であろうと、性質3は、B
rを生成する期待時間に、
【数178】
[この文献は図面を表示できません]
によって上限が設けられることを含意する(脚注22参照)。しかしながら、B
rを生成する期待時間はhの正確な値によって変わる。実際には、性質4によって、p
h=h
2(1+h−h
2)で、リーダーは少なくともp
hの確率で誠実であり、したがって、
【数179】
[この文献は図面を表示できません]
である。
たとえば、h=80%の場合、
【数180】
[この文献は図面を表示できません]
である。
【0381】
脚注22
実際には、
【数181】
[この文献は図面を表示できません]
である。
【0382】
定理5.1の証明.
性質1〜3を帰納法により証明する。当該性質1〜3がラウンドr−1について成り立つと仮定すると(一般性を損なうことなく、当該性質1〜3はr=0のとき自動的に「ラウンド−1」について成り立つ)、ラウンドrについてそれを証明する。
【0383】
B
r−1は帰納的仮説によって一意に定義されるので、ラウンドrの各ステップsについて集合SV
r,sが一意に定義される。n
1を選ぶことによって、圧倒的確率で
【数182】
[この文献は図面を表示できません]
である。ここで、セクション5.7および5.8で証明される次の2つの補題を述べる。帰納法を通して、また2つの補題の証明において、ラウンド0の分析は帰納ステップとほぼ同じであり、これらが発生するときの違いを強調する。
【0384】
補題5.2.
[完全性の補題] ラウンドr−1について性質1〜3が成り立つと仮定すると、リーダーl
rが誠実な場合、圧倒的確率で、
・すべての誠実なユーザは、l
rによって生成され、時刻
【数183】
[この文献は図面を表示できません]
までにl
rによって受信された最大支払集合を含む同じブロックB
rに合意し、かつ、
・T
r+1≦T
r+8λ+Λであり、すべての誠実なユーザは時間間隔I
r+1でB
rを知る。
【0385】
補題5.3.
[健全性の補題]性質1〜3がラウンドr−1について成り立つと仮定すると、リーダーl
rが悪意の場合、圧倒的確率で、すべての誠実なユーザは同じブロックB
rに合意し、T
r+1≦T
r+(6L
r+10)λ+Λであり、すべての誠実なユーザは時間間隔I
r+1でB
rを知る。
性質1〜3は、補題5.2および5.3をr=0および帰納ステップに適用することによって成り立つ。最後に、性質4を、セクション5.9で証明される次の補題として再び述べる。
【0386】
補題5.4.
rの前の各ラウンドについて性質1〜3があるとすると、L
rについてp
h=h
2(1+h−h
2)で、少なくともp
hの確率でリーダーl
rは誠実である。
上記3つの補題を合わせると、定理5.1が成り立つ。
以下の補題は、帰納的仮説があるとして、ラウンドrに関するいくつかの重要な性質を述べており、上記3つの補題の証明で使用される。
【0387】
補題5.5.
性質1〜3はラウンドr−1について成り立つと仮定する。ラウンドrの各ステップs≧1および各誠実な検証者i∈HSV
r,sについて、次のことが分かっている。
(a)α
ir,s∈I
rであり、
(b)プレーヤiが時間量t
s待っていた場合、r>0についてはβ
ir,s∈[T
r+t
s,T
r+λ+t
s]で、r=0についてはβ
ir,s=t
sであり、かつ、
(c)プレーヤiが時間量t
s待っていた場合、iは、時刻β
ir,sまでに、すべてのステップs’<sについて、すべての誠実な検証者j∈HSV
r,s’によって送られたすべてのメッセージを受信している。
さらに、各ステップs≧3については、次のことが分かっている。
(d)2人の異なるプレーヤi,i’∈SV
r,sは存在せず、同じ長さの2つの異なる値v,v’は存在しないので、どちらのプレーヤも時間量t
s待ち、プレーヤiが受信するすべての有効なメッセージm
jr,s−1の2/3超がvに関して署名しており、プレーヤi’が受信するすべての有効なメッセージm
jr,s−1の2/3超がv’に関して署名している。
【0388】
証明.
性質(a)は、プレーヤiが時間間隔I
rでB
r−1を知り、すぐに自分自身のステップsを始めるため、帰納的仮説から直接得られる。性質(b)は(a)から直接得られる。プレーヤiは行為する前に時間量t
s待っているため、β
ir,s=α
ir,s+t
sである。r=0についてはα
ir,s=0であることに留意されたい。
【0389】
ここで、性質(c)を証明する。s=2である場合、性質(b)により、すべての検証者j∈HSV
r,1については、次式になる。
【数184】
[この文献は図面を表示できません]
【0390】
各検証者j∈HSV
r,1は自分のメッセージを時刻β
ir,1に送り、メッセージはたかだかΛ時間内にすべての誠実なユーザに届き、時刻β
ir,sまでに、プレーヤiは所望のようにHSV
r,1内のすべての検証者によって送られるメッセージを受信する。
【0391】
s>2の場合、t
s=t
s−1+2λである。性質(b)により、すべてのステップs’<sおよびすべての検証者j∈HSV
r,s’について、次の式になる。
【数185】
[この文献は図面を表示できません]
【0392】
各検証者j∈HSV
r,s’は自分のメッセージを時刻β
jr,s’に送り、メッセージはたかだかλ時間内にすべての誠実なユーザに届き、時刻β
ir,sまでに、プレーヤiは、すべてのs‘<sについて、HSV
r,s’内のすべての検証者によって送られるメッセージを受信する。したがって、性質(c)は成り立つ。
【0393】
最後に、性質(d)を証明する。検証者j∈SV
r,s−1は自分の一時的な秘密鍵を使用して、ステップs−1でたかだか2つのことに署名することに留意されたい。すなわち、ハッシュ関数の出力と同じ長さの値v
jと、また、s−1≧4の場合はビットb
j∈{0,1}である。そのため我々は、補題の言明において、vおよびv’が同じ長さを有することを要求する。多くの検証者はハッシュ値vおよびビットbの両方に署名したかもしれず、したがって、どちらも2/3の閾値を超える。
【0394】
矛盾を目的として、所望の検証者i,i’および値v,v’が存在すると仮定する。MSV
r,s−1内の何人かの悪意の検証者がvおよびv’の両方に署名したかもしれないが、HSV
r,s−1内の各誠実な検証者は、そのうちの、たかだか一方にしか署名していない。性質(c)によって、iおよびi’はともにHSV
r,s−1内のすべての誠実な検証者によって送られたすべてのメッセージを受信している。
【0395】
HSV
r,s−1(v)を、vに署名した誠実な(r,s−1)検証者の集合とし、MSV
ir,s−1を、iが有効なメッセージを受信した悪意の(r,s−1)検証者の集合とし、MSV
ir,s−1(v)を、vに署名する有効なメッセージをiが受信したMSV
ir,s−1の小集合とする。iおよびvの要件により、次の式になる。
【数186】
[この文献は図面を表示できません]
【0396】
まず、次のことを証明する。
【数187】
[この文献は図面を表示できません]
【0397】
そうでないと仮定すると、パラメータ間の関係により、圧倒的確率で、
【数188】
[この文献は図面を表示できません]
となり、したがって、
【数189】
[この文献は図面を表示できません]
となって、不等式1と矛盾する。
【0398】
次に、不等式1によって、次の式になる。
【数190】
[この文献は図面を表示できません]
【0399】
不等式2と組み合わせると、
【数191】
[この文献は図面を表示できません]
となり、これは、次の式を含意する。
【数192】
[この文献は図面を表示できません]
【0400】
同様に、i’およびv’の要件によって、次の式になる。
【数193】
[この文献は図面を表示できません]
【0401】
誠実な検証者j∈HSV
r,s−1は、自分のメッセージを伝播する前に自分の一時的な秘密鍵sk
jr,s−1を破壊するので、敵対者は、jが検証者であると知った後で、jが署名しなかった値のjの署名を偽造することはできない。このように、上記2つの不等式は、矛盾|HSV
r,s−1|≧|HSV
r,s−1(v)|+|HSV
r,s−1(v’)|>|HSV
r,s−1|を含意する。したがって、所望のi,i’,v,v’は存在せず、性質(d)は成り立つ。
【0402】
5.7 完全性の補題
補題5.2.
[完全性の補題、書き換え]
ラウンドr−1について性質1〜3が成り立つと仮定すると、リーダーl
rが誠実な場合、圧倒的確率で、
・すべての誠実なユーザは、l
rによって生成され、時刻
【数194】
[この文献は図面を表示できません]
までにl
rによって受信された最大支払集合を含む同じブロックB
rに合意し、かつ、
・T
r+1≦T
r+8λ+Λであり、すべての誠実なユーザは時間間隔I
r+1でB
rを知る。
【0403】
証明.
帰納的仮説および補題5.5によって、各ステップsおよび検証者i∈HSV
r,sについて、α
ir,s∈I
rである。以下に、プロトコルをステップごとに分析する。
【0404】
ステップ1.
定義上、すべての誠実な検証者i∈HSV
r,1は、所望のメッセージm
ir,1を時刻β
ir,1=α
ir,1のときに伝播し、ここで、m
ir,1=(B
ir,esig
i(H(B
ir)),σ
ir,1)、B
ir=(r,PAY
ir,SIG
i(Q
r−1),H(B
r−1))であり、PAY
irはiが時刻α
ir,1までに見たすべての支払の中の最大支払集合である。
【0405】
ステップ2.
誠実な検証者i∈HSV
r,2を任意に決める。補題5.5によって、プレーヤiが時刻β
ir,2=α
ir,2+t
2のときに待機を終えるとき、プレーヤiは、
【数195】
[この文献は図面を表示できません]
を含め、HSV
r,1内の検証者によって送られたすべてのメッセージを受信している。l
rの定義上、クレデンシャルのハッシュ値が
【数196】
[この文献は図面を表示できません]
よりも小さいPK
r−k内の別のプレーヤは存在しない。当然、敵対者は
【数197】
[この文献は図面を表示できません]
が非常に小さいことを見た後にl
rを腐敗させることはできるが、そのときまでに、プレーヤl
rは自分の一時的な鍵を破壊して、メッセージ
【数198】
[この文献は図面を表示できません]
を伝播してしまっている。このように、検証者iは自分自身のリーダーをプレーヤl
rになるように設定する。したがって、時刻β
ir,2に、検証者iはm
ir,2=(ESIG
i(v’
i),σ
ir,2)を伝播し、ここで、
【数199】
[この文献は図面を表示できません]
である。r=0のとき、唯一の違いは、範囲ではなく、β
ir,2=t
2となることである。同様なことがその後のステップにも言えるので、改めてそれを強調しない。
【0406】
ステップ3.
誠実な検証者i∈HSV
r,3を任意に決める。補題5.5によって、プレーヤiが時刻β
ir,3=α
ir,3+t
3のときに待機を終えるとき、プレーヤiは、HSV
r,2内の検証者によって送られたすべてのメッセージを受信している。
【0407】
パラメータ間の関係によって、圧倒的確率で、|HSV
r,2|>2|MSV
r,2|である。さらに、誠実な検証者は矛盾するメッセージに署名しないので、敵対者は、誠実な検証者が自分の対応する一時的な秘密鍵を破壊してまった後は、誠実な検証者の署名を偽造することはできない。このように、iが受信した有効な(r,2)メッセージのすべての2/3超は誠実な検証者からのものであり、矛盾なく、形式
【数200】
[この文献は図面を表示できません]
をとる。
【0408】
したがって、時刻β
ir,3で、プレーヤiはm
ir,3=(ESIG
i(v’),σ
ir,3)を伝播し、ここで、
【数201】
[この文献は図面を表示できません]
である。
【0409】
ステップ4.
誠実な検証者i∈HSV
r,4を任意に決める。補題5.5によって、プレーヤiが時刻β
ir,4=α
ir,4+t
4のときに待機を終えるとき、プレーヤiは、HSV
r,3内の検証者によって送られたすべてのメッセージを受信している。ステップ3と同様に、iが受信した有効な(r,3)メッセージのすべての2/3超は誠実な検証者からのものであり、形式
【数202】
[この文献は図面を表示できません]
をとる。
【0410】
したがって、プレーヤiは
【数203】
[この文献は図面を表示できません]
、g
i=2およびb
i=0を設定する。時刻β
ir,4=α
ir,4+t
4で、プレーヤiは、
【数204】
[この文献は図面を表示できません]
を伝播する。
【0411】
ステップ5.
誠実な検証者i∈HSV
r,5を任意に決める。補題5.5によって、プレーヤiは、時刻α
ir,5+t
5まで待っていた場合、HSV
r,4内の検証者によって送られたすべてのメッセージを受信しているだろう。|HSV
r,4|≧t
Hであることに留意されたい(脚注23参照)。また、HSV
r,4内のすべての検証者は
【数205】
[この文献は図面を表示できません]
について署名していることにも留意されたい。
【0412】
脚注23
厳密にいうと、これは非常に高い確率で起こるが、必ずしも圧倒的ではない。しかし、この確率はプロトコルの実行時間に少し影響するものの、その正当性には影響を与えない。h=80%のとき、確率1−10
−8で|HSV
r,4|≧t
Hになる。このイベントが発生しない場合、プロトコルは別の3ステップについて続行する。これが2ステップで発生しない確率は無視できる程度であるため、プロトコルはステップ8で終了する。すると、予想で、必要なステップ数はほぼ5である。
【0413】
|MSV
r,4|<t
Hのとき、SV
r,4内のt
H検証者(必然的に悪意になるであろう)によって署名できたであろう
【数206】
[この文献は図面を表示できません]
は存在せず、そのためプレーヤiは、t
Hの有効なメッセージ
【数207】
[この文献は図面を表示できません]
を受信する前に停止しない。Tを、後者のイベントが発生するときの時刻とする。これらのメッセージのいくらかは悪意のプレーヤからのものであるかもしれないが、|MSV
r,4|<t
Hであるため、そのうちの少なくとも1つはHSV
r,4内の誠実な検証者からのものであり、時刻T
r+t
4の後に送られる。したがって、
【数208】
[この文献は図面を表示できません]
であり、時刻Tまでに、プレーヤiはメッセージ
【数209】
[この文献は図面を表示できません]
も受信している。プロトコルの構築によって、プレーヤiは時刻β
ir,5=Tで何も伝播せずに停止し、
【数210】
[この文献は図面を表示できません]
を設定し、自分自身のCERT
rを0についての(r,4)メッセージおよび受信した
【数211】
[この文献は図面を表示できません]
の集合になるように設定する。
【0414】
ステップs>5.
同様に、任意のステップs>5および任意の検証者i∈HSV
r,sについて、プレーヤiは、時刻α
ir,s+t
sまで待っていた場合、HSV
r,4内の検証者によって送られたすべてのメッセージを受信しているだろう。同じ分析により、プレーヤiは何も伝播せずに停止し、
【数212】
[この文献は図面を表示できません]
を設定する(また、自分自身のCERT
rを適切に設定する)。当然、悪意の検証者は停止しないこともあり、任意のメッセージを伝播するかもしれないが、|MSV
r,s|<t
Hであるため、帰納法により、他のv’が任意のステップ4≦s’<s内のt
H人の検証者によって署名され得るはずがなく、したがって、誠実な検証者のみが0についてのt
H個の有効な(r,4)メッセージおよび
【数213】
[この文献は図面を表示できません]
を受信しているので停止する。
【0415】
ラウンドrブロックの再構築
ステップ5の分析を、一般の誠実なユーザiにほぼ何も変えずに適用する。実際、プレーヤiは自分自身のラウンドrを間隔I
rで開始し、
【数214】
[この文献は図面を表示できません]
についてt
H個の有効な(r,4)メッセージを受信した時刻Tでのみ停止することになる。ここでも、これらのメッセージのうちの少なくとも1つは誠実な検証者からものであり、時刻T
r+t
4の後で送られるので、プレーヤiは時刻Tまでに
【数215】
[この文献は図面を表示できません]
も受信している。したがって、プレーヤiは、正規のCERT
rで
【数216】
[この文献は図面を表示できません]
を設定する。
【0416】
すべての誠実なユーザが自分のラウンドrを時間間隔I
r+1以内に終了することの証明のみが残っている。ステップ5の分析によって、すべての誠実な検証者i∈HSV
r,5は、α
ir,5+t
5≦T
r+λ+t
5=T
r+8λ+Λに、またはその前にB
rを知っている。T
r+1は最初の誠実なユーザi
rがB
rを知るときであるため、所望の通り次の式になる。
【数217】
[この文献は図面を表示できません]
さらに、プレーヤi
rがB
rを知るとき、当該プレーヤi
rは既に自分のCERT
r内でメッセージの伝播を助けている。プレーヤi
rがそれを伝播する最初のプレーヤであった場合であっても、これらすべてのメッセージが時刻λ以内にすべての誠実なユーザによって受信されることに留意されたい。また、上記分析後、
【数218】
[この文献は図面を表示できません]
になり、そのため、すべての誠実なユーザは時刻T
r+1+λまでに
【数219】
[この文献は図面を表示できません]
を受信している。したがって、すべての誠実なユーザが、時間間隔I
r+1=[T
r+1,T
r+1+λ]でB
rを知る。
【0417】
最後に、r=0について、実際に、T
1≦t
4+λ=6λ+Λになる。すべてを組み合わせると、補題5.2は成り立つ。
【0418】
5.8 健全性の補題
補題5.3.
[健全性の補題、書き換え]
ラウンドr−1について性質1〜3が成り立つと仮定すると、リーダーl
rが悪意の場合、圧倒的確率で、すべての誠実なユーザは同じブロックB
rに合意し、T
r+1≦T
r+(6L
r+10)λ+Λで、すべての誠実なユーザは時間間隔I
r+1でB
rを知る。
【0419】
証明 プロトコルの2つの部分、GCおよびBBA
★、を別々に検討する。
【0420】
GC
帰納的仮説および補題5.5によって、任意のステップs∈{2,3,4}および任意の誠実な検証者i∈HSV
r,sについて、プレーヤiが時刻β
ir,s=α
ir,s+t
sで行為するとき、ステップs’<sで、すべての誠実な検証者によって送られたすべてのメッセージを受信している。ステップ4について考えられる2つのケースを区別する。
【0421】
ケース1:
どの検証者i∈HSV
r,4もg
i=2を設定しない。
この場合、定義上、すべての検証者i∈HSV
r,4についてb
i=1である。すなわち、当該すべての検証者はバイナリBAプロトコルで1に関する合意から始める。当該すべての検証者は自分のv
iに関して合意しないかもしれないが、これは、バイナリBAで述べる通り問題ではない。
【0422】
ケース2:
【数220】
[この文献は図面を表示できません]
になるような検証者
【数221】
[この文献は図面を表示できません]
が存在する。
この場合、次のことを証明する。
(1)全i∈HSV
r,4についてg
i≧1であり、
(2)全i∈HSV
r,4についてv
i=v’になるような値v’が存在し、かつ、
(3)v’=H(B
lr)になるような、ある検証者l∈SV
r,1からの有効なメッセージm
lr,1が存在する。
【0423】
実際、プレーヤ
【数222】
[この文献は図面を表示できません]
は誠実で、
【数223】
[この文献は図面を表示できません]
を設定するので、当該プレーヤが受信したすべての有効なメッセージm
jr,3の2/3超は同じ値v’≠⊥に関するものであり、当該プレーヤは
【数224】
[この文献は図面を表示できません]
を設定済みである。補題5.5の性質(d)によって、他の誠実な(r,4)検証者iについて、i’が受信したすべての有効なメッセージm
jr,3の2/3超が同じ値v”≠v’に関するものであるということはあり得ない。したがって、iがg
i=2を設定する場合、iは同じくv’についても>2/3過半数を見ていなければならず、所望のように、v
i=v’を設定しなければならない。
【0424】
ここで、g
i<2で任意の検証者i∈HSV
r,4を考える。補題5.5の性質(d)の分析と同様に、プレーヤ
【数225】
[この文献は図面を表示できません]
はv’について>2/3過半数を見ているので、
【数226】
[この文献は図面を表示できません]
を超える誠実な(r,3)検証者がv’に署名している。iは時刻β
ir,4=α
ir,4+t
4までに誠実な(r,3)検証者によるすべてのメッセージを受信しているため、特にv’について当該検証者から
【数227】
[この文献は図面を表示できません]
を超えるメッセージを受信している。|HSV
r,3|>2|MSV
r,3|であるため、iはv’について>1/3過半数を見ている。したがって、プレーヤiはg
i=1を設定し、性質(1)は成り立つ。
【0425】
プレーヤiは必ずv
i=v’を設定するのだろうか? プレーヤiがv”についても>1/3過半数を見たような、異なる値v”≠⊥が存在すると仮定する。これらのメッセージのうちのいくらかは悪意の検証者からのものかもしれないが、そのうちの少なくとも1つは、ある誠実な検証者j∈HSV
r,3からのものである。実際、|HSV
r,3|>2|MSV
r,3|で、iはHSV
r,3からすべてのメッセージを受信しているため、iが有効な(r,3)メッセージを受信した悪意の検証者の集合は、iが受信したすべての有効なメッセージの<1/3に値する。
【0426】
定義上、プレーヤjは、受信したすべての有効な(r,2)メッセージの中うち、v”について>2/3過半数を見ていなければならない。しかし我々は、v’について何人かの他の誠実な(r,3)検証者が>2/3過半数を見たことを既に知っている(当該他の検証者がv’に署名したため)。補題5.5の性質(d)によって、これは起こり得ず、このような値v”は存在しない。したがって、プレーヤiは所望の通りv
i=v’を設定していなければならず、性質(2)が成り立つ。
【0427】
最後に、v’について何人かの誠実な(r,3)検証者が>2/3過半数を見ているとすると、何人かの誠実な(r,2)検証者(実際にはその半分より多く)がv’について署名し、自分のメッセージを伝播している。プロトコルの構築により、その誠実な(r,2)検証者は、v’=H(B
lr)であるプレーヤl∈SV
r,1から有効なメッセージm
lr,1を受信していなければならず、したがって、性質(3)が成り立つ。
【0428】
BBA
★
ここでも2つのケースを区別する。
【0429】
ケース1 すべての検証者i∈HSV
r,4はb
i=1になる。
【0430】
これは、GCのケース1の後に起こる。|MSV
r,4|<t
Hであるため、この場合、SV
r,5内の検証者は、ビット0についてt
H個の有効な(r,4)メッセージを収集または生成することはできないであろう。したがって、HSV
r,5内の誠実な検証者は、空ではないブロックB
rを知っているため停止しないであろう。
【0431】
また、ビット1については少なくともt
H個の有効な(r,4)メッセージがあるが、s’=5はs’−2≡1 mod 3を満たさないので、HSV
r,5内の誠実な検証者は、B
r=B
εrを知っているため停止しないであろう。
【0432】
代わりに、すべての検証者i∈HSV
r,5が時刻β
ir,5=α
ir,5+t
5で行為し、そのときまでに当該検証者は補題5.5の後にHSV
r,4によって送られたすべてのメッセージを受信している。したがって、プレーヤiは1について>2/3過半数を見ており、b
i=1を設定する。
【0433】
コインを1に固定するステップであるステップ6では、s’=5はs’−2≡0 mod 3を満たすが、ビット0についてt
H個の有効な(r,4)メッセージは存在せず、そのため、HSV
r,6内の検証者は、空ではないブロックB
rを知っているため停止しないであろう。しかし、s’=6のときは、s’−2≡1 mod 3で、HSV
r,5からのビット1についての|HSV
r,5|≧t
H個の有効な(r,5)メッセージが存在する。
【0434】
すべての検証者i∈HSV
r,6について、補題5.5の後に、時刻α
ir,6+t
6で、またはその前に、プレーヤiはHSV
r,5からすべてのメッセージを受信しており、そのためiは何も伝播せずに停止して、B
r=B
εrを設定する。当該検証者iのCERT
rは、当該検証者iが停止するときに受信したt
H個の有効な(r,5)メッセージm
jr,5=(ESIG
j(1),ESIG
j(v
j),σ
jr,5)の集合である。
【0435】
次に、プレーヤiを、ステップs>6の誠実な検証者または一般の誠実なユーザ(つまり、非検証者)のいずれかにする。補題5.2の証明と同様に、プレーヤiはB
r=B
εrを設定し、自分自身のCERT
rを、自分が受信しているt
H個の有効な(r,5)メッセージm
jr,5=(ESIG
j(1),ESIG
j(v
j),σ
jr,5)の集合に設定する。
【0436】
最後に、補題5.2と同様に、
【数228】
[この文献は図面を表示できません]
で、B
rを知っている最初の誠実なユーザiが自分のCERT
rで(r,5)メッセージの伝播を助けたため、すべての誠実なユーザは時間間隔I
r+1でB
rを知っている。
【0437】
ケース2
【数229】
[この文献は図面を表示できません]
で検証者
【数230】
[この文献は図面を表示できません]
は存在する。
【0438】
これは、GCのケース2の後に起こり、より複雑なケースである。GCの分析により、この場合、すべてのi∈HSV
r,4についてv
i=H(B
lr)になるような有効なメッセージm
lr,1が存在する。HSV
r,4の検証者は、当該検証者のb
iに関して合意しないかもしれないことに留意されたい。
【0439】
任意のステップs∈{5,...,m+3}で、検証者i∈HSV
r,sについて、補題5.5により、プレーヤiは、時間t
s待った場合、HSV
r,4∪...∪HSV
r,s−1のすべての誠実な検証者によって送られたすべてのメッセージを受信しているだろう。
【0440】
ここで、次のイベントEを検討する。すなわち、バイナリBAで初めて、あるプレーヤ
【数231】
[この文献は図面を表示できません]
(悪意か誠実かを問わない)が何も伝播せずに停止するようなステップs
*≧5が存在する。「停止するような」という言葉を使用するのは、プレーヤi
*が悪意の場合、プロトコルに従って停止しないようなふりをし、敵対者が選んだメッセージを伝播するかもしれないという事実を強調するためである。
【0441】
また、プロトコルの構築により、次のいずれかになる。
(E,a)i
*は、5≦s’≦s
*、かつ、s’−2≡0 mod 3で、同じvおよびs’について少なくともt
H個の有効なメッセージm
jr,s’−1=(ESIG
j(0),ESIG
j(v),σ
jr,s’−1)を収集または生成することができる、または、
(E.b)i
*は、6≦s’≦s
*、かつ、s’−2≡1 mod 3で、同じs’について少なくともt
H個の有効なメッセージm
jr,s’−1=(ESIG
j(1),ESIG
j(v
j),σ
jr,s’−1)を収集または生成することができる。
【0442】
誠実な(r,s’−1)メッセージは、すべての誠実な(r,s’)検証者がステップs’で待機を終える前に受信されるため、また敵対者は誠実なユーザより遅れることなくすべてを受信するため、一般性を損なうことなく、s’=s
*、かつ、プレーヤi
*が悪意になる。我々が、E.aの値vが有効なブロックのハッシュであることを要求しなかったことに留意されたい。これは、分析で明らかになるように、このサブイベントではv=H(B
lr)である。
【0443】
以下に、まず、イベントEの後のケース2を分析し、次いでs
*の値が本質的にL
rに従い分散されることを証明する(このように、パラメータの関係があるとすると、イベントEは圧倒的確率でステップm+3の前に起こる)。始めに、任意のステップ5≦s<s
*について、すべての誠実な検証者i∈HSV
r,sは時間t
s待って、受信した有効な(r,s−1)メッセージの過半数票になるようにv
iを設定する。プレーヤiは補題5.5の後のすべての誠実な(r,s−1)メッセージを受信しているため、および、HSV
r,4内のすべての誠実な検証者はGCのケース2の後でH(B
lr)に署名しているため、および、各sについて|HSV
r,s−1|>2|MSV
r,s−1|であるため、帰納法により、プレーヤiが
【数232】
[この文献は図面を表示できません]
を設定したことになる。
【0444】
何も伝播せずに停止しないすべての誠実な検証者
【数233】
[この文献は図面を表示できません]
について、同じことがいえる。ここで、ステップs
*を検討し、4つのサブケースを区別する。
【0445】
ケース2.1.a イベントE.aが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数234】
[この文献は図面を表示できません]
が存在する。
【0446】
この場合、s
*−2≡0 mod 3になり、ステップs
*は、コインを0に固定するステップである。
【0447】
定義上、プレーヤi’は形式
【数235】
[この文献は図面を表示できません]
の少なくともt
H個の有効な(r,s
*−1)メッセージを受信している。
【数236】
[この文献は図面を表示できません]
内のすべての検証者はH(B
lr)に署名しており、
【数237】
[この文献は図面を表示できません]
であるため、v=(B
lr)になる。
【0448】
i’が0およびvについて受信した(r,s
*−1)メッセージのうち少なくとも
【数238】
[この文献は図面を表示できません]
は、時間
【数239】
[この文献は図面を表示できません]
の後に
【数240】
[この文献は図面を表示できません]
内の検証者によって送られるため、プレーヤi’は、それらの(r,s
*−1)メッセージを受信する時刻までにm
lr,1を受信している。したがって、プレーヤi’は何も伝播せずに停止し、B
r=B
lrを設定し、自分自身のCERT
rを、自分が受信した0およびvについての有効な(r,s
*−1)メッセージの集合になるように設定する。
【0449】
次に、任意の他の検証者
【数241】
[この文献は図面を表示できません]
がB
r=B
lrで停止し、またはb
i=0を設定して(ESIG
i(0),ESIG
i(H(B
lr)),σ
ir,s)を伝播していることを証明する。実際、ステップs
*は、ある検証者が何も伝播せずに停止するような初回であるため、t
H人の(r,s’−1)検証者が1を署名したような、s’−2≡1 mod 3となるステップs’<s
*は存在しない。したがって、B
r=B
εrで停止する、
【数242】
[この文献は図面を表示できません]
内の検証者はいない。
【0450】
また、ステップ{4,5,...,s
*−1}のすべての誠実な検証者はH(B
lr)に署名しているため、t
H人の(r,s’−1)検証者が何らかのv”≠H(B
lr)に署名したような、s’−2≡0 mod 3となるステップs’≦s
*は存在しない。実際、|MSV
r,s’−1|<t
Hである。したがって、B
r≠B
εrおよびB
r≠B
lrで停止する、
【数243】
[この文献は図面を表示できません]
内の検証者はいない。すなわち、プレーヤ
【数244】
[この文献は図面を表示できません]
は、何も伝播せずに停止した場合、B
r=B
lrを設定していなければならない。プレーヤ
【数245】
[この文献は図面を表示できません]
は、時間t
s待ち、時刻
【数246】
[この文献は図面を表示できません]
でメッセージを伝播した場合、0およびvについてそのうちの少なくとも
【数247】
[この文献は図面を表示できません]
を含め、
【数248】
[この文献は図面を表示できません]
からのすべてのメッセージを受信している。iは、1について>2/3過半数を見ている場合、1について
【数249】
[この文献は図面を表示できません]
より多くの有効な(r,s
*−1)メッセージを見ており、そのうちの
【数250】
[この文献は図面を表示できません]
は誠実な(r,s
*−1)検証者からのものである。しかし、このことは
【数251】
[この文献は図面を表示できません]
を含意し、パラメータの関係から得られる
【数252】
[この文献は図面を表示できません]
の事実と矛盾する。したがって、iは1については>2/3過半数を見ずに、ステップs
*がコインを0に固定するステップであるため、b
i=0を設定する。見てきたように、v
i=H(B
lr)である。したがって、証明したかった通り、iは(ESIG
i(0),ESIG
i(H(B
lr)),σ
ir,s)を伝播する。
【0451】
ステップs
*+1について、プレーヤi’は時刻
【数253】
[この文献は図面を表示できません]
で、またはその前に、自分のCERT
rでメッセージの伝播を助けたため、
【数254】
[この文献は図面を表示できません]
内のすべての誠実な検証者は、待機を終わらせるとき、またはそれ以前にビット0および値H(B
lr)について少なくともt
H個の有効な(r,s
*−1)メッセージを受信している。さらに、
【数255】
[この文献は図面を表示できません]
内の検証者は、ステップs
*の定義上、s’−2≡1 mod 3、かつ、6≦s’≦s
*+1となる、ビット1について任意の他のt
H個の有効な(r,s
*−1)メッセージが存在しないため、その(r,s
*−1)メッセージを受信する前には停止しない。具体的には、ステップs
*+1自体はコインを1に固定するステップであるが、1についてメッセージを伝播した
【数256】
[この文献は図面を表示できません]
内の誠実な検証者はいないので、
【数257】
[この文献は図面を表示できません]
である。このように、
【数258】
[この文献は図面を表示できません]
内のすべての誠実な検証者は何も伝播せずに停止し、B
r=B
lrを設定する。前述の通り、当該誠実な検証者は、所望の(r,s
*−1)メッセージを受信する前に、m
lr,1を受信している(脚注24参照)。その後のステップのすべての誠実な検証者、および一般にすべての誠実なユーザについても同じことがいえる。具体的には、当該誠実なユーザは全員、時間間隔I
r+1以内にB
r=B
lrを知り、
【数259】
[この文献は図面を表示できません]
である。
【0452】
脚注24
lが悪意の場合、いく人かの誠実なユーザ/検証者がm
lr,1のために望ましい証明書を受信するときにまだ当該m
lr,1を受信していないことを望んで、当該悪意のlは、m
lr,1を遅れて送るかもしれない。しかし、検証者
【数260】
[この文献は図面を表示できません]
は
【数261】
[この文献は図面を表示できません]
および
【数262】
[この文献は図面を表示できません]
を設定しているため、前述の通り、誠実な検証者i∈HSV
r,3の半分より多くがv
i=H(B
lr)を設定していることになる。これはさらに、誠実な検証者i∈HSV
r,2の半分より多くがv
i=H(B
lr)を設定しており、その(r,2)検証者が全員m
lr,1を受信していることを含意する。具体的には、これら全(r,2)検証者はそのステップ2の最後にm
lr,1の伝播を助けている。それ以降、m
lr,1が残りの誠実なユーザに届くためかかる時間は、たかだかΛ時間である。すべての誠実なユーザが互いに時間λ以内にそのステップ2を停止し、検証者i’がステップs
*≧5で停止するとき、最後の誠実な(r,2)検証者が自分のステップ2を停止する時刻から、i’が自分のステップs
*を停止する時刻まで、少なくともt
4−t
2−λ−3λ時間が経過している。Λ≦4λのとき、m
lr,1が、ステップ2を停止する最後の人であった(r,2)検証者によって当初伝播されたものであったとしても、すべての誠実なユーザは,
検証者v’が停止した後のλ時間内にm
lr,1を受信している。現実には、誠実な(r,2)検証者のうちの半分より多くがm
lr,1の伝播を助けているため、それがすべての誠実なユーザに届くための実際の時間はΛよりも短い。
【0453】
ケース2.1.b:
イベントE.bが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数263】
[この文献は図面を表示できません]
が存在する。
【0454】
この場合、s
*−2≡1 mod 3になり、ステップs
*は、コインを1に固定するステップである。分析はケース2.1.aと同様であるため、多くの詳細を省略した。
【0455】
前述の通り、プレーヤi’は、形式
【数264】
[この文献は図面を表示できません]
の少なくともt
H個の有効な(r,s
*−1)メッセージを受信していなければならない。ここでも、s
*の定義上、少なくともt
H人の(r,s’−1)検証者が0および同じvに署名している場合、s’−2≡0 mod 3となるステップ5≦s’<s
*は存在しない。したがって、プレーヤi’は何も伝播せずに停止し、B
r=B
εrを設定し、自分自身のCERT
rを、自分が受信したビット1についての有効な(r,s
*−1)メッセージの集合になるように設定する。
【0456】
さらに、任意の他の検証者
【数265】
[この文献は図面を表示できません]
がB
r=B
εrで停止し、またはb
i=1を設定して
【数266】
[この文献は図面を表示できません]
を伝播している。プレーヤi’は、時刻
【数267】
[この文献は図面を表示できません]
まで自分のCERT
rで(r,s
*−1)メッセージの伝播を助けていたため、ここでも
【数268】
[この文献は図面を表示できません]
内のすべての誠実な検証者は何も伝播せずに停止し、B
r=B
εrを設定する。同様に、すべての誠実なユーザは時間間隔I
r+1以内にB
r=B
εrを知り、
【数269】
[この文献は図面を表示できません]
である。
【0457】
ケース2.2.a:
イベントE.aが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数270】
[この文献は図面を表示できません]
は存在しない。
【0458】
この場合、プレーヤi
*は、敵対者が収集または生成することのできるt
H個の所望の(r,s
*−1)メッセージからなる有効な
【数271】
[この文献は図面を表示できません]
を持つおそれがあるだろう。しかし、悪意の検証者はこれらのメッセージの伝播を助けられないので、誠実なユーザが時間λでそれを受信すると結論づけることはできない。事実、それらのメッセージのうちの
【数272】
[この文献は図面を表示できません]
は、自分のメッセージを全く伝播せずに、それをステップs
*で悪意の検証者にしか送信しなかった悪意の(r,s
*−1)検証者からのものであるかもしれない。
【0459】
ケース2.1.aと同様に、ここではs
*−2≡0 mod 3で、ステップs
*は、コインを0に固定するステップであり、
【数273】
[この文献は図面を表示できません]
内の(r,s
*−1)メッセージはビット0についてであり、v=H(B
lr)となる。実際、すべての誠実な(r,s
*−1)検証者はvに署名し、したがって敵対者は異なるv’についてt
H個の有効な(r,s
*−1)メッセージを生成することはできない。
【0460】
また、すべての誠実な(r,s
*)検証者は時間t
s待っており、ここでも
【数274】
[この文献は図面を表示できません]
であるため、ビット1について>2/3過半数を見ない。このように、すべての誠実な検証者
【数275】
[この文献は図面を表示できません]
は過半数票によってb
i=0、v
i=H(B
lr)を設定し、時刻
【数276】
[この文献は図面を表示できません]
で
【数277】
[この文献は図面を表示できません]
を伝播する。
【0461】
ここで、ステップs
*+1(これは、コインを1に固定するステップである)の誠実な検証者を検討する。敵対者が実際に
【数278】
[この文献は図面を表示できません]
のメッセージを誠実な検証者のいく人かに送り、当該誠実な検証者らを停止させる場合、ケース2.1.aと同様に、すべての誠実なユーザは時間間隔I
r+1以内にB
r=B
lrを知り、
【数279】
[この文献は図面を表示できません]
である。
【0462】
そうでなければ、ステップs
*+1のすべての誠実な検証者は、時間
【数280】
[この文献は図面を表示できません]
待った後、
【数281】
[この文献は図面を表示できません]
から0およびH(B
lr)についてのすべての(r,s
*)メッセージを受信しているが、これは、
【数282】
[この文献は図面を表示できません]
であるため、>2/3過半数になる。このように、
【数283】
[この文献は図面を表示できません]
内のすべての検証者は、それに応じて0およびH(B
lr)についての自分のメッセージを伝播する。
【数284】
[この文献は図面を表示できません]
内の検証者は、ステップs
*+1がコインを0に固定するステップではないため、B
r=B
lrで停止しないことに留意されたい。
【0463】
ここで、ステップs
*+2(これは実際にコインを投げるステップである)の誠実な検証者を検討する。敵対者が
【数285】
[この文献は図面を表示できません]
のメッセージを誠実な検証者のいく人かに送り、当該誠実な検証者らを停止させる場合、ここでも、すべての誠実なユーザは時間間隔I
r+1以内にB
r=B
lrを知り、
【数286】
[この文献は図面を表示できません]
である。
【0464】
そうでなければ、ステップs
*+2のすべての誠実な検証者は、時間
【数287】
[この文献は図面を表示できません]
待った後、
【数288】
[この文献は図面を表示できません]
から0およびH(B
lr)についてのすべての(r,s
*+1)メッセージを受信しているが、これは>2/3過半数になる。このように、その全員がそれに応じて0およびH(B
lr)についての自分のメッセージを伝播する。すなわち、この場合は「コインを投げ」ない。ここでも、当該すべての検証者は、ステップs
*+2がコインを0に固定するステップではないため、伝播せずに停止しないことに留意されたい。
【0465】
最後に、ステップs
*+3(これは別の、コインを0に固定するステップである)の誠実な検証者について、当該誠実な検証者が本当に時間
【数289】
[この文献は図面を表示できません]
待つ場合、その全員が
【数290】
[この文献は図面を表示できません]
から0およびH(B
lr)について少なくともt
H個の有効なメッセージを受信しているだろう。したがって、敵対者が
【数291】
[この文献は図面を表示できません]
のメッセージを誠実な検証者のいずれかに送るかどうかを問わず、
【数292】
[この文献は図面を表示できません]
のすべての検証者は、何も伝播せずに、B
r=B
lrで停止する。敵対者がどのように行為するかによって、そのうちのいく人かが
【数293】
[この文献は図面を表示できません]
の(r,s
*−1)メッセージからなる自分自身のCERT
rを持ち、他の人は(r,s
*+2)メッセージからなる自分自身のCERT
rを持つかもしれない。いずれの場合も、すべての誠実なユーザは時間間隔I
r+1以内にB
r=B
lrを知り、
【数294】
[この文献は図面を表示できません]
である。
【0466】
ケース2.2.b:
イベントE.bが起こり、何も伝播せずにやはり停止するような誠実な検証者
【数295】
[この文献は図面を表示できません]
は存在しない。
【0467】
この場合の分析はケース2.1.bおよびケース2.2.aと同様なため、多くの詳細を省略した。具体的には、
【数296】
[この文献は図面を表示できません]
は、敵対者が収集または生成することのできる、ビット1についてのt
H個の所望の(r,s
*−1)メッセージからなり、s
*−2≡1 mod 3で、ステップs
*はコインを1に固定するステップであり、誠実な(r,s
*)検証者は0について>2/3過半数を見ることができなかったであろう。
【0468】
したがって、すべての検証者
【数297】
[この文献は図面を表示できません]
はb
i=1を設定して、時刻
【数298】
[この文献は図面を表示できません]
で
【数299】
[この文献は図面を表示できません]
を伝播する。ケース2.2.aと同様に、たかだかさらに3ステップで(すなわち、プロトコルがステップs
*+3に到達し、これは別の、コインを1に固定するステップである)、すべての誠実なユーザは時間間隔I
r+1以内にB
r=B
εrを知る。また、T
r+1は、初めて誠実な検証者が伝播せずに停止することのできるときによって、
【数300】
[この文献は図面を表示できません]
、または
【数301】
[この文献は図面を表示できません]
、または
【数302】
[この文献は図面を表示できません]
のいずれかにすることができる。
【0469】
4つのサブケースを組み合わせると、すべての誠実なユーザは時間間隔I
r+1以内にB
rを知り、
ケース2.1.aおよび2.1.bでは
【数303】
[この文献は図面を表示できません]
、ならびに
ケース2.2.aおよび2.2.bでは
【数304】
[この文献は図面を表示できません]
である。
【0470】
s
*に、ひいてはケース2のT
r+1に、上限を設けることが残っており、実際にコインを投げるステップを、プロトコルで実際に何回実行するか、すなわち、いく人かの誠実な検証者が実際にコインを投げた回数、を検討することによってこれを行う。
【0471】
具体的には、実際にコインを投げるステップs’を任意に決め(すなわち、7≦s’≦m+2、かつ、s’−2≡2 mod 3)、
【数305】
[この文献は図面を表示できません]
とする。ここで、s’<s
*と仮定しよう。そうでなければ、前述の考察に従いステップs’で誠実な検証者が実際にコインを投げないからである。
【0472】
SV
r,s’−1の定義上、l’のクレデンシャルのハッシュ値も、PK
r−kの全ユーザの中で最小である。ハッシュ関数はランダムオラクルであるため、理想としては、プレーヤl’は少なくともhの確率で誠実である。後で示すように、敵対者がランダムオラクルの出力を予測し、確率を有利にしようと最善を尽くしても、プレーヤl’はなお、少なくともp
h=h
2(1+h−h
2)の確率で誠実である。以下に、それが実際に起こる場合、すなわちl’∈HSV
r,s’−1を検討する。
【0473】
すべての誠実な検証者i∈HSV
r,s’は時刻α
ir,s’+t
s’までにHSV
r,s’−1からすべてのメッセージを受信していることに留意されたい。プレーヤiがコインを投げる必要がある場合(すなわち、プレーヤiが、同じビットb∈{0,1}について>2/3過半数を見ていない)、プレーヤiはb
i=lsb(H(σ
l’r,s’−1))を設定する。ビットb∈{0,1}について>2/3過半数を見た別の誠実な検証者i’∈HSV
r,s’が存在する場合、補題5.5の性質(d)により、HSV
r,s’内の誠実な検証者はビットb’≠bについて>2/3過半数を見なかったであろう。確率1/2で、lsb(H(σ
l’r,s’−1))=bであるため、HSV
r,s’内のすべての誠実な検証者は、確率1/2でbに関して合意に達する。当然、このような検証者i’が存在しない場合、HSV
r,s’内のすべての誠実な検証者は、確率1でビットlsb(H(σ
l’r,s’−1))に合意する。
【0474】
l’∈HSV
r,s’−1の確率を組み合わせると、HSV
r,s’内の誠実な検証者は、少なくとも
【数306】
[この文献は図面を表示できません]
の確率でビットb∈{0,1}に関して合意に達することになる。さらに、前述の通りの過半数票に関する帰納法により、HSV
r,s’内のすべての誠実な検証者は、自分のv
iの集合をH(B
lr)に設定する。したがって、一旦ステップs’でbに関して合意に達したら、T
r+1は、ケース2.1.aおよび2.1.bの分析に従い、b=0またはb=1であるかどうかによって、
【数307】
[この文献は図面を表示できません]
または
【数308】
[この文献は図面を表示できません]
のいずれかである。
【0475】
具体的には、実際にコインを投げるステップはこれ以上実行されない。すなわち、このようなステップの検証者は、自分が検証者であることをなおもチェックし、したがって待つが、何も伝播せずに全員が停止する。したがって、ステップs
*の前に、実際にコインを投げるステップが実行される回数はランダム変数L
rに従って分散される。L
rに従って、ステップs’を、最後の実際にコインを投げるステップにすると、プロトコルの構築により、次の式になる。
【数309】
[この文献は図面を表示できません]
【0476】
敵対者ができるだけT
r+1を遅らせたい場合、敵対者はいつステップs
*を起こすべきだろうか? 敵対者が事前にL
rの実現を知ると仮定することもできる。s
*>s’の場合、誠実な検証者は既にステップs’で合意に達しているため、無駄である。確かに、この場合、ここでもb=0かb=1かによって、s
*はs’+1またはs’+2になるであろう。しかし、これは実際にはケース2.1.aおよび2.1.bであり、得られるT
r+1はその場合と全く同じである。より正確には、
【数310】
[この文献は図面を表示できません]
である。
【0477】
s
*<s’−3の場合、すなわち、s
*が、最後から2番目の実際にコインを投げるステップの前である場合、ケース2.2.aおよび2.2.bの分析により、
【数311】
[この文献は図面を表示できません]
である。
【0478】
すなわち、敵対者は、実際にB
rに関する合意をより早く起こそうとしている。
s
*=s’−2またはs’−1の場合、すなわち、ステップs’の直前の、コインを0に固定するステップまたはコインを1に固定するステップの場合、4つのサブケースの分析により、ステップs’の誠実な検証者は、伝播せずに停止しているため、または同じビットbについて>2/3過半数を見ているため、それ以上コインを投げることはない。そのため、次の式になる。
【数312】
[この文献は図面を表示できません]
【0479】
要するに、s
*が何であろうと、証明したかった通り、次の式になる。
【数313】
[この文献は図面を表示できません]
最悪のケースは、s
*=s’−1で、ケース2.2.bが起こる場合である。バイナリBAプロトコルのケース1および2を組み合わせると、補題5.3が成り立つ。
【0480】
5.9 シードQ
rのセキュリティおよび誠実なリーダの確率
補題5.4の証明が残っている。ラウンドrの検証者はPK
r−kから選択され、数量Q
r−1に従って選ばれることを思い出していただきたい。ルックバックパラメータkを導入する理由は、ラウンドr−kに戻って、敵対者が新たな悪意のユーザをPK
r−kに追加することができる場合に、無視できる確率を除いて、数量Q
r−1を敵対者が予測することができないことを確かにすることである。ハッシュ関数はランダムオラクルであり、Q
r−1は、ラウンドrの検証者を選択するときのその入力の1つであることに留意されたい。したがって、悪意のユーザがPK
r−kにいかに追加されようとも、敵対者の観点から、その各人は、必要な確率p(またはステップ1についてはp
1)で、ラウンドrのステップでも検証者に選択される。より正確には、次の補題となる。
【0481】
補題5.6.
k=O(log
1/2F)のとき、各ラウンドrについて、敵対者は圧倒的確率で、ラウンドr−kに戻ってQ
r−1をランダムオラクルに問い合わせなかった。
【0482】
証明.帰納法によって進める。各ラウンドγ−kについて、敵対者がラウンドγ−kに戻ってQ
γ−1ランダムオラクルに問い合わせなかったと仮定する。(脚注25参照)ラウンドr−kで敵対者が仕掛ける次の心理戦を検討し、Q
r−1を予測してみる。
【0483】
脚注25
kは小さな整数であり、一般性を損なうことなく、プロトコルの最初のkラウンドは安全な環境で実行され、そのラウンドについて帰納的仮説が成り立つと仮定することができる。
【0484】
各ラウンドγ=r−k,...,r−1のステップ1で、特定のQ
γ−1がランダムオラクルに問い合わされていないとすると、プレーヤi∈PK
γ−kをハッシュ値H(SIG
i(γ,1,Q
γ−1))に従って昇順に並べることによって、PK
γ−kに対しランダム順列を得る。定義上、リーダーl
γは順列の最初のユーザであり、確率hで誠実である。また、PK
γ−kが十分に大きい場合、任意の整数x≧1について、順列の最初のxユーザが全員悪意であるが(x+1)番目は誠実である確率は(1−h)
xhである。
【0485】
l
γが誠実である場合、
【数314】
[この文献は図面を表示できません]
である。敵対者はl
γの署名を偽造することはできないので、Q
γは敵対者の観点からランダムに均一に分散され、指数関数的に小さい確率を除き(脚注26参照)、ラウンドr−kでHに問い合わせがなされなかった。各Q
γ+1,Q
γ+2,...,Q
r−1はそれぞれHの出力で、Q
γ,Q
γ+1,...,Q
r−2は入力の1つになるので、これらはすべて敵対者にとってはランダムに見え、敵対者はラウンドr−kでHにQ
r−1を問い合わせることはできなかったであろう。
【0486】
脚注26
すなわち、Hの出力の長さの指数関数。この確率はFよりもはるかに小さいことに留意されたい。
【0487】
したがって、敵対者がラウンドr−kで良い確率でQ
r−1を予測できる唯一のケースは、リーダーl
r−k,...,l
r−1が全員悪意であるときである。もう一度、ラウンドγ∈{r−k,...,r−1}と、対応するハッシュ値によって導かれるPK
γ−kに対するランダム順列とを検討する。あるx≧2について、順列の最初のx−1ユーザが全員悪意で、x番目が誠実である場合、敵対者は、Q
γについてx個の可能な選択肢を有する。:すなわち、プレーヤi(iは、最初のx−1悪意のユーザのうちの1人である)をラウンドγの実際のリーダーにすることによる、形式H(SIG
i(Q
γ−1,γ))、または、B
γ=B
εγに強制することによる、H(Q
γ−1,γ)、のいずれかである。そうでなければ、ラウンドγのリーダーは順列で最初の誠実なユーザになり、Q
r−1は敵対者に予測できなくなってくる。
【0488】
敵対者は、Q
γの上記xの選択肢のうちのどちらを追求すべきだろうか? 敵対者がこの質問に答えるのを助けるために、心理戦で、現実にそうであるよりも実際に、次のように敵対者をよりパワフルにする。まず、現実では、敵対者は誠実なユーザの署名のハッシュを計算することはできず、したがって、各Q
γについて、Q
γによって導かれるラウンドγ+1のランダム順列の始めに悪意のユーザの数x(Q
γ)を決定することはできない。心理戦では、敵対者に数x(Q
γ)を自由に与える。次に、現実では、順列の最初のxユーザを全員悪意にすることは、その署名のハッシュ値もp
1未満にならなければならないので、全員がリーダーになることができることを必ずしも意味しない。心理戦におけるこの制約を無視し、敵対者をさらに有利にした。
【0489】
心理戦で、敵対者にとって最適な、
【数315】
[この文献は図面を表示できません]
で表される選択肢は、ラウンドγ+1のランダム順列の始めに、最長の悪意のユーザのシーケンスを生成するものであることは容易に分かる。実際、具体的なQ
γがあれば、プロトコルはそれ以上Q
γ−1に依存せず、敵対者はラウンドγ+1の新たな順列にのみ集中することができ、これは、始まりの悪意のユーザの数について同じ分布を有する。したがって、各ラウンドγでは、前述の
【数316】
[この文献は図面を表示できません]
は当該敵対者にQ
γ+1に対する最大数の選択肢を与え、そのため、後続のリーダーが全員悪意である確率を最大化する。
【0490】
したがって、心理戦では、敵対者はラウンドr−kからラウンドr−1までマルコフ連鎖を得られることになり、状態空間は{0}∪{x:x≧2}である。状態0は、現ラウンドγのランダム順列の最初のユーザが誠実であることを表し、したがって、敵対者はQ
r−1を予測するゲームに負ける。そして、各状態x≧2は、順列の最初のx−1ユーザが悪意であり、x番目が誠実であることを表すため、敵対者はQ
γについてx個の選択肢を有する。遷移確率P(x,y)は次の通りである。
【0491】
・P(0,0)=1で、任意のy≧2についてP(0,y)=0。すなわち、順列の最初のユーザが誠実になってしまうと、敵対者はゲームに負ける。
【0492】
・任意のx≧2についてP(x,0)=h
x。すなわち、確率h
xで、すべてのxランダム順列はその最初のユーザを誠実にするので、敵対者は次のラウンドでゲームに負ける。
【0493】
・任意のx≧2およびy≧2について、P(x,y)は、Q
γのx選択肢によって導かれるxランダム順列の中で、そのうちのいくつかの始まりで悪意のユーザの最長シーケンスがy−1である、したがって敵対者が次のラウンドでQ
γ+1についてy選択肢を有する確率である。すなわち、
【数317】
[この文献は図面を表示できません]
になる。
【0494】
状態0は、遷移行列Pにおける唯一の吸収状態であり、他のすべての状態xは、0になる正の確率を有することに留意されたい。我々は、圧倒的確率でマルコフ連鎖が0に収束するために必要なラウンド数kに上限を設けたいと思っている。すなわち、チェーンがどの状態で始まっても、圧倒的確率で、敵対者はゲームに負け、ラウンドr−kでQ
r−1の予測に失敗する。
【0495】
2ラウンド後の遷移行列
【数318】
[この文献は図面を表示できません]
を考えてみる。P
(2)(0,0)=1で、任意のx≧2についてP
(2)(0,x)=0であることは簡単に分かる。任意のx≧2およびy≧2について、P(0,y)=0であるため、次の式になる。
【数319】
[この文献は図面を表示できません]
【0496】
【数320】
[この文献は図面を表示できません]
とすると、次の式になる。
【数321】
[この文献は図面を表示できません]
また、
【数322】
[この文献は図面を表示できません]
である。
【0497】
以下に、hが1になるとき、すなわち
【数323】
[この文献は図面を表示できません]
が0になるときの
【数324】
[この文献は図面を表示できません]
の限界を計算する。P(x,y)において
【数325】
[この文献は図面を表示できません]
の最も高い次数は係数xで
【数326】
[この文献は図面を表示できません]
であることに留意されたい。したがって、
【数327】
[この文献は図面を表示できません]
になる。
【0498】
hが1に十分に近いとき(脚注27参照)、任意のx≧2およびy≧2については次の式になる。
【数328】
[この文献は図面を表示できません]
帰納法により、任意のk>2について、
【数329】
[この文献は図面を表示できません]
は、次のようになるものである。
・P
(k)(0,0)=1で、任意のx≧2についてP
(k)(0,x)=1、かつ、
・任意のx≧2およびy≧2について、
【数330】
[この文献は図面を表示できません]
【0499】
脚注27
例えば、パラメータの特定の選択肢によって提案されるように、h=80%。
【0500】
P(x,y)≦1のとき、1−log
2Fラウンドの後、任意の状態x≧2で始めて、任意の状態y≧2になる遷移確率は無視できる。このような状態yは多数あるが、次の式になることは簡単に分かる。
【数331】
[この文献は図面を表示できません]
【0501】
そのため、遷移行列Pの各行xは、yが十分に大きいとき、等比数列として、
【数332】
[この文献は図面を表示できません]
の比で減少し、P
(k)についても同じことがいえる。したがって、kは十分に大きいが、任意のx≧2についてまだおよそlog
1/2F,Σ
y≧2P
(k)(x,y)<Fである。すなわち、圧倒的確率で、敵対者はゲームに負け、ラウンドr−kでQ
r−1の予測に失敗する。h∈(2/3,1)について、より複雑な分析から、k=O(log
CF)をとると十分であるような、1/2よりやや大きい定数Cが存在することが証明される。したがって、補題5.6は成り立つ。
【0502】
補題5.4.(書き換え)
rの前の各ラウンドについて性質1〜3であれば、L
rについてはp
h=h
2(1+h−h
2)で、リーダーl
rは少なくともp
hの確率で誠実である。
【0503】
証明.
補題5.6に従い、敵対者は、無視できる確率を除き、ラウンドr−kに戻ってQ
r−1を予測することはできない。これは、誠実なリーダーの確率が各ラウンドでhであるという意味ではないことに留意されたい。実際、Q
r−1であれば、PK
r−kのランダム順列の始めに存在する悪意のユーザの数によって、敵対者はQに対して2つ以上の選択肢を有することがあり、そのため、ラウンドr+1における悪意のリーダーの確率を高めることができる。ここでも、補題5.6のように、分析を簡潔にするために、ある非現実的なアドバンテージを敵対者に与えている。
【0504】
しかし、ラウンドr−kに戻って敵対者がHに問い合わせなかった各Q
r−1について、任意のx≧1について、確率(1−h)
x−1hで、得られるPK
r−kのランダム順列において、最初の誠実なユーザは位置xで発生する。x=1のとき、ラウンドr+1における誠実なユーザの確率は実際にhであるが、x=2のとき、敵対者はQ
rに対して2つの選択肢を有し、得られる確率はh
2である。これら2つのケースを検討して初めて、ラウンドr+1における誠実なリーダーの確率が、所望の通り少なくともh・h+(1−h)h・h
2=h
2(1+h−h
2)になる。
【0505】
上記確率は、ラウンドr−kからラウンドrまでのプロトコルのランダム性しか考慮していないことに留意されたい。ラウンド0からラウンドrまでのすべてのランダム性を考慮する場合、Q
r−1は敵対者にとってさらに予測できないものになり、ラウンドr+1における誠実なリーダーの確率は、少なくともh
2(1+h−h
2)である。r+1をrに置換し、すべてを1ラウンド戻すと、リーダーl
rは、所望の通り、少なくともh
2(1+h−h
2)の確率で誠実である。
【0506】
同様に、各実際にコインを投げるステップsで、そのステップの「リーダー」、すなわち、そのクレデンシャルが最小のハッシュ値を有するSV
r,s内の検証者は、少なくともh
2(1+h−h
2)の確率で誠実である。したがって、L
rについてp
h=h
2(1+h−h
2)であり、補題5.4は成り立つ。
【0507】
6 アルゴランド’
2
このセクションでは、次の仮定の下に機能するアルゴランド’のバージョンを構築する。
「ユーザの誠実な過半数の仮定」:各PK
rのユーザの2/3超が誠実である。
セクション8では、上記仮定を、所望の「マネーの誠実な過半数」に置き換える方法を示す。
【0508】
6.1 アルゴランド’
2の追加の記号およびパラメータ
記号
・
【数333】
[この文献は図面を表示できません]
:圧倒的確率で1ラウンドで実際に取られるステップ数に対する、現実的な上限。(後で述べるように、パラメータμは、各ラウンドのためにユーザが事前に準備する一時的な鍵の数を制御する。)
【0509】
・L
r:各試行が
【数334】
[この文献は図面を表示できません]
の確率で1になり、1を見るために必要なベルヌーイ試行の数を表すランダム変数。L
rは、ブロックB
rを生成するために必要な時間に上限を設けるために使用される。
【0510】
・t
H:圧倒的確率(nおよびpがあるとすると)で、SV
r,s内に>t
Hの誠実な検証者がいるような、ラウンドrのステップs>1における誠実な検証者の数の下限。
【0511】
パラメータ
・様々なパラメータ間の関係。
−ラウンドrの各ステップs>1について、nは、圧倒的確率で、
【数335】
[この文献は図面を表示できません]
かつ
【数336】
[この文献は図面を表示できません]
になるように選ばれる。
上記2つの不等式は合わせて、|HSV
r,s|>2|MSV
r,s|を含意する。すなわち、選択された検証者の中に2/3の誠実な過半数がいる。
hの値が1に近づくほど、nは小さくなる必要がある。具体的には、チェルノフ限界(の変型)を使用して、所望の条件が圧倒的確率で成り立つことを確実にする。
【0512】
・重要なパラメータの具体的な選択肢。
− F=10
−18。
− n≒4000、t
H≒0.69n、k=70。
【0513】
6.2 アルゴランド’
2での一時的な鍵の実装
検証者i∈SV
r,sが、使用後直ちに破壊する一時的な秘密鍵sk
ir,sを使用して、一時的な公開鍵pk
ir,sに関連し、ラウンドrのステップsの自分のメッセージm
ir,sに電子署名をすることを思い出そう。ラウンドが取り得る可能なステップの数に所与の整数μによって上限が設けられる場合、実際に一時的な鍵をどのように取り扱うかは既に見てきた。例えば、アルゴランド’
1で説明したように(μ=m+3の場合)、ラウンドr’からラウンドr’+10
6まで、自分の可能な一時的な鍵のすべてを取り扱うために、iはペア(PMK,SMK)を生成する。ここで、PMKはアイデンティティベースの署名スキームの公開マスター鍵であり、SMKはそれに対応する秘密マスター鍵である。ユーザiは、PMKを公表し、各可能な一時的な公開鍵の秘密鍵を生成するためにSMKを使用する(さらに、そうした後にSMKを破壊する)。関連するラウンドのiの一時的な公開鍵の集合はS={i}×{r’,...,r’+10
6}×{1,...,μ}である。(述べたように、ラウンドr’+10
6が近づくと、iは自分のペア(PMK,SMK)を「リフレッシュ」する。)
【0514】
実際には、μが十分に大きい場合、アルゴランド’
2のラウンドはμより多いステップを取らない。しかし、原則的に、あるラウンドrについて、実際に取られるステップ数がμを超える可能性がわずかにある。これが起こると、iはラウンドrについてμ個の秘密鍵しか事前に準備していないので、iは任意のステップs>μについて自分のメッセージm
ir,sに署名できなくなるであろう。また、前述したように、一時的な鍵の新たな隠し場所を準備して公表することはできないであろう。実際、そうするためには、iは新たなブロックに新たな公開マスターキーPMK’を挿入する必要があるだろう。しかし、万が一ラウンドrがさらに多くのステップを取ったとしても、新たなブロックは生成されないだろう。
【0515】
ただし、解決策は存在する。例えば、iは、次の通り、ラウンドrの最後の一時的な鍵pk
ir,μを使用することができる。ラウンドrについて、例えば、(1)別のマスター鍵ペア
【数337】
[この文献は図面を表示できません]
を生成する、(2)このペアを使用して、ラウンドrのステップμ+1,...,μ+10
6に対応する別の、例えば、10
6個の一時的な鍵
【数338】
[この文献は図面を表示できません]
を生成する、(3)sk
ir,μを使用して、pk
ir,μに関連して、
【数339】
[この文献は図面を表示できません]
(および、i∈SV
r,μの場合、任意の(r,μ)メッセージ)に電子署名する、および(4)
【数340】
[この文献は図面を表示できません]
およびsk
ir,μを消去することによって、鍵ペアの別の隠し場所を生成する。s∈{1,...,10
6}のとき、iがステップμ+sで検証者になる場合、iは自分の新たな鍵
【数341】
[この文献は図面を表示できません]
に関連して、自分の(r,μ+s)メッセージm
ir,μ+sに電子署名する。当然、iのこの署名を検証するために、この公開鍵がiの新たな公開マスター鍵
【数342】
[この文献は図面を表示できません]
に対応することを他者が確信する必要がある。したがって、この署名に加えて、iはpk
ir,μに関連して、
【数343】
[この文献は図面を表示できません]
の電子署名を伝送する。
【0516】
当然、ラウンドrがさらに多くのステップの間続く場合、このアプローチは、必要な回数繰り返すことができる! 最後の一時的な秘密鍵を使用して新たなマスター公開鍵を認証し、したがって、ラウンドrの一時的な鍵の別の隠し場所を認証する。以降も同様。
【0517】
6.3 実際のプロトコルアルゴランド’
2
ラウンドrの各ステップsで、検証者i∈SV
r,sは、ケースs=1のSIG
i(Q
r−1)だけでなく、自分のクレデンシャル
【数344】
[この文献は図面を表示できません]
を生成するためにも長期公開秘密鍵ペアを使用することをもう一度思い出そう。検証者iは自分の一時的な鍵ペア(pk
ir,s,sk
ir,s)を使用して、要求され得る任意の他のメッセージmに署名する。簡潔にするために、このステップでのiによるmの正規の一時的な署名を表すために、
【数345】
[この文献は図面を表示できません]
ではなく、esig
i(m)を書き、
【数346】
[この文献は図面を表示できません]
の代わりにESIG
i(m)を書く。
【0518】
ステップ1: ブロックの提案
全ユーザi∈PK
r−kのための命令:ユーザiは、CERT
r−1を持つや否やラウンドrの自分のステップ1を始め、当該CERT
r−1は、iがH(B
r−1)およびQ
r−1を曖昧さなく計算できるようにする。
【0519】
・ユーザiはQ
r−1を使用して、i∈SV
r,1かどうかをチェックする。
【数347】
[この文献は図面を表示できません]
の場合、ステップ1についてiは何もしない。
【0520】
・i∈SV
r,1の場合、すなわち、iが潜在的リーダーである場合、iは次のことを行う。
(a)iが自分自身でB
0,...,B
r−1を見てきた場合(どのB
j=B
εjもCERT
jでのそのハッシュ値から容易に導くことができ、そのため「見てきた」と想定される)、それまでに当該iに伝播されてきたラウンドrの支払を収集して、そこから最大支払集合PAY
irを計算する。
(b)iがまだすべてのB
0,...,B
r−1を見ていない場合、iは
【数348】
[この文献は図面を表示できません]
を設定する。
(c)次に、iは自分の「候補ブロック」B
ir=(r,PAY
ir,SIG
i(Q
r−1),H(B
r−1))を計算する。
(c)最後に、iはメッセージm
ir,1=(B
ir,esig
i,(H(B
ir)),σ
ir,1)を計算して、自分の一時的な秘密鍵sk
ir,1を破壊してから、2つのメッセージm
ir,1および(SIG
i,(Q
r−1),σ
ir,1)を別々に、しかし同時に伝播する(脚注28参照)。
【0521】
脚注28
iがリーダーのとき、SIG
i(Q
r−1)は、他者がQ
r=H(SIG
i(Q
r−1),r)を計算するのを許容する。
【0522】
選択的伝播
ステップ1およびラウンド全体の大域的実行を短縮するために、(r,1)メッセージを選択的に伝播することが重要である。すなわち、システム内の全ユーザjについて、以下のように伝播する。
【0523】
・いつか受信して検証に成功する最初の(r,1)メッセージについて(脚注29参照)、それがブロックを含むか、または単にQ
r−1のクレデンシャルおよび署名であるかを問わず、プレーヤjは通常通りそれを伝播する。
【0524】
脚注29
すなわち、すべての署名が正当で、それが形式m
ir,1である場合、ブロックとそのハッシュの両方が有効である。ただし、jは、含まれる支払集合がiにとって最大かどうかをチェックしない。
【0525】
・プレーヤjが受信して検証に成功する他のすべての(r,1)メッセージについて、当該メッセージが含むクレデンシャルのハッシュ値が、当該プレーヤjがそれまでに受信し検証が成功したすべての(r,1)メッセージに含まれるクレデンシャルのハッシュ値の中で最小である場合に限り、それを伝播する。
【0526】
・しかし、jが同じプレーヤiから形式m
ir,1の2つの異なるメッセージを受信する場合(脚注30参照)、iのクレデンシャルのハッシュ値がどのようなものであろうと、2つ目のものを破棄する。
【0527】
脚注30
これは、iが悪意であることを意味する。
【0528】
選択的伝播では、各潜在的リーダーiが自分のクレデンシャルσ
ir,1をm
ir,1とは別に伝播することが有用であることに留意されたい(脚注31参照)。これらの小さなメッセージはブロックよりも高速で移動し、含まれるクレデンシャルが小さいハッシュ値を有する場合に、m
ir,1の適時の伝播を確実にするのに対し、ハッシュ値が大きいものはすぐに消失させる。
【0529】
脚注31
これを提案したジョルジオ・ブラコスに感謝する。
【0530】
ステップ2: 段階的コンセンサスプロトコルGCの最初のステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、CERT
r−1を持つや否やラウンドrの自分のステップ2を始める。
【0531】
・ユーザiは、最大時間量
【数349】
[この文献は図面を表示できません]
待つ。待っている間、iは次のように行為する。
【0532】
1. 時間2λ待った後、それまでに受信して検証に成功した(r,1)メッセージの一部であるすべてのクレデンシャルσ
jr,1について、H(σ
lr,1)≦H(σ
jr,1)になるようなユーザlを見つける(脚注32参照)。
【0533】
脚注32
本質的に、ユーザiは、ラウンドrのリーダーがユーザlであることを秘かに決定する。
【0534】
2. CERT
r−1に含まれるハッシュ値H(B
r−1)にマッチするブロックB
r−1を受信した場合(脚注33参照)、および、lから有効なメッセージm
lr,1=(B
lr,esig
l(B
lr)),σ
lr,1)を受信した場合(脚注34参照)、iは待機を停止し、
【数350】
[この文献は図面を表示できません]
を設定する。
【0535】
脚注33
当然、B
r−1=B
εr−1であることをCERT
r−1が示す場合、iは、CERT
r−1を持った瞬間に既にB
r−1を「受信」済みである。
【0536】
脚注34
ここでも、プレーヤlの署名およびハッシュは、すべて検証が成功し、B
lr内のPAY
lrは、ラウンドrについて有効な支払集合である。ただし、iは、PAY
lrがlにとって最大かどうかをチェックしない。B
lrが空の支払集合を含む場合、B
lrが有効かどうかを検証する前に、iがB
r−1を見る必要は実際にはない。
【0537】
3. そうでなければ、時間t
2が経過したとき、iは
【数351】
[この文献は図面を表示できません]
を設定する。
【0538】
4. v’
iの値が設定されている場合、iはCERT
r−1からQ
r−1を計算し、i∈SV
r,2かどうかをチェックする。
【0539】
5.i∈SV
r,2である場合、iはメッセージ
【数352】
[この文献は図面を表示できません]
を計算し(脚注35参照)、自分の一時的な秘密鍵sk
ir,2を破壊してから、m
ir,2を伝播する。そうでなければ、iは何も伝播せずに停止する。
【0540】
脚注35
メッセージm
ir,2は、プレーヤiがv’
iの最初の成分を次のブロックのハッシュであるとみなす、または次のブロックを空だとみなすことを示す。
【0541】
ステップ3: GCの第2ステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、CERT
r−1を持つや否やラウンドrの自分のステップ3を始める。
【0542】
・ユーザiは、最大時間量
【数353】
[この文献は図面を表示できません]
待つ。待っている間、iは次のように行為する。
【0543】
1. 一切の矛盾なく、iが形式(ESIG
j(v),σ
jr,2)の少なくともt
H個の有効なメッセージm
jr,2を受信したような値vが存在する場合(脚注36参照)、待機を停止し、v’=vを設定する。
【0544】
脚注36
すなわち、iは、ESIG
j(v)および異なる
【数354】
[この文献は図面を表示できません]
をそれぞれ含む2つの有効なメッセージをプレーヤjから受信していない。ここで、またこれ以降、後で定義する終了条件を除き、誠実なプレーヤが所与の形式のメッセージを望む場合は必ず、互いに矛盾するメッセージは絶対にカウントされず、または有効とは見なされない。
【0545】
2. そうでなければ、時間t
3が経過したとき、iはv’=⊥を設定する。
【0546】
3. v’の値が設定されていた場合、iはCERT
r−1からQ
r−1を計算し、i∈SV
r,3かどうかをチェックする。
【0547】
4. i∈SV
r,3である場合、iはメッセージ
【数355】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,3を破壊してから、m
ir,3を伝播する。そうでなければ、iは何も伝播せずに停止する。
【0548】
ステップ4: GCの出力およびBBA
★の第1ステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、自分のステップ3を終えるや否やラウンドrの自分のステップ4を始める。
【0549】
・ユーザiは、最大時間量2λ待つ(脚注37参照)。待っている間、iは次のように行為する。
【0550】
脚注37
したがって、iがラウンドrの自分のステップ1を始めたときからの最大総時間量は、
【数356】
[この文献は図面を表示できません]
とすることができるであろう。
【0551】
1. v
iおよびg
i、GCの出力を次のように計算する。
【0552】
(a)iが少なくともt
H個の有効なメッセージm
jr,3=(ESIG
j(v’),σ
jr,3)を受信したような値v’≠⊥が存在する場合、待機を停止し、
【数357】
[この文献は図面を表示できません]
および
【数358】
[この文献は図面を表示できません]
を設定する。
【0553】
(b)iが少なくともt
H個の有効なメッセージm
jr,3=(ESIG
j(⊥),σ
jr,3)を受信している場合、待機を停止し、
【数359】
[この文献は図面を表示できません]
および
【数360】
[この文献は図面を表示できません]
を設定する(脚注38参照)。
【0554】
脚注38
ステップ(b)がプロトコル内であるかどうかはその正当性に影響を与えない。しかし、ステップ(b)の存在は、十分に多くのステップ3検証者が「⊥に署名」した場合、ステップ4が2λより少ない時間で終了することを許す。
【0555】
(c)そうでなければ、時間2λが経過したとき、iが少なくとも
【数361】
[この文献は図面を表示できません]
個の有効なメッセージm
jr,j=(ESIG
j(v’),σ
jr,3)を受信したような値v’≠⊥が存在する場合、
【数362】
[この文献は図面を表示できません]
および
【数363】
[この文献は図面を表示できません]
を設定する(脚注39参照)。
【0556】
脚注39
この場合のv’は、存在する場合、一意でなければならないことは証明できる。
【0557】
(d) そうでなければ、時間2λが経過したとき、
【数364】
[この文献は図面を表示できません]
および
【数365】
[この文献は図面を表示できません]
を設定する。
【0558】
2. 値v
iおよびg
iが設定されているとき、iは、b
i、BBA
★の入力を次のように計算する。
g
i=2の場合
【数366】
[この文献は図面を表示できません]
で、それ以外の場合は
【数367】
[この文献は図面を表示できません]
である。
【0559】
3. iは、CERT
r−1からQ
r−1を計算し、i∈SV
r,4かどうかをチェックする。
【0560】
4. i∈SV
r,4である場合、iはメッセージ
【数368】
[この文献は図面を表示できません]
を計算し、自分の一時的な秘密鍵sk
ir,4を破壊してから、m
ir,4を伝播する。そうでなければ、iは何も伝播せずに停止する。
【0561】
ステップs,5≦s≦m+2,s−2≡0 mod 3: BBA
★の、コインを0に固定するステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、自分のステップs−1を終えるや否やラウンドrの自分のステップsを始める。
【0562】
・ユーザiは、最大時間量2λ待つ(脚注40参照)。待っている間、iは次のように行為する。
【0563】
脚注40
したがって、iがラウンドrの自分のステップ1を始めたときからの最大総時間量は、
【数369】
[この文献は図面を表示できません]
とすることができるであろう。
【0564】
−終了条件0:任意の点で、次のようになるストリングv≠⊥およびステップs’が存在する場合、
(a)5≦s’≦s,s’−2≡0 mod 3、すなわち、ステップs’は、コインを0に固定するステップであり、
(b)iは少なくともt
H個の有効なメッセージm
jr,s’−1=(ESIG
j(0),ESIG
j(v),σ
jr,s’−1)を受信しており(脚注41参照)、かつ、
(c)iは、jがvの第2成分のとき、有効なメッセージ(SIG
j(Q
r−1),σ
jr,1)を受信している場合、
iは待機を停止し、自分によるステップs(実際にはラウンドrの)の実行を、(r,s)検証者として何も伝播せずにすぐに終了し、H(B
r)をvの最初の成分になるように設定する。さらに、自分自身のCERT
rを、(SIG
j(Q
r−1),σ
jr,1)とともに、ステップ(b)のメッセージm
jr,s’−1の集合に設定する(脚注42参照)。
【0565】
脚注41
プレーヤjからのこのようなメッセージは、プレーヤiが1について署名するjからのメッセージも受信している場合であってもカウントされる。終了条件1についても同様。分析で示しているように、このことは、すべての誠実なユーザが時間λ以内に互いにCERT
rを知ることを確実にするためである。
【0566】
脚注42
ユーザiはこれでH(B
r)を知り、自分自身のラウンドrを終わらせる。実際にブロックB
rがユーザiに伝播されるまで待つだけでよく、これにはいくらか追加の時間がかかるかもしれない。ユーザiは一般ユーザとしてメッセージの伝播をなおも手伝うが、(r,s)検証者として伝播を開始しない。具体的には、自分のCERT
r内のすべてのメッセージの伝播を手伝っており、これは我々のプロトコルにとって十分である。ユーザiはバイナリBAプロトコルについても
【数370】
[この文献は図面を表示できません]
を設定するべきであるが、この場合b
iは一切必要ない。すべての将来の命令についても同様。
【0567】
−終了条件1:任意の点で、次のようになるステップs’が存在する場合、
(a’)6≦s’≦s,s’−2≡1 mod 3、すなわち、ステップs’は、コインを1に固定するステップであり、かつ、
(b’)iは少なくともt
H個の有効なメッセージm
jr,s’−1=(ESIG
j(1),ESIG
j(v
j),σ
jr,s’−1)を受信している場合(脚注43参照)、
iは待機を停止し、自分によるステップs(実際にはラウンドrの)の実行を、(r,s)検証者として何も伝播せずにすぐに終了し、B
r=B
εrを設定する。さらに、自分自身のCERT
rを、サブステップ(b’)のメッセージm
jr,s’−1の集合になるように設定する。
【0568】
脚注43
この場合、v
jが何であるかは問題ではない。
【0569】
−任意の時点で、形式(ESIG
j(1),ESIG
j(v
j),σ
jr,s−1)の少なくともt
H個の有効なm
jr,s−1を受信している場合、待機を停止し、
【数371】
[この文献は図面を表示できません]
を設定する。
【0570】
−任意の時点で、形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1)の少なくともt
H個の有効なm
jr,s−1を受信しているが、当該ユーザiらが同じvに合意しない場合、待機を停止し、
【数372】
[この文献は図面を表示できません]
を設定する。
【0571】
−そうでなければ、時間2λが経過したとき、iは
【数373】
[この文献は図面を表示できません]
を設定する。
【0572】
−値b
iが設定されているとき、iはCERT
r−1からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0573】
− i∈SV
r,sである場合、iはメッセージ
【数374】
[この文献は図面を表示できません]
を計算し(v
iは、ステップ4でiが計算した値である)、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。そうでなければ、iは何も伝播せずに停止する。
【0574】
ステップs,6≦s≦m+2,s−2≡1 mod 3: BBA
★の、コインを1に固定するステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、自分のステップs−1を終えるや否やラウンドrの自分のステップsを始める。
【0575】
・ユーザiは、最大時間量2λ待つ。待っている間、iは次のように行為する。
【0576】
−終了条件0:コインを0に固定するステップと同じ命令。
【0577】
−終了条件1:コインを0に固定するステップと同じ命令。
【0578】
−任意の時点で、形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1の少なくともt
H個の有効なm
jr,s−1を受信している場合、待機を停止し、
【数375】
[この文献は図面を表示できません]
を設定する(脚注44参照)。
【0579】
脚注44
1について署名するt
H個の有効な(r,s−1)メッセージを受信することが、終了条件1を意味するであろうことに留意されたい。
【0580】
−そうでなければ、時間2λが経過したとき、iは
【数376】
[この文献は図面を表示できません]
を設定する。
【0581】
−値b
iが設定されているとき、iはCERT
r−1からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0582】
−i∈SV
r,sである場合、iはメッセージ
【数377】
[この文献は図面を表示できません]
を計算し(v
iは、ステップ4でiが計算した値である)、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。そうでなければ、iは何も伝播せずに停止する。
【0583】
ステップs,7≦s≦m+2,s−2≡2 mod 3: BBA
★の、実際にコインを投げるステップ
全ユーザi∈PK
r−kのための命令:ユーザiは、自分のステップs−1を終えるや否やラウンドrの自分のステップsを始める。
【0584】
・ユーザiは、最大時間量2λ待つ。待っている間、iは次のように行為する。
【0585】
−終了条件0:コインを0に固定するステップと同じ命令。
【0586】
−終了条件1:コインを0に固定するステップと同じ命令。
【0587】
−任意の時点で、形式(ESIG
j(0),ESIG
j(v
j),σ
jr,s−1)の少なくともt
H個の有効なm
jr,s−1を受信している場合、待機を停止し、
【数378】
[この文献は図面を表示できません]
を設定する。
【0588】
−任意の時点で、形式(ESIG
j(1),ESIG
j(v
j),σ
jr,s−1)の少なくともt
H個の有効なm
jr,s−1を受信している場合、待機を停止し、
【数379】
[この文献は図面を表示できません]
を設定する。
【0589】
−そうでなければ、時間2λが経過したとき、SV
ir,s−1を有効なメッセージm
jr,s−1を受信した(r,s−1)検証者の集合として、iは
【数380】
[この文献は図面を表示できません]
を設定する。
【0590】
−値b
iが設定されているとき、iはCERT
r−1からQ
r−1を計算し、i∈SV
r,sかどうかをチェックする。
【0591】
−i∈SV
r,sである場合、iはメッセージ
【数381】
[この文献は図面を表示できません]
を計算し(v
iは、ステップ4でiが計算した値である)、自分の一時的な秘密鍵sk
ir,sを破壊してから、m
ir,sを伝播する。そうでなければ、iは何も伝播せずに停止する。
【0592】
備考
原則として、サブセクション6.2で検討したように、プロトコルは、あるラウンドで多くのステップを任意に取ることができる。述べたように、これが起こる場合、s>μのときユーザi∈SV
r,sは、事前に生成した一時的な鍵の隠し場所を使い果たしており、一時的な鍵の「カスケード」によって自分の(r,s)メッセージm
ir,sを認証しなければならない。したがって、iのメッセージは少し長くなり、これらの長くなったメッセージの伝送には少し多くの時間がかかる。したがって、所与のラウンドのそのように多くのステップの後、パラメータλの値は自動的にやや大きくなる。(しかし、一旦新たなブロックが生成されて、新たなラウンドが始まれば、元のλに戻る。)
【0593】
非検証者によるラウンドrの再構築
システム内の全ユーザiのための命令: ユーザiは、CERT
r−1を持つや否や自分のラウンドrを始める。
【0594】
・iは、プロトコルの各ステップの命令に従い、すべてのメッセージの伝播に参加するが、その検証者ではない場合、ステップの伝播は開始しない。
【0595】
・iは、あるステップで終了条件0または終了条件1のいずれかに入ることによって、自分のラウンドrを、対応するCERT
rを使って終了する。
【0596】
・それ以降、iは、そのハッシュH(B
r)がCERT
rによってピン留めされている実際のブロックB
rを受信するのを待ちながら(それを既に受信していない限り)、自分のラウンドr+1を始める。ここでも、B
r=B
εrであることをCERT
rが示す場合、iは、CERT
rを持った瞬間にB
rを知る。
【0597】
6.4 アルゴランド’
1の分析
アルゴランド’
2の分析は、アルゴランド’
1の分析から容易に導き出せる。本質的に、アルゴランド’
2では、圧倒的確率で、(a)すべての誠実なユーザは同じブロックB
rに合意する。新たなブロックのリーダーは、少なくともp
h=h
2(1+h−h
2)の確率で誠実である。
【0598】
7 オフラインである誠実なユーザの取り扱い
述べたように、誠実なユーザは、オンラインであること、およびプロトコルを実行することを含め、自分の規定された命令のすべてに従う。誠実なユーザに対して要求する計算および帯域幅がかなり少量であるため、これは、アルゴランドでは大きな負担ではない。しかし、アルゴランドは、非常に多数の誠実なユーザがオフラインであることが許容される2つのモデルで機能するように簡単に修正できることを指摘したい。
【0599】
この2つのモデルを考察する前に、誠実なユーザの割合が95%であった場合、アルゴランドは、代わりにh=80%であると仮定してもなお、すべてのパラメータの設定を実行することができるだろうということを指摘したい。したがって、アルゴランドは、誠実なプレーヤのうちのたかだか半数がオフラインになることを選んでも(実際、「常習的不在」の主なケースである)、適切に機能し続けるであろう。事実、任意の時点で、オンラインのプレーヤの少なくとも80%は誠実であるだろう。
【0600】
継続的参加から怠惰な誠実者へ
述べたように、アルゴランド’
1およびアルゴランド’
2は、ルックバックパラメータkを選ぶ。ここで、適切に大きいkを選ぶことで継続的参加要件を取り除けるということを示そう。この要件は、極めて重要な性質、すなわち、基となるBAプロトコルBBA
★が正規の誠実な過半数を有すること、を確保する。ここで、この性質を満たす代替の魅力的な方法を怠惰な誠実者がいかに提供するかを説明しよう。
【0601】
ユーザiは、(1)プロトコルへの参加を求められるときに、自分の規定された命令のすべてに従い、(2)プロトコルへの参加を求められることは極稀(例えば週に1回)にしかなく、かつ、参加要求が適切な事前の通知をもって行われ、参加するときはかなりの報酬を潜在的に受け取る場合に、怠惰であるが誠実であることを思い出そう。
【0602】
アルゴランドをこのようなプレーヤで機能させるには、「かなり早期のラウンドで既にシステムにいたユーザの中から、現行ラウンドの検証者を選ぶ」だけで十分である。実際、ラウンドrの検証者はラウンドr−kのユーザから選ばれ、数量Q
r−1に基づいて選択が行われることを思い出そう。1週は約10,000分からなることに留意し、1ラウンドに(例、平均で)約5分かかると仮定すると、1週は約2,000ラウンドを有する。そう仮定すると、ある時点で、ユーザiは、自分の時間を予定し、翌週に自分が検証者になるかどうかを知りたい。ここで、プロトコルはラウンドr−k−2,000内のユーザからラウンドrの検証者を選び、Q
r−2,001に基づいて選択が行われる。ラウンドrで、プレーヤiは既にQ
r−2,000,...,Q
r−1の値を知っている。なぜなら、これらが実際にブロックチェーンの一部であるからである。さらに、1〜2,000までの各Mについて、iは、
【数382】
[この文献は図面を表示できません]
の場合に、かつ、その場合に限り、iはラウンドr+Mのステップsの検証者である。
【0603】
したがって、当該プレーヤiが次の2,000ラウンドで検証者として行為するために呼び出されることになるかどうかをチェックするためには、iは、M=1〜2,000および各ステップsについてσ
iM,s=SIG
i(r+M,s,Q
r+M−2,001)を計算して、そのうちのいくつかについて、.H(σ
iM,s)≦pかどうかをチェックしなければならない。電子署名の計算に1ミリ秒かかる場合、この全体の動作を当該iが行うのに約1分かかる計算になる。これらのラウンドのいずれにおいても当該iが検証者として選択されない場合、当該iは、「誠実な分別」をもってオフラインになることができる。継続的に参加した場合、本質的に、当該iは、いずれにしても次の2,000ラウンドの0ステップを実質的に取ったことになるであろう! 代わりに、当該iは、これらのラウンドのうちの1ラウンドの検証者として選択される場合、正規のラウンドで誠実な検証者として行為するために(例、必要なすべての情報を得ることによって)準備する。
【0604】
そのように行為することによって、怠惰であるが誠実な潜在的検証者iは、メッセージの伝播への参加の機会を逃すだけである。しかし、メッセージの伝播は通例ロバストである。また、最近伝播された支払の支払人および受取人は、自分の支払に何が起こるのかを見るためにオンラインであると期待され、したがって、当該支払人および受取人が誠実である場合に、メッセージの伝播に参加するであろう。
【0605】
8 「マネーの誠実な過半数」を伴うプロトコルアルゴランド’
ここで、最後に、ユーザの誠実な過半数の仮定を、はるかに意味深い「マネーの誠実な過半数」の仮定に置き換える方法を示す。基本的な考えは、(プルーフ・オブ・ステーク風に)「iが所有するマネーの金額に比例する重み(つまり、決定権)によって、SV
r,sに所属しているユーザi∈PK
r−kを選択すること」である(脚注45参照)。
【0606】
脚注45
継続的参加と置き換えるために、PK
r−k−2,000というべきである。単純にするために、いずれにしても連続的参加を要求したいと望む人はいるかもしれないので、1少ないパラメータを表すのに、以前と同様にPK
r−kを使用する。
【0607】
HMMの仮定により、その金額をラウンドr−kで所有するべきか、またはラウンドr(の始まり)で所有するべきかを選ぶことができる。我々が継続的参加を嫌がらないと仮定すると、我々は、後者の選択肢を選ぶ。(継続的参加を除くためなら、前者の選択肢を選ぶであろう。より適切にいうと、ラウンドr−k−2,000で所有されるマネーの金額のため。)
【0608】
この考えを実施するには沢山の方法がある。最も単純な方法は、各鍵にマネーのたかだか1単位を保有させてから、a
i(r)=1になるように、PK
r−kからランダムにn人のユーザiを選択することであろう。
【0609】
次に最も単純な実施態様
次に最も単純な実施態様は、各公開鍵が、ある固定Mについて、マネーMの最高金額を所有するよう要求することであろう。値Mは、1つの鍵が、例えば、kラウンドの2以上のステップの検証者集合に属す確率を無視できる程度にするように、システム内のマネーの総額に対して十分に小さくする。そして、ラウンドrでマネーの金額a
i(r)を所有する鍵i∈PK
r−kが、
【数383】
[この文献は図面を表示できません]
である場合、SV
r,sに属すように選ばれる。そして、すべてが前と同様に進行する。
【0610】
より複雑な実施態様
最後の実施態様は、「システムの金持ちの参加者に多くの鍵を所有させた」。
以下に述べる代替実施態様は、ステータスの概念を一般化し、各ユーザiをK+1コピー(i,v)からなると見なし、そのそれぞれが独立して検証者であるように選択され、ラウンドrのステップsで自分自身の一時的な鍵(pk
i,vr,s,sk
i,vr,s)を所有することになる。Kの値は、ラウンドrのiによって所有されるマネーの金額a
i(r)に依存する。
ここで、このようなシステムがどのように機能するかをより詳細に見ていこう。
【0611】
コピー数
nを、各検証者集合の目標とする期待濃度とし、a
i(r)を、ラウンドrでユーザiが所有するマネーの金額とする。A
rを、ラウンドrでPK
r−kのユーザが所有するマネーの総額、すなわち、
【数384】
[この文献は図面を表示できません]
とする。
【0612】
iがPK
r−k内のユーザである場合、iのコピーは(i,1),...,(i,K+1)であり、ここで、
【数385】
[この文献は図面を表示できません]
である。
【0613】
例.
n=1,000、A
r=10
9、a
i(r)=370万とする。すると、
【数386】
[この文献は図面を表示できません]
である。
【0614】
検証者およびクレデンシャル
iを、K+1コピーを有するPK
r−k内のユーザとする。
【0615】
各v=1,.,.,Κについて、コピー(i,v)は自動的にSV
r,sに属す。すなわち、iのクレデンシャルは
【数387】
[この文献は図面を表示できません]
であるが、対応する条件は、.Η(σ
i,vr,s)≦1になり、常に真である。
【0616】
コピー(i,K+1)について、ラウンドrの各ステップsは、iが
【数388】
[この文献は図面を表示できません]
であるかどうかをチェックする。もしそうなら、コピー(i,K+1)はSV
r,sに属す。これを証明するために、iは次のクレデンシャルを伝播する。
【数389】
[この文献は図面を表示できません]
【0617】
例.
前の例と同様に、n=1K、a
i(r)=370万、A
r=1B、そしてiは4つのコピー(i,1),...,(i,4)を有するとする。すると、最初の3つのコピーは自動的にSV
r,sに属す。4番目のコピーについては、概念的に、アルゴランド’は独立してバイアスコインを転がし、それが表になる確率は0.7である。コピー(i,4)は、コイントスが表である場合、かつ、その場合にのみ選択される。
【0618】
(当然、この出願においてこれまでずっと行ってきたように、このバイアスコインフリップは、iが自分の結果を証明できるように、ハッシュ化、署名および比較によって実施される。)
【0619】
通常通りのビジネス
検証者がどのように選択され、当該検証者のクレデンシャルがラウンドrの各ステップでどのように計算されるかを説明してきたが、ラウンドの実行は既に説明したものと似ている。
【0620】
9 フォーク
フォークの確率を10
−12または10
−18まで減じて、それが発生する可能性がほとんどない中で、当該フォークを取り扱う必要は実際上ない。しかし、アルゴランドは、プルーフ・オブ・ワークの有無を問わず、様々なフォークの解決手順を採用することもできる。
【0621】
10 ブロックおよびステータス情報のための新たな構造
このセクションは、すべてのブロックの改ざん防止性を保証し続けるブロックを構築するより良い方法を提案するだけでなく、個々のブロックの内容を証明し、より一般的には、ブロックチェーン全体を審査することなく、関心のある特定の数量を計算するためにブロックを使用する、より効率的な方法を可能にもする。
【0622】
ブロックチェーンの改ざん防止性
ブロックチェーンを作るために、ブロックB
rは次の高次構造を有することを思い出そう(脚注46参照)。
【数390】
[この文献は図面を表示できません]
【0623】
脚注46
アルゴランドではラウンドを示すために上付き記号を使用することを思い出そう。しかし、このセクションは全体としてブロックチェーンに充てられており、そのため、r番目のブロックは、アルゴランドの意味でのr番目のラウンドに対応しないことがある。すなわち、上記「r」は単なるブロック番号であり、明確にするためにブロックB
rに含まれる。
また、ブロックの上記一般構造は概念的なものである。例えば、ビットコインでは、B
rは、対応する計算問題を解いた人であるブロック構築者の電子署名を含むことができる。アルゴランドでは、B
rの認証、すなわち、マッチング証明書CERT
Xは別に提供することができる。しかし、B
rの一体的な一部として提供することもできるであろう。この後者の場合、有効な証明書が多数あるかもしれないため、ラウンドrのリーダーl
rは、すべてのラウンドr検証者への自分のメッセージの中に、前のラウンドの出力のための有効な証明書も含めて、各ラウンドrの証明書が何であるかに関しても合意に達するようにする。
【0624】
上記において、INFO
rは、r番目のブロック内で保護したい情報である。アルゴランドの場合、INFO
rは、PAY
r、数量Q
r−1のブロックリーダーの署名等を含む。
【0625】
ブロックチェーンのよく知られた基本的な性質は、そのブロックのそれぞれの内容を改ざん防止にすることである。すなわち、過去のブロックを改変するには、最後のブロックも変えなければならない。この性質を、かいつまんで以下に挙げておく。
【0626】
最新のブロックをB
lastとし、誰かがB
rを別の(「不正な」)ブロック
【数391】
[この文献は図面を表示できません]
に置き換えると仮定する。すると、Hは衝突耐性であるため、
【数392】
[この文献は図面を表示できません]
は、圧倒的確率で、H(B
r)とは異なる。したがって、ブロックチェーンのブロック内の情報
【数393】
[この文献は図面を表示できません]
、すなわち、
【数394】
[この文献は図面を表示できません]
をどのように選ぼうとも、ここでもHの衝突耐性のために、
【数395】
[この文献は図面を表示できません]
となる。この不等式は伝播することは事実である。すなわち、
【数396】
[この文献は図面を表示できません]
がB
r+2とは異なる。以降も同様であるので、最終的には、
【数397】
[この文献は図面を表示できません]
となる。
【0627】
ブロックチェーンの個々のブロックの非効率的な検証可能性
ブロックチェーン全体は知らないが、B
zがその中の正当なブロックであることを知っている人、X、を考えてみる。すると、上記基本的な性質により、ある人はこのような人に対して、rがzよりも小さい場合、任意の個々のブロックB
rも正当であることを証明することができる。すなわち、ある人は、「証拠」として、中間ブロックのすべてB
r+1,...,B
z−1をXに提供し、XはさらにHを使用してrから先、z番目のブロックを再構築するまでブロックチェーンを再生成し、自分が知っているブロックB
zと一致するかどうかをチェックする。そうなる場合、XはB
rの正当性を確信する。実際、このように一見適法そうな証明を見つけることができる人は誰でも、実際上は発見するのは不可能な、ハッシュ関数Hでの衝突も見つけたはずである。
【0628】
このような検証可能性の有用性を確認するために、以下の例を考えてみる。ブロックチェーンがビットコインまたはアルゴランド等の支払システムによって生成されると仮定して、Xを訴訟事件の裁判官とし、被告は、係争中の支払Pを2年前に原告に対して実際に行ったことをXに対して証明することを望んでいる。裁判官がチェーンの正当な最後のブロック、または少なくとも十分に最近の正当なブロックB
zを取得することができると仮定するのが合理的であるため、被告が行わなければならない「すべてのこと」は、裁判官に証拠B
r+1,...,B
z−1を提出することであり、裁判官はそれから、証拠が釈明通りであることを検証する。当然、問題はこのような証拠がおそらくかなり長いことである。
【0629】
ブロックツリー
過去の個々のブロックの正確な内容を効率的に証明できる能力はかなり基本的なことであるため、我々は、新たなブロック構造を展開する。これらの構造では、ブロックチェーンと同様に、ブロックシーケンス全体の完全性は、はるかに短い値vによって簡潔に保証される。この値は、シーケンスの最後のブロックではない。それにもかかわらず、ブロックチェーンの基本的な性質は維持される。ブロックのうちの1つにおける変更は、vにおける変更を引き起こす。
【0630】
新たな構造の利点は、vがあるとして、nをシーケンスの現在のブロック数とすると、各個々のブロックの内容は非常に効率的に証明することができる点である。例えば、新たなブロック構造の特定の実施形態であるブロックツリーでは、それまでに生成されたブロックの総数がnである場合、各ブロックは、わずか
【数398】
[この文献は図面を表示できません]
バイトの情報を提供するだけで証明することができる。
【0631】
これは実際に非常に簡潔な証明である。毎分1個のブロックを生成するシステムにおいて、それから、2千年運用した後は、
【数399】
[この文献は図面を表示できません]
である。したがって、各個々のブロックの内容を証明するには1KB(1,000バイト)未満で十分である。(20億年後には2KB未満で十分であり、本質的に永久でも4KBで十分である。)また、このような証明は非常に効率的に検証される。
【0632】
効率的なステータス
別の効率性の問題が、ビットコイン、より一般的にはブロックチェーンに基づく支払システム、に影響を与える。すなわち、システムのステータス(すなわち、どの鍵が所与の時刻に何を所有するか)を再構築するには、(その時点までの)支払履歴全体を取得しなければならず、それは、行われる支払回数が非常に多い場合にはおそらく実行が困難である。
このような必要なものを得るためにも、ブロックツリーを使用する。
【0633】
以下に挙げる、はるか昔の概念を適切に修正することによって、ブロックツリーを構築する。
【0634】
10.1 マークル木
マークル木とは、n個の既知の値v
0,...,v
n−1を1つの値vによって認証し、各値v
iの真正性を個々にかつ効率的に検証できるようにする方法である。
【0635】
単純にするために、nは2の累乗n=2
kであると仮定して、各値が別々のkビットストリングsによって一意に識別されるようにする。そして、深さkの完全なバイナリツリーに特定の値を格納することによってマークル木Tを概念的に構成し、そのノードは、長さ≦kのバイナリストリングを使用して一意に名付けられている。
【0636】
ルートはεと名付けられ、空のストリングである。内部ノードがsと名付けられる場合、sの左の子はs0と名付けられ(すなわち、sを0と連結させることによって得られるストリング)、右の子はs1と名付けられる。それから、マークル木Tを構成するために、各整数i∈{0,...,n−1}を識別し、そのバイナリkビット展開とともに、考えられる0を先頭に付けて、各値v
iをリーフiに格納する。この後、木をマークル化し、すなわち、次のように、ボトムアップ方式で(すなわち、まず深さk−1の全ノードの内容を選んでから、次に深さk−2の全ノードの内容を選ぶ。以降も同様)、Tの、他のすべてのノードに格納する。v
s0およびv
s1がそれぞれノードsの左の子および右の子に格納される場合、256ビット値
【数400】
[この文献は図面を表示できません]
をノードsに格納する。このプロセスの終わりに、ルートは256ビット値ν
εを含むことになる。
【0637】
深さ3および8個のリーフを有するマークル木を
図1.Aに示す。
【0638】
ここで、v
εが分かっている、または電子署名されていると仮定して、各元の値v
iをv
εに関連してどのように認証できるかを示そう。
【0639】
ノードxから始まりルートに到達する(最短)経路Pを考えてみる。すると、xの内容v
xの認証経路はP内のノードの兄弟の内容のシーケンスであり、ノードs0の兄弟はノードs1であり、またその逆も同様である。したがって、深さkのツリーのリーフ値の認証経路はk−1値からなる。例えば、
図1.Aのマークル木では、リーフ010からルートまでの経路はP=010,01,0,εであり、ルートは兄弟を持たないため、v
010の認証経路はv
011,v
00,v
1である。
図1.Aのマークル木の経路Pおよびv
010の認証経路を、
図1.Bに図示する。
【0640】
各v
iをi番目のリーフに格納し、特定のストリングe(空(empty)に因む)を残りのすべてのリーフに格納し、さらにノードの残りを通常のやり方で埋めることによってn<2
kの値v
0,・・・,v
n−1を認証するマークル木を有するために、2
k個のリーフを有する完全なバイナリツリーを使用することができる。得られるマークル木は(事実上)n個のリーフを持っている(他のすべてのリーフが空であるため)(脚注47参照)。
【0641】
脚注47
ハッシュ関数Hが
【数401】
[この文献は図面を表示できません]
になるようにすると仮定して、内容がeである任意のノードより下のマークル木のノードをすべて「刈り込む」こともできる。
【0642】
ルート値ν
εに関連し、その認証経路があるとして、v
1(の真正性)を検証するために、リーフiからルートまでの経路内のノードの内容を再構築してから、最後に再構築される値が実際にν
εであるかどうかをチェックする。すなわち、認証経路がx
1,...,x
k−1である場合、まずv
1およびx
1を一緒に正しい順序でHハッシュ化する、すなわち、iの最後のビットが0の場合、y
2=H(v
1,x
1)を計算し、そうでない場合はy
2=H(x
1,v
1)を計算する。それから、y
2およびx
2を一緒に正しい順序でHハッシュ化する。値y
kを計算し、それをv
εと比較するまで、同様に行う。y
k=v
εの場合、かつ、その場合に限り、値v
1は認証される。
【0643】
このような検証が機能する理由は、ここでも、Hが衝突耐性であるからである。実際に、リーフまたはノードに当初格納されていた値のうちの1つのビットを変更するだけで、圧倒的確率で、親に格納されている値も変更される。この変更は上までずっと広まり、その結果、ルートの値は既知の値v
εとは異なることになる。
【0644】
10.2 ブロックツリー
述べてきたように、マークル木は、1つの値、つまりルートに格納されている値v
εによって、任意の、および任意に多くの既知の値を効率的に認証する。実際、マークル木の1つのルート内容によってk個の値v
0,...,v
k−1を認証するためには、まず、木の最初のk個のリーフに格納するためにv
0,...,v
k−1を知り、他の適切なノードにeを格納してから、ルート値を含む、木の中の他のすべてのノードの内容を計算しなければならない。
【0645】
マークル木は、ビットコインで所与のブロックの支払を認証するために使用されている。実際、所与のブロックを構築するときには、ブロックに入れるための支払は既に選択済みである。
【0646】
ただし、増え続けるブロックチェーンを認証するためにマークル木を使用することは、どのブロックを認証するべきかが事前には分からないため、さらに難しい。
【0647】
しかし、我々は、個々のブロックの効率的な証明可能性を可能にする新たなブロック構造を得るために、どのようにして新規な方法でマークル木を使用するかを示す。我々の好適なこのような構造、ブロックツリーを例示しよう。
【0648】
ブロックツリーの保証
ブロックツリーは、ブロックのシーケンスB
0,B
1,....のそれぞれに含まれる情報を保護する。この重要な性質は、ブロックチェーンと同様、前のブロックのハッシュを各ブロックにも格納することでは得られない。しかし、各ブロックは何らかの短い保護情報も格納して、所与のブロックB
rの前のブロックB
iの内容に加えられた変更がB
rの保護情報も変更させることを保証する。ブロックツリーのこの保証は、ブロックチェーンが提供するものに匹敵する。主な利点は、新たな保護情報により、ブロックB
rの保護情報を知る誰かに対して、B
iとB
rとの間のすべてのブロックを処理しなくても、任意のブロックB
iの正確な内容を証明できることである。ブロックの数がとてつもなく多い可能性がある(またはそのようになる可能性がある)ため、これは大きな利点である。
【0649】
ブロックツリーのブロック構造
ブロックツリーでは、ブロックB
iは以下の形式を有する。
【数402】
[この文献は図面を表示できません]
上記式において、INFO
rは、ブロックB
r内の、セキュアである必要がある情報を表し、S
rはB
rの保護情報を表す。
【0650】
ブロックツリーの我々の好適な実施形態において、保護情報S
rの情報は、実際にはかなり簡潔である。これは
【数403】
[この文献は図面を表示できません]
256ビットストリングのシーケンス、すなわち、それぞれ32バイトの
【数404】
[この文献は図面を表示できません]
ストリングから構成される。ほとんどの実用的なアプリケーションでは、2
40は千兆よりも大きいため、
【数405】
[この文献は図面を表示できません]
であることに注意されたい。
【0651】
以下に、ブロックツリーのためだけにS
rの情報を明記する。当業者は、それを、本質的に同一の保証で、多様な他のブロック構造に容易に一般化できることを認識するであろうが、そのすべては本発明の範囲内である。
【0652】
ブロックツリーにおけるブロックの生成
簡潔にするために、INFO
r=v
rに設定しよう。概念上、2
kが候補値v
rの数に上限を設けるように、深さkの完全なバイナリツリーTから始める。値v
0,v
1...もそうなので、ブロックは順に生成される。新たな値v
iが生成されると、概念的にいうと、マークル木T
iを構築するために、当該値v
iはTのリーフiに格納され、その後、様々なストリングが計算されてTのノードに格納される。これらのストリングのうちの1つが、特殊なストリングeである。(T
iのノードxに出現するとき、ストリングeは、T
iに属すxの子孫が存在しないことを意味し、
【数406】
[この文献は図面を表示できません]
であると仮定する。)
【0653】
最初の値v
0が生成されて、リーフ0に格納されると、T
0はTの(そのように埋められた)ノード0と一致する。事実、こうしたT
0は基本のマークル木である。その深さは
【数407】
[この文献は図面を表示できません]
であり、そのルートはR
0=0であり、その最初の深さ0のリーフ(また、実際、その唯一のリーフおよびノードに)v
0を格納する。
【0654】
i+1
stの値v
iが生成されて、Tのリーフiに格納されたとき(場合によっては、既にそこでストリングeを置き換える)、マークル木T
iは、前のマークル木Τ
i−1から次のように構築される。(帰納的な仮説により、Τ
i−1は深さが
【数408】
[この文献は図面を表示できません]
で、ルートがR
i−1、それぞれ値v
0,...,v
1を格納するi深さ
【数409】
[この文献は図面を表示できません]
のリーフを有する。
【0655】
リーフiがR
i−1の子孫の場合、R
i=R
i−1とし、そうでなければR
iをR
i−1の親とする。Pは、リーフiからノードR
iまでのTの(最短)経路とする。P内のすべてのノードjについて、その兄弟のj’が空の場合、j’に特殊なストリングeを格納する。最後に、v
s0およびv
s1がそれぞれsの左の子および右の子に格納される値の場合、P内の各ノードについて、リーフi(除く)からノードR
i(含む)の順に、値v
s=H(v
s0,v
s1)をsに格納する。そのように計算された値をそのノードに格納する、R
iをルートとするTの部分木がマークル木であることを確認するのは簡単である。このマークル木はT
iである。
【0656】
最初の空の完全なバイナリツリーTが深さ3を有する場合について、最初の8連続のマークル木の構成を
図2に合成する。特に、各下位
図2.iは、マークル木T
iを、そのノードのそれぞれに、特殊なストリングe(「そのノードより下のT
iは空である」ことを意味する)、または数j∈{0,...,i−1}(マークル木T
jを構築するときに、ノードの内容が最後に変更されたことを意味する)のいずれかを記して強調する。どれほど多くのマークル木を構築できたとしてもT
jで最後に変更されたノードの内容はそれ以上変わらないことを強調するために、jを太字で書く。
【0657】
これを踏まえて、新たなブロックB
iを次のように生成する。i番目のブロック内の保護したい情報INFO
iを選んだ後、v
i=INFO
iをTのリーフiに格納し、マークル木T
iを構築し、
【数410】
[この文献は図面を表示できません]
を設定する。上記式において、R
iはT
iのルートであり、auth
iはT
iにおけるv
iの認証経路である。すると、新たなブロックは、
【数411】
[この文献は図面を表示できません]
になる。S
iは実際には
【数412】
[この文献は図面を表示できません]
ストリングから構成されることに注意されたい。auth
iの各ストリング、したがってS
i内のすべてのストリングは実際には256ビット長であり、リーフiにv
iを格納するのではなく、代わりにH(v
i)を格納することができる。
ブロックツリーによるセキュリティおよび証明可能性
【0658】
誰かがブロックB
rを知り、前のブロックB
iの情報INFO
iを正確に知りたがっていると仮定する。マークル木のシーケンスΤ
0,Τ
1,...を構築するとき、各木は部分木として前のものを含むことに留意されたい。事実、前のリーフの内容はそのままで、最後に埋められたものの右側の最初のリーフに新たな値が挿入されるので、各木T
xのリーフは各後続木T
yの最初のx+1リーフである。したがって、INFO
iは、r番目のリーフがINFO
rを含み、ルート値R
rがブロックB
rのセキュリティ情報であるS
rの最初の成分である、マークル木T
rのi番目のリーフの内容である。
【0659】
B
rを知る誰かは、S
rおよびR
rも知っていることに留意されたい。したがって、このような「人」に対して、INFO
iがブロックB
iの情報であることを証明するには、ある人がマークル木T
r内のINFO
iの認証経路をその誰かに提供すれば十分である。事実、このような認証情報は容易にチェックできるが、容易に偽造することはできないことを既に確認している!
【0660】
このような認証経路は
【数413】
[この文献は図面を表示できません]
値から構成され(T
rは深さd+1を有するため)、それぞれ32バイトからなる(Hが32バイトの出力を生成するため)。このように、B
rに関連してB
iの内容を証明することは非常に容易である。述べたように、ほとんどの実用的なアプリケーションではd<40である。
【0661】
容易に入手可能な情報からのブロックの構築可能性
ブロックB
iの一部である構造情報S
iを構築するためには、マークル木T
i全体からの情報が必要になるように思えるだろう。結局、リーフiに格納されるINFO
i、したがって値v
iは容易に入手可能であるが、v
iの認証経路auth
iは前の木のノードの内容を含み、これは原則的には容易に入手することはできない。S
iを構築するためにT
i−1全体を入手しなければならない場合、新たなブロックB
iを構築することはあまりに効率的ではないかもしれない。
【0662】
しかし、まさしくブロックチェーンの特質において、各B
iは、前のブロックB
i−1および選ばれた情報INFO
iから自明に計算できることに留意されたい。実際、S
i内の各ストリングは、次のうちの1つである。すなわち、
(a)H(INFO
i)、
(b)固定ストリングe、
(c)S
iのストリング、および、
(d)上記タイプの所定の形態のストリングでハッシュ化することによって得られるストリング。
【0663】
図3は、太い境界線で、ブロックツリーの最初の8ブロックを構築するために、その内容がS
i=(R
i,auth
i)を計算するのに十分なノードを強調表示している。特に、各下位
図3.iは、その内容がS
iを生成するのに十分なノードを強調表示している。強調表示される各ノードにはさらにa、bまたはcを記して、それがタイプ(a)、(b)または(c)であることを示している。ルートR
iを含むタイプ(d)のノードにはマーキングをしていない。
【0664】
要するに、ブロックツリーベースのシステムでは、ブロックの生成は非常に効率的である。
【0665】
10.3 ステータス情報の効率的な管理
ブロックツリーは、アルゴランド等の支払システムを含め、あらゆる種類のアプリケーションにおいてブロックのセキュアな取扱いを改善する。しかし、このようなシステムには、改善から大きな利益が得られるであろう別の側面、すなわち、ステータス情報がある。
【0666】
効率的なステータス情報のニーズ
ラウンドrの正式なステータスは、各現行の公開鍵xについて、xが所有する金額、および場合によっては追加情報S
r=...,(x,a
x(r),...),...を明記するタプルのリストからなることを思い出そう。システム内の鍵が所有するマネーの金額は動的に変化するので、それをできるだけ効率的に追跡し続ける必要がある。
【0667】
今までのところ、ビットコインと同様に(そのステータス情報はかなり異なるが)、現行のステータスは、認証されるのではなく、支払の認証済み履歴から推論される。ブロックツリーは、ラウンドrでステータスS
rを証明できる能力を保証するわけではない。実際には、ブロックツリーにより、B
rの前のブロックB
iの支払集合PAY
iは、B
rに関連して効率的に証明できるであろう。しかし、ステータスS
rを証明するためには、一般に、B
rの前のすべてのブロックの支払集合を証明可能に得るべきであろう。そのため、S
rを知らないか、またはそれを知っているが、その現行の値の確固たる証拠を受け取りたい他のユーザまたはエンティティに証明者Pが証明するための、効率的な方法が必要である。
【0668】
具体的には、このような方法は、新たなユーザ、またはしばらくオフラインでいたユーザにとって、現行のシステムのステータスに追い付くことを容易かつセキュアにするであろう。
【0669】
ここで、このような方法のステータスツリーを提供しよう。
【0670】
ステータスツリー: 第1の方法
ステータスツリーST
rは、ラウンドr−1の終わりに、PがステータスS
rの値を効率的に証明することを可能にする特殊な情報構造である。
【0671】
実際、ST
rは、全ユーザのステータスを証明しなくても(ましてやブロックシーケンス全体B
0,...,B
r−1を提供しなくても)、Pが、任意の候補ユーザi∈PK
rについて、ラウンドrの始めにiが所有している正確な金額a
irを効率的に証明することを可能にする。事実、その人達が以前にマネーを持っていたことを確認するには、例えば、その人達と交渉を開始するには、あるユーザにとって、ごく少数のユーザ(例えば、当該あるユーザが支払を受けると考える人達)のステータスを正確に知ることが重要であろう。ユーザiにとって、自分自身のa
irの値の証拠を受け取ることは、例えば、借入をするため、交渉で真剣に受け取られるため、または発注を出すために、さらに有用であろう。
【0672】
まず、Pが、ブロックシーケンスB
0,...,Β
r−1の全体を知っており、少なくともユーザおよびエンティティのグループによって広く信頼されていると仮定する。この場合、Pは次のことを行う。
【0673】
・支払集合シーケンスPAY
0,...,PAY
r−1を取得(例、検索)し、
・ユーザの集合PK
rを計算し、
・少なくともn
r=|PK
r|のリーフを有するマークル木T
rを構築し、当該マークル木T
rの最初のn個のリーフはn人のユーザ全員のステータス情報を格納し、各リーフは1人のユーザの情報を格納する(他のリーフは、もしあれば、リーフが「空」であることを意味する特殊なストリングeを格納してもよい)し、および、
・好ましくは電子署名されているT
rのルート値R
rを、少なくとも別のエンティティに利用できるようにする。
【0674】
次に、あるユーザx∈PK
rのステータスについて誰かがPに尋ねる任意のときに、l
xがiのステータス情報を格納している場合、Pはその人に、リーフl
xに格納されている値の、T
rにおける認証経路を提供する。
【0675】
重要なことに、R
rを計算し電子署名した後で、Pは、あるユーザのステータスに関する問い合わせに回答するために、もはやそこにいる必要はない。実際に、同様にT
rを知る任意の他のエンティティP’が、エンティティVからの、xに関する問い合わせに回答できるであろう。事実、P’は、同じ電子署名されたルート値R
r、xに関するステータス情報、およびPがVに提供したであろう後者の情報の同じ認証経路をVに提供できるであろう。したがって、VがPを信用している場合、たとえVがP’を信用していなくても、P’によって提供される回答を検証することができる。事実、報告される認証経路がマークル木T
rのルートR
rに関連してxのステータスが正当であることを保証するので、また、R
rはPによって電子署名されるので、Vは、xに関するステータス情報の真正性を検証することができる。Vは、Pを信用している限り、P’を信用する必要はない。
【0676】
このように、Pは、R
rの自分の電子署名を公表して(または別のエンティティP’に利用できるようにして)、証明可能な形で、他者(P’)にステータスの質問に回答させてもよい。
【0677】
ここで、この第1の方法の以下の性質を強調しておきたい。
【0678】
1. (「良いニュース」)
Pは、各ラウンドrで一からT
rを計算する必要がない。
【0679】
実際、ユーザx∈PK
rのステータスがどこに保管されているかは問題ではないため、前のマークル木T
r−1を計算し保管していれば、Pは、新たなブロックB
rの支払集合PAY
rを知った後に、T
r−1からT
rを計算することができる。本質的に、PAY
rがk個の支払を有する場合、Pはたかだか2k人のユーザのステータス情報(すなわち、PAY
rにおける各支払の支払人および受取人のステータス情報)を更新し、たかだかk人の新たなユーザのステータス情報を初めて挿入すればよい(単純にするためにのみ、PAY
rにおける各支払は、たかだかもう1人のユーザをシステムに導入することができると仮定する)。
【0680】
ブロックツリーの場合と同様に、各新たなユーザのステータスは、次の空のリーフに挿入することができる。さらに、Pが既存ユーザiのステータスを更新する度に、Pは、iのステータスを格納しているリーフからルートまでの経路で内容のみを変更する必要がある。この経路は、n=|PK
r|の場合、たかだか
【数414】
[この文献は図面を表示できません]
の長さで、たかだかハッシュと同じだけの数を必要とする。本質的に、新たに追加される各ユーザにも同じことがいえる。ユーザの数nは非常に大きいかもしれないが、k、すなわち、所与のラウンドで取引するユーザの数はおそらく小さいであろうことに留意されたい。また、T
r−1からT
rを更新するには、
【数415】
[この文献は図面を表示できません]
ハッシュのみが必要である。このことは、一からT
rを計算するよりも実に有利であり、一から行うと、ほぼn個のハッシュが必要になる。
【0681】
2. (「悪いニュース」)ユーザ
【数416】
[この文献は図面を表示できません]
に関して尋ねられる場合、P/P’は、
【数417】
[この文献は図面を表示できません]
を証明することはできない。
【0682】
実際、あるVがラウンドrでユーザxのステータスに関して尋ねる場合、PおよびP’はいずれも、xがそのラウンドでシステムにいなかったためにxに関するステータス情報が存在しないことを、Vに対して容易に証明することはできない。
【0683】
PまたはP’は、T
rの各リーフlの内容をVに具体的に述べることができる。この大域的情報から、Vは、(a)xのステータスを含むリーフがないかどうかをチェックし、(b)これらのリーフの内容に対応するマークル木のルート値を再構築し、および(c)そのように計算した値が、Pによって電子署名されたルート値R
rと一致するかどうかをチェックすることができる。しかし、このような大域的情報は非常に大きく、伝送するのが簡単ではないかもしれない。
【0684】
(少なくともまだ)存在していないユーザに関する問い合わせに対して信用できる回答を容易に提供できないことは問題ではないだろう。(例、ユーザの総数が大きすぎないため。)この場合、第1の方法でうまくいく。しかし、万が一それが問題になるなら、我々は別の方法を提案する。
【0685】
ステータスツリー:第2の方法
ここでも、PがブロックシーケンスB
0,...,B
r−1の全体を知っていると仮定する。すると、第2の方法では、Pは次のことを行う。
【0686】
・支払集合シーケンスPAY
0,...,PAY
r−1を検索し、
・ユーザの集合PK
rを計算し、
・すべてのユーザi∈PK
rのステータス情報(i,a
ix)を計算し、
・n個のステータス情報ペアを最初のエントリーに従って(例、そのユーザの辞書式順序に従って)順序付けし、
・第1リーフがPK
r内の第1ユーザのステータス情報を含み、第2リーフが第2ユーザのステータスを含む等のマークル木T
rを構築し(追加リーフは、もしあれば、ストリングeを含む)、および、
・T
rのルート値R
rに電子署名し、この署名を利用できるようにする。
【0687】
この第2の方法は、別の(必ずしも信頼されていない)エンティティP’が個々のユーザのステータスに関する質問に確実に回答することを可能にし続けるが、性質1および2に関連する点を「覆す」ことに留意されたい。すなわち、以下の通り。
【0688】
1’.(「悪いニュース」)
これまでのようにT
r−1を使用してT
rを容易に構築するのは簡単ではない。
【0689】
そうなるのは、ここでは、T
rのリーフはユーザに従って順序付けされたユーザのステータス情報を含み、新たなユーザを挿入することが問題をはらむことになるためである。1人の新たなユーザを、例えば、リーフの中央に挿入する必要がある場合、リーフの半分の内容を変更しなければならない。
【0690】
2’.(「良いニュース」)
PまたはP’は、ユーザ
【数418】
[この文献は図面を表示できません]
が実際にPK
rに所属していないことを証明することができる。
【0691】
ラウンドrでシステムにいなかったユーザxのステータスに関してVが尋ねる場合、信頼されていないP’でも、Pによって認証されたルート値R
rに関連して、2つの連続するリーフの内容の認証経路を提供することができ、i’<i<i”になるように、一方はユーザi’に関するステータス情報を格納し、他方は別のユーザi”のステータス情報を格納している。
【0692】
Vは、2つの認証経路が2つの連続するリーフの内容のものであると実際に判定できることに留意されたい。そうなるのは、同じ値へハッシュ化する2つの異なるストリングを見つけることは実際上不可能であるため、2つのストリングaおよびbがあるとすると、H(a,b)≠H(b,a)になる。したがって、h=H(a,b)とすると、hは、「aの後にbがくる」ハッシュであり、その逆ではない、と判定することができる。このことは、マークル木T
rにおいては、値v
xの認証経路は、値v
xが何であるかだけでなく、それがT
rのリーフxに格納されていることも含意する。
【0693】
例えば、
図1.Bを考えてみる。そのマークル木では、値v
010の認証経路は(v
011,v
00,v
1)である。その認証経路を使用してv
010を検証するためには、次のハッシュ化を順に計算し、
(a)h
1=H(v
010,v
011)、
(b)h
2=H(v
00,h
1)、
(c)h
3=H(h
1,v
1)、
次に、h
3が実際にルート値v
εと一致するかどうかをチェックする。
【0694】
H(x,y)≠H(y,x)であるので、
ハッシュ化(a)は、v
010が、どのようなノードがh
1を格納していても、その0子に格納されていることを証明し、
ハッシュ化(b)は、h
1が、どのようなノードがh
2を格納していても、その1子に格納されていることを証明し、
ハッシュ化(c)は、h
2が、どのようなノードがh
3を格納していても、その0子に格納されていることを証明することに留意されたい。
【0695】
したがって、h
3がルートで格納されていることをチェックしたので、V
010はリーフ010に格納されていなければならず、これは実際にそうである。
【0696】
したがって、Vが、Pが各ユーザi∈PK
rについて、iの形成時のステータスをT
rのi番目のリーフに格納したことを信用し、さらに、あるリーフがユーザi’<iのステータス情報を含むという証明、および次のリーフがユーザi”>iのステータス情報を含むという証明を確認する場合、Vは、
【数419】
[この文献は図面を表示できません]
であるということを安全に結論づけることができる。
【0697】
(また、こうした認証経路は多くの値を共有することがあり、したがって、両方の認証経路の全体をVに伝送する必要はないことにも留意されたい。)
【0698】
性質1’は問題ではないかもしれない。(例、Pは一からT
rを完璧に構築することができるため。)これが該当する場合、第2の方法でうまくいく。
【0699】
そうでなければ、Pが、T
r−1からT
rを容易に構築すること、および、ユーザ
【数420】
[この文献は図面を表示できません]
が実際にPK
rに所属していないことを容易に証明すること、の両方を可能にする方法が必要である。
【0701】
ステータスツリー:第3の方法
探索木は、概念上、順序集合からの値をバイナリ(単純化のためにのみ!)ツリーのノードに動的に格納するデータ構造であることを思い出そう。通例、このようなツリーでは、ノードは1つの値を含む(または空である)。このようなデータ構造によって動的にサポートされる動作には、所与の値vの挿入、削除および探索を含む。(値vが存在しない場合には、例えば、返信される回答が⊥であるため、そのことも判定することができる。)
【0702】
最初に、探索木は空のルートのみから構成される。削除される値よりも挿入される値が多くなると、ツリーが成長する。n個のノードがあるバイナリツリーの深さはせいぜいlog nであり(ツリーがいっぱいの場合にこうなる)、また、たかだかn−1(ツリーが経路である場合にこうなる)である。しかし、探索木の深さが小さいことは保証されていない。最悪の場合、n個の特定のノードを特定の順序で挿入すると、結果として、探索木が深さnからなることがある。
【0703】
「平衡」探索木は、現在格納されている値の数がnである場合、木の深さが短い、すなわち、nの対数であることを保証する。n個のノードのある平衡探索木では、前述した3つの動作のそれぞれを、2つの値の比較、2つのノードの内容の交換、またはノードの親/右の子/左の子の内容を調べること等の、O(log n)基本ステップで行うことができる。
【0704】
平衡探索木のいくつかの例が今までに知られている。特によく知られている例が、AVLおよびBツリーである。いくつかの例では、値はツリーのリーフにのみ格納することができる(対して、他のすべてのノードは、所与の値を本当にツリーに格納できる場合に当該所与の値を位置付けることのできる「指向性情報」を含む。)他の例では、値は任意のノードに格納することができる。以下に、より一般的なケース、および、単純化のみを目的として、平衡探索木の操作が周知かつ決定論的アルゴリズムであることを仮定する。
【0705】
しばらくの間、PK
rの全ユーザのステータス情報を取得した証明者Pが、ラウンドrの平衡ステータスツリーT
rを一から構築したいと仮定する。すると、当該証明者Pは次のように行為する。
【0706】
・Pは、n=|PK
r|のノードを有する平衡探索木T
rを構築し、ユーザをPK
rに格納する。
最悪の場合、各挿入はO(log n)基本ステップを取るため、この操作はたかだかO(n log n)基本ステップを取ることに留意されたい。(実際、Pは、ユーザをT
rに挿入する前に当該ユーザをPK
rで順序付けることによって、追加の効率をいくらか得たいかもしれない)。
【0707】
・Pは、T
rにおいて、格納されている各ユーザiを、i’のステータス情報に置き換える:(i,a
ix)。
すなわち、Pは、PK
r内のユーザのステータス情報をT
rに格納し、ユーザiに関するステータス情報に関して挿入/削除/探索のすべてを、ユーザiに関する挿入/削除/探索を介して行うことができるようにする。
(言い換えると、T
rは、そのノードに格納される最初のエントリーを介して探索可能な平衡木である。)
【0708】
・Pは、リーフのないすべてのノードがちょうど2つの子を持つようにT
rを「完了する」。
バイナリツリーでは、各ノードはたかだか2つの子を有する。したがって、リーフのないノードxは1つしか子を持てないであろう。一般性を損なうことなく、これをxの左の子x0と仮定する。この場合、Pは概念上、右の子x1にxを与え、そこにストリングeを格納する。
【0709】
・Pは、T
rの各ノードxにハッシュ値hv
xを関連付けるので、リーフから上方に計算される。
xがリーフである場合、hv
xは、xに格納されている値v
xのハッシュである、すなわちhv
x=H(v
x)である。
xが、値v
xを格納している深さdのノードである場合、hv
x=H(hv
x0,hv
x1,H(v
x))である。
最終的にT
rのルートεに関連付けられているハッシュ値は、
【数421】
[この文献は図面を表示できません]
である。
【0711】
そのように得られたツリーT
rを、マークル平衡探索木と呼ぶ。このようなT
rは平衡探索木であり、したがって、T
rで探索/挿入/削除のアルゴリズムが機能する。同時に、T
rは一般化されたマークル木であるが、それでもなおマークル木である。通常のマークル木は、情報値、すなわち、保護する必要のある値をリーフのみに格納し、内部のノードには、保護値、すなわち、木を「保護する」ために使用されるハッシュ値のみを格納する。マークル木T
rは、各ノードxに、v
xで表される情報値と、hv
xで表される保護値との両方を格納する。
【0712】
ルート保護値R
rに関連し、情報値v
xが実際に何であるかの証明は、hv
x0、hv
x1、H(v
x)、およびxからT
rのルートまでの経路内のノードの兄弟であるすべてのノードyの値hv
yから(ボトムアップ順で)なる認証経路を含む。
【0713】
ここで、Pが一からT
rを計算する必要がないことを示そう。実際、Pは前のラウンドのマークル平衡探索木T
r−1が利用できると仮定する。すると、新たなブロックB
rの取得後、Pは、B
rの支払集合PAY
r内の各支払
【数422】
[この文献は図面を表示できません]
について次のように行為する。
【0714】
【数423】
[この文献は図面を表示できません]
が、既存ユーザが所有する金額を修正する場合、Pは、それが格納されているノードxのそのユーザのステータス情報を更新し、さらに、ツリーをマークル化し直す。これは、xからルートまでの経路に沿ったhv
yの値の再計算を単に伴うだけであり、したがって、nがユーザの数である場合、たかだか
【数424】
[この文献は図面を表示できません]
ハッシュの再計算である。
【0715】
【数425】
[この文献は図面を表示できません]
が、マネーの初期金額a
iを有する新たなユーザiを参加させる場合、Pは、T
rにステータス情報(i,α
ir)を挿入する。T
rは平衡探索木であるため、これにはO(log n)基本ステップしか伴わず、たかだか対数的に多いノードにしか影響しない。その後、Pはツリーをマークル化し直す。
【0716】
T
rの構築後、Pは、R
rの自分の電子署名を公表するか、または、P’を信用することもあればしないこともある様々な検証者Vからの問い合わせを取り扱うP’にそれを与える。
【0717】
ユーザiに関するVの問い合わせに回答するために、P’は次のように行為する。
【0718】
・P’は、T
rでユーザiを探索するのと同じアルゴリズムを実行する。
この探索は、T
rの、たかだかO(log n)ノードの内容の検索に関わり、検索された各内容は、その内容が次に検索される必要のあるノードを決定する。
【0719】
・アルゴリズムがノードxの内容v
xを検索する場合は必ず、P’は、R
rに関連して、v
xの証明を提供する。
【0720】
したがって、Vは、P’によって提供されるすべてのノードxの内容が正当であることをチェックするために、PによるR
rの電子署名と、受け取った証明とを使用することができる。したがって、Vは事実上マークル木T
rで同じ探索アルゴリズムを実行し、i∈PK
rである場合、ユーザiのステータス情報を正確に検索する。そうでなければ、
【数426】
[この文献は図面を表示できません]
である場合(すなわち、探索アルゴリズムが記号⊥/ストリングeを返す場合)、Vは、iがPK
rのユーザではなかったことを確信する。
【0721】
アルゴランドにおける、信用あるPの実現
多くの人によって信頼される個人の証明者Pがいない場合、それを「構築」することが重要になってくる。
【0722】
アルゴランドでは、ラウンドrのすべてのステップsで、SV
r,s内の検証者の(重み付けした)過半数が誠実であることを確信させられることに留意されたい。したがって、ここで我々は、検証者がPのタスクを実行できることを確実にする!
【0724】
・ブロックの他のフィールドに加えて、(例、前述した3つの方法のいずれかを使用して)ラウンドrの潜在的検証者iもステータスツリーT
rを生成する。当該潜在的検証者はi通例それまでのブロックチェーンB
0,...,B
r−1を知っているので、容易にこれを行うことができることに留意されたい。
【0725】
・iは、T
rのルート値R
rも含むブロックB
irを提案する。
例えば、B
ir=(r,PAY
r,SIG
i(Q
r−1),R
r,H(B
r−1))。
【0726】
・検証者(具体的には、ラウンドrの第2ステップの検証者)は、ラウンドの、リーダーによって提案されるブロックが有効かどうかをチェックし、これには第4成分、すなわち、ステータスツリーT
rのルート値R
r、が有効かどうかのチェックも含む。
実際、これらの検証者はそれまでのブロックシーケンスB
0,...,B
r−1を知っているため、身元確認されたリーダーによって提案されるブロックが採用されると仮定すると、ステータス情報がラウンドr後にどうなるかを判定することができる。
【0727】
・BA合意に達した後、ラウンドrの正式なブロックは正当なルート値R
rを含み、また、B
rは正規のクレデンシャルを有する十分に多くの検証者によって電子署名されているので、B
rの証明書もR
rを認定する。
新たな正式なブロックは空、すなわちB
r=B
εrであるかもしれないことに留意されたい。このような空のブロックは次の形式をとり、
【数427】
[この文献は図面を表示できません]
新たなブロックが空のブロックであるときには全ユーザのステータス情報が変化しないということに対応する。
【0728】
要するに、PによるR
rの電子署名はB
rの証明書によって置き換えられる。いずれにしてもR
rは認証されるので、信用されていない証明者P’でも、前と同様、R
rに関連して、ラウンドrですべてのユーザiのステータス情報を証明することができるであろう。
【0729】
新たなブロックが生成されるときにそれを適時に知る人であれば誰でも、採用されたステータスツリーが「容易に更新可能な」タイプであるときは必ず、前のT
r−1からより容易にT
rを構築することができる。
【0730】
11 代理検証者および潜在的検証者
代理検証者
ユーザiがSV
r,sのメンバーとして選択される確率は、他のユーザがiに「投票する」マネーに基づくこともできる(例、ここでも、当該マネーに比例して)。ユーザUは、通常通り、自分が行う支払の授受のすべてを支配し続けたいかもしれない。しかし、当該ユーザUは、リーダーおよび/または検証者として行為する権利および義務を別のユーザiに委任したいかもしれない。この場合、またこの目的のためにのみ、このようなユーザUは、iを、リーダー/検証者に用の自分の代理人にしたいことを示すことがある。ユーザUは、実際に、リーダー/検証者としての義務を1人または複数人のユーザiに委託するかもしれない。しばらくの間、かつ、一般性を損なうことなく、Uが、リーダーおよび検証者用に1人の代理人iを持つことを選択すると仮定しよう。
【0731】
Uがラウンドrで自分の代理人としてiを選任するためには、いくつかの(好ましくは、電子署名された)方法がある。例えば、追加の仕組みを導入しないように(それは排除されない)、当該Uは、iに対する支払Pによって(例、Pの非センシティブフィールドIを使用して)、または別のユーザに対する支払P’によってそうすることができる。このような支払PまたはP’が一旦ブロックB
rの支払集合PAY
rに挿入されると、コミュニティ全体がUの選択を実現し、iがUの代理人として行為することが有効となる。
【0732】
Uがラウンドrで自分の代理人としてiを選ぶ場合、この選択は、Uが以前に行ったいかなる選択にも優先し、iは、Uが異なる選択をするまでUの代理人であり続けることが好ましい(脚注48参照)。ユーザUは、システムに加入するまさにその瞬間から自分の代理人としてiを選任することもできる。例えば、Uが別のユーザからの支払
【数428】
[この文献は図面を表示できません]
を介してシステムに加入することを予定する場合、Uはそのユーザに対して、Uが自分の代理人としてiを選択することを示すUの署名を
【数429】
[この文献は図面を表示できません]
に含めるよう求めることができる。
【0733】
脚注48
当然、ここで、また他の場所でも、曖昧さおよびタイは、ある所定の方法でブレークされる。例えば、Uが自分のマネー全額を潜在的検証者iに投票することを示すUの署名と、iが自分のマネーの全額を異なる潜在的検証者jに投票することを示す別の署名とをPAY
rが含む場合、Uの代理人の選択は無視されるか、または代わりに、対応する署名入りのステートメントが、jに対応するものに(例えば、辞書式順序で)先行する場合、Uは事実上iを選ぶ。
【0734】
U(また、場合によっては他のユーザ)によってiにそのように投票されたマネーと、iが直接所有するマネーは、平等に処理されることができる。例えば、検証者が、ラウンドxで所有されるマネーに従ってPK
x内のユーザから選択されることになった場合、U(および、自分のマネーを代理人に「投票」することを選んだ他の全ユーザ)は、この選択の目的上は0のマネーを有すると見なされたであろうが、iが選択される元となったマネーはa
ix+VM
ixであろう。ここでa
ixは、iがラウンドxで個人的に所有しているマネーであり、VM
ixは、ラウンドxでiに(全ユーザによって)「投票された」マネーの総額である。例えば、Uがそのラウンドでiに自分のマネーを投票する唯一のユーザである場合、VM
ix=a
Uxである。ラウンドxでiに自分のマネーを投票するユーザの集合がSであった場合、VM
ix=Σ
j∈Sa
jxである。当然、iが所有するマネーと、ラウンドxでiに投票されるマネーとに従ってiを選択する1つの方法は、
【数430】
[この文献は図面を表示できません]
の確率で、秘密暗号くじによってiを選択することからなる。
【0735】
iが直接所有するマネーを、iに投票されるマネーとは別に処理することも可能である。例えば、iは、cが所与の係数である場合、マネーの金額a
ix+c・VM
ixに従って選ばれることができるであろう。例えば、c=0.5のとき、iが直接所有するマネーは、当該iに投票されるマネーの2倍に上る。
【0736】
ユーザUが、自分の所有するマネーの一部のみをiに投票することも可能である。例えば、Uは、自分のマネーの3/4のみをiに投票することを選び、SV
r,sに自分自身を選択するために重要な残高を有する。この場合、Uは、VM
ixに0.75a
Uxしか貢献せず、Uは、確率0.25a
UxでSV
r,sに選択される。
【0737】
ユーザiがSV
r,sに属する選択がなされる結果として当該ユーザiに提供される報酬がある場合があり、iは、自分のマネーの一部を当該iに投票したユーザと、その報酬を分け合うことができる。例えば、iがブロックのリーダーになる場合、当該iは報酬Rを受領するかもしれない。この場合、この報酬の一部はUに対応するかもしれない。例えば、Uがiに投票するマネーがmである場合、iがUに支払うRの部分は、
【数431】
[この文献は図面を表示できません]
のようになるかもしれない。
【0738】
ユーザが代理人を選んで変更できるということは、代理人を誠実であり続けさせる役に立つであろう。例えば、Uが、自分のマネーをiに投票するが、iがブロックB
rのリーダーであるときにはいつであれ、PAY
rの支払集合があまりに頻繁に空である、または「乏しい」と疑う場合、Uは自分の代理人を変更することができる。
【0739】
普通ユーザUも、自分のマネーの異なる割合を複数の代理人の各人に投票して、複数の代理人を指定することができる。当然、所定の手続きを使用して、Uが、自分が実際に持っているよりも多くのマネーを投票することを防止する。
【0740】
代理人を選ぶ別の方法は、ユーザUが個別の公開・秘密電子署名ペア(pk’
U,sk’
U)を生成し、pk’
Uに、リーダー/検証者の選択のためにUを代表する権限を移譲することである(例、ブロックチェーン内のブロックに入る電子署名による)。すなわち、pk’
UはUの代わりに支払を行うことはできない(事実、pk’
Uはマネーを直接有することはできない)が、Uの代わりにリーダーまたは検証者として行為することができ、Uが関連するラウンドxで所有するマネーに応じて、リーダー/検証者として選択されることができる。例えば、pk’
Uは
【数432】
[この文献は図面を表示できません]
の確率で選択されることができる。(これは、Uが自分のリーダー/検証者としてのすべての権利/権限を委任することを仮定しているが、当然、前述したように、Uは自分の権利/権限の一部のみを委任することができる。)自分の代わりに別のユーザまたはエンティティiにリーダー/検証者を務めることを委任するために、Uはiにsk’
Uを与える。このことは、pk’
Uが「稼ぐ」かもしれない報酬をUとiとの間で(どのように決定された比率であっても)分割する方法を非常に明確にする。なぜなら、前述したように、Uにiの選択確率に貢献させるのではなく、直接選択されるのはpk’
U自体だからである。
【0741】
Uは、自分で(pk’
U,sk’
U)を生成する必要はないことに留意されたい。例えば、iが(pk’
U,sk’
U)を生成し、Uが自分の代理人としてiを選びたい場合に、署名するためにUにpk’
Uを与えることができる。
【0742】
具体的には、ユーザUは、自分の代理人として、銀行iを、前述したアプローチのいずれかで選ぶことができる。代理人を選ぶことの1つの利点は、典型的なユーザよりも代理人の方がはるかに高速でセキュアな通信ネットワークを有する可能性があることである。すべての普通ユーザが正規の代理人を選ぶ(または選ぶよう要求された)場合、ブロックの生成ははるかに高速化するであろう。そして、ブロックは普通ユーザがアクセス権を有するネットワークで伝播されることもできる。そうでなければ、iがUを代理する場合、当該iは、Uに新たなブロックを直接与えるか、または、Uが関心を抱いている支払がブロックチェーンに入った証拠をUに与えることができる。
【0743】
潜在的検証者
これまでは、アルゴランドで、各ユーザiが、あるラウンドrの検証者またはリーダーとして選択されることができるということであった。しかし、当業者によって、上記の点は制約ではないと容易に認識できる。実際、アルゴランドは、非許可でいつでも参加し、通常通り支払の授受(より一般的にはトランザクション)を行うことのできる集団ユーザと、ラウンドのリーダーと検証者とがその中から選択される、特殊クラスの潜在的検証者とを有することができる。これら2つの集合は重複することが可能であり(その場合、少なくとも一部の潜在的検証者は支払の授受を行うこともできる)、または別々であることが可能である(その場合、潜在的検証者は、選択された場合、リーダーまたは検証者としてのみ行為することができる)。ある意味では、前のセクションで述べたようにアルゴランドでは、各ユーザが潜在的検証者である。アルゴランドは、2つの別々のマネーの金額を有するユーザまたは潜在的検証者iも有する場合があり、そのうちの一方のみが、iがリーダーまたは検証者として選択されるために重要である。
【0744】
潜在的検証者のクラスは許可型にすることができる。この場合、潜在的な検証者の所与の集合Sの中から検証者/リーダーiを選択する確率は、iが所有するマネーの金額に依存する必要はない。例えば、iは、均一な確率の暗号くじによってSから選択することができる。
【0745】
代わりに、すべての潜在的検証者は常に選択することができる(および/または、そのうちの1人のみがラウンドリーダーとして選択される)。この場合、当該すべての潜在的検証者は、プロトコルBA
★を使用して新たなブロックに関して合意に達することができ、またはより一般的には、当該すべての潜在的検証者は、効率的であってかつ好ましくはプレーヤ代替性のプロトコルを使用することもできる。
【0746】
12 許可型アルゴランド
このセクションでは、プライバシーとトレーサビリティとのバランスをとり、新たな種類のインセンティブを可能にし、銀行または他の外部エンティティに新しい非支配型の役割を与える、アルゴランドの許可型バージョンを論じる。この許可型バージョンは、以下に挙げる伝統的な概念に依拠する。
【0747】
12.1 電子証明書
システムにユーザを登録する権限を有する、ある当事者Rの公開鍵pkが、公開で知られていると仮定する。すると、ユーザiの身元を確認し、公開鍵pk
iが本当にiに属していることを検証した後、Rは、電子署名C
iを発行して、pk
iがシステムの適法な公開鍵であるだけでなく、iに関する何らかの適切な追加情報info
iが成り立つことも証明してもよい。この場合、証明書は、本質的に次の形式である。
【数433】
[この文献は図面を表示できません]
【0748】
info
iに明記される情報は、かなり多様であってもよい。例えば、システム内のiの役割、および/または証明書の発行日を明記することができる。失効日、すなわち、それより後はC
iに依拠してはならない日を明記することもあるかもしれない。このような日が明記されていない場合、C
iは無期限である。証明書は、別の用途でも別の形でも長く使用されてきた。
【0749】
12.2 (無期限)証明書を有するアルゴランド
アルゴランドでは、各ユーザi∈PK
rが、適切なエンティティR(例、予め指定された集合内の銀行)によって発行される電子署名C
iを有することを要求されることがある。ラウンドrの支払
【数434】
[この文献は図面を表示できません]
を別のユーザjに行う場合、iは、
【数435】
[この文献は図面を表示できません]
に添えてC
iおよび/またはC
jを転送するか、または
【数436】
[この文献は図面を表示できません]
自体にそのうちの一方または両方を含めることができる。すなわち、記号では、
【数437】
[この文献は図面を表示できません]
になる。
【0750】
後者の実践を仮定すると、
・支払
【数438】
[この文献は図面を表示できません]
は、その支払人とその受取人の双方の証明書も含む場合に限り、あるラウンドで有効と見なされ、したがってPAY
rに加わることができる。
また、証明書に失効日r=[t
1,t
2]がある場合、t
2は、最も早い失効日よりも小さくなければならない。
・同時に、このような支払がPAY
rに属する場合、それに対応するマネーの移転は無条件に実行される。
【0751】
無期限証明書の役割
ユーザiの証明書C
iが一旦失効するか、またはその失効前に(iが「財務的に健全な状態」である限り)、Rは、Cよりも失効日が先の、新たな証明書C’
iを発行することができる。
【0752】
したがって、この場合、Rはiのマネーに対して大きな支配力を有する。私的な使用のためにそれを没収することはできない(そうするにはiの電子署名を偽造できなくてはならないため)が、iがそれを消費するのを防止することができる。実際、C
iの失効日後のラウンドrでは、iの支払はPAY
rに加わることはできない。
【0753】
Rのこの権限は、適切なエンティティE(例えば、政府)の、ユーザの従来の銀行口座を凍結する権限に対応することに留意されたい。実際、従来の環境では、こうしたEがiのマネーを着服することもあるだろう。
【0754】
暗号通貨の主な魅力は、任意のエンティティEがユーザをそのマネーから切り離すことがまさしく不可能であることである。したがって、すべての証明書が無期限であるアルゴランドの証明書ベースのバージョンで、この不可能性が保たれ続けることを強調したい。実際、ラウンドrで別のユーザjに支払を行いたいユーザiは常に、jに対するラウンドrの支払
【数439】
[この文献は図面を表示できません]
に無期限証明書C
iおよびC
jを含めることができ、ラウンドのリーダーl
rが誠実な場合、
【数440】
[この文献は図面を表示できません]
はPAY
rに表示される。要するに、
「無期限証明書は、ユーザをそのマネーから切り離すために使用することはできないが、他の目的を達成するためには実際に非常に価値がある。」
【0755】
12.3 (無期限)証明書による違法活動の防止
従来の小切手により行われる支払の支払人および受取人は、小切手を持つ誰によっても容易に身元を確認できる。したがって、小切手はマネーロンダリングまたは他の違法活動にとって理想的ではない。正規の登録機関によって発行される電子証明書をアルゴランドで使用して、ある所与のエンティティのみが、適切な状況に限り、iが望む支払をiが行うことを妨げずに、所与の公開鍵pk
iの所有者iの身元を確認することができることを確実にすることができるであろう。簡単な例を挙げてみよう。
【0756】
システム内には、複数の登録権限機関があるかもしれない。具体性のためにのみ、それを認可銀行とし、その公開鍵は別の上位の権限機関(その公開鍵は一般に知られている)によって一般に知られており(または、場合によっては証明書チェーンによって認定されている)、Gを、政府と呼ばれる特別なエンティティとする。
【0757】
電子公開鍵の所有者としてシステムに参加するために、iは、認可銀行のうちの1行から証明書C
iを得る必要がある。それを得るために、公開・秘密署名ペア(pk
i,sk
i)を生成した後、iは認可銀行Bにpk
iの証明書の発行を依頼する。このような証明書を発行するために、Bは、何らかの識別情報ID
iを作成するために、iの身元確認をすることを要求される(脚注49参照)。そして、BはH(ID
i)を計算し、(好ましくは)それを証明書の別のフィールドにする。例えば、追加情報を無視して、Bは次の式を計算してiに与える。
【数441】
[この文献は図面を表示できません]
【0758】
脚注49
「突っ込んで」いうと、こうしたI
iは、iの氏名と住所、iの写真、iの同意書の電子署名(デジタルであった場合)を含んでもよく、または、iは自分の署名入りの同意書と一緒に写真に写ることができ、さらに、I
iに入れるために写真をデジタル化する。銀行は、自行自体の保護および同様にiの保護のために、I
iが本当に正当であることの証拠となるiの署名も取得して保管することもできる。
【0759】
Hはランダムオラクルであるため、誰も、C
iから所有者のアイデンティティを取り出すことはできない。銀行だけが、pk
iの所有者がiであることを知っている。しかし、政府が、例えば、支払
【数442】
[この文献は図面を表示できません]
の支払人を調査したい場合、関連する証明書C
iと、C
iを発行した銀行Bとの両方を
【数443】
[この文献は図面を表示できません]
から検索し、さらに、然るべき権限(例、裁判所命令)によって、iの正当な識別情報ID
iを作るようBに求めるかまたは強制する。
【0760】
Hは衝突耐性であるため、銀行は、証明書に元々挿入されていたものとは異なる識別情報ID’
iを明らかにすることはできないことに留意されたい。代替的に、H(ID
i)の代わりに、暗号法の用語で、ID
iへの「コミットメント」を使用すれば十分である。
【0761】
ある具体的な代替案は、C
iに、ID
iの暗号E(ID
i)を、好ましくは一意に解読可能な秘密鍵または公開鍵暗号化スキームEを使用して格納することである。具体的には、ID
iは、銀行Bのみが知る鍵を用いて暗号化することができる。記号で表すと、E(ID
i)=E
B(ID
i)である。このように、政府は識別情報ID
iを取り出すためにBの助けを必要とする。
【0762】
代替的に、Eは、公開鍵暗号化スキームとすることもでき、ID
iは、(対応する復号化鍵を知る唯一のものである)政府の公開鍵を使用して暗号化することもできる。記号で表すと、E(ID
i)=E
G(ID
i)である。この場合、政府はID
iの取り出しにBの助けを必要としない。実際、すべての支払の支払人および受取人のアイデンティティは、Gにとって透過的である。しかし、ID
iからE
G(ID
i)を計算した政府と銀行とを除き、他の誰もE
G(ID
i)からID
iを知ることはできない。また、暗号E
G(ID
i)が確率論的である場合、pk
iの所有者iが誰かを正しく言い当てた人でも、おそらく自分の推測を確認することはできないであろう。
【0763】
pk
iに対応する秘密鍵sk
iを知っているのはiだけであるため、証明書C
iが一旦発行されたら、BおよびGのいずれも、iの電子署名に対する支配力を有さないことを強調しておく。加えて、
【数444】
[この文献は図面を表示できません]
のみが
【数445】
[この文献は図面を表示できません]
の一部であるため、BおよびGのいずれも、iの支払
【数446】
[この文献は図面を表示できません]
のセンシティブ情報
【数447】
[この文献は図面を表示できません]
を理解することはできない。最後に、ランダムに選択された検証者でない限り、BおよびGはいずれも、支払
【数448】
[この文献は図面を表示できません]
の処理に関わらない。
【0764】
要するに、ユーザのプライバシーを完全に犠牲にしなくても、ビットコイン様のシステムに関して述べた法執行の懸念が解消する。実際、BとGとを除き、iは、銀行、商店、ユーザ等の他の誰かに対する、ビットコインおよび同様のシステムで享受するのと同じ(疑似)匿名性を享受し続ける。
【0765】
最後に、より高度な暗号技術を使用することによって、適切な状況下でのユーザのトレーサビリティを維持しながら、ユーザのプライバシーを高めることも可能である(脚注50参照)。
【0766】
脚注50
例えば、最後のシナリオに注目すると、iが銀行Bから証明書C
i=SIG
B(B,pk
i,E
G(ID
i))を一旦取得したら、異なる公開pk’
iについて、iは別の証明書C’
i=SIG
B(B,pk’
i,E’
G(ID
i))を取得することも可能であり、それについてBは、ID
iがE’
G(ID
i)を復号化したものであることをもはや知らない。
【0767】
12.4 銀行の新たな役割
アルゴランドにおける鍵の認定が、銀行の新たな役割である。銀行Bがその顧客のために容易に行うことのできる役割である。実際、Bは既に当該顧客を非常によく知っており、通例、彼らと随時コミュニケーションを取っている。顧客の中の一人の鍵iを認定することによって、Bは、単純だが価値ある(そして、場合によっては金銭的に報酬が得られる)サービスを行う。
【0768】
アルゴランドにおいて銀行Bが持ち得る別の役割は、顧客iによって正規に権限を与えられたBは、iの従来の銀行口座から、iがアルゴランドに所有する電子鍵pk
iにマネーを移転することができることである。(実際、Bおよび他のすべての銀行は「同じ為替レートで」そうしており、アルゴランドは、国の通貨を基盤とした、非常に分散された、便利かつ自己規制された支払システムとして使用することができる。)銀行Bがマネーをpk
iに移転するための1つの方法は、Bがアルゴランドに所有する電子鍵pk
Bからpk
iに支払を行うことである。実際、銀行はその顧客よりも簡単に、国の通貨を公開取引所でアルゴランドに変換することができる(脚注51参照)。
【0769】
脚注51
さらに一歩踏み込むと、政府はアルゴランドにおいてマネーを印刷することも許される場合があり、それを、特に銀行に移転することもでき、または銀行が十分に規制されている場合には、一定のパラメータ内でアルゴランドマネーを生成することを銀行に許す場合がある。
【0770】
最後に、銀行は多くの場合信頼されているため、自分が行う支払を完全に管理するユーザiは、当該ユーザiの検証のインセンティブをBと共有して、自分の代わりに検証者として行為することを銀行Bに委託することを望むかもしれない(脚注52参照)。
【0771】
脚注52
まさにそれを行うための「代理人」メカニズムは、付録「??」に記載している。そのセクションは、特別に構築された通信ネットワークを用いたアルゴランドの実施態様に充てられている。しかし、そこに記載されている委託メカニズムは、基礎となるネットワークがどのようなものであろうとも採用することができる可能性がある。
【0772】
12.5 小売店のみからの報酬
登録権限機関が銀行であるかどうかを問わず、また法執行の懸念が処理されているかどうかを問わず、アルゴランドの許可型展開は、所与の鍵pk
iが商店に属していることを(例、その証明書C
i内で)識別することを可能にする。
【0773】
クレジットカードでの支払を現在受け付けている商店は、クレジットカード会社に対して支払わなければならない取引手数料を既に受け入れている。したがって、当該商店は、(数日ではなく数分以内に、また、はるかに議論の余地のない方法で支払われる方を好むことに加えて、)クレジットカードシステムの、通例、より高い取引手数料を支払うよりも、アルゴランドで1%の手数料を支払う方を好むかもしれない。
【0774】
したがって、証明書ベースのアルゴランドは次のことを確実にすることができる。
(1)全員が、商店に行われる支払の小さな割合のみの報酬を与え、なおかつ、
(2)検証者には、他のすべての支払も同様に処理することへのインセンティブが与えられる。
【0775】
例えば、A’を、PAY
rの支払で小売店に支払われる総額とすると、最高潜在的報酬R’を計算できるであろう(例、R’=1%A’)。しかし、リーダーおよび検証者はまとめて金額全体R’を受け取るのではなく、PAY
rでの全支払の総数(または総額、もしくはそれらの組み合わせ)に連動して増えるR’の一部のみを受け取る。例えば、非常に単純にして、PAY
rでの支払の総数がmである場合、分配される実際の報酬はR’(1−1/m)となる。前と同様、これは、各小売店に支払われた金額から、一部である1%(1−1/m)を差し引き、差し引かれたこの金額を、選ばれた公式に従ってリーダーと検証者との間で分割することによって自動的に行うことができる。
【0776】
13 変型
いくつか考えられる、アルゴランドの変型を論じてみる。
【0777】
13.1 代替的な検証者選択メカニズム
これまで、アルゴランドは、規定された誠実な過半数をSV
rが有することを確認して、前のラウンドに依存する数量から、リーダーl
rおよび検証者集合SV
rを自動的に選択するものであった。しかし、検証者およびリーダーを選択する代替方法を指摘したい。
【0778】
このような方法の1つは、当然、暗号プロトコルにより全ユーザによって実行される。しかし、このアプローチは、システム内のユーザ数が多い場合には遅くなるかもしれない。したがって、2種類の代替メカニズム、すなわち、連鎖型、自然ベース、および信用できる第三者を考えてみよう。(これらのメカニズムを、既に述べたものと混合することもできる。)
【0779】
連鎖型メカニズム
各SV
rが誠実な過半数を有すると帰納的に仮定すると、SV
r自体(またはより一般的にはrまでのラウンドの検証者の一部)にラウンドrの検証者集合および/またはリーダーを選択させることができるであろう。例えば、複数者によるセキュア計算によってそうすることができるであろう。誠実な過半数を有するように初期の検証者集合が選ばれると仮定すると、ブートストラッピングに頼る。すなわち、各検証者集合の誠実な過半数は、次の検証者集合の誠実な過半数を含意する。検証者集合は全ユーザの集合に対して小さいため、そのメンバーは、この選択を非常に素早く実施することができる。
【0780】
ここでも、各ラウンドについて、検証者集合およびリーダーを決定論的に導く、十分に長いランダムなストリングを選択すれば十分である。
【0781】
自然ベースのメカニズム
所与のラウンドrの検証者集合SV
rおよびリーダーl
rは、ラウンドrに関連付けられているランダム値v
rから、予め決められたやり方で、規定のユーザの集合PV
r−kから選択することができる。具体的には、v
rは、自然かつ公開のランダム値としてもよい。これによって、我々は、これが任意の所与の個人ではとても制御することができない、ランダムプロセスの広く利用できる結果であることを意味する。例えば、v
rは、所与の時刻(例、ラウンドrの始まり、もしくは前のラウンドの所与の時刻)における様々な都市の気温、または所与の証券取引所で所与の時刻に売買される所与の有価証券の株数、等から構成してもよい。
【0782】
自然かつ公開のランダム値は十分に長くないことがあるため、
【数449】
[この文献は図面を表示できません]
を設定するよりも、代わりに
【数450】
[この文献は図面を表示できません]
を設定することもでき、既に述べたように、H(v
r)を適切な擬似ランダム的に伸ばす必要がある。
【0783】
受託者ベースのメカニズム
SV
rを選択する代替アプローチは、そのうちの少なくとも1人が誠実であることを保証するように選択された、1つまたは複数の特別なエンティティである、受託者に関わる。受託者は、支払集合PAY
rの構築には関わることはできないが、検証者集合SV
rおよび/またはリーダーl
rを選ぶことができる。
【0784】
最も単純な受託者ベースのメカニズムは、当然、1受託者のものである。受託者Tが1人しかいない場合、当該受託者は必然的に誠実である。したがって、当該受託者はラウンドrでSV
r(またはSV
rがそこから導かれた十分にランダムなストリングs
r)を自明に選択し、電子署名し、利用できるようにすることができる。
【0785】
これは単純なメカニズムであるが、Tに非常に大きな信頼を置く。それほどではないにしても当該Tを信頼するために、Tは、自分だけが生成することができ、ラウンドrによって一意に決定された1つのストリングs
r、例えば、s
r=SIG
T(r)、を利用できるようにすることができる。さらに、すべてのユーザは、SV
rがそこから導かれたランダムストリング、H(SIG
T(v
r))を計算することができる。
【0786】
このように、Tは、集合SV
rを支配する権限を持たない。本質的に、当該Tは自己裁量で1つの戦略的決定を有する。すなわち、SIG
T(r)を利用できるようにするかどうかである。したがって、Tが誠実に行為しているかどうかをチェックすること、ひいては適切な賞罰を用いてTが誠実に行為することを確実にすることは、より簡単である。
【0787】
このアプローチの問題は、予測不可能性(の欠如)である。実際、Tは、かなり前もってSIG
T(r)を計算しておき、それを秘かに誰かに明らかにするかもしれず、そのため、その誰かは将来のラウンドの検証者集合を知り、そのメンバーを攻撃するかまたは腐敗させるのに十分な時間を有する。
【0788】
この問題を避けるために、セキュアなハードウェアに依拠することができる。本質的に、適切なラウンドで正規の電子署名を出力するプログラムと合わせて、Tを、「外部に」公開鍵を投稿させ、対となる秘密鍵を「内部に」閉じ込める、改ざん防止装置にすることができる。このアプローチは、当然、セキュアなハードウェアの内部で展開されるプログラムが、事前に将来の署名を漏洩するための秘密の命令を有さないことを確信する必要がある。
【0789】
別のアプローチは、各ラウンドrに関連付けられている自然公開ランダム値v
rを使用することである。例えば、Tは、SIG
T(v
r)を利用できるようにするよう求められることがある。このように、将来のラウンドrの値v
rは誰にも分からないため、Tは、事前に漏洩するための電子署名を有さない。
【0790】
しかし、Tが依然として漏洩する可能性がある唯一のものは、T自身の秘密署名鍵である。この潜在的な問題に対処するためには、k人の受託者に依拠することができる。そのうちの適切な過半数が誠実であることを確実にするよう当該受託者を選ぶことができた場合、当該受託者は、各ラウンドrでSV
rを選ぶために、複数者によるセキュア計算を間違いなく使用することができる。信頼性には劣るがより単純にすると、各ラウンドrで、各受託者iに、rに一意に関連付けられているとともにiだけが生成することのできる1つのストリングを利用することができるようにさせ、次いで、すべてのこのようなストリングについてSV
rを計算することができる。例えば、各受託者iは、SIG
i(r)を利用できるようにして、検証者集合SV
rを導くランダムなストリングs
r=H(SIG
1(r),...,SIG
k(r))を計算できるようにすることができるであろう。このアプローチで我々は、各電子署名SIG
i(r)が生成されることを確実にするための賞罰に依拠し、シーケンスs
1,s
2,...が依然として予測不可能なままであることを確実にするために、たとえ1人の受託者iであっても、その誠実さに依拠することがあるかもしれない。
【0791】
扱いにくいのは、当然ながら、必要なストリングを「利用できる」ようにする部分である。伝播プロトコルに依拠した場合、悪意の受託者は、混乱を生じさせるために故意に遅らせてその伝播を開始するかもしれない。そのため、受託者ベースのメカニズムは、「保証されたブロードキャストチャネル」の存在、すなわち、あるユーザがメッセージmを受信すると、他の皆が同じmを受信することを当該ユーザが保証されるような、メッセージの送信方法に依拠しなければならない。
【0792】
最後に、各ラウンドでセキュアな計算を使用するのではなく、セキュアな計算事前処理ステップを使用することができる。このステップはシステムの始めに、誠実な過半数を有するように選択された受託者の集合によって取られる。このステップは、場合によっては複数の計算段階によって、各受託者iについて公開値pvおよび秘密値v
iを生成する。この初期計算にはいくらか時間がかかるかもしれないが、各ラウンドrに必要な計算は自明とすることができるであろう。例えば、各ラウンドrについて、各受託者iは、自分の秘密値v
iを使用して、(好ましくは電子署名された)1つの再構築ストリングs
irを生成して伝播し、正当な再構築ストリングの過半数を含むストリングの任意の集合S
rがあるとすると、誰もがSV
r(またはSV
rがそこから導かれるランダム値)を曖昧さなく構築することができるようにする。このアプローチの危険性は、当然、固定された受託者の集合は、より攻撃を受けやすく、または腐敗されやすいおそれがあることである。
【0793】
13.2 より高度な暗号ツール
アルゴランドは、より高度な暗号ツールからも利益を受けることができる。具体的には、以下の通りである。
【0794】
1. 統合可能な署名
しばしば、アルゴランドでは、データDのうちの数個が複数者によって電子署名されなければならない。よりコンパクトな認証済み記録を生成するために、組み合わせ可能な電子署名を使用することができる。このような署名では、複数の公開鍵、例えば、ΡΚ
1、PK
2およびPK
3を1つの公開鍵PK=ΡΚ
1,2,3に統合することができるであろう。また、異なる公開鍵に関連した同じデータDの署名は、対応する統合された公開鍵に関連して、1つの署名に統合することができる。例えば、SIG
1(D)、SIG
2(D)およびSIG
3(D)は1つの電子署名s=SIG
1,2,3(D)に変換することができるであろうが、これは、公開鍵PK
1,2,3に関連して、誰によっても検証することができる。関連する公開鍵の識別子のコンパクトな記録、我々の例では、集合{1,2,3}にはsを添付することができるので、誰でも素早くΡΚ
1、PK
2およびPK
3を収集してPK=PK
1,2,3を計算し、PKに基づいてDの署名sを検証することができる。
【0795】
これにより、複数の関係する伝播を単一の伝播にすることができる。本質的に、伝播プロトコルの間に、ユーザが、記録{1,2,3}とともにSIG
1,2,3(D)、および記録{4,5}とともにSIG
4,5(D)を受信したと仮定する。すると、当該ユーザはSIG
1,2,3,4,5(D)および記録{1,2,3,4,5}を伝播するのと同じである。
【0796】
2. ツリーハッシュアンドサイン
署名が複数のデータを認証する場合、署名された項目のリスト全体を維持または送信しなければならないよりも、1つのデータの署名だけを抽出できる方が便利であろう。例えば、プレーヤは、認証されたPAY
r全体ではなく、所与の支払P∈PAY
rの認証記録を維持したいかもしれない。このために、まず、各支払P∈PAY
rを個別のリーフに格納するマークル木を生成し、それからルートに電子署名することができる。この署名は、項目Pおよびその認証経路とともに、本質的にP単独の代替署名である。
【0797】
3. 配達証明付き電子メール
後者の処理方法の1つの利点は、プレーヤが、lへの支払を配達証明付き電子メール(脚注53参照)によって、好ましくは送信者匿名で送信し、lが意図的にその支払の一部をPAY
lrに含めないことにした場合に、lを罰する助けになり得る受信確認(レシート)を得られるようになることである。
【0798】
脚注53
例えば、米国特許第5666420号の軽量配達証明付き電子メールによる。
【0799】
14 適用範囲
本明細書で説明するシステムのソフトウェア実装は、コンピュータ可読媒体に格納されるとともに1つまたは複数のプロセッサで実行される、実行可能コードを含むことができる。コンピュータ可読媒体は、非一時的なものとすることができ、コンピュータハードドライブ、ROM、RAM、フラッシュメモリ、CD−ROM、DVD−ROM、フラッシュドライブ、SDカード、および/もしくは、例えばユニバーサルシリアルバス(USB)インタフェースを有する他のドライブなどの携帯コンピュータ記憶媒体、ならびに/または実行可能コードを格納しプロセッサで実行することができる任意の他の適切な有形もしくは非一時的コンピュータ可読媒体もしくはコンピュータメモリであってもよい。本明細書で説明するシステムは、任意の適切なオペレーティングシステムとの関係で使用してもよい。
【0800】
本発明の他の実施形態は、本明細書で開示する本発明の明細または実施を考慮することで当業者には明らかになるであろう。明細および実施例は例示的なものとしてのみ見なされ、本発明の真の範囲および精神は以下の請求項によって示されることが意図される。