椭圆曲线公钥密码体制详解

椭圆曲线公钥密码体制

1.椭圆曲线的加法

1.1依据

如果在椭圆曲线上有3个点存在于一条直线上,则它们的和为无穷远点。其中无穷远点即为 O O O.

1.2 点P和点-P相加

点P和点-P相加的和为无穷远点。

椭圆曲线公钥密码体制详解_第1张图片

1.3 点P和点Q相加

设连接点P和Q的直线,交椭圆曲线于点R,则点P和点Q的和为点-R.

椭圆曲线公钥密码体制详解_第2张图片

1.4 求点P的2倍

通过点P作曲线的切线,交曲线于另一点R,则2P = -R.

椭圆曲线公钥密码体制详解_第3张图片

1.4.1求点P的2倍的特例

若点P的切线的斜率是0(我不知道这里为什么说是0,我觉得应该是不存在),则2P = O, 3P = P, 4P = O, 5P = P…

椭圆曲线公钥密码体制详解_第4张图片

2.有限域上的椭圆曲线

2.1 定义

对于曲线 y 2 = x 3 + a x + b ( m o d   p ) y^2 = x^3 + ax+ b(mod \ p ) y2=x3+ax+b(mod p),a,b为小于p的整数。当 4 a 3 + 27 b 2 ( m o d   p ) 4a^3 + 27 b^2 (mod\ p) 4a3+27b2(mod p)不为零时,构成有限域 F p F_p Fp上的椭圆曲线群。记为 E p ( a , b ) E_p(a,b) Ep(a,b)

2.2 补充知识:平方剩余

https://chenglinyu.blog.csdn.net/article/details/89081707

2.3 有限域上的椭圆曲线的点的构造

  • 对于每一个 x ( 0 < = x < p ) x(0<=x<p) x(0<=x<p),计算 z = x 3 + a x + b ( m o d   p ) z = x^3 + ax + b(mod\ p) z=x3+ax+b(mod p); (该等式的右半部分恰恰就是椭圆曲线方程的右半部分,左侧是 y 2 y^2 y2)
  • 若z不是模p有限域的平方剩余(也称为模p的平方根),则没有具有x值的 E p ( a , b ) E_p(a,b) Ep(a,b)点。
  • 若z是模p的平方根,则存在满足条件的两个点

2.3.1 椭圆曲线 E 23 ( 1 , 0 ) E_{23}(1,0) E23(1,0)的点的构造

这一句话透露了三个信息

  • p = 23
  • a = 1
  • b = 0

所以椭圆曲方程为:

y 2 = x 3 + x ( m o d   23 )   ( 0 < = x < 23 ) y^2 = x^3 + x (mod \ 23) \ (0<=x<23) y2=x3+x(mod 23) (0<=x<23)

所以对没有每一个 0 < = x < 23 0<=x<23 0<=x<23,开始遍历。

x = 0, 计算 z = 0 + 0 ( m o d 23 ) = 0 z= 0 + 0(mod 23) = 0 z=0+0(mod23)=0,计算

x = 1 , z = 2 ( m o d   23 ) x = 1, z = 2 (mod\ 23) x=1,z=2(mod 23)

2 11 ≡ 1 ( m o d 23 ) 2^{11}\equiv 1 (mod 23) 2111(mod23)

所以存在两个平方根。一个y是5,一个y则是-5(mod 23) $\equiv $ 18(mod 23).

我们学习密码学,头脑中一定要时刻装着有限域的概念,不要还停留在实数的角度去思考问题

所以对应的两个点是(1,5),(1,18)

依次类推。

3.有限域上两个点的加法

椭圆曲线公钥密码体制详解_第5张图片

椭圆曲线公钥密码体制详解_第6张图片

注意:所有运算都是在模23上的有限域上的运算,所以除法就是求模23的乘法逆元,求乘法逆元的方法是扩展的欧几里得算法,另外不要轻易约分,一定要是与23互素的公因子才能约分,具体参见《初等数论及其应用》推论4.4.1

你可能感兴趣的:(密码学)