码迷,mamicode.com
首页 > 其他好文 > 详细

ECC

时间:2018-01-23 20:37:46      阅读:758      评论:0      收藏:0      [点我收藏+]

标签:sha   必须   ack   ann   输入   测试   des   等于   design   

素数 prime,又称为质数,是指,除了1和它本身,没有其他因数的数。

素数的定理:

  1)在一个大于1的数a和它的2倍之间必定存在至少一个素数;

素数的性质:

  1)在所有的大于10的质数中,个位数,只有1,3,5,9;

素数还没有自己的生成函数,只能通过素数检测函数,进行循环判断;

  C的基本判断函数:

    技术分享图片

大数的素数测试,有很多优化的算法,并不是简单的试除法

确定性的素数判定法:太慢了

非确定性的素数判定法:

  素数测试,输入是素数,来检测,该数并没有其他因子;绝不会把素数判断为合数,但可能把合数判断为素数

  合数测试,输入是合数,来检测,该数还有其他因子,米勒-拉宾(Miller-Rabin)测试。

 

互素,又称为互质,公约数只有1的两个整数,例如8,10的最大公因数是2。

 

梅森素数,Mersenne prime,是由梅森数来的。

梅森数,是指形如2p - 1的一类数,其中指数p是素数,记为Mp,如果梅森数为素数,就称为梅森素数;

目前仅仅发现了49个梅森素数;

 

ECC内部的椭圆曲线分为两大类,素数(p),二次多项式(2m

 

ECC内部计算的blinding操作,在乘法过程中,加入输入的随机数来掩盖其中的中间值;

 

ECC的基于大素数P的椭圆曲线的方程是:y2 = x3 + ax + b mod p

  NIST推荐的曲线中,a = -3,这样可以提高计算效率;

  cofactor,余因子,必须不是n的因子,NIST推荐的曲线,一般cofactor都是1,2,4

  n,基点G的阶,n*cofactor表示一条曲线上的所有点的个数。

 

ECC中P素域上的椭圆曲线的随机生成,需要一个160bit的seed,经过sha1运算之后,得到c,

  a直接定为:-3

  计算b:b2*c = -27 (mod p)

 

 

ECC Shamir trick,同时做两个点乘,内部进行分解,转变为更小的倍点和点加。

  R = k*P + l*Q

 

ECC-C25519/Ed25519基于最新的一种椭圆曲线的方程,y2 - x2 = 1 + d*x2*y2 mod p 

 

ECC中的affine coordinate和jacobian coordinate坐标系:

在affine coordinate,曲线的方程为:y2 = x3 + ax + b mod p

在jacobian coordinate中,曲线的方程为:y2 = x3 + axz4 + bz6

affine coordination 到Jacobian coordination的转换:

  x = X/Z2 mod p

  y = Y/Z2 mod p

Jacobian coordination 到affine coordination的转换:

  X = x

  Y = y

  Z = 1

有些design内部,还可能使用standard projective来做运算,防止一些side-channel attack,这些运算如果使用

    Jacobian坐标系不能实现,计算完成在转换为affine projective

Affine(x,y) 到 Standard_Prj(X,Y,Z)转变,

  x = X/Z mod p

  y = Y/Z mod p

standard_Prj(X,Y,Z) 到 Affine(x,y)转变,

  X = x

  Y = y

  Z = 1

Z变量在standard_prj中的值是不等于Jacobian中的值的。

ECC

标签:sha   必须   ack   ann   输入   测试   des   等于   design   

原文地址:https://www.cnblogs.com/-9-8/p/8004410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!