零知识证明 - 椭圆曲线基础

对椭圆曲线的学习,个人推荐如下的链接,没有太多的术语,解释的比较清楚。

https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/

https://andrea.corbellini.name/2015/05/23/elliptic-curve-cryptography-finite-fields-and-discrete-logarithms/

本文也是在上述链接的基础上的总结。

1. 实数域上的椭圆曲线

1.1 定义

椭圆曲线的数学定义可以查看Wolfram MathWorld:http://mathworld.wolfram.com/EllipticCurve.html。不是密码学或者数学专业的小伙伴,看的是一头雾水。便于工程理解,椭圆曲线是一系列满足如下方程的点:

y 2 = x 3 + a x + b y^2 = x^3 + ax + b y2=x3+ax+b

并且 4 a 3 + 27 b 2 ≠ 0 4a^3 + 27b^2 \ne 0 4a3+27b2=0。该方程称为椭圆曲线的Weierstrass方程。

如下是b=1, a从2到-3的椭圆曲线:

图1

从方程可以看出,椭圆曲线是关于x坐标对称的曲线。除了坐标系上曲线的点,椭圆曲线额外定义一个点(无穷远处),记为 0

也就是说,椭圆曲线是由如下的点组成:

{ ( x , y ) ∈ R 2   ∣   y 2 = x 3 + a x + b ,   4 a 3 + 27 b 2 ≠ 0 }   ∪   { 0 } \left\{ (x, y) \in \mathbb{R}^2\ |\ y^2 = x^3 + ax + b,\ 4 a^3 + 27 b^2 \ne 0 \right\}\ \cup\ \left\{ 0 \right\} { (x,y)R2  y2=x3+ax+b, 4a3+27b2=0}  { 0}

1.2 基于椭圆曲线的群定义

在椭圆曲线的基础上,可以定义一个加法群:

  • 所有椭圆曲线上的点,就是这个群里的元素

  • 单位元就是0

  • 点P的逆元是点P相对x坐标的对称点

  • 加法定义如下:在椭圆曲线上,和一条直线相交的3个点P,Q以及R,三点相加满足 P + Q + R = 0 P + Q + R = 0 P+Q+R=0。也就说,椭圆曲线上的两点相加的结果,还在椭圆曲线上。

结合群的定义,可以证明定义的这个加法群,就是阿贝尔群。

  1. 封闭性:因为椭圆曲线上的点相加,还是椭圆曲线上的点。
  2. 结合律:$P + (Q + R) = (P+Q) + R = 0 $
  3. 单位元: 单位元是0
  4. 逆元: 一个椭圆曲线上的点P的逆元,是相对x坐标的对称点
  5. 交换律: P + Q = Q + P P+Q = Q+P P+Q=Q+P
1.3 椭圆曲线加法计算

因为 P + Q + R = 0 P+Q+R = 0 P+Q+R=0,也就是说 P + Q = − R P+Q = -R P+Q=R。计算 P + Q P+Q P+Q的方法就比较直观了:连接P和Q划一条线,该线和椭圆曲线交的另外一个点为R。 P + Q P+Q P+Q的结果就是R的逆。

图2

考虑几种特殊情况,对加法计算进行“修正”:

  • P = 0 P=0 P=0或者 Q = 0 Q=0 Q=0:因为定义0为无穷远处,不能基于无穷远处划线。但是因为定义了0为单位元,所以 P + 0 = P P + 0 = P P+0=P以及 0 + Q = Q 0 + Q = Q 0+Q=Q

  • P = − Q P = -Q P=Q:因为两个点是对称的,所以基于这两个点划的线垂直于x轴,不再相交于其他点。 P + Q = − Q + Q = 0 P+Q = -Q + Q = 0 P+Q=Q+Q=0

  • P = Q P=Q P=Q:如果P和Q是同一个点的话, 那存在多条线穿过这“两个”点。如果把Q看作是无限接近P的过程,可以看出,穿过P和Q的是椭圆曲线在P点的切线。如果切线和椭圆曲线相交的点为R,则 P + P + R = 0 P+P+R=0 P+P+R=0 P + P = 2 P = − R P+P = 2P = -R P+P=2P=R

    图3

  • P ≠ Q P \ne Q P=Q,并且不存在第三个点相交:这种情况和上一种情况有点类似,也就是说,P/Q的连线是椭圆曲线的切线。如果P点是切点, P + P + Q = 0 P+P+Q = 0 P+P+Q=0。也就是说, P + Q = − P P+Q = -P P+Q=P

    图4

1.4 加法计算推导

加法的定义是完备的。针对最普通的情况,就是在椭圆曲线上一条直线能穿过三个点,分别是 P , Q , R P, Q, R P,Q,R P = ( x P , y P ) , Q = ( x Q , y Q ) , R = ( x R , y R ) P = (x_P, y_P), Q = (x_Q, y_Q), R = (x_R, y_R) P=(xP,yP

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值