最近、Schnorrベースの閾値署名スキームFROSTをベースにして、暗号技術だけでt-of-nのマルチシグの設定を動的に調整可能にする提案が行われている。その中で、母数nの数を増やす際に利用されているのが、RTS(Repairable Threshold Scheme)。
RTSは、シャミアの秘密分散法などを使って、複数のパーティでシェアを分散して保持するスキームにおいて、後から参加者のシェアを復元できるようにするスキーム。↑の提案では、既存のシェアの復元ではなく、新しい参加者用に新しいシェアを作るのにRTSを利用することで、母数を増やす。
今回は、↓サーベイ論文に掲載されている内の1つEnrollementスキームについて調べてみた。
https://eprint.iacr.org/2017/1155.pdf
RTS
論文は、ディーラーがいるモデルで書かれており、参加者の母数をn、閾値をtとした場合、ディーラーはシークレット値を含むt-1次の多項式f(x)を生成し、n人の参加者に対して、割り当てられたインデックスで多項式を評価した結果をシェアとして配布する。
この場合、多項式を知っているディーラーがいればシェアの復元は可能だが、ディーラーが利用できない場合でも、閾値数分の参加者がいればシェアを復元できるようにするのがこのスキームの目標。
※ RTSをt - 1人で実行できると追加のシェアが作成され閾値tを超えるシェアを入手できてしまうため、必ずt人以上で実行しないと再構築できないようなプロトコルになっている必要がある。
※ また、閾値分のシェアが集まれば多項式補間で多項式が復元できシェアを計算できるようになるが、シェアを集める参加者が登場することになり実質ディーラーとなれるので、そういうアプローチではない。
シェアの復元
シェアを復元したい参加者を、復元を支援するt人の参加者をとする。各参加者が保持しているシェアをとした場合、を求めるのが目標。
ラグランジュ補間公式を利用するとは以下を計算することで入手できる。
ここで、各ラグランジュ係数(1≦ j ≦ t)は、
であり、各参加者の識別子()が分かっていれば計算できる。
Enrollementプロトコルでは以下の手順で、がの値を計算できるようにする。
- t人の各参加者は、となるようなt個のランダム値(1≦ j ≦t )を生成する。各参加者は自分のシェアと上記のラグランジュ係数からを計算できるので、t - 1個のをランダムに生成して、最後の値はで計算すればいい。
- 各参加者は、計算したを他の支援者に送信する。
- 各参加者は、を計算し、を新しい参加者に送信する。
- は、を計算し、シェアを入手する。
1〜4の計算結果は、求めたかった最初のと同じになる。
各参加者は自分のシェア(正確にはラグランジュ係数を掛けた)をt個分割して、他の参加者に配布し、それを全参加者分集めたらが自身のシェアを計算できるようにしてるっぽい。