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,HE(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 GFq 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=λ(x0x1)y0
x 1 = λ 2 − 2 x 0 x_1=\\lambda^2-2x_0 x1=λ22x0

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。
令$$

参考资料

[1] Halo2 背景资料之Elliptic curves

以上是关于Halo2学习笔记——背景资料之Elliptic curves的主要内容,如果未能解决你的问题,请参考以下文章

Halo2 学习笔记——背景资料之Cryptographic groups

Halo2 学习笔记——背景资料之PLONKish arithmetization

Halo2 学习笔记——背景资料之Polynomials

Halo2 学习笔记——背景资料

Halo2 学习笔记——设计之Proving system之Inner product argument

Halo2 学习笔记——Gadgets 之 SHA-256