Pairing (Weil/Tate/Eta/Ate Pairing)

Table of Contents

1. Pairing

在密码学中,Pairing 是指两个加法群到一个乘法群的映射 \(e: G_1 \times G_2 \to G_T\) ,其中 \((G_1, +), (G_2, +)\) 是加法群, \((G_T, \cdot)\) 是乘法群,这个映射满足:

  1. 双线性(Bilinearity),即 \[\begin{aligned} e(P, Q+R) = e(P, Q) \cdot e(P, R) \\ e(P + S, Q) = e(P, Q) \cdot e(S, Q)\end{aligned}\] 由上面两个式子,可推出 \[e(aP, bQ) = e(P,Q)^{ab}\]
  2. 非退化性(Non-degeneracy): \(\forall T \in G_2, e(S, T) = 1\) if and only if \(S = \mathcal{O}\). Similarly, \(\forall S \in G_1, e(S, T) = 1\) if and only if \(T = \mathcal{O}\). 也就是说 \(G_1\) 和 \(G_2\) 不能全都映射到 \(G_T\) 的单位元,我们对这种情况不感兴趣。
  3. 可计算性(Computability): 存在有效算法可以计算 \(e\) 。

非退化性和可计算性比较容易理解,不再介绍,下面再介绍一下“双线性”。我们知道,线性映射(Linear Function)是指一个函数满足: \[\begin{aligned} f(x+y) &= f(x) + f(y) \\ f(ax) &= af(x)\end{aligned}\] 而双线性是指函数有两个输入变量,对这两个输入变量都分别满足线性映射。即固定其中任意一个输入变量使之成为一元函数,则这个一元函数满足线性映射。

2. Points of Finite Order (Torsion Points)

假设 \(m \ge 1\) 且是整数,则椭圆曲线 \(E\) 上满足 \(m P = \mathcal{O}\) 的点 \(P\) 被称为“阶为 \(m\) 的点”,所有阶为 \(m\) 的点组成的集合 \[E[m] \triangleq \{P \in E : mP = \mathcal{O} \}\] 被称为 Points of Order \(m\) 或者 m-Torsion Points。

3. Divisors

3.1. Divisors of rational functions

设有理函数 \[f(X) = \frac{a_0 + a_1 X + \cdots + a_n X^n}{b_0 + b_1 X + \cdots + b_m X^m}\] 在复数范围内进行因子分解,那么它也可以写为 \[f(X) = \frac{a(X - \alpha_1)^{e_1} (X- \alpha_2)^{e_2} \cdots (X- \alpha_r)^{e_r}}{b(X - \beta_1)^{d_1} (X- \beta_2)^{d_2} \cdots (X - \beta_s)^{d^s}}\] 其中 \(\alpha_1,\cdots,\alpha_r\) 和 \(\beta_1, \cdots, \beta_s\) 各不相同。 \(\alpha_1, \alpha_2, \cdots, \alpha_r\) 是零值点,而 \(\beta_1, \beta_2, \cdots, \beta_s\) 是极值点。这了跟踪这些零值点和极值点,我们定义 \(f(X)\) 的 Divisor 为: \[\text{div}(f(X)) \triangleq e_1 [\alpha_1] + e_2 [\alpha_2] + \cdots e_r [\alpha_r] - d_1 [\beta_1] - d_2 [\beta_2] - \cdots d_r[\beta_r]\] 式子仅仅 表明 \(f(X)\) 有 \(e_1\) 个零值点 \(\alpha_1\) ,有 \(e_2\) 个零值点 \(\alpha_2\) ,...,有 \(d_r\) 个极值点 \(\beta_r\) , \(\text{div}(f(X))\) 仅仅是这个表述的一个记号而已。 式子中没有标量乘法运算(记号 \(e_1 [\alpha_1]\) 并不是标量乘法运算,而是表示 \(e_1\) 个零值点 \(\alpha_1\) )。

上面 \(f\) 是单变量函数,类似地,可以推广到多变量函数。对于椭圆曲线 \(E: Y^2 = X^3 + AX + B\) 来说,其上的点 \(P = (x,y)\) ,可以定义两个变量的函数 \(f(P) = f(x,y)\) 。这时, \(f\) 在 \(E\) 上也有零值点和极值点。

我们定义 Divisor on Curve E \[D \triangleq \sum_{p \in E} n_p [P]\] 其实 \(D\) 就是一些点的集合(并不涉及点的加法和标量乘法运算)。比如有 \(E(\mathbb{F}_{61}): y^2 = x^3 + 8x + 1\) ,点 \(P=(57,24), Q=(25,37)\) 在这个曲线上,我们可以定义 \(D_1 = 1 [P] + 2 [Q], D_2 = 2 [P] + 3 [Q]\) ,或者其它的形式都可以。

定义 Degree of a divisor 是前面定义式子中系数的和,即 \[\text{deg} (D) = \text{deg}\left( \sum_{p \in E} n_p [P]\right) \triangleq \sum_{p \in E} n_p\] 定义 Sum of a divisor 是去掉中括号后的式子(也就是说 \(\text{Sum}(D)\) 会涉及到点的加法和标量乘法运算了, \(\text{Sum}(D)\) 本身不再是点的集合了,它自己就是一个点),即 \[\text{Sum}(D) = \text{Sum} \left( \sum_{p \in E} n_p [P] \right) \triangleq \sum_{p \in E} n_p P\] 式子中 \(n_P P\) 表示 \(P\) 加上自己一共加 \(n_P\) 次。

当且仅当 \(\text{deg}(D) = 0\) 和 \(\text{Sum}(D) = \mathcal{O}\) 同时成立时, \(D\) 被称为 Divisor of a rational function on E。

4. Weil Pairing

设 \(P,Q \in E[m]\) ,也就是说 \(P\) 和 \(Q\) 是群 \(E\) 上阶为 \(m\) 的点。 \(f_P\) 和 \(f_Q\) 是 rational functions on E,满足 \[\text{div}(f_P) = m [P] - m [\mathcal{O}], \quad \text{div}(f_Q) = m[Q] - m[\mathcal{O}]\] 则 \(P\) 和 \(Q\) 的 Weil Pairing 的定义是 \[e_m(P,Q) = \frac{f_P(Q+S)}{f_P(S)} \bigg/ \frac{f_Q(P-S)}{f_Q(-S)}\] 式中 \(S\) 是 \(E\) 中任意元素,且满足 \(S \notin \{\mathcal{O}, P, -Q, P, -Q \}\) 。需要说明的是 \(e_m(P,Q)\) 的值不依赖于 \(f_P, f_Q, S\) 的选择。

4.1. Weil Pairing 计算实例

设 \(Y^2 = X^3 + Ax + B = (X - \alpha_1)(X - \alpha_2)(X - \alpha_3)\) ,由于没有 \(X^2\) 项,从而有 \(\alpha_1 + \alpha_2 + \alpha_3 = 0\) ,记 \[P_1 = (\alpha_1, 0), P_2 = (\alpha_2, 0), P_3 = (\alpha_3, 0)\] 容易验证这 3 个点的阶都是 2。求 Weil Pairing \(e_2(P_1, P_2), e_2(P_1, P_3), e_2(P_2, P_3)\)

按定义计算 Weil Pairing 时,需要寻找满足条件的 \(f_{P_1}(X,Y), f_{P_2}(X,Y), f_{P_3}(X,Y)\) 。这里设 \(f_{P_i}(X,Y) = X - \alpha_i\) 容易验证 \[\text{div}(f_{P_i}) = 2 [P_i] - 2 [\mathcal{O}]\] 所以 \(f_{P_i}\) 满足计算 Weil Pairing 的要求。

取 \(S=(x,y) \in E\) ,那么点 \(P_1 - S\) 的 \(x\) 坐标(根据椭圆曲线定义)为 \[\begin{aligned} X_{P_1 - S} &= \left( \frac{-y}{x-\alpha_1} \right)^2 - x - \alpha_1 \\ &= \frac{y^2 - (x - \alpha_1)^2(x + \alpha_1)}{(x - \alpha_1)^2} \\ &= \frac{(x-\alpha_1)(x-\alpha_2)(x - \alpha_3) - (x - \alpha_1)^2(x + \alpha_1)}{(x - \alpha_1)^2} \\ &= \frac{(- \alpha_2 - \alpha_3)x + \alpha_2 \alpha_3 + \alpha_1^2}{x - \alpha_1} \\ &= \frac{\alpha_1 x + \alpha_2 \alpha_3 + \alpha_1^2}{x - \alpha_1} \end{aligned}\]

类似地,我们可以得到 \(P_2 + S\) 的 \(x\) 坐标为 \[X_{P_2 + S} = \frac{\alpha_2 x + \alpha_1 \alpha_3 + \alpha_2^2}{x - \alpha_2}\]

下面,我们按照 Weil Pairing 的定义进行计算 \[\begin{aligned} e_2(P_1, P_2) &= \frac{f_{P_1}(P_2+S)}{f_{P_1}(S)} \bigg/ \frac{f_{P_2}(P_1-S)}{f_{P_2}(-S)} \\ &= \frac{X_{P_2+S} - \alpha_1}{X_S - \alpha_1} \bigg/ \frac{X_{P_1-S} - \alpha_2}{X_{-S} - \alpha_2} \\ &= \frac{\frac{\alpha_2 x + \alpha_1 \alpha_3 + \alpha_2^2}{x - \alpha_2} - \alpha_1}{x - \alpha_1} \bigg/ \frac{\frac{\alpha_1 x + \alpha_2 \alpha_3 + \alpha_1^2}{x - \alpha_1} - \alpha_2}{x - \alpha_2} \\ &= \frac{(\alpha_2 - \alpha_1)x + \alpha_1 \alpha_3 + \alpha_2^2 + \alpha_1 \alpha_2}{(\alpha_1 - \alpha_2)x + \alpha_2 \alpha_3 + \alpha_1^2 + \alpha_1 \alpha_2} \\ &= \frac{(\alpha_2 - \alpha_1)x + \alpha_2^2 - \alpha_1^2}{(\alpha_1 - \alpha_2)x + \alpha_1^2 - \alpha_2^2} \quad \text{since}\; \alpha_1 + \alpha_2 + \alpha_3 = 0 \\ &= - 1 \end{aligned}\]

类似地,可以计算出 \(e_2(P_1, P_3), e_2(P_2, P_3)\) ,具体过程略。

4.2. Miller 算法(快速寻找计算 Weil Pairing 的 \(f\) )

Victor S. Miller 在 Short Programs for functions on Curves 中提出了快速寻找“满足 Weil Pairing 要求的 \(f_P,f_Q\) ”的方法。

Miller 算法(摘自 An Introduction to Mathematical Cryptography, Second Edition)如图 1 所示。

pairing_miller.gif

Figure 1: Miller 算法寻找 \(f\)

4.3. 验证 Weil Pairing 满足双线性

有限域 \(\mathbb{F}_{631}\) 上的曲线 \[E: y^2 = x^3 + 30x + 34\] 这个曲线一共有 \(\#E(\mathbb{F}_{631}) = 650 = 2 \cdot 5^2 \cdot 13\) ,其中阶为 5 的点有 25 个,容易验证 \(P=(36, 60), Q=(121,387)\) 的阶都是 5,求 Weil Pairing \(e(P,Q)\) ,验证满足双线性 \(e(3P, 4Q) = e(P,Q)^{3 \cdot 4}\)

取 \(S=(0,36)\) ,使用 Miller 算法可得: \[\frac{f_P(Q+S)}{f_P(S)} = \frac{103}{219} = 473 \in \mathbb{F}_{631}\] 及 \[\frac{f_Q(P-S)}{f_Q(-S)} = \frac{284}{204} = 88 \in \mathbb{F}_{631}\] 从而 \(P,Q\) 的 Weil Pairing 为 \[e(P,Q) = \frac{473}{88} = 242 \in \mathbb{F}_{631}\]

记 \(P' = 3P = (617,5), Q' = 4Q = (121, 244)\) ,可求得 \[e(P',Q') = \frac{219}{83} = 512 \in \mathbb{F}_{631}\] 可以验证下式成立 \[e(P,Q)^{3 \cdot 4} = 242^{12} = 512 = e(3P, 4Q)\]

5. Tate Pairing

Tate Pairing 由数学家 John Tate 提出,后来由数字家 Stephen Lichtenbaum 扩展。Tate Pairing 有时也称为 Tate–Lichtenbaum Pairing。由于 Tate Pairing 的计算效率比 Wail Pairing 要快一些,在密码学中,Tate Pairing 的应用更广。关于快速计算 Tate Pairing 的方法可以参考论文 Faster Computation of the Tate Pairing

设 \(E\) 是 \(\mathbb{F}_q\) 上的椭圆曲线, \(l\) 是素数, \(P\) 是曲线 \(E(\mathbb{F}_q)\) 上阶为 \(l\) 的点,即 \(P \in E(\mathbb{F}_q)[l]\) , \(Q\) 是曲线 \(E(\mathbb{F}_q)\) 上的点, 即 \(Q \in E(\mathbb{F}_q)\) ,选择一个函数 \(f_P\) 满足 \[\text{div}(f_P) = l[P] - l [\mathcal{O}]\] 点 \(P\) 和 \(Q\) 之间的 Tate Pairing 定义为 \[\tau(P,Q) = \frac{f_P(Q+S)}{f_P(S)} \in \mathbb{F}^{*}_q\] 式中 \(S\) 是 \(E(\mathbb{F}_q)\) 上任意点,只要 \(S\) 满足 \(f_P(Q+S)\) 和 \(f_P(S)\) 有定义且不为零。如果 \(q \equiv 1 \bmod l\) ,定义点 \(P\) 和 \(Q\) 之间的 Modified Tate Pairing 为 \[\hat{\tau}(P,Q) = \tau(P,Q)^{(q-1)/l} = \left( \frac{f_P(Q+S)}{f_P(S)} \right)^{(q-1)/l} \in \mathbb{F}^{*}_q\]

5.1. Weil Pairing 和 Tate Pairing 关系

Weil Pairing 和 Tate Pairing 有关系 \[e_l(P,Q) = \frac{\tau(P,Q)}{\tau(Q,P)}\] 从式中可知 Weil Pairing 的计算量近似是 Tate Pairing 的两倍。

6. 其它 Pairing

由于 Tate Pairing 的计算量还是比较大,学者们提出了其它一些 Pairing。

6.1. Eta Pairing

Paulo S. L. M. Barreto 等在论文 Efficient Pairing Computation on Supersingular Abelian Varieties 中提出了 Eta Pairing。

6.2. Ate Pairing

F. Hess 等在论文 The Eta Pairing Revisited 中提出了 Ate Pairing。论文中交待了 Ate Pairing 名字的由来:

We call our new pairing the Ate pairing, pronounced eight. This is for two reasons, firstly it is like the Tate pairing, but faster (hence the missing ‘T’), it is also like the Eta pairing but it reverses the order of the arguments (and Ate is Eta spelled backwards).

7. 参考

An Introduction to Mathematical Cryptography, Second Edition
The Weil Pairing on Elliptic Curves and Its Cryptographic Applications

Author: cig01

Created: <2020-12-30 Wed>

Last updated: <2021-05-06 Thu>

Creator: Emacs 27.1 (Org mode 9.4)