椭圆曲线复习

椭圆曲线复习

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

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

椭圆曲线在如下两个域中定义:Fp域和F2m域。

  • Fp域,素数域,p为素数;

  • F2m域:特征为2的有限域,称之为二元域或者二进制扩展域。该域中元素的个数为2m个。

素域和扩域的介绍: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部分:总则

这些标准一般都描述了Fp域和F2m域、椭圆曲线参数、数据转换、密钥生成以及推荐了多种椭圆曲线。

术语说明#

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

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

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

定理:Fp域上的椭圆曲线y2=x3+ax+b(a,bFp,4a3+27b20)在第象限中的整数点(包括无穷远点)共有:1+p+ε,|ε|2p个;若是在F2p域上,则曲线的阶数为2p+121+p/22p+121+p/2

例如:p=5,则|ε|4,所以F5上的椭圆曲线y2=x3+ax+b上的点数在2~10之间,F25上的椭圆曲线的阶数为25~41之间。

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

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

  • 基点(base point)

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

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

img

  • 余因子(cofactor)

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

  • 椭圆曲线参数

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

其中,p为素数,确定Fpab确定椭圆曲线方程,G为基点,nG的阶,h为余因子。

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

其中,m确定F2mf(x)为不可约多项式,ab用于确定椭圆曲线方程,G为基点,nG的阶,h为余因子。

  • 椭圆曲线公钥和私钥

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

椭圆曲线的公钥是椭圆曲线上的一个点:QG

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

  • 点的逆

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

计算#

点加#

对于曲线Ep(a,b)上的两个点:P=(x1,y1),Q=(x2,y2),计算P+Q

λ={y2y1x2x2,PQ3x12+a2y1,P=Q

x3=λ2x1x2(modp),y3=λ(x1x3)y1(modp)

点乘#

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

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

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

以下给出三种方法:

  • 二进制展开法

image-20220809001904696

  • 加减法

image-20220809001921902

  • 滑动窗口法

image-20220809002003874

SM2#

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

image-20220809002756666

作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/16564541.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(1242)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu