密码学--椭圆曲线加法运算及解点

一、前言

        椭圆曲线加密算法出现的主要原因,并不是RSA加密算法被彻底攻破,大整数分解仍然是一个数学难题。

        只是RSA加密过程中的指数运算效率太低。椭圆曲线的出现改变了这一现象,而且椭圆曲线运用的离散对数同样是一个数学难题,可以作为加密算法的数学基础。

        比较重要的是除了私钥k,其他无论是 椭圆曲线方程中的a、b,还是初始点P、公钥Q、随机数r都是对外界公开的。

        这是密码学期末考试的第9、10项。

二、椭圆曲线构造过程(不考)

1、要有一个椭圆曲线方程:y^2 = x^3+ax+b 

        条件:(4 * a^3  !=  27 * b^2)

2、椭圆曲线要有一个初始点P(x0,y0)

3、选定一个大整数 k 作为私钥

4、计算Q = kP, Q作为公钥

5、加密 解密

加密:选择一个随机数r 已知明文M,生成密文C = (rP,M+rQ)

解密:已知C(rP , M+rQ) 求明文M

因为Q = kP 所以 C(rP,M+rkP) 所以我们只需要把 纵坐标y 减去rkP就可以得到明文M

M = M+rQ - rkP

三、椭圆曲线的加法运算

例1:

        我们先求点2P = P+P

        现在已知一个椭圆曲线:y^2=x^3+ax+b

8f44e28e18f74431bd535b725f285b09.png

        我们现在已知了一个点P (x1,y1) 那么2P = P + P等于什么呢?

        过P点引一条曲线的切线

0209532ecb69488fac9c4d6fa98edd04.png

此时有一个交点P'  我们还需要进一步操作

找到P'与x轴的对称点P2

1e6d1b2548a4452d93ef5944d39b87a5.png

现在的点P2 就是我们要找的2P = P + P

现在知道这个点 是怎么来的了

那要怎么找到这个点的具体坐标呢?

现在要引入一个公式

求点P(x1,y1),点Q(x2,y2)的相加后的 点P+Q(x3,y3) 

① P = Q时 λ = (3 * (x1)^2 + a) / 2*y1

② P ≠ Q时 λ = (y2 - y1)/(x2 - x1)

x3 = λ^2 - x1 - x2

y3 = λ*(x1 - x3) - y1

这样就能求出x3和y3了

 

我只做了P = Q时的图

其实P≠Q时

就是连接P、Q画直线l

找直线与椭圆的交点

交点就是(P+Q)'

还要找到该交点关于x轴的对称点

对称点就是(P+Q)

如果这个点如果是一个小数,那么这个点就会非常的难以计算

于是椭圆曲线就引入了一个有限域GF(p)

也就是每次x3 y3的计算中都要进行(mod p)操作

例2: GF(p)内 已知点 P 求 2P

已知 y^2 = x^3 - 2x -3 是 GF(7) 上的椭圆曲线,且P = (3,2) 求2P

解:

公式:① P = Q时 λ = (3 * (x1)^2 + a) / 2*y1

可以求出 λ = (3 * 3^2 + -2) / 2*2 = 25/4 (mod 7)

有限域内不会出现小数, 现在需要把λ化成整数

λ = 25/4  = 25 (mod7) * 4^(-1)(mod7) = 4 * 2 = 1 (mod7)

4^(-1)(mod7) 在求 4 的逆元 = 2

公式:x3 = λ^2 - x1 - x2

x3 = 1^2 - 3 - 3 = -5 (mod 7) = 2 (mod 7)

ps:化正数只需要负数加一个 p = 7,p是题目提供的

公式:y3 = λ*(x1 - x3) - y1

y3 = 1 * (3 - 2) - 2 = -1 (mod 7) = 6 (mod 7)

ps:化正数只需要负数加一个 p = 7,p是题目提供的

得出结果 2P(2,6)

例3:GF(p)内 已知点 P 求 3P

已知 y^2 = x^3 - 2x -3 是 GF(7) 上的椭圆曲线,且P = (3,2) 求3P

刚刚例2算出来了 2P(2,6) 那么3P = 2P+P

② P ≠ Q时 λ = (y2 - y1)/(x2 - x1)

2P ≠ P 所以

λ = (6-2)/(2-3) = -4 (mod 7) = 3 (mod 7)

公式:x3 = λ^2 - x1 - x2

x3 = 3^2 - 3 - 2 = 4 (mod 7)

公式:y3 = λ*(x1 - x3) - y1

y3 = 3 * (3-4) - 2 = -5 (mod 7) = 2 (mod 7)

得出结果 3P(4,2)

四、椭圆曲线上的解点

可以从上λ的计算公式上发现

② P ≠ Q时 λ = (y2 - y1)/(x2 - x1)

当 P ≠ Q 时 x1 = x2 的话 λ 是无法计算的

也就是在GF(p)中 解点是有限的

咱们只需要算出

P

2P = P + P

3P = 2P + P

...

nP = (n-1)P + P

我们找到 nP的上一位(n-1)P

(n-1)P = (Xn-1,Yn-1) 和 P = (X1,Y1) 中:

Xn-1 = X1 成立

那么我们就称 P到nP是该椭圆曲线的解点

且规定 : nP = O

 

  • 18
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

震惊铁豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值