Signer Networkの概要記事作成#17
Conversation
1963c43 to
8554bee
Compare
| --- | ||
|
|
||
| 本記事ではSignerが用いる閾値署名方式とブロック生成の概要について解説します。 | ||
| Tapyrus Signerはあくまで参照実装であり、有効なSchnorr署名が作成が可能であれば、必ずしもTapyrus Signerを利用する必要はありません。 |
There was a problem hiding this comment.
| Tapyrus Signerはあくまで参照実装であり、有効なSchnorr署名が作成が可能であれば、必ずしもTapyrus Signerを利用する必要はありません。 | |
| Tapyrus Signerは参照実装であり、有効なSchnorr署名が作成が可能であれば、必ずしもTapyrus Signerを利用する必要はありません。 |
| 本記事ではSignerが用いる閾値署名方式とブロック生成の概要について解説します。 | ||
| Tapyrus Signerはあくまで参照実装であり、有効なSchnorr署名が作成が可能であれば、必ずしもTapyrus Signerを利用する必要はありません。 | ||
|
|
||
| ## 秘密分散共有法 |
| Tapyrus Signerはあくまで参照実装であり、有効なSchnorr署名が作成が可能であれば、必ずしもTapyrus Signerを利用する必要はありません。 | ||
|
|
||
| ## 秘密分散共有法 | ||
| 秘密分散共有法とはシャミアが提案したShamir’s Secret Sharing Scheme(ssss)、複数の秘密情報を複数の管理者が協力して管理する方法です。 |
There was a problem hiding this comment.
同時期にブラークリーも発表してるのでシャミアのとするのはやめといた方が良いかと思います。また、この文脈だと管理者というよりは、参加者や当事者という表記の方が良いかと思います。
| ディーラーが秘密情報をn個のシェアに分割し、n人の管理者に対し、それぞれの管理者に対応したシェアを分配します。 | ||
|
|
||
|
|
||
| ## 検証可能秘密分散法(Verifiable Secret Sharing) |
There was a problem hiding this comment.
| ## 検証可能秘密分散法(Verifiable Secret Sharing) | |
| ## 検証可能な秘密分散法(Verifiable Secret Sharing) |
|
|
||
| ## 検証可能秘密分散法(Verifiable Secret Sharing) | ||
| 通常の秘密分散共有法では、ディーラーから配布されたシェアがその管理者に対応したシェアであるか、または悪意をもったディーラーが誤ったシェアを分配していないか、管理者は判断することができないことが問題となります。 | ||
| その対策を行った方法に検証可能秘密分散(VSS)があります。 |
There was a problem hiding this comment.
| その対策を行った方法に検証可能秘密分散(VSS)があります。 | |
| そのような問題に対処するために提案されたのが、検証可能な秘密分散法(VSS)で、Feldmanが提案した方式などが有名です。 |
| 有名なものにFeldmanの検証可能な秘密分散法があります。 | ||
|
|
||
| ### Feldman’s Verifiable Secret Sharing Scheme(Feldman’s VSS, Feldmanの検証可能な秘密分散法) | ||
| Feldmanの検証可能な秘密分散法は、ssssにおいてディーラー(マスター秘密鍵生成者)から受け取ったシークレットシェアが本当にssssの曲線上の点であるか検証できるようにする手法です。 |
There was a problem hiding this comment.
ssssと出てくると?となるので、シャミアの秘密分散法という表記の方が良いかと思います。
| ディラーは多項式の各係数のコミットメントを計算し、管理者に対して公開します。各管理者はコミットメントを用いて自分のシークレットシェアが正しいものであるか検証することができます。 | ||
|
|
||
| ## 閾値署名方式 {#threshold-signature-scheme} | ||
| Tapyrus Signer Network(TSN)の署名アルゴリズムは、"Provably Secure Distributed Schnorr Signatures and a (t, n) Threshold Scheme for Implicit Certificates"[^1]に基づいています。この署名方式では、n人の署名者のうちt人が協力しなければ署名が発行されません。 |
There was a problem hiding this comment.
| Tapyrus Signer Network(TSN)の署名アルゴリズムは、"Provably Secure Distributed Schnorr Signatures and a (t, n) Threshold Scheme for Implicit Certificates"[^1]に基づいています。この署名方式では、n人の署名者のうちt人が協力しなければ署名が発行されません。 | |
| Tapyrus Signer Network(TSN)の署名方式は、"Provably Secure Distributed Schnorr Signatures and a (t, n) Threshold Scheme for Implicit Certificates"[^1]に基づいています。この署名方式では、n人の署名者のうちt人が協力しなければ有効な署名が作成されません。 |
| Signer Networkのブロック生成はラウンド制で行います。 | ||
| ラウンドが開始する前に、ラウンドロビン方式で1つのSignerノードをラウンドマスターとして選出します。 | ||
| ラウンドマスターは、候補ブロックを生成し、他のSignerノード(ラウンドメンバー)に候補ブロックを公開します。 | ||
| 候補ブロックを受信したラウンドメンバーは確認をおこない、候補ブロックの賛成・反対を判断し、各判断に対応したシークレットシェアを用いて署名を付与する。 |
There was a problem hiding this comment.
| 候補ブロックを受信したラウンドメンバーは確認をおこない、候補ブロックの賛成・反対を判断し、各判断に対応したシークレットシェアを用いて署名を付与する。 | |
| 候補ブロックを受信したラウンドメンバーはブロックの有効性を検証し、候補ブロックの賛成・反対を判断し、各判断に対応したシークレットシェアを用いて署名を付与します。 |
| 3. 他のSignerノードに新しいブロックを公開(Redis Pub/Subを使用) | ||
| 4. 署名発行プロトコル([以下](#signature-issuing-protocol)で説明) | ||
| 5. ブロックの公開 | ||
| - ブロックがNGの場合、警告を記録 |
There was a problem hiding this comment.
| - ブロックがNGの場合、警告を記録 | |
| - ブロックが無効な場合、警告を記録 |
| 4. 署名発行プロトコル([以下](#signature-issuing-protocol)で説明) | ||
| 5. ブロックの公開 | ||
| - ブロックがNGの場合、警告を記録 | ||
| - ブロックがOKの場合、次のステップへ |
There was a problem hiding this comment.
| - ブロックがOKの場合、次のステップへ | |
| - ブロックが有効な場合、次のステップへ |
| - commitments: コミットメントの配列。コミットメントはsecp256k1曲線点でありxとyの座標を持ちます。 | ||
| - Blockvss[2]: 賛成のシークレットシェア。secp256k1曲線のスカラー値をhex形式で表したものです。 | ||
| - Blockvss[3] 反対のVSSの追加データのオブジェクト。フィールドのプロパティは賛成のVSSのデータのオブジェクトと同じです。 | ||
| - Blockvss[4] 反対のVSSのシークレットシェア。secp256k1曲線のスカラー値をhex形式で表したものです。 |
There was a problem hiding this comment.
PositiveとNegativeは賛成、反対ではなくて、楕円曲線の点についての話かと。
| ## 秘密分散法 | ||
| 秘密分散法とはブラークリーとシャミアによって同時期に独立して提案された、複数の秘密情報を複数の参加者が協力して管理する方法です。 | ||
| 一つの秘密情報を分割した情報である**シェア**を複数の参加者に配布し、特定の数のシェアが集まれば、元の秘密データを復元できるという手法です。 | ||
| ディーラーが秘密情報をn個のシェアに分割し、n人の参加者に対し、それぞれの参加者に対応したシェアを分配します。 |
| 通常の秘密分散法では、ディーラーから配布されたシェアがその参加者に対応したシェアであるか、または悪意をもったディーラーが誤ったシェアを分配していないか、参加者は判断することができないことが問題となります。 | ||
| そのような問題に対処するために提案されたのが、検証可能な秘密分散法(VSS)で、Feldmanが提案した方式などが有名です。 | ||
|
|
||
| ### Feldman’s Verifiable Secret Sharing Scheme(Feldman’s VSS, Feldmanの検証可能な秘密分散法) |
There was a problem hiding this comment.
↑では検証可能な秘密分散法(Verifiable Secret Sharing)となっているので、Feldman’s VSS, Feldmanの検証可能な秘密分散法を先にして英語は括弧書きにしましょう。
|
|
||
| ### Feldman’s Verifiable Secret Sharing Scheme(Feldman’s VSS, Feldmanの検証可能な秘密分散法) | ||
| Feldmanの検証可能な秘密分散法は、通常の秘密分散法においてディーラー(マスター秘密鍵生成者)から受け取ったシークレットシェアが本当に秘密分散法の曲線上の点であるか検証できるようにする手法です。 | ||
| ディラーは多項式の各係数のコミットメントを計算し、参加者に対して公開します。各参加者はコミットメントを用いて自分のシークレットシェアが正しいものであるか検証することができます。 |
There was a problem hiding this comment.
| ディラーは多項式の各係数のコミットメントを計算し、参加者に対して公開します。各参加者はコミットメントを用いて自分のシークレットシェアが正しいものであるか検証することができます。 | |
| ディーラーは多項式の各係数のコミットメントを計算し、参加者に対して公開します。各参加者はコミットメントを用いて自分のシークレットシェアが正しいものであるか検証することができます。 |
| 詳しくは[こちら](http://cacr.uwaterloo.ca/techreports/2001/corr2001-13.ps)をご参照ください。 | ||
|
|
||
| ## BlockVSSの構成 {#blockvss-structure} | ||
| BlockVSSは「正」と「負」の2種類のVSSを持っています。一つは候補ブロックに賛成するための署名を生成するシークレットシェアで、もう一つは反対するための署名を生成するシークレットシェアです。 |
There was a problem hiding this comment.
| BlockVSSは「正」と「負」の2種類のVSSを持っています。一つは候補ブロックに賛成するための署名を生成するシークレットシェアで、もう一つは反対するための署名を生成するシークレットシェアです。 | |
| BlockVSSは「正」と「負」の2種類のVSSを持っています。一つは候補ブロックに賛成するための署名を生成するシークレットシェアで、もう一つは反対するための署名を生成するシークレットシェアです。 |
反対はしないです。
b74ac4b to
0aca60f
Compare
#3 Signer Networkの概要記事を作成しました。