本文是Dan Boneh 和Victor Shoup所写书籍A Graduate Course in Applied Cryptography的笔记。
The group of points of an elliptic curve
最早由Diophantus提出了一个问题:已知二元多项式方程 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0,如何找到满足方程的有理数点 ( x ∈ Q , y ∈ Q ) (x\in Q,y\in Q) (x∈Q,y∈Q)?该问题可以等价于找到满足 y 2 = x 3 − x + 9 y^2=x^3-x+9 y2=x3−x+9的有理数点。
首先可以通过尝试法得到曲线上的几个点 P = ( − 1 , − 3 ) , Q = ( 1 , 3 ) P=(-1,-3),Q=(1,3) P=(−1,−3),Q=(1,3),注意二元方程是根据 x x x轴对称的,所以令 − P = ( − 1 , 3 ) , − Q = ( 1 , − 3 ) -P=(-1,3),-Q=(1,-3) −P=(−1,3),−Q=(1,−3),它们也是曲线上的点。
Chord method 弦方法
已知曲线上不重合且不对称的两点 P ≠ Q , P ≠ − Q P\ne Q,P\ne-Q P=Q,P=−Q,作一条直线 y = 3 x y=3x y=3x。将 y = 3 x y=3x y=3x带入原方程得到一元三次方程 ( 3 x ) 2 = x 3 − x + 9 (3x)^2=x^3-x+9 (3x)2=x3−x+9,可简单证明有两个不等实根且系数为有理数的一元三次方程,一定有另外一个不等实根,即得曲线上另一点 − R = ( 9 , 27 ) -R=(9,27) −R=(9,27)。Poincare将该计算与群内加法操作联系起来为,定义为 P ⊞ Q = − R P\boxplus Q=-R P⊞Q=−R。
一元三次方程的根
a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+cx+d=0 ax3+bx2+cx+d=0称为一元三次方程,可化为 x 3 + p x + q = 0 x^3+px+q=0 x3+px+q=0。判别式 Δ = ( q 2 ) 2 + ( p 3 ) 3 \Delta=(\frac q 2)^2+(\frac p 3)^3 Δ=(2q)2+(3p)3,分为以下情况:
- Δ > 0 \Delta>0 Δ>0,一个实根两个复根
-
Δ
=
0
\Delta=0
Δ=0
- p = q = 0 p=q=0 p=q=0,三重零根
- p , q ≠ 0 p,q\ne 0 p,q=0,二重根
- Δ < 0 \Delta<0 Δ<0,三个不等实根
上述两个不等根且系数为有理数的一元三次方程即满足 Δ < 0 \Delta<0 Δ<0的情况,定有第三个不等实根。
Tangent method 切线法
已知不在x轴上的一点, P = ( x , y ) = ( − 1 , − 3 ) , y ≠ 0 P=(x,y)=(-1,-3),y\ne 0 P=(x,y)=(−1,−3),y=0,作该点与曲线的切线,可得切点 T = ( 19 / 9 , − 109 / 27 ) T=(19/9,-109/27) T=(19/9,−109/27),定义这种操作为 P ⊞ P = T P\boxplus P=T P⊞P=T。
Elliptic curves over finite field
Finite field
F p e = { 0 , 1 , . . . , p e − 1 } \mathbb F_{p^e}=\{0,1,...,p^e-1\} Fpe={0,1,...,pe−1}:阶为 p e p^e pe的有限域, p p p为素数, e e e为一个正整数。当 e = 1 e=1 e=1时, F p = { 0 , 1 , . . . , p − 1 } \mathbb F_{p}=\{0,1,...,p-1\} Fp={0,1,...,p−1}称为素域。
Elliptic curves over finite field
令 O O O为曲线上的无穷远点,定义 E ( F p e ) E(\mathbb F_{p^e}) E(Fpe)为定义在 F p e \mathbb F_{p^e} Fpe上且在曲线 E E E上的所有点,包括无穷远点 O O O。例如:曲线 E : y 2 = x 3 + 1 E:y^2=x^3+1 E:y2=x3+1和 F 11 \mathbb F_{11} F11,则 E ( F 11 ) = { O , ( − 1 , 0 ) , ( 0 , ± 1 ) , ( 9 , ± 2 ) , ( 6 , ± 3 ) , ( 8 , ± 4 ) , ( 3 , ± 5 ) } E(\mathbb F_{11})=\{O,(-1,0),(0,\pm 1),(9,\pm 2),(6,\pm 3),(8,\pm 4),(3,\pm 5)\} E(F11)={O,(−1,0),(0,±1),(9,±2),(6,±3),(8,±4),(3,±5)}, ∣ E ( F p e ) ∣ = 12 |E(\mathbb F_{p^e})|=12 ∣E(Fpe)∣=12。Hasse结论: ∣ E ( F p e ) ∣ = p e + 1 − t |E(\mathbb F_{p^e})|=p^e+1-t ∣E(Fpe)∣=pe+1−t, ∣ t ∣ ≤ 2 p e |t|\le 2\sqrt{p^e} ∣t∣≤2pe且为整数。所以 ∣ E ( F p e ) ∣ |E(\mathbb F_{p^e})| ∣E(Fpe)∣约等于 p e + 1 p^e+1 pe+1。
Addition law and group
正式定义之前通过已知点求解曲线上其他点的操作 ⊞ \boxplus ⊞为加法律,令 P = ( x 1 , y 1 ) , Q = ( x 2 , y 2 ) P=(x_1,y_1),Q=(x_2,y_2) P=(x1,y1),Q=(x2,y2):
- 如果 x 1 ≠ x 2 x_1\ne x_2 x1=x2,用chord method。
- 如果 P = Q P=Q P=Q,用tangent method。
- 如果 x 1 = x 2 , y 1 = − y 2 x_1=x_2,y_1=-y_2 x1=x2,y1=−y2,则定义 P ⊞ Q = O P\boxplus Q=O P⊞Q=O
通过定义加法律,集合 E ( F p e ) E(\mathbb F_{p^e}) E(Fpe)和操作 ⊞ \boxplus ⊞可以构成一个群,满足:
- 单位元: O ⊞ P = P O\boxplus P=P O⊞P=P
- 逆: − P = ( x , − y ) -P=(x,-y) −P=(x,−y)
- 结合律: ( P ⊞ Q ) ⊞ R = P ⊞ ( Q ⊞ R ) (P\boxplus Q)\boxplus R=P\boxplus (Q\boxplus R) (P⊞Q)⊞R=P⊞(Q⊞R)
- 封闭性:$ P\boxplus Q\in E(\mathbb F_{p^e})$
- 交换律(Abelian群): P ⊞ Q = Q ⊞ P P\boxplus Q=Q\boxplus P P⊞Q=Q⊞P
我们定义 α P = ( α − 1 ) P ⊞ P \alpha P=(\alpha -1)P\boxplus P αP=(α−1)P⊞P,可以通过repeated squaring算法在 2 log 2 α 2\log_2 \alpha 2log2α个群操作内计算得到。
Forms of elliptic curves
Weierstrass form
标准Weierstrass form
y
2
=
x
3
+
a
x
+
b
,
4
a
3
+
17
b
2
≠
0
y^2=x^3+ax+b,4a^3+17b^2\ne 0
y2=x3+ax+b,4a3+17b2=0
要求
4
a
3
+
17
b
2
≠
0
4a^3+17b^2\ne 0
4a3+17b2=0是为了保证方程与
x
3
+
a
x
+
b
=
0
x^3+ax+b=0
x3+ax+b=0没有重根,即曲线与x轴只有一个交点。
Montgomery form
B v 2 = u 3 + A u 2 + u , B ( A 2 − 4 ) ≠ 0 Bv^2=u^3+Au^2+u,\ B(A^2-4)\ne 0 Bv2=u3+Au2+u, B(A2−4)=0
∣ E ( F p e ) ∣ m o d 4 = 0 |E(\mathbb F_{p^e})|\mod 4=0 ∣E(Fpe)∣mod4=0。Montgomery曲线可以通过 u = B x − A / 3 u=Bx-A/3 u=Bx−A/3和 v = B y v=By v=By转换成Weierstrass曲线,但不是所有Weierstrass曲线都能转换成Montgomery曲线,例如P256曲线。
Edwards form
x 2 + y 2 = 1 + d x 2 y 2 , d ≠ 0 , 1 x^2+y^2=1+dx^2y^2,d\ne 0,1 x2+y2=1+dx2y2,d=0,1
∣ E ( F p e ) ∣ m o d 4 = 0 |E(\mathbb F_{p^e})|\mod 4=0 ∣E(Fpe)∣mod4=0,同样可以通过变换系数转换成Weierstrass曲线。Edwards曲线的特点在于加法律不需要之前提及的chord、tangent三种形式,可以归结为一种:
Elliptic curve cryptography
P256曲线
P256曲线定义在质数
p
=
2
256
−
2
224
+
2
192
+
2
96
−
1
p=2^{256}-2^{224}+2^{192}+2^{96}-1
p=2256−2224+2192+296−1上,满足标准的Weierstrass形式
y
2
=
x
3
+
a
x
+
b
,
4
a
3
+
17
b
2
≠
0
y^2=x^3+ax+b,4a^3+17b^2\ne 0
y2=x3+ax+b,4a3+17b2=0,其中
b
:
=
5
a
c
635
d
8
a
a
3
a
93
e
7
b
3
e
b
b
d
55
769886
b
c
651
d
06
b
0
c
c
53
b
0
f
6
3
b
c
e
3
c
3
e
27
d
2604
b
b := 5ac635d8\ aa3a93e7\ b3ebbd55\ 769886bc\ 651d06b0\ cc53b0f6\ 3bce3c3e\ 27d2604b
b:=5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b
b
b
b是通过伪随机种子
S
S
S产生的,标准指定了一个点
G
G
G生成整个群。因为
p
p
p接近
2
256
2^{256}
2256,所以曲线上的点数量
q
q
q也接近
2
256
2^{256}
2256,那么在曲线上计算离散对数需要大约
q
=
2
128
\sqrt q=2^{128}
q=2128个群操作,难度至少与AES-128相等。
25519曲线
Twist security
- Square root
满足 y 2 = x m o d p y^2=x\mod p y2=xmodp的 y ∈ Z p y\in Z_p y∈Zp为 x ∈ Z p x\in Z_p x∈Zp的square root - Quadratic residue
如果 x ∈ Z p ∗ x\in Z_p^* x∈Zp∗在 Z p Z_p Zp中有square root,则称其为quadratic residue
设 w ∈ F p w\in F_p w∈Fp为 F p F_p Fp中的quadratic non-residue, E : y 2 = x 3 + a x + b E:y^2=x^3+ax+b E:y2=x3+ax+b,则曲线E的twist为 E ′ : w y 2 = x 3 + a x + b E':wy^2=x^3+ax+b E′:wy2=x3+ax+b。Twist安全指离散对数问题在 E E E和 E ′ E' E′上均为困难问题,曲线P256无法满足Twist安全,而曲线25519可以。
25519曲线
25519曲线定义在质数 p = 2 255 − 19 p=2^{255}-19 p=2255−19上,满足Montgomery形式 y 2 = x 3 + 486662 x 2 + x y^2=x^3+486662x^2+x y2=x3+486662x2+x,也可转换为Edwards形式 x 2 + y 2 = 1 + ( 121665 / 121666 ) x 2 y 2 x^2+y^2=1+(121665/121666)x^2y^2 x2+y2=1+(121665/121666)x2y2。曲线上点的个数是8乘以一个质数,称曲线有余因子(cofactor)8。
Pairing based cryptography
Definition
由双线性(bilinear)可以推出一个重要结论:对于所有的
α
,
β
∈
Z
q
\alpha,\beta\in \mathbb Z_q
α,β∈Zq,
e
(
g
0
α
,
g
1
β
)
=
e
(
g
0
,
g
1
)
α
β
=
e
(
g
0
β
,
g
1
α
)
e(g_0^\alpha,g_1^\beta)=e(g_0,g_1)^{\alpha\beta}=e(g_0^\beta,g_1^\alpha)
e(g0α,g1β)=e(g0,g1)αβ=e(g0β,g1α)
Consequences
- 当
G
0
=
G
1
G_0=G_1
G0=G1,
G
0
G_0
G0中的DDH问题变得简单。
给定DDH对 ( u , v , w ) = ( g 0 α , g 0 β , g 0 γ ) (u,v,w)=(g_0^\alpha,g_0^\beta,g_0^{\gamma}) (u,v,w)=(g0α,g0β,g0γ),则可以通过 e ( u , v ) = e ( g 0 , w ) e(u,v)=e(g_0,w) e(u,v)=e(g0,w)判断 y = α β y=\alpha\beta y=αβ是否成立。间接导致乘法ElGamal加密方案在对称双线性群里不再是语义安全的。 - 计算
G
0
G_0
G0或
G
1
G_1
G1内的离散对数问题不比计算
G
T
G_T
GT中的难。
令 u 0 = g 0 α ∈ G 0 u_0=g_0^\alpha\in G_0 u0=g0α∈G0,我们想要计算离散对数 α \alpha α。令 u = e ( u 0 , g 1 ) , g T = e ( g 0 , g 1 ) u=e(u_0,g_1),g_T=e(g_0,g_1) u=e(u0,g1),gT=e(g0,g1),则 u = e ( g 0 α , g 1 ) = e ( g 0 , g 1 ) α = g T α u=e(g_0^\alpha,g_1)=e(g_0,g_1)^\alpha=g_T^\alpha u=e(g0α,g1)=e(g0,g1)α=gTα,转换为 G T G_T GT中的离散对数问题。因此只要解决 G T G_T GT中的离散对数问题,就能够解决 G 0 G_0 G0或 G 1 G_1 G1中的离散对数问题。
Pairings from elliptic curves
由椭圆曲线 E / F p E/\mathbb F_p E/Fp构造的配对有以下性质,设 q q q为一质数:
- G 0 G_0 G0是阶为 q q q的 E ( F p ) E(\mathbb F_{p}) E(Fp)的子群
- G 1 G_1 G1是阶为 q q q的 E ( F p d ) E(\mathbb F_{p^d}) E(Fpd)的子群, d > 0 d>0 d>0为一整数,称为曲线嵌入度,且 G 0 ∩ G 1 = { O } G_0\cap G_1=\{O\} G0∩G1={O}
- G T G_T GT是阶为 q q q的 E ( F p d ) E(\mathbb F_{p^d}) E(Fpd)的乘法子群
d ≤ 16 d\le 16 d≤16时,称曲线为配对友好椭圆曲线。
椭圆曲线上的配对函数来自于一种称为Weil配对的代数配对。这个配对可以使用一种由Victor Miller提出的算法进行有效计算,称为Miller算法。在实践中,我们使用Weil配对的变体,称为Tate和Ate配对,此时Miller的算法更有效。
最常见的配对椭圆曲线是bn256和bls381,二者的嵌入度均为 d = 12 d=12 d=12且群的秩 q q q为256-bits的质数。bn256定义在256-bits的质数域上,bls381定义在381-bits的质数域上。