椭圆曲线密码学(ECC)数学基础与曲线形式

密码学概念 · 2026-06-12

概述

椭圆曲线密码学(Elliptic Curve Cryptography, ECC)是现代公钥密码学中最具影响力的技术之一。与 RSA 基于大整数分解、DH 基于有限域离散对数不同,ECC 的安全性建立在椭圆曲线离散对数问题(ECDLP)之上——在已知曲线上的基点 $P$ 和点 $Q = kP$ 的情况下,求解标量 $k$ 在计算上不可行。

ECC 的核心优势在于:同等安全级别下,密钥尺寸远小于 RSA。128 位安全级别仅需 256 位密钥,而 RSA 需要 3072 位。这一优势使 ECC 成为资源受限环境(移动设备、物联网、国密应用)的首选方案。

ECC 并非单一算法,而是一个庞大的理论体系。从 Weierstrass 方程到 Montgomery ladder,从 twisted Edwards 曲线到双线性对,不同的曲线形式决定了不同的性能特征和安全属性。理解这些数学基础,是正确选择和实现 ECC 算法的前提。

代数基础:从群论到有限域

群、环、域

椭圆曲线的代数结构建立在有限域(Finite Field)之上的阿贝尔群(Abelian Group)。

定义 1(群):集合 $G$ 配备二元运算 $\cdot$,满足:

  • 封闭性:$\forall a,b \in G, a \cdot b \in G$
  • 结合律:$(a \cdot b) \cdot c = a \cdot (b \cdot c)$
  • 单位元:$\exists e \in G, a \cdot e = a$
  • 逆元:$\forall a \in G, \exists a^{-1} \in G, a \cdot a^{-1} = e$
若还满足交换律 $a \cdot b = b \cdot a$,则称为阿贝尔群。

定义 2(有限域):元素个数有限的域,记为 $\mathbb{F}_q$,其中 $q = p^m$。密码学中最常用的是:

  • 素域 $\mathbb{F}_p$:$p$ 为素数,运算为模 $p$ 加法和乘法
  • 二元扩域 $\mathbb{F}_{2^m}$:用于硬件实现场景

椭圆曲线的群结构

椭圆曲线上的点,加上一个特殊的"无穷远点" $\mathcal{O}$(作为群单位元),在点加法运算下构成一个阿贝尔群。

点加法的几何定义:

CODE
给定椭圆曲线上的两点 P = (x₁, y₁) 和 Q = (x₂, y₂):

若 P = O,则 P + Q = Q(单位元性质)
若 Q = O,则 P + Q = P
若 x₁ = x₂ 且 y₁ = -y₂,则 P + Q = O(互逆点)
否则:
  计算斜率 λ:
    - 若 P ≠ Q:λ = (y₂ - y₁) / (x₂ - x₁) mod p    (点加)
    - 若 P = Q:λ = (3x₁² + a) / (2y₁) mod p          (倍点)
  结果 R = (x₃, y₃):
    x₃ = λ² - x₁ - x₂ mod p
    y₃ = λ(x₁ - x₃) - y₁ mod p

这个几何定义直接转化为有限域上的代数运算,构成了 ECC 的基石。

三种主流曲线形式

Weierstrass 形式

一般方程

$$y^2 = x^3 + ax + b$$

其中 $a, b \in \mathbb{F}_p$,且满足判别式 $\Delta = -16(4a^3 + 27b^2) \neq 0$(确保曲线无奇点)。

密码学中通常使用短 Weierstrass 形式,即上述标准形式。NIST P-256、SM2 等主流曲线均采用此形式。

SM2 曲线参数(GM/T 0003-2012):

CODE
素数 p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系数 a = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系数 b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
阶   n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
基点 G = (32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7,
         BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0)

SM2 使用 256 位素域,提供约 128 位安全级别。其参数选择遵循特定模式(如 $p$ 为特殊形式的素数),旨在优化模约减运算效率。

NIST P-256 曲线参数

CODE
p = 2^256 - 2^224 + 2^192 + 2^96 - 1
a = -3
b = 0x5AC635D8 AA3A93E7 B3EBBD55 769886BC 651D06B0 CC53B0F6 3BCE3C3E 27D2604B

P- 256 的 $a = -3$ 是一个刻意选择,因为此时倍点公式可以简化——分母 $2y_1$ 的计算中可以利用 $a = -3$ 的性质减少一次乘法。

Montgomery 形式

方程

$$By^2 = x^3 + Ax^2 + x$$

Montgomery 曲线由 Peter Montgomery 于 1987 年提出,其核心优势在于Montgomery ladder——一种恒定时间的标量乘法算法。

Montgomery ladder 原理

CODE
输入:标量 k = (k_{n-1} ... k₁k₀)₂,基点 P
初始化:R₀ = O, R₁ = P

从最高位到最低位遍历每一位 kᵢ:
  若 kᵢ = 0:
    R₁ = R₀ + R₁    (点加)
    R₀ = 2R₀        (倍点)
  若 kᵢ = 1:
    R₀ = R₀ + R₁    (点加)
    R₁ = 2R₁        (倍点)

返回 R₀ = kP

关键特性:每一步都执行一次点加和一次倍点,操作模式与标量 $k$ 的比特值无关。这使得 Montgomery ladder 天然抵抗时序攻击(Timing Attack)和简单功耗分析(SPA)。

Curve25519 是最著名的 Montgomery 曲线(RFC 7748),由 Daniel J. Bernstein 设计:

CODE
方程:y² = x³ + 486662x² + x
素数:p = 2²⁵⁵ - 19
A = 486662
基点 x 坐标:9

Curve25519 的设计哲学:

  • 刚性参数(nothing-up-my-sleeve):系数 $A = 486662$ 是满足 Montgomery 形式约束的最小整数,消除了参数被植入后门的疑虑
  • 快速模约减:$p = 2^{255} - 19$ 的特殊形式使模运算无需除法
  • 单坐标计算:仅使用 $x$ 坐标,$y$ 坐标通过曲线方程推导,减少数据传输

Edwards 形式与 Twisted Edwards

完整 Edwards 曲线方程

$$x^2 + y^2 = 1 + dx^2y^2$$

Twisted Edwards 曲线方程(更一般的形式):

$$ax^2 + y^2 = 1 + dx^2y^2$$

Edwards 曲线由 Harold Edwards 于 2007 年引入密码学,其最大优势是加法公式统一——点加和倍点使用完全相同的公式,无需区分。

CODE
Edwards 曲线的统一加法公式:

给定 P = (x₁, y₁), Q = (x₂, y₂)

x₃ = (x₁y₂ + y₁x₂) / (1 + dx₁x₂y₁y₂)
y₃ = (y₁y₂ - ax₁x₂) / (1 - dx₁x₂y₁y₂)

Ed25519 是基于 twisted Edwards 曲线的签名方案(RFC 8032):

CODE
曲线方程:-x² + y² = 1 + (-121665/121666)x²y²
素数:p = 2²⁵⁵ - 19
a = -1
d = -121665/121666 mod p

Ed25519 的优势:

  • 统一加法:加法和倍点使用同一公式,天然抵抗侧信道
  • 完备性:加法公式对所有输入点有效,不需要处理特殊情况
  • 快速验证:Ed25519 签名验证比 ECDSA 快约 2 倍

三种形式的对比

维度WeierstrassMontgomeryTwisted Edwards
方程$y^2 = x^3 + ax + b$$By^2 = x^3 + Ax^2 + x$$ax^2 + y^2 = 1 + dx^2y^2$
单位元无穷远点 $\mathcal{O}$$(0, 1)$$(0, 1)$
点加/倍点不同公式不同公式统一公式
恒定时间需要额外措施Montgomery ladder天然恒定时间
坐标$(x, y)$仅 $x$(蒙哥马利阶梯)$(x, y)$
完备性否(需处理特殊情况)
典型曲线P-256, SM2, P-384Curve25519Ed25519, Ed448
安全级别128-256 bit128 bit128-224 bit

曲线形式间的转换

在一定条件下,三种形式可以互相转换:

Montgomery → Weierstrass

$$A_{W} = \frac{3 - A_M^2}{3B_M^2}, \quad B_W = \frac{2A_M^3 - 9A_M}{27B_M^3}$$

Twisted Edwards → Montgomery(当 $a$ 是平方元时):

$$A_M = \frac{2(a + d)}{a - d}, \quad B_M = \frac{4}{a - d}$$

Montgomery → Twisted Edwards

$$a = \frac{A_M + 2}{B_M}, \quad d = \frac{A_M - 2}{B_M}$$

注意:Weierstrass 形式不能直接转换为 Montgomery 或 Edwards 形式,除非满足特定条件(即 $x^3 + ax + b$ 有三个有理根)。

标量乘法与算法优化

标量乘法 $Q = kP$ 是 ECC 中最核心、最耗时的运算。给定 256 位标量 $k$ 和曲线上的点 $P$,高效计算 $kP$ 是性能的关键。

Double-and-Add 算法

最朴素的标量乘法:

CODE
k = (1 0 1 1 0 1)₂

初始化 R = O
从最高位到最低位:
  R = 2R          (倍点)
  若当前位为 1:
    R = R + P     (点加)

结果:kP = 1·P + 0·2P + 1·4P + 1·8P + 0·16P + 1·32P

复杂度:约 $n$ 次倍点 + $n/2$ 次点加($n$ 为比特长度)。

NAF(非相邻形式)表示

NAF 将标量表示为 $\{0, \pm 1\}$ 的形式,使得非零位最少:

$$k = \sum_{i=0}^{l-1} k_i \cdot 2^i, \quad k_i \in \{0, \pm 1\}$$

性质:NAF 表示中,非零位不超过总位数的 $1/2$,平均密度为 $1/3$。这意味着点加次数减半。

示例:$k = 7 = (111)_2 = (100\bar{1})_{NAF}$($\bar{1}$ 表示 $-1$)

$$7P = 2^3P - P = 8P - P$$

只需 3 次倍点 + 1 次点减,而非 3 次倍点 + 2 次点加。

GLV 方法(Gallant-Lam-Vanstone)

对于具有复乘(Complex Multiplication, CM)的曲线,GLV 方法可以将标量乘法分解为两个较小标量的并行计算:

$$kP = k_1P + k_2(\lambda P)$$

其中 $\lambda$ 是曲线的自同态(endomorphism),$k_1, k_2$ 约为原标量长度的一半。

GLV 在 SM2 上的应用

SM2 曲线的自同态为:

$$\phi(x, y) = (\beta x, y), \quad \beta^3 \equiv 1 \pmod{p}$$

利用 GLV,标量 $k$ 可分解为 $k_1, k_2$,满足 $|k_1|, |k_2| \leq \lceil n/2 \rceil$,从而将一次完整的标量乘法分解为两次半长标量乘法并行执行,性能提升约 30-40%。

标量乘法的侧信道防护

攻击类型原理防护措施
时序攻击不同标量导致不同执行时间恒定时间算法(Montgomery ladder)
SPA功耗曲线泄露操作序列(点加 vs 倍点)统一操作模式、dummy 操作
DPA统计分析多次功耗曲线标量盲化、点盲化
故障注入电压/时钟毛刺导致计算错误结果验证、冗余计算

双线性对(Bilinear Pairing)

双线性对是 ECC 中最具革命性的数学工具,它使得基于身份的加密(IBE)、短签名、零知识证明等高级密码原语成为可能。

定义

设 $\mathbb{G}_1, \mathbb{G}_2$ 是阶为 $q$ 的加法循环群,$\mathbb{G}_T$ 是阶为 $q$ 的乘法循环群。映射 $e: \mathbb{G}_1 \times \mathbb{G}_2 \rightarrow \mathbb{G}_T$ 若满足以下条件,则称为双线性对

  • 双线性:$e(aP, bQ) = e(P, Q)^{ab}$,$\forall P \in \mathbb{G}_1, Q \in \mathbb{G}_2, a, b \in \mathbb{Z}_q$
  • 非退化性:$e(P, Q) \neq 1$(对非单位元)
  • 可计算性:存在高效算法计算 $e(P, Q)$

Weil 对与 Tate 对

Weil 对:最早的构造,定义在椭圆曲线的 $n$- torsion 群上:

$$e_n: E[n] \times E[n] \rightarrow \mu_n$$

其中 $\mu_n$ 是 $n$ 次单位根群。

Tate 对:计算效率更高的变体,定义在乘法子群上:

$$e(P, Q) = f_P(Q)^{(q^k - 1)/n}$$

其中 $f_P$ 是 Miller 函数,$k$ 是嵌入度(embedding degree)。

优化变体

  • Ate 对:缩短 Miller 循环长度
  • 最优 Ate 对:进一步优化的 Miller 循环,是目前最快的对运算实现

配对友好曲线

并非所有曲线都适合构造高效的双线性对。配对友好曲线需要满足:

  • 嵌入度 $k$ 足够小(使 $\mathbb{F}_{q^k}$ 中的离散对数可计算)
  • 曲线阶 $n$ 足够大(保证安全性)
曲线安全级别嵌入度 $k$$\mathbb{G}_1$$\mathbb{G}_2$特征
BN256~100 bit12$\mathbb{F}_{p}$$\mathbb{F}_{p^{12}}$已过时
BLS12-381~128 bit12$\mathbb{F}_{p}$$\mathbb{F}_{p^{12}}$Zcash/Ethereum
BLS24-315~128 bit24$\mathbb{F}_{p}$$\mathbb{F}_{p^{24}}$更高安全
BW6-761~128 bit6$\mathbb{F}_{p}$$\mathbb{F}_{p^{6}}$配对效率优先

SM2 与双线性对

SM2 曲线(素数 $p \approx 2^{256}$,阶 $n \approx 2^{256}$)的嵌入度 $k \approx 2^{255}$,意味着 $\mathbb{F}_{p^k}$ 的规模极大。因此,SM2 不适合构造高效的双线性对

这是 SM2 与 BN/BLS 系列曲线在设计上的根本区别——SM2 专注于加密和签名场景,不支持基于对的密码学原语。

配对的应用

曲线参数选择原则

安全性要求

  • 大素数阶子群:曲线阶 $n$ 必须包含大素数因子($n \geq 2^{256}$ 用于 128 位安全)
  • 嵌入度:对于非配对场景,嵌入度应足够大($k > (\log_2 n)/8$),以抵抗 MOV 攻击
  • :避免迹 $t = p + 1 - n$ 过小(抵抗异常曲线攻击)
  • 协因子:$h = \#E(\mathbb{F}_p)/n$ 应小(通常 $h \leq 4$)

性能优化

  • 素数形式:选择特殊形式的素数(如 $p = 2^{256} - 2^{224} + 2^{192} + 2^{96} - 1$)以加速模约减
  • 系数选择:$a = -3$ 可优化倍点公式
  • 刚性参数:参数应有透明的生成方式(如 Curve25519 的 $A = 486662$ 是最小满足条件的整数)

安全曲线设计标准

CODE
现代 ECC 曲线设计检查清单:

□ 安全级别 ≥ 128 bit
□ 素数阶子群(或协因子 ≤ 4)
□ 嵌入度足够大(非配对曲线)
□ 抵抗 MOV 攻击和 Frey-Rück 攻击
□ 抵抗异常曲线攻击(anomalous curve, #E(Fp) = p)
□ 抵抗小子群攻击
□ 常数时间实现可行
□ 参数刚性(nothing-up-my-sleeve numbers)
□ 无已知弱点和后门(截至发布时)

主流曲线的设计哲学对比

NIST 曲线(P-256, P-384, P-521)

  • 来源:NSA 推荐,FIPS 186-4 标准化
  • 素数:广义梅森素数,优化模约减
  • 争议:P-256 的种子来源不透明("random" 曲线的种子由 NSA 生成)
  • 适用:政府、金融、传统 PKI

Curve25519/Ed25519

  • 来源:Daniel J. Bernstein 设计,RFC 7748/8032
  • 哲学:刚性参数 + 恒定时间实现 + 侧信道防护优先
  • 优势:参数透明,实现安全,速度快
  • 适用:TLS 1.3、Signal、SSH、现代应用

SM2

  • 来源:中国国家密码管理局,GM/T 0003-2012
  • 特点:256 位素域,国密标准强制要求
  • 优势:合规性,与国密生态兼容
  • 注意:不适合配对场景,GLV 自同态优化是其主要性能优化手段
  • 适用:中国金融、政务、关基系统

综合对比表

曲线安全级别签名速度验证速度密钥大小签名大小侧信道防护参数透明度
P-256 (ECDSA)128 bit中等64 B64 B需额外措施
Ed25519128 bit很快32 B64 B内置
SM2128 bit中等中等64 B64 B需额外措施
BLS12-381128 bit48 B96 B内置

ECC 与后量子密码:迁移压力

ECC 正面临量子计算的实质性威胁。Shor 算法可以在多项式时间内求解 ECDLP,使当前所有基于 ECC 的密码方案在量子计算机面前不再安全。

时间线

  • 2025 年:NIST 完成 PQC 标准制定(ML-KEM、ML-DSA、SLH-DSA)
  • 2026 年:各国加速 PQC 迁移路线图制定(加拿大 2026 年 4 月、欧盟 2026 年 12 月截止)
  • 2029 年:Google、Cloudflare 等科技巨头设定的 PQC 完全迁移截止线
  • 2031-2035 年:加拿大等国设定的完全采用时间
对 ECC 的影响
  • SM2、P-256、Curve25519 等主流曲线均会被量子计算机破解
  • 迁移方向:基于格的密码(CRYSTALS-Kyber/Dilithium)、基于哈希的签名(SPHINCS+)
  • 国密体系也在探索基于格的 SM2 替代方案

参考来源

相关实践