BLS署名における双線形性(ペアリング)について

ブロックチェーン系プロジェクトで着目される暗号技術のP.21-22を理解するために双線形性(ペアリング)について調べた。自分が理解するに至った軌跡をメモベースで残す。

余談だが、調べる過程で双線形写像(Bilinear maps)とペアリングの違いが気になった。個人的な印象としては、ペアリングは暗号分野寄りに使われる用語だと思ったが、Intro to Bilinear Mapsにも以下のように書いてあるので、本記事では大体同じものとして扱う。

Bilinear maps are called pairings because they associate pairs of elements from G1 and G2 with elements in Gt.

(拙訳) 双線形写像はペアリングとも呼ばれる。 G1とG2からの要素をGtでペアとして関連付けるからだ。

以下、調べた内容。1

双線形とは何なのか

本節は、ブロックチェーン系プロジェクトで着目される暗号技術がベースとなっている。

双線形を定義するにあたり、まず2種類の楕円曲線の生成元を  P, Qとする。このとき、素数位数  pの加法巡回群  G_1, G_2は、以下のように表現できる。

  G_1 = \lbrace 0, P, 2P, ..., (p-1) P \rbrace
  G_2 = \lbrace 0, Q, 2Q, ..., (p-1) Q \rbrace

また、有限体  \mathbb{F}_pと、位数  pの乗法巡回群  1  p乗根の集合)として  G_Tを定める。

このとき、 a, b \in \mathbb{F}_pなる  a ,bに対して、写像  e: G_1 \times G_2 \to G_Tが以下を満たすことを双線形という。

  e(aP, bQ) = e(P, Q)^{ab}

個人的に本記事を書く要因となったのが、ブロックチェーン系プロジェクトで着目される暗号技術P.22「正当性」における以下の数式。上記定義と表記が違ったので疑問に思って調べ始めた。なので本記事では下記数式が成立するところまでを追う。

  e(sH(m), Q) = e(H(m), sQ)

ベクトル空間における線形性(その1)

本節は、双線形関数 物理のかぎしっぽがベースになっている。

まず、復習として一変数関数に対する線形性を考える。 これはベクトル空間  V  x, y \in Vなる元に対して、写像  \phi: V \to \mathbb{R}が以下を満たすことだった。

  \phi(x + y) = \phi(x) + \phi(y)
  \phi(\alpha x) = \alpha \phi(x)  , \alpha \in \mathbb{R}

では、二変数ではどうなるか。 ベクトル空間  Vの直積集合  V \times Vの元  (x, y)に対して、写像  \psi(x,y): V \times V \to \mathbb{R}が以下を満たすことを双線形という。

  \psi(\alpha x + \beta x, y) = \alpha \psi(x, y) + \beta \psi(x,y)
  \psi(x, \alpha y + \beta y) = \alpha \psi(x, y) + \beta \psi(x,y)

双線形関数 物理のかぎしっぽ本文には、以下のように記載されているが、理解が及ばず腹落ちしなかった。

双線形関数は 個々の変数に対して別々に線形性を持っている と言えそうです.これが双線形という名前の由来でもあります なるほど。確かにそう見える。

ベクトル空間における線形性(その2)

本節は、岸本研究室 - 双線形写像についてがベースとなっている。

上記議論では、理解が及ばなかったので、もう少しシンプルに考える。 「ベクトル空間における線形性(その1)」の定義に比べて、式の数は多いが、以下で双線形を定義したほうがシンプルで、学習にあたっては、理解しやすかった。

双線形を定義する。ベクトル空間  Vを考え、  x, x_1, x_2, y, y_1, y_2 \in Vなる元を考える。このベクトル空間  Vに対して、  f: V \times V \to \mathbb{R}なる写像  fを定義する。また、  c \in \mathbb{R}とする。 このとき双線形は以下の性質を満たすことをいう。

  f(x_1 + x_2, y) = f(x_1, y) + f(x_2, y)
  f(cx, y) = c f(x, y)
  f(x, y_1 + y_2) = f(x, y_1) + f(x, y_2)
  f(x, cy) = c f(x, y)

こちらのほうが「ベクトル空間における線形性(その1)」で引用した個々の変数に対して別々に線形性を持っているというのが理解しやすいと思う。

双線形の例

「例示は理解の試金石」ということで双線形を満たす写像  fの具体例を考えてみる。

双線形な例

  f(x, y) = xy

「ベクトル空間における線形性(その2)」で定義した4式を一つずつ確かめていく。

  f(x_1 + x_2, y) = (x_1 + x_2) y = x_1 y + x_2 y = f(x_1, y) + f(x_2, y)
  f(cx, y) = (cx)y = c xy =  c f(x, y)
  f(x, y_1 + y_2) = x(y_1 + y_2) = x y_1 + x y_2 = f(x, y_1) + f(x, y_2)
  f(x, cy) = x(cy) = c xy = c f(x, y)

となり、すべて満たすので双線形。

双線形じゃない例2

  f(x, y) = x + y

実は最初にこれを念頭に考えていた。パッと見、線形性持ってそうだし。でも双線形じゃない。 4式中の一番上の式で双線形を満たさないことを確認する。

 \begin{eqnarray} (l.h.s) &=& f(x_1 + x_2, y) \\ &=& (x_1 + x_2) + y \end{eqnarray}  
  \begin{eqnarray} (r.h.s) &=& f(x_1, y) + f(x_2, y) \\ &=& (x_1 + y) + (x_2 + y) \\ &=& (x_1 + x_2) + y + y \\ &=& f(x_1 + x_2, y) + y \end{eqnarray}

となり、左辺と右辺が一致しない。

BLS署名における双線形

話をベクトル空間から乗法巡回群で考えているBLS署名の話に戻す。それにあたり「ベクトル空間における線形性(その2)」で登場した双線形性の定義を再掲する。

  f(x_1 + x_2, y) = f(x_1, y) + f(x_2, y)
  f(cx, y) = c f(x, y)
  f(x, y_1 + y_2) = f(x, y_1) + f(x, y_2)
  f(x, cy) = c f(x, y)

これらはベクトル空間  Vと実数  \mathbb{R}で考えていたので、乗法巡回群  G_Tと有限体  \mathbb{F}_pで考え直す。Intro to Bilinear Mapsより双線形性の定義を引用すると、双線形性とは  e: G_1 \times G_2 \to G_Tなる写像について、 u \in G_1, v \in G_2, a, b \in \mathbb{Z}に対して、

 e(u^{a}, v^{b}) = e(u, v)^{ab}

が成り立つことである。ただし、このとき  eは非退化である。また本式の表現方法にはIntro to Bilinear Mapsの7ページ目に書いてある以下の表記もある。

 \forall P \in G_1, \forall Q \in G_2, \forall a, b \in \mathbb{Z}に対して、

 e(aP, bQ) = e(P, Q)^{ab}

いきなり上式が出てくると、ベクトル空間から乗法巡回群への議論で少し飛んでしまっているように感じられるので補足する。

4式のうち、上2式について対応を示す。3

 f(x_1 + x_2, y) = f(x_1, y) + f(x_2, y) \tag{1}
 f(cx, y) = c f(x, y) \tag{2}

式(2)から示す。 e(aP, bQ) = e(P, Q)^{ab}において、 a = c, b = 1とすると

 e(cP, Q) = e(P, Q)^{c}

と表現できる。ここで e(P, Q) \in G_T G_Tが乗法巡回群であることを考えると自然な表記であろう。

次に式(1)を示す。 P \in G_1 G_1が加法巡回群であることを考えると

 e(P_1 + P_2, Q) = e(P_1, Q)e(P_2, Q)

となることを示せればよい。ここで P_1, P_2 G_1の元であることから生成元 Pを用いて、

 P_1 = a_1 P
 P_2 = a_2 P

と表現できる。ここで a_1, a_2 \in \mathbb{Z}である。これらを用いると

 \begin{eqnarray} e(P_1 + P_2, Q) &=& e(a_1P+a_2P, Q) \\ &=& e((a_1+a_2)P, Q) \\ &=& e(P, Q)^{(a_1+a_2)} \\ &=& e(P,Q)^{a_1} e(P,Q)^{a_2} \\ &=& e(a_1 P,Q) e(a_2 P, Q) \\ &=& e(P_1, Q) e(P_2, Q) \end{eqnarray}

が得られる。

ここまでの議論は整数 \mathbb{Z}上のものだったが、有限体 \mathbb{F}_p上でも成り立つとして、

 \forall P \in G_1, \forall Q \in G_2, \forall a, b \in \mathbb{F}_pに対して、

 e(aP, bQ) = e(P, Q)^{ab}

である。ここから a, bが可換であることがわかるが、もう少し詳細に書いておく。

 c \in \mathbb{F}_pに対して、 a = c, b = 1とすると

 e(cP, Q) = e(P, Q)^{c}

である。同様に  a = 1, b = cとすると

 e(P, cQ) = e(P, Q)^{c}

である。これらを合わせると

 e(cP, Q) = e(P, cQ)

が得られる。これを使うとブロックチェーン系プロジェクトで着目される暗号技術のP.22では、以下の変形が成り立つことがわかる。

 e(sH(m), Q) = e(H(m), sQ)

References


  1. 自分が理解しやすいように記号を変えているので出典元と異なる箇所がある

  2. 改行を含む数式にpreタグを使った。markdownでも&がエスケープされないようにならないかなー

  3.  yについては同様なので省略