BLS署名について
以下を書いたので、BLS署名についてもまとめておく。
なお、本内容はブロックチェーン系プロジェクトで着目される暗号技術 のP.22に書かれているBLS署名について自分なりに理解するためのメモである。1
BLS署名はその名の通り、署名をどうやるかという話なので、以下3フェーズで考える。
- 鍵生成
- 署名
- 検証
鍵生成
ハッシュ関数を以下のように定める。
は任意長の入力を表している。 後述の双線形写像を使うために、写像した先がになるようにする。
また、公開パラメータとして、を選ぶ。
次に有限体から秘密鍵を以下のように選ぶ。
公開パラメータを生成元として、公開鍵をとする。 であることに注意。
署名
メッセージに対して、以下のように署名を行う。
であることに注意。
検証
BLS署名における双線形性(ペアリング)について - 逆さまにしたで述べた以下の双線形写像を使う。
検証する内容は以下。等号が成り立つなら正当な署名である。
補足
署名の検証までであれば、上記で終わりなのでおまけ。 を式展開して、ちゃんと成り立つことを確認する。
署名のところで記載したようになので、
である。あとはを第一引数から第二引数に移せることが言えれば、右辺と一致する。これについては、BLS署名における双線形性(ペアリング)について - 逆さまにしたで述べた通りなので、そちら参照(一番最後のところ)。
もうちょっと補足しておくと、をの元としたことで、である。 同様にとしたので、である。 双線形写像はとなるような写像であることも理解しておくとよいと思う。
References
-
今回も記号を自分の理解に合わせて出典元と変えている箇所がある↩