ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

椭圆曲线复习

2022-08-09 01:01:39  阅读:365  来源: 互联网

标签:余因子 椭圆 复习 曲线 SM2 素数 基点


椭圆曲线复习

参考:https://blog.csdn.net/m0_54743939/article/details/121441004

椭圆曲线算法可以看作是定义在特殊集合下数的运算,满足一定的规则。

椭圆曲线在如下两个域中定义:\(F_p\)域和\(F_{2^m}\)域。

  • \(F_p\)域,素数域,\(p\)为素数;

  • \(F_{2^m}\)域:特征为2的有限域,称之为二元域或者二进制扩展域。该域中元素的个数为\(2^m\)个。

素域和扩域的介绍:https://www.cnblogs.com/pam-sh/p/16540779.html

椭圆曲线标准文档如下:

  • X9.62

Public Key Cryptography For The Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA);

  • SEC 1

SEC 1:Elliptic Curve Cryptography;

  • SEC 2

SEC 2: Recommended Elliptic Curve Domain Parameters;

  • NIST

(U.S.) National Institute of Standards and Technology,美国国家标准;

  • SM2

SM2椭圆曲线公钥密码算法第1部分:总则

这些标准一般都描述了\(F_p\)域和\(F_{2^m}\)域、椭圆曲线参数、数据转换、密钥生成以及推荐了多种椭圆曲线。

术语说明

  • 椭圆曲线的阶(order of a curve)

椭圆曲线所有点的个数,包含无穷远点;

如何确定一条曲线上的点数,即椭圆曲线的阶:

定理:\(F_p\)域上的椭圆曲线\(y^2=x^3+ax+b(a,b\in F_p,4a^3+27b^2\neq 0)\)在第象限中的整数点(包括无穷远点)共有:\(1+p+\varepsilon,|\varepsilon|\le 2\sqrt{p}\)个;若是在\(F_{2^p}\)域上,则曲线的阶数为\(2^p+1-2^{1+p/2}\le 2^p+1-2^{1+p/2}\)

例如:\(p=5\),则\(|\varepsilon|\le 4\),所以\(F_5\)上的椭圆曲线\(y^2=x^3+ax+b\)上的点数在2~10之间,\(F_{2^5}\)上的椭圆曲线的阶数为25~41之间。

  • 椭圆曲线上点的阶(order of a point)

P为椭圆曲线上的点,\(nP\)=无穷远点,\(n\)取最小整数,即是点\(P\)的阶;

  • 基点(base point)

椭圆曲线参数之一,用\(G\)表示,是椭圆曲线上的一个点,常用于密钥生成,一旦选定,不能随意更改

从数学上看:基点是椭圆曲线有限加法群的大素因子子群的一个随机选取的生成元。基点虽是随机产生的,但为保证系统安全性,一般要求所选取的基点必须具有大素数阶。

img

  • 余因子(cofactor)

椭圆曲线的余因子,用\(h\)表示,为椭圆曲线点的个数 / 基点的阶,即椭圆曲线的阶 / 基点的阶

  • 椭圆曲线参数

(1)素数域:\((p,a,b,G,n,h)\)

其中,\(p\)为素数,确定\(F_p\),\(a\)和\(b\)确定椭圆曲线方程,\(G\)为基点,\(n\)为\(G\)的阶,\(h\)为余因子。

(2)二进制扩展域:\((m,f(x),a,b,G,n,h)\)

其中,\(m\)确定\(F_{2^m}\),\(f(x)\)为不可约多项式,\(a\)和\(b\)用于确定椭圆曲线方程,\(G\)为基点,\(n\)为\(G\)的阶,\(h\)为余因子。

  • 椭圆曲线公钥和私钥

椭圆曲线的私钥是一个随机整数,小于\(n\);

椭圆曲线的公钥是椭圆曲线上的一个点:\(Q=私钥*G\)。

在线生成曲线,即点:https://graui.de/code/elliptic2/

  • 点的逆

对于一个点\(P=(x,y)\),则\((x,-y)\)就是\(P\)的加法逆元,记为\(-P\)

计算

点加

对于曲线\(E_p(a,b)\)上的两个点:\(P=(x_1,y_1),Q=(x_2,y_2)\),计算\(P+Q\):

\(\lambda=\left\{\begin{matrix}\frac{y_2-y_1}{x_2-x_2},P\ne Q \\\frac{3x_1^2+a}{2y_1},P=Q \end{matrix}\right.\)

\(x_3=\lambda^2-x_1-x_2(mod p),y_3=\lambda(x_1-x_3)-y_1(mod p)\)

点乘

点乘(倍点)支持重复加法,即\([3]P=P+P+P\)

另外还有其他的计算方法:计算\([k]P\)

参考:GMT 0003.1-2012 SM2椭圆曲线公钥密码算法第1部分:总则

以下给出三种方法:

  • 二进制展开法

image-20220809001904696

  • 加减法

image-20220809001921902

  • 滑动窗口法

image-20220809002003874

SM2

SM2使用的是素数域256位的椭圆曲线,即:

image-20220809002756666

标签:余因子,椭圆,复习,曲线,SM2,素数,基点
来源: https://www.cnblogs.com/pam-sh/p/16564541.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有