椭圆曲线参数选取
椭圆曲线

引言同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。
前段时间刚刚进行了“基于国家密码标准算法密码卡”项目,其中算法部分就涉及了ECC,由于是采用芯片实现ECC算法,所以对ECC是如何具体实现信息加密的原理知之甚少。
目前,国内详细介绍ECC的公开文献并不多(反正我没有找到)。
有一些简介,也是泛泛而谈,看完后依然理解不了ECC的实质(可能我理解力太差了)。
前些天从互联网上找到这篇材料,看完后对ECC了解一些,但还是比较懵懂。
于是把本文整理了一下,与大家分享。
当然ECC 博大精深,我的认识还很肤浅,有些问题今后还要向。
本文涉及的部分理论知识请参考《近世代数基础》、《初等数论》之类的书。
另外,由于原文中涉及的公式没有区分上标和下标,我对本文的一部分公式进行了整理,由于时间关系,对后半部分没有整理(因为公式比较多,我也懒得弄了)。
由此给大家带来的阅读上的不便表示歉意。
一、从平行线谈起平行线,永不相交。
没有人怀疑把?不过到了近代这个结论遭到了质疑。
平行线会不会在很远很远的地方相交了?事实上没有人见到过。
所以“平行线,永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。
既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。
即平行线相交于无穷远点P∞(请大家闭上眼睛,想象一下那个无穷远点P∞,P∞是不是很虚幻,其实与其说数学锻炼人的抽象能力,还不如说是锻炼人的想象力)。
给个图帮助理解一下:直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。
这就把直线的平行与相交统一了。
为与无穷远点相区别把原来平面上的点叫做平常点。
以下是无穷远点的几个性质。
▲直线L上的无穷远点只能有一个。
(从定义可直接得出)▲平面上一组相互平行的直线有公共的无穷远点。
椭圆的参数方程和极坐标方程总结

椭圆的参数方程和极坐标方程总结
椭圆是一种常见的二维图形,描述了一个平面上到两个定点的距离之和为常数的点的集合。
本文将总结椭圆的参数方程和极坐标方程。
1. 椭圆的参数方程
椭圆的参数方程表示了椭圆曲线上的点随一个参数的变化而变化的轨迹。
椭圆的参数方程可以表示为:
x = a * cos(t)
y = b * sin(t)
其中,`a`和`b`分别为椭圆的两个半轴长度,`t`为参数。
参数`t`的取值范围通常为`0`到`2π`,表示椭圆曲线的一个周期。
2. 椭圆的极坐标方程
椭圆的极坐标方程描述了椭圆上的点相对于一个原点的极坐标表示。
椭圆的极坐标方程可以表示为:
r = (a * b) / sqrt((b * cos(theta))^2 + (a * sin(theta))^2)
其中,`r`为点相对于原点的距离,`theta`为点相对于正半轴的极角。
3. 椭圆的性质和应用
椭圆具有许多有趣的性质和应用。
以下是一些常见的性质和应用:
- 椭圆是一个闭合的曲线,且具有对称性。
椭圆的两个焦点和每个点到两个焦点的距离之和为常数。
- 椭圆在几何光学中有重要应用,例如实现椭圆镜、椭圆透镜等。
- 椭圆在数学分析、物理学和工程学中广泛应用,例如描述行星轨道、电子轨道等。
总结:本文介绍了椭圆的参数方程和极坐标方程,以及椭圆的一些性质和应用。
通过理解椭圆的方程和性质,可以更好地应用和理解椭圆在各个领域的应用。
一种椭圆曲线参数生成的快速算法

一种椭圆曲线参数生成的快速算法谷勇浩 刘勇(北京邮电大学通信网络综合技术研究所)摘要:椭圆曲线密码体制是公钥密码中的研究热点。
该文介绍了椭圆曲线密码体制的基本概念及相关知识,讨论了目前基于离散对数问题的椭圆曲线密码的研究动态。
本文的创新点是针对目前椭圆曲线研究重点之一——椭圆曲线参数生成算法,给出了一种生成参数a 、b 的快速算法。
这种算法利用了Jacobi 符号和二次剩余的理论,并且用matlab 计算出利用这种算法生成一个椭圆曲线的平均时间,最后我们分析了今后椭圆曲线密码系统的研究方向和重点。
关键词:椭圆曲线;离散对数问题;Jacobi 符号;二次剩余;阶1976年Diffie 和Hellman 提出公钥密码思想以来,国际上提出了许多种公钥密码体制的实现方案。
一些已经被攻破,一些被证明是不可行的。
目前,只有3类公钥密码体制被认为是安全有效的,按照其所依据的数学难题划分为:基于大整数分解问题(IFP ),如RSA 体制和Rabin 体制;基于有限域离散对数问题(DLP ),如Diffie-Hellman 体制和ElGamal 体制;基于椭圆曲线离散对数问题(ECDLP ),如椭圆密码体制。
椭圆曲线应用到密码学上最早是由Neal Koblitz 和Victor Miller 在1985年分别独立提出的。
它是目前已知的公钥体制中,对每一比特所提供加密强度最高的一种体制。
它具有安全性高、密钥量小、灵活性好的特点,受到了国际上的广泛关注。
而SET(Secure Electronic Transaction)协议的制定者已把它作为下一代SET 协议中缺省的公钥密码算法。
深入研究基于椭圆曲线离散对数问题的公钥密码具有很大的现实意义。
1建立椭圆曲线公钥密码体制1.1椭圆曲线域的参数在基于椭圆曲线的加解密和数字签名的实现方案中,首先要给出椭圆曲线域的参数来确定一条椭圆曲线。
在 IEEE P1363标准中,定义其参数为一个七元组:T=(q,FR,a,b,G,n,h),其中q 代表有限域GF(q),q 为素数或2m ;FR 为域表示法,如f(x)为2m F 域元素的不可约多项式的表示法;曲线的方程,当q 为素数时,方程为23ax b y x =++,当q 为2m时,方程为232xy a b y x x +=++,a,b 是方程中的系数;G 为基点;n 为大素数并且等于点G 的阶,h 是小整数称为余因子且#()/q h E n F =。
椭圆曲线

15
椭圆曲线E23(1,0) 的点的构造
即 y2
= x3 + x在有限域F23上的点的构造
16
椭圆曲线E23(1,0) 的点的构造
满足条件的23个点是: (0,0) (1,5) (1,18) (11,10) (11,13) (13,5) (15,20) (16,8) (16,15) (18,10) (18,13) (19,1) (20,19) (21,6) (21,17) (9,5) (13,18) (17,10) (19,22) (9,18) (15,3) (17,13) (20,4)
( E , )是阿贝尔群。
11
加法运算的结合律
O
C
A
B
Maple 程序 with(plots): k:=1.1; expr:={x*(x-1)*(x+1)-k*y*(y+1)*(y-1),x,y,x-1,x+1,y-1,y+1,y-(x+1)/2}; contourplot(expr,x=-3..3,y=-3..3, contours=[0],axes=BOXED,thickness=3, numpoints=10000);
27Biblioteka 椭圆曲线群• 椭圆曲线E(Fq)和椭圆曲线E(F2m)对于点的加法运 算形成一个Abel群
28
阶(order)
• 椭圆曲线的阶是指椭圆曲线的点个数 • 椭圆曲线中的点P的阶是指满足kP=O的最小的整 数k
29
椭圆曲线的离散对数问题
给定椭圆曲线上的点 P 和点 Q , 寻找数 k 使得 kP 例如: 对于椭圆曲线:
过P点作切线
R
P
2*P
9
求点P的二倍的特例
secp256k1椭圆曲线算法

secp256k1椭圆曲线算法【1】椭圆曲线算法简介椭圆曲线算法(Elliptic Curve Cryptography,简称ECC)是一种公钥加密算法,基于椭圆曲线上的数学问题。
这种算法在1985年由W.Duever和V.Shamir提出。
与RSA、DSA等公钥加密算法相比,椭圆曲线算法具有相同的安全级别,但所需的密钥长度较短,因此在实际应用中具有更高的效率。
【2】SECP256k1椭圆曲线参数SECP256k1(Secure Curve 256-bit Key Length 1)是一种常见的椭圆曲线算法,其参数如下:- 曲线方程:y^2 = x^3 + ax + b- 生成元:G = (x, y)- 椭圆曲线阶:n = 2^256 - 1- 素数p:p = 2^256 - 1- 系数a、b:a = 0,b = 7【3】SECP256k1算法应用SECP256k1算法广泛应用于加密货币、网络通信等领域。
以下是SECP256k1算法在比特币(Bitcoin)中的应用示例:1.密钥生成:用户生成一个私钥,对其进行椭圆曲线运算,得到一个对应的公钥。
2.数字签名:用户用自己的私钥对交易信息进行签名,生成数字签名。
3.验证签名:交易接收方使用发送方的公钥验证数字签名,确保交易的真实性和完整性。
【4】安全性与性能分析SECP256k1算法的安全性依赖于椭圆曲线上的数学难题,目前尚未找到高效的破解方法。
然而,随着计算能力的提升,未来可能会出现针对SECP256k1的攻击手段。
因此,研究人员正在寻求更高安全性的椭圆曲线算法,如SECG 曲线。
在性能方面,SECP256k1算法相较于其他公钥加密算法具有较高的运算速度。
但这仍取决于具体的实现和硬件条件。
在实际应用中,可以采用优化算法和硬件加速手段进一步提高性能。
【5】总结SECP256k1椭圆曲线算法作为一种高效、安全的公钥加密算法,在现代密码学和加密货币领域具有重要地位。
安全椭圆曲线的选取及点群阶的计算

安全椭圆曲线的选取及点群阶的计算摘要:选取安全椭圆曲线的核心步骤是对椭圆曲线点群阶的计算。
SEA算法及Satoh算法是计算点群的有效工具。
本文主要讨论了安全椭圆曲线的选取及利用前两种算法计算点群阶。
关键词:安全椭圆曲线,点群阶,SEA算法,Satoh算法1 引言自1985年N.Kobliatz和ler分别提出椭圆曲线公钥密码体制以来,在理论研究、标准化和产品化等要素的综合影响下,椭圆曲线公钥密码体制以自身优势成为信息安全和密码学界关注的热点之一。
在现代密码及数字签名中要确保信息安全,关键是如何构造安全的椭圆曲线,而影响椭圆曲线密码体制的安全性的主要因素是参数的选取,其核心步骤是寻找素数阶的椭圆曲线。
目前,构造安全椭圆曲线的方法一般有两种:①复乘法,即构造给定阶的椭圆曲线。
这种方法构造的椭圆曲线具有附带结构特征,从安全性角度来说,这是一个潜在的威胁;②随机曲线法,即随机选取椭圆曲线参数,计算它的阶,直到找到素数阶椭圆曲线。
因此从长远的角度或从不断出现的对ECC的攻击来看,利用随机曲线法选择安全椭圆曲线是非常必要的。
2 安全椭圆曲线的选取为了得到一条随机性很好的素数阶椭圆曲线,我们可以采用下面的方法,随机选取参数,利用相关算法计算出它的阶,再对阶进行素性测试,直到得到理想的椭圆曲线。
实际应用中,许多情况下我们利用SEA算法计算出阶之前,利用已有的信息就可断定阶为合数。
下面给出构造安全椭圆曲线的方法:输入有限域的大小输出椭圆曲线是大的素因子,且(1)随机产生上的一条椭圆曲线;(2)利用算法计算出;(3)利用大整数分解算法分解,并检测的分解中有无的>2160素因子,如果没有,返回(1);(4)检测,否则返回(1)(5)检测否则返回(1)(6)输出实现上面算法的最关键的一步就是计算椭圆曲线点的个数即点群阶。
3 椭圆曲线的点群阶3.1 椭圆曲线的点群阶定义椭圆曲线的点群阶是指所定义的椭圆曲线上的点数(我们所关心的是曲线在第一象限中的整数点数)并上无穷远点(用表示)。
高中数学第二章参数方程2.3.1椭圆曲线的参数方程课件新人教B版选修13

F1,F2 的距离之和等于 4,写出椭
圆 C 的方程和焦点坐标; (2)设点 P 是(1)中所得椭圆上的动点,求线段 F1P 的中点的轨迹 方程.
解:(1)由椭圆上点 A 到 F1,F2 的距离之和是 4,得 2a=4,即 a
3 1 A1,2在椭圆上,所以 + 4 3 2 2
y 2 = sin φ, 2 a 提示:由 2 x2=cos2φ, b
2
x=bcos φ, 得 y=asin φ.
x=bcos φ, 即参数方程为 y=asin φ
(0≤φ≤2π).
x=rcos θ, 2.圆的参数方程 y=rsin θ
பைடு நூலகம்
中参数 θ 的意义与椭圆的参数
利用椭圆的参数方程求最值
[例 1]
x2 y2 已知椭圆 + =1 有一内接矩形 ABCD, 求矩形 100 64
ABCD 的最大面积. [思路点拨] 本题考查椭圆的参数方程的求法及应用.解
答此题需要设出 A 点的坐标, 然后借助椭圆的对称性即可知 B, C,D 的坐标,从而求出矩形的面积的表达式.
x-x02 ,0≤t≤2π. 中 心 在 M0(x0 , y0) 的 椭 圆 + a2
x=x0+acos t y-y02 =1 的参数方程是 0≤t≤2π. b2 y=y0+bsin t
[小问题· 大思维]
y2 x2 1.中心在原点,焦点在 y 轴上的椭圆 2+ 2=1 的参数方 a b 程是什么?
2.3 2.3.1 第 二 章 椭 圆 的 参 数 方 程
理解教材新知 考点一 把握热点考向 考点二 考点三 应用创新演练
2.3
2.3.1
椭圆曲线的参数方程
椭圆曲线及基点选取算法研究

complexity of the original algorithm. These algorithms on the binary field,not only have a lower complexity,but have a easier
hardware implementation compared to the algorithm on the prime field,SO the improvements of
第1章绪论…………………………………………………………………………………….1 1.1研究背景及意义……………………………………………………………………….1 1.2椭圆曲线与公钥密码体制……………………………………………………………..2 1.3 曲线及基点选取算法研究现状……………………………………………………….5 1.4文章结构……………………………………………………………………………….6
multiplication method of selecting and improved this method with parallel method.This method
is based on the operations of the binary field,and finally gives the performance and safety
algorithms,and then proposed improved algorithms with the parallelize method,lastly gave the algorithm analysis,the main work is as follows:
(1)On the curve choosing,firstly the author gave the computing performance and safety analysis of the two curve selection algorithms,which are the complex multiplication and random
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于SM2椭圆曲线参数选取
一.安全的椭圆曲线的选取
1.椭圆曲线上的公钥密码体制的安全性是建立在椭圆曲线离散对数的基础上, 但并不是所有椭圆曲线都可以应用到公钥密码体制中, 为了保证其安全性, 必须选取安全椭圆曲线,即只有选到合适的有限域GF(p)和椭圆曲线(ECC),能够抵抗攻击ECDLP算法的攻击,才能保证所选ECC的安全性。
若某椭圆曲线存在优于n1/2级(n是基点阶次)计算复杂度的攻击方法,则称此曲线为弱椭圆曲线。
Fp上的超奇异椭圆曲线(有限域Fp的特征整除q+1-#E(Fp))和Fp上的异常曲线(#E(Fp)=p)都是弱椭圆曲线。
(国密局文档p4,p25A.4抗攻击椭圆曲线满足的条件)。
下面是选取曲线时应遵循的原则:(一种椭圆曲线参数生成的快速算法)
(1)为了抗击Pollard-ρ攻击,所选取椭圆曲线的阶#E(GF(p))的分解式中应该包含一个大的素数因子,目前应不小于160bit;
(2)为了抗击Weil对和Tate对的攻击,对于1≤k≤30,n不能除p k-1(不宜选取超奇异椭圆曲线);
(3)为了抗击Semaev-Smart-Satoh-Araki的攻击所选曲线的阶不能等于该曲线所定义的有限域的阶,即#E(F P)≠p(不宜选取异常椭圆曲线);
(4)对于二进制域GF(2m)的度m不宜为合数。
Gaudry,Hess和Smart 提出,若m有小约数l(l=4),存在比Pollard's rho算法更快求解ECDLP 的方法。
(5)选择GF(p)的子域H,满足它的阶|H| 是#E 的最大素因子n,并在H 上实现ECC。
2.一般来说有4 种寻找安全椭圆曲线的方法:(椭圆曲线密码体制及其参数生成的研究.2006.DR)
(1) 有限域GF( p) 上随机生成一椭圆曲线, 直接计算其阶, 判断阶是否为大素数或含大素数因子, 若是即确定,否则继续选取曲线, 直至符合条件。
(2) 取具有一定特殊性椭圆曲线的系数, 计算该椭圆曲线的阶, 对该阶进行判断, 直至找到所需要的安全曲线。
(3) 如果p = 2m , 其中m 能被一个比较小的整数d 整除, 首先在有限域GF( p1 ) ( p1 = 2 d ) 上选择一椭圆曲线E,并计算其阶, 根据此值, 利用Weil 定理[ 2] 计算该曲线在其扩域GF( p) 上的阶, 若此阶符合安全标准, 再找曲线E在域GF( p) 上的嵌入E, 则E 即为所需的安全椭圆曲线。
(4) 首先给出具有安全条件的曲线阶, 然后构造一具有此阶的椭圆曲线。
目前国内外比较流行的计算椭圆曲线阶的算法有complex multiplication 算法、SEA 算法、Satoh 算法。
应用广泛的椭圆曲线公钥密码体制( ECC) 中大多是基于特征2 的有限域上。
3.尽管ECC的参数选取方法有许多种,应用最多的是随机选择方法,它是根据任意给定曲线的系数,计算曲线的阶直到找到素数(或近素数)阶的椭圆曲线。
(1)参数p的选取:p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
(2)参数a、b的选取:已知素域的规模p,求解比特串SEED及Fp中的元素a,b(D.1p37参数生成)
a) 任意选择长度至少为192的比特串SEED;
b) 计算H = H256(SEED),并记H = (h255;h254;...;h0);
c) 置R =Σh i2i,其中i取从0到255的整数;
d) 置r = R mod p;
e) 任意选择Fp中的元素a和b,使r2≡a3 (mod p);
f) 若(4a3+27b2) mod p=0,则转步骤a);
g) 所选择的Fp上的椭圆曲线为E:y2 = x3+ax+b;
h) 输出(SEED;a,b)
二.椭圆曲线的阶的选取(北邮博士论文)
在椭圆曲线生成的过程中要考虑的一个重要因素就是确定椭圆曲线点的个数,即椭圆曲线的阶"通常密码体制中使用的椭圆曲线E的阶#E(Fp)必须满足以下条件:若已给定域Fp,要最大限度地抵抗针对ECDLP的Poh1ig-Hellman攻击和pollardp攻击,应使得#E(Fp)为素数或者接近素数,即#E(Fp)=hn其中n为素数,一般来说,最小应该满足素数n>2160,h非常小,比如h=1,2,3或4;另外还要避免对特殊曲线的攻击,保证#E(Fp≠p),即椭圆曲线E不是畸形曲线;同时还要使得#E(Fp)的素因子n不能整除p t-1,其中t=1,2,…,30,即椭圆曲线E不是超奇异曲线,MOV攻击法不能实现"
计算椭圆曲线阶的最简单的方法是直接对每个X任F(p)通过WeierstraSS方程查找y任F(p)的解的个数,该方法在密码学域空间很大的情况下是不可取的。
在实际的阶计算中,常采用以下两种方法:复乘法和点计数法。
(l)复乘法(CM)
该方法首先选择一个满足安全性约束的阶N,然后构造阶为N的椭圆曲线。
使用这一方法的时候要先确定构造椭圆曲线的类型,再选用不同的方法确定椭圆曲线的阶。
若选取的曲线是素数域上的椭圆曲线,那么在选定阶N 后,验证阶N是否符合安全椭圆曲线的要求。
若满足,则利用复乘法寻找符合参数要求的椭圆曲线。
复乘法是利用具有复数乘法的椭圆曲线素性证明的算法,来求F(p)上的椭圆曲线E。
(2)点计数法
1985年,SChoof首先提出了计算任意椭圆曲线E的阶#E(Fp)的多项式时间算法。
对于实际密码系统应用中的p,该算法的实现效率较低。
随后该算法被Atkin和ElkioS等人改进,他们通过分析F(p)上的同种映射,利用模多项式的性质,得到了改进算法sChoof一ElkieS一Atkin(sEA)算法。
SEA 算法是已知最好的求解任意素数域和最优扩域上椭圆曲线阶的算法,在实际密码系统应用中,该算法的运行时间大约只需要几分钟,它可以快速地将阶能被小素数整除的候选曲线淘汰,因此常用于早期中止策略。
1999年,Satoh 提出了计算小特征有限域上阶的全新方法Satoh方法,该方法的一些变体如Satoh一Skjemaa一Taguchi(SST)和算术几何中值(AGM)算法,在二进制域的情况下速度非常快,可以很快地生成适合密码学用途的椭圆曲线。
三.基点的选取及其阶次要求
椭圆曲线密码体制并不是运行在整个EC元素构成的阿贝尔群上,而是运行在由其基点G生成的子群中,为了提高曲线的安全性,选择的基点G的阶就是#E的一个大素因子。
根据前面得到的参数p,a,b 和n,利用下面的算法可以求出具有大素数阶的基点:
随着参数a,b,p确定,这条曲线y2=x3+ax+b就定下来了。
先随机产生0到p-1间的整数作为基点x坐标,计算x3+ax+b的结果再开方就得出基点y 坐标,必须满足x,y为整数,又知道椭圆曲线上的任意非无穷远点可作为基点,得到基点G(x,y)(国密局文档p33)。
由HASSNE公式和阿贝尔群结构定理的推论可知,在Fp上选取椭圆曲线时, 要求基点G的阶n>4sqrt(p)(贴吧)。