少し前に発表された集約署名の新しいスキームDahLIAS↓
自分も異なる文脈で集約署名という言葉を使ってるので紛らわしいけど、↑の集約署名というのは、MuSigやFROSTのように複数の署名者(公開鍵)が同じメッセージに署名するマルチシグの集約ではなく、複数の署名者(公開鍵)がそれぞれ異なるメッセージに対して署名した各署名を集約する署名スキームのこと。
このような集約が可能な署名スキームとしてはBLS署名が有名だけど、ペアリングを必要としない離散対数ベースの署名方式では、これまでSchnorr署名を用いた半集約が可能とされてきた↓
techmedia-think.hatenablog.com
半集約というのは、n人の署名者がそれぞれ異なるメッセージに対するSchnorr署名
を提供した場合、それらのサイズは単純に
n個分の(
64×n byte)になるが、n個のと1つの
s値、もしくは1つのR値とn個の値に集約することで、署名データを約半分のサイズまで集約することができるというスキーム。
このような集約署名スキームには、
- 複数のインプットを持つトランザクションの複数の署名を集約する
- ブロック内のトランザクションの署名を集約する
- LNのチャネル通知をバッチ化する際に各通知の署名を集約する
といった用途がある。
今回提案されたDahLIASは、集約署名のサイズを単一のSchnorr署名のサイズまで圧縮する対話型のスキーム。対話型のスキームなので、上記の半集約のスキームのように後で非署名者が署名を集約するようなことはできない。つまり上記の1は可能だけど、2,3には対応できない。それでも単一のSchnorr署名と同じサイズにまで集約できるのは大きなメリットになる。
DahLIAS
DahLIASのスキームについて見ていく*1。n人の署名者と対話型のプロトコルを進めるコーディネーターがいるものとして、
- 各署名者の秘密鍵を
とし、対応する公開鍵を
とする(Gは楕円曲線のベースポイント)
- 各署名者
iが署名するメッセージをとする
を暗号額的ハッシュ関数とする*2
署名プロセスは、各署名者とコーディネーターの2ラウンドの通信で行われる以下の4つ(Sign, Coord, Sign', Coord')のプロトコルで構成される。
Sign
最初の署名ラウンド(Sign)で、各署名者iは署名に使用するナンスにコミットする。
- 2つのシークレットナンス
をランダムに選択し、
- 対応する公開ナンス
を計算し、
- 第1ラウンドのステートとして
を保存し、
とし、コーディネーターに送信する。
ここでは公開ナンスを送るだけで、署名対象のメッセージにはコミットしてないので、事前処理が可能。
Coord
コーディネーターは、すべての署名者から公開鍵およびメッセージ
および最初のラウンドの
を受け取ったら、
と
を計算し、
- セッションコンテキスト
を定義し*3、
を計算し、
を計算し、
- ステートst = Rを保存し、ctxを全署名者に送信する。
Sign'
2回めの署名ラウンド(Sign')で、各署名者iは部分署名を作成する。
- コーディネーターから受け取った
をパースし、
- 第1ラウンドで生成した
と合致する
が1つだけ存在するかチェックする。存在しない場合、一意ではない場合はプロセスを中止。
- 2をパスしたらそのインデックスを
jとして、かどうかチェックする。そうでない場合はプロセスを中止。
- 3をパスしたら、ctxの公開鍵とメッセージのペアから
を定義し、
を計算し、
を計算し、
を計算し、
- 部分署名
を計算し、コーディネーターに送信する。
Coord'
を受け取ったコーディネーターは、
を計算し、
を返す。
検証
公開鍵とメッセージのリストと署名
を受け取った検証者は、
が成立するか検証する。有効な署名であれば、sGは、
であるため、↑の式は成立する。
通常のSchnorr署名の検証と異なるのは、を署名者の数分合算する点で、この検証方式はBellare-Nevenのマルチシグ方式と似ている。
ROS攻撃
通常のSchnorr署名であればナンスは1つのみだけど、Signラウンドで各署名者はナンスを2つ用意している。これは、攻撃者が複数の署名セッションを使って、正直な署名者のSignラウンドの出力を得た後で、署名に使われる最終的なナンスは同じだがチャレンジの値
が異なる2つの署名セッションを作ることで、実際の署名者が署名していないメッセージに対する有効な署名を作成するという攻撃*4を回避するため。
具体的には、
と
により、最終的なナンスがセッションコンテキストに依存することになる
- Sign'ラウンドで
と合致する
の一意に存在するかのチェックと、同じインデックスで
が成立するかのチェック
がこの回避策になってるみたい。
以上がDahLIASのスキーム。他にもTaprootで使用する際に必要になる鍵の調整に関する説明も論文には記載されてる。あと少しだけ触れられていたアトミックスワップへの適用とか面白そう。