Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BLS署名

 BLS署名

GBECの解説動画の資料です。
https://goblockchain.network/2022/09/bls/

shigeyuki azuchi

September 08, 2022
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. BLS署名


    View Slide

  2. 1
    BLS署名

    BLS(Boneh–Lynn–Shacham)署名は、署名検証にペアリングを利用した署名方式


    ● ペアリングとは?

    同じ素数qを位数とした2つの加法巡回群G
    1
    , G
    2
    と乗法巡回群 G
    T
    について、

    e: G
    1
    ✕G
    2
    → G
    T

    という関係が成立する一方向写像。

    つまり、G
    1
    , G
    2
    の2つの群要素を入力としてG
    T
    の群要素を出力することができる。


    ● 対称ペアリング(G
    1
    = G
    2
    、Weilペアリングなど)

    ● 非対称ペアリング(G
    1
    ≠ G
    2、
    BLS12-381など)

    加法巡回群:全ての元が生成元の整数倍で表される。

    乗法巡回群:全ての元が生成元の冪乗で表される。 


    View Slide

  3. 2
    ペアリングの双線形性と非退化性

    G
    1
    とG
    2
    の生成元をそれぞれPとQとした場合、


    ● 双線形性

    任意の整数 a, b が与えられた場合に以下の関係が成立する。

    e(aP, bQ) = e(P, Q)ab

    ● 非退化性

    e(P, Q) ≠ 1で、これがG
    T
    の生成元 g = e(P, Q)


    View Slide

  4. 3
    BLS署名

    BLS署名はペアリングの双線形性を利用した署名方式 

    ● 鍵生成

    ランダムな値sを選択し、これを秘密鍵とする。対応する公開鍵は、 Y = sQ ∈ G
    2

    ● 署名の作成

    メッセージmに対する署名は、 σ = sH
    1
    (m) ∈ G
    1

    ※H
    1
    はG
    1
    の要素を出力するハッシュ関数 

    ● 署名の検証

    メッセージm、σ、公開鍵Yが与えれれた場合に、以下が成立すれば有効な署名 

    e(σ, Q) = e(H
    1
    (m), Y) ← 各写像の結果がG
    T
    の同じ要素であることを検証 

    双線形性e(aP, bQ) = e(P, Q)abから、

    e(σ, Q) = e(sH
    1
    (m), Q) = e(H
    1
    (m), Q)s = e(H
    1
    (m), sQ)、つまりe(H
    1
    (m), Y)になる。

    ※ BLS署名はペアリングの双線形性を利用して秘密鍵による計算の検証を行える 


    View Slide

  5. 4
    BLSのメリット/デメリット

    ● ECDSAやSchnorr署名と違って、署名の生成に乱数を必要としない 

    公開鍵P = xG、メッセージmに対してSchnorr署名であれば、

    ○ nonce k をランダムに選択

    ○ Public nonce R = kG

    ○ s = k + H(m)x ← 秘密鍵が分からないよう必ず乱数を必要とする 

    ○ (R.x, s)

    ● 乱数が不要なので、公開鍵とメッセージに対して決定論的に署名値が決まる 

    (ECDSAやSchnorr署名では別途RFC6979のような仕様との組み合わせが必要) 

    ● 集約署名や閾値署名が実装しやすい 

    ● ペアリング関数の計算コストが高め 

    ● 公開鍵や署名のサイズは secp256k1より少し大きい

    ○ secp256k1:公開鍵=33 byte、Schnorr署名= 64 byte

    ○ BLS12-381:公開鍵=48 byte、BLS署名=96 byte


    View Slide