本稿について
本稿では、The ZILLIQA Technical Whitepaper Version0.1の「Appendix B」の日本語訳を掲載します。やや数学的要素が入ります。また、Appendix Aの内容も含みますので、必要に応じてこちらもご覧ください。
原文はこちらになります。
スポンサードサーチ
Appendix B PBFTのマルチシグ
Appendix Aで説明した古典的なEC-Schnorrマルチシグプロトコルは全参加者の参加が必要である。ゆえに、PBFTの設定で直接利用することはできない。PBFTではコミティのノードの少なくとも1 + n*2/3が署名したメッセージだけが必要だからである。このセクションでは、[14]から着想を得たこのプロトコルに対する微修正を説明する。微修正は、プロトコルの参加者を記録する2つのビットマップを維持することにある。修正後のプロトコルを図3に示す。以下にプロトコルを概説する。
1.アイデンティティのセットアップ(1度限り)
このステップはAppendix Aで説明した古典的なEC-Schnorrマルチシグプロトコルと全く同じである。セットアップが正常に終了した場合に限り、プロトコルの次のステップを開始することができる。
2.コミットメント生成
このステップは古典的なEC-Schnorrマルチシグプロトコルと似ている。違いは各署名者PiがQiとともに自身の公開鍵pkiを集約者に送信するという点だけである。
3.試行生成
このステップでは、集約者は0に初期化されたビットマップBQ[1, ..., |P|]を保持する。ステップ2で受信した全ての(Qi, pki)について、集約者はBQ[i]を1にセットする。集約者はネットワークの伝搬遅延に対応するために規定の時間を待ってから以下の計算を行う。
- 集約鍵pk ← ∑pki∈P pki・BQ[i]を計算する。つまり、受信したQiに対する公開鍵を追加する。
- また、ステップ2で受け取ったQiについてQ ← ∑i:BQ[i] = 1 Qiを計算する。
- 次に、r ← H(Q||pk||m) mod nを計算して(r, Q, pk)を各Piに送信する。
4.応答生成
このステップは古典的なEC-Schnorrマルチシグプロトコルと似ている。違いは各署名者Piがsiとともに自身の公開鍵pkiを集約者に送信するという点だけである。
5.応答集約
このステップでは、集約者は0に初期化されたビットマップBQ[1, ..., |P|]を保持する。ステップ4で受信した全ての(si, pki)について、集約者はQ'i ← [si]G + [r]pkiを計算することでsiが有効化どうかをチェックし、Q'iが受信したQiと等しいかどうかを検証する。2つの値が正しければBs[i] = 1にセットする。このステップにより、任意の値siを送信してDoS攻撃を仕掛けた参加者を検出することができる。集約者はネットワークの伝搬遅延に対応するために規定の時間を待ってから以下の計算を行う。
- 2つのビットマップBQとBsが等しければ、これは同一の参加者からなる集合がコミットメント生成ステップと応答生成ステップで集約者にメッセージを送信したことを指し、集約者は集約応答s = ∑i si mod nを計算し、集約署名σ = (r, s)を構築する。次に、集約者は検証者に(σ, m, BQ)を送信する。
- 2つのビットマップBQとBsが等しくなければ、これは参加者がQiを送信したがsiと一致しないことを指し、集約者はBQとBsの集合論的相違を計算する。つまり、受信したQiでsiと一致しないものについて公開鍵の集合pki ∈ Pを計算する。対応する公開鍵の集合をブラックリストに入れることができる。集約者はBsを0に初期化してBQとBsの共通部分を計算しそれをBQに保存する。最後に試行生成ステップからプロトコルをやり直す。
6.署名検証
まず、検証者は署名が少なくとも|P|*2/3 + 1の参加者が生成したものであるかどうかをチェックし、次にそのマルチシグ有効かどうかをチェックする。このステップの残りの部分は古典的なEC-Schnorrマルチシグプロトコルと同じである。
(ZILLIQAホワイトペーパー日本語訳13 ←← 前)|
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。