Halo2学习笔记——背景资料之Elliptic curves
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Halo2学习笔记——背景资料之Elliptic curves相关的知识,希望对你有一定的参考价值。
1. 引言
基于有限域构建的椭圆曲线,是另一重要的密码学工具。
采用椭圆曲线,是因为其可提供a cryptographic group,即在group内,DLP(discrete logarithm problem)是困难的。
有多种方式来定义曲线方程
E
(
F
p
)
E(\\mathbb{F}_p)
E(Fp),但是Halo2中,定义的
F
p
\\mathbb{F}_p
Fp为255-bit field,满足方程式
y
2
=
x
3
+
b
y^2=x^3+b
y2=x3+b成立的所有解集(
F
p
\\mathbb{F}_p
Fp-rational points)
(
x
,
y
)
(x,y)
(x,y),称为“affine coordinates”。
这些
F
p
\\mathbb{F}_p
Fp-rational points 和 “point at infinity”
O
\\mathcal{O}
O(作为group identity) 一起,都是group内的元素。传统地,都将elliptic curve groups写成加法态的。
由上图可知:“Three points on a line sum to zero, which is the point at infinity”。
相应的group addition law很简单:若求
P
+
Q
P+Q
P+Q,则将
P
P
P和
Q
Q
Q连线,其与曲线上交叉第第三个点为
R
R
R,将
R
R
R的
y
y
y坐标求反,即为
P
+
Q
=
(
R
x
,
−
R
y
)
P+Q=(R_x,-R_y)
P+Q=(Rx,−Ry)。
对于
P
=
Q
P=Q
P=Q的情况,称为point doubling,需特殊处理:即找到该点的切线,然后将该切线与曲线的交叉点
y
y
y坐标求反即为结果。
有
(
R
x
,
−
R
y
)
+
(
R
x
,
R
y
)
=
O
(R_x,-R_y)+(R_x,R_y)=\\mathcal{O}
(Rx,−Ry)+(Rx,Ry)=O。
The ability to add and double points naturally gives us a way to scale them by integers, called scalars。
曲线上点的个数称为group order。group order为prime
q
q
q,则可将scalars认为是elements of a scalar field
F
q
\\mathbb{F}_q
Fq。
椭圆曲线,如果设计得当的话,具有重要的安全属性:
已知2个random elements
G
,
H
∈
E
(
F
p
)
G,H\\in E(\\mathbb{F}_p)
G,H∈E(Fp),找到
a
a
a使得
[
a
]
G
=
H
[a]G=H
[a]G=H 被认为是computationally infeasible with classical computers。这也称为是elliptic curve discrete log assumption。
若椭圆曲线group
G
\\mathbb{G}
G 具有prime order
q
q
q(Halo2中使用的曲线满足该要求)则其为finite cyclic group,其为isomorphic to
Z
/
q
Z
\\mathbb{Z}/q\\mathbb{Z}
Z/qZ,或者等价为,isomorphic to the scalar field
F
q
\\mathbb{F}_q
Fq。
每个可能的generator
G
G
G都满足isomorphism,即在scalar 端存在某值,其为precisely the discrete log of the corresponding group element with respect to
G
G
G。对于密码学安全的曲线,the isomorphism is hard to compute in the
G
→
F
q
\\mathbb{G}\\rightarrow \\mathbb{F}_q
G→Fq direction,因为elliptic curve discrete log problem is hard。
有时,相比于group elements,借助scalars的isomorphism思想更有助于理解group-based cryptographic protocols and algorithms。
2. Curve arithmetic
2.1 Point doubling
详细可参看《Elliptic Curves Number Theory and Cryptography(second edition)》第2.2节可知,有:
对于
y
2
=
x
3
+
b
y^2=x^3+b
y2=x3+b curve,求
(
x
1
,
y
1
)
=
(
x
0
,
y
0
)
+
(
x
0
,
y
0
)
(x_1,y_1)=(x_0,y_0)+(x_0,y_0)
(x1,y1)=(x0,y0)+(x0,y0),有:
λ
=
d
y
d
x
=
3
x
2
2
y
\\lambda=\\frac{dy}{dx}=\\frac{3x^2}{2y}
λ=dxdy=2y3x2
y
1
=
λ
(
x
0
−
x
1
)
−
y
0
y_1=\\lambda(x_0-x_1)-y_0
y1=λ(x0−x1)−y0
x
1
=
λ
2
−
2
x
0
x_1=\\lambda^2-2x_0
x1=λ2−2x0
2.2 Projective coordinates
2.1节中的point doubling中,存在昂贵的inversion of 2 y 2y 2y。为了避免倒数运算,而且实际并不立即需要单个curve operation的resulting point的actual affine ( x ′ , y ′ ) (x',y') (x′,y′)坐标。
对于
y
2
=
x
3
+
b
y^2=x^3+b
y2=x3+b curve,引入第三个坐标系
Z
Z
Z,扩展为:
Z
3
y
2
=
Z
3
x
3
+
Z
3
b
Z^3y^2=Z^3x^3+Z^3b
Z3y2=Z3x3+Z3b
当
Z
=
1
Z=1
Z=1时,对应的就是
y
2
=
x
3
+
b
y^2=x^3+b
y2=x3+b curve。
令$$
参考资料
以上是关于Halo2学习笔记——背景资料之Elliptic curves的主要内容,如果未能解决你的问题,请参考以下文章
Halo2 学习笔记——背景资料之Cryptographic groups
Halo2 学习笔记——背景资料之PLONKish arithmetization