椭圆曲线点数计算算法:Schoof算法及其扩展
1. 引言
在密码学应用中,生成适合的椭圆曲线依赖于解决大有限域上任意椭圆曲线的点数计算问题,即精确确定此类曲线上有理点的数量。本文将介绍解决该问题的成功方法,主要关注特征为2的域和大素数阶 $p$ 的域这两种情况。虽然椭圆曲线点数计算的很多理论具有普遍性,但针对这两种情况发展出的技术存在差异。
2. 不同特征域下的椭圆曲线方程
- 特征为2的域 :我们只关注非超奇异曲线,曲线方程形式为 $Y^2 + XY = X^3 + a_5$,其中 $a_5 \in F_{2^n}$。因为扭转曲线的群阶很容易推导,所以考虑这种形式的方程就足够了。
- 奇特征大于3的域 :感兴趣的曲线方程形式为 $Y^2 = X^3 + aX + b$,其中 $a, b \in F_q$。
3. Schoof算法
3.1 算法起源与复杂度
高效的通用点数计算算法起源于Schoof的工作。Schoof将点数计算方法的复杂度从应用BSGS算法得到的 $O(q^{1/4 + \epsilon})$(对于任意正的 $\epsilon$)显著降低到 $O(\log^8 q)$。Schoof算法是当前所有高效点数计算方案的基础。
根据Hasse定理,$#E(F_q) = q + 1 - t$,其中 $|t| \leq 2\sqrt{q}$。Schoof算法的核心是确定 $t$ 模素数 $\ell$($\ell \leq R_{max}$)的值,其中 $R_{max