一种椭圆曲线快速生成算法
ecc椭圆曲线算法

ecc椭圆曲线算法摘要:1.椭圆曲线算法简介2.椭圆曲线算法的数学原理3.椭圆曲线算法在加密和解密中的应用4.椭圆曲线算法的优势和局限性5.椭圆曲线算法在现代加密技术中的地位正文:椭圆曲线算法(ECC,Elliptic Curve Cryptography)是一种基于椭圆曲线数学模型的公钥加密算法。
它与RSA和离散对数一样,也是基于一个数学求解的难题,但是它的难度比RSA和离散对数都要大。
椭圆曲线算法的数学原理是利用椭圆曲线上的点加和乘法运算。
在椭圆曲线上,任意两个点可以通过加法或乘法生成一个新的点。
通过这种运算,我们可以实现公钥和私钥的生成,以及数字签名的生成和验证。
椭圆曲线算法在加密和解密中的应用主要包括以下几个步骤:1.密钥生成:通过椭圆曲线上的点加和乘法运算,生成公钥和私钥。
2.加密:利用公钥对数据进行加密,生成密文。
3.解密:利用私钥对密文进行解密,还原原始数据。
4.数字签名:利用椭圆曲线算法生成数字签名,用于验证数据的完整性和真实性。
椭圆曲线算法具有以下优势:1.安全性高:由于椭圆曲线算法的数学难题难度较大,使得破解所需的计算量极大,从而保证了数据的安全性。
2.密钥长度短:相较于RSA算法,椭圆曲线算法所需的密钥长度更短,从而降低了密钥管理和传输的难度。
3.资源消耗低:椭圆曲线算法的计算复杂度较低,对计算资源的消耗较小。
然而,椭圆曲线算法也存在一定的局限性:1.兼容性问题:相较于RSA算法,椭圆曲线算法在某些应用场景中可能存在兼容性问题。
2.性能问题:在某些计算环境下,椭圆曲线算法的性能可能不如RSA算法。
尽管如此,椭圆曲线算法在现代加密技术中仍然具有重要的地位。
随着量子计算技术的发展,椭圆曲线算法的安全性可能会受到更大的挑战。
一种椭圆曲线参数生成的快速算法

一种椭圆曲线参数生成的快速算法谷勇浩 刘勇(北京邮电大学通信网络综合技术研究所)摘要:椭圆曲线密码体制是公钥密码中的研究热点。
该文介绍了椭圆曲线密码体制的基本概念及相关知识,讨论了目前基于离散对数问题的椭圆曲线密码的研究动态。
本文的创新点是针对目前椭圆曲线研究重点之一——椭圆曲线参数生成算法,给出了一种生成参数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 =。
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椭圆曲线算法作为一种高效、安全的公钥加密算法,在现代密码学和加密货币领域具有重要地位。
Legendre-形式椭圆曲线生成方法研究

( si t f lc o i e hoo yP AIfr t nE gn eigUnvri , h nh u4 0 0 ) I tueo et ncT c n lg, L omai n iern iest Z e z o 5 0 4 n t E r n o y
要,也已受到了人们普遍的重视。信息安全已不仅局限于政 治、 军事以及外交领域, 现在它与人们的日常生活息息相关。
椭 圆曲线公钥 密码 体制 最早由 K bi 和 Mue 分 别独 olz t lr l 立提出 ,近来是密码学界研究 的热点 和焦点 。现在一般认为 R A 公钥密码 体制和 DfeH l a S ii em n密 钥交换协议 需要 用 l l 2b s 4i 的模 数才是安全 的 , 是对椭 圆曲线 公钥 密码 体制 0 t 但 而言 ,只要用 10 i 的模数就能达到相 同的级别的安全性 。 6 bt s 所以在相 同的安全强度下 ,椭 圆曲线密码体制 所需要 的各项 参数都比 R A要小 得多 ,这样 在实现上比 RS S A更简单 、更 快速和具有普遍性 ; 特别是在计算机资源和存储空问受限时 , 使用椭圆 曲线公钥密码体制是一个非 常理 想的选择 。椭 圆曲 线公钥密码体制在信息安全等各个领 域已得到广 泛的应 用, 如 A M 取 款机、智能卡等都可 以使 用 E C,特别是在 P I T C K 和 P P中扮演重 要的角色 。对于一 些特殊形 式的椭 圆曲线 , G 例如 Lgnr 形式椭 圆曲线、H sa- eede 一 es n形式椭 圆曲线以及蒙 i
维普资讯
第3 卷 第 2 期 2 4
3 2
No 2 .4
椭圆曲线密钥生成算法

椭圆曲线密钥生成算法
椭圆曲线密钥生成算法是一种非对称加密算法,通过对椭圆曲线上的点进行运算,可以生成一对公钥和私钥。
该算法相比传统的RSA算法,具有更高的安全性和更小的密钥长度。
椭圆曲线密钥生成算法的过程包括以下步骤:选择一条椭圆曲线,确定曲线上的基点,选择一个随机数作为私钥,通过基点和私钥计算出公钥。
其中,私钥是保密的,公钥可以公开传输。
椭圆曲线密钥生成算法可以广泛应用于信息安全领域,如SSL/TLS协议、数字签名、加密通信等。
在移动设备和物联网等资源受限的环境中,椭圆曲线密钥生成算法可以更好地满足安全性和性能的要求。
但是,椭圆曲线密钥生成算法也存在一些问题,如曲线的选择和参数设置需要严格考虑,否则可能会导致安全性降低。
此外,椭圆曲线的实现也需要考虑侧信道攻击等安全问题。
- 1 -。
ecc椭圆曲线算法

ecc椭圆曲线算法【实用版】目录1.椭圆曲线算法的概念与背景2.椭圆曲线算法的原理与过程3.椭圆曲线算法的优势与应用4.椭圆曲线算法的局限性与发展前景正文一、椭圆曲线算法的概念与背景椭圆曲线算法(Elliptic Curve Cryptography,简称 ECC)是一种基于椭圆曲线数学理论的公钥加密算法。
椭圆曲线研究可以追溯至十九世纪中叶,那时代数学家、几何代数学家以及数论专家都在研究这一领域。
椭圆曲线加密算法因其独特的数学特性,具备较高的安全性和效率,被广泛应用于网络通信、数据存储等领域。
二、椭圆曲线算法的原理与过程椭圆曲线加密算法的主要原理是基于椭圆曲线上的离散对数问题。
离散对数问题指的是在给定椭圆曲线上找到一个整数 k,使得 k*G=H,其中G 和 H 是椭圆曲线上的点。
由于椭圆曲线的特殊性质,这个问题比大数分解和离散对数问题更难解决,因此可以用来实现加密。
椭圆曲线加密的过程如下:1.选择一条椭圆曲线。
椭圆曲线的方程形式为:y^2 = x^3 + ax + b (其中 a、b 为常数),曲线的形状类似于一个椭圆。
2.选择一个基点 G。
基点是椭圆曲线上的一个已知的点,用于生成其他点。
3.生成密钥对。
每个用户生成一个私钥和公钥。
私钥是一个大整数 k (小于等于椭圆曲线的阶 n),公钥是基点 G 和私钥的乘积,表示为 K = k*G。
4.加密和解密。
在通信过程中,发送方将信息加密后发送给接收方。
接收方使用发送方的公钥 K 进行解密。
三、椭圆曲线算法的优势与应用1.安全性高。
椭圆曲线加密算法基于数学难题,其安全性较高,难以被攻破。
2.计算效率高。
相较于其他公钥加密算法如 RSA、离散对数算法等,椭圆曲线加密算法的计算量较小,可以更快地完成加密和解密任务。
3.应用广泛。
椭圆曲线加密算法广泛应用于网络通信、电子商务、数据存储等领域,如比特币等加密货币就是采用椭圆曲线加密算法进行加密。
四、椭圆曲线算法的局限性与发展前景虽然椭圆曲线加密算法具有较高的安全性和效率,但也存在一定的局限性。
椭圆曲线参数选取

关于SM2ffi圆曲线参数选取一.安全的椭圆曲线的选取1.椭圆曲线上的公钥密码体制的安全性是建立在椭圆曲线离散对数的基础上, 但并不是所有椭圆曲线都可以应用到公钥密码体制中, 为了保证其安全性,必须选取安全椭圆曲线,即只有选到合适的有限域GF(p)和椭圆曲线(ECC),能够抵抗攻击ECDLP!法的攻击,才能保证所选ECC的安全性。
若某椭圆曲线存在优于n1/2级(n是基点阶次)计算复杂度的攻击方法,则称此曲线为弱椭圆曲线。
Fp 上的超奇异椭圆曲线(有限域Fp 的特征整除q+1-#E(Fp))和Fp上的异常曲线(#E(Fp)二p)都是弱椭圆曲线。
(国密局文档p4,p25A.4 抗攻击椭圆曲线满足的条件) 。
下面是选取曲线时应遵循的原则:(一种椭圆曲线参数生成的快速算法)(1)为了抗击Pollard- p攻击,所选取椭圆曲线的阶#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(2)的度m不宜为合数。
Gaudry, Hess和Smart 提出,若m有小约数I (1=4 ),存在比Pollard's rho 算法更快求解ECDLP 的方法。
(5)选择GF(p)的子域H,满足它的阶|H|是#丘的最大素因子n,并在H 上实现ECC。
2.一般来说有 4 种寻找安全椭圆曲线的方法: (椭圆曲线密码体制及其参数生成的研究.2006.DR)(1)有限域GF( p) 上随机生成一椭圆曲线, 直接计算其阶, 判断阶是否为大素数或含大素数因子, 若是即确定, 否则继续选取曲线, 直至符合条件。
nist 的椭圆曲线

nist 的椭圆曲线NIST(National Institute of Standards and Technology,美国国家标准与技术研究院)是美国的一个政府机构,专门负责制定和推广标准与技术。
在密码学领域,NIST起到了重要的作用,尤其在椭圆曲线密码学方面。
在本文中,我们将详细介绍NIST的椭圆曲线标准,并探讨它们的应用和安全性。
椭圆曲线密码学(Elliptic Curve Cryptography,ECC)是一种基于椭圆曲线运算的公钥密码学方法。
相比传统的RSA算法和DSA算法,ECC具有更高的安全性和更小的密钥尺寸。
因此,它在现代密码学中得到了广泛的应用。
NIST为了推广和标准化椭圆曲线密码学,制定了一系列的标准。
其中最有名的是NIST标准FIPS 186-4和FIPS 140-2。
FIPS 186-4规定了椭圆曲线的选择和参数生成方法,而FIPS 140-2则规定了椭圆曲线密码学算法的实现和验证的要求。
在FIPS 186-4中,NIST定义了五个椭圆曲线的标准参数集,分别是P-192、P-224、P-256、P-384和P-521。
这些曲线的参数选择都是经过严格的数学分析和安全评估的,以确保其在安全性和效率之间取得了较好的平衡。
这些曲线都是基于有限域上的素数阶椭圆曲线,即椭圆曲线上的点都属于一个特定素数阶的子群。
除了椭圆曲线参数集,NIST还规定了椭圆曲线的基本运算算法。
包括椭圆曲线点加法、点乘法和标量乘法等。
这些算法在实现中具有高效性和安全性,并且已经经过了广泛的验证和审计。
NIST的椭圆曲线标准参数集已经被广泛地应用在许多密码学协议和应用中。
比如,TLS/SSL协议中的ECDSA算法、BitCoin和以太坊等数字货币的公钥算法、以及智能卡和安全芯片等嵌入式设备中的加密算法等。
这些应用的安全性和可信度都得到了NIST标准的保证。
然而,尽管NIST的椭圆曲线标准被广泛使用,但在2013年,爆发了一个名为“双椭圆曲线随机数漏洞”(Dual EC DRBG)的丑闻,引发了对NIST标准的质疑和批评。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种椭圆曲线参数生成的快速算法谷勇浩 刘勇(北京邮电大学通信网络综合技术研究所)摘要:椭圆曲线密码体制是公钥密码中的研究热点。
该文介绍了椭圆曲线密码体制的基本概念及相关知识,讨论了目前基于离散对数问题的椭圆曲线密码的研究动态。
本文的创新点是针对目前椭圆曲线研究重点之一——椭圆曲线参数生成算法,给出了一种生成参数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)为2mF 域元素的不可约多项式的表示法;曲线的方程,当q 为素数时,方程为23ax b yx =++,当q 为2m时,方程为232xy a b yx x +=++,a,b 是方程中的系数;G 为基点;n 为大素数并且等于点G的阶,h 是小整数称为余因子且#()/qh E n F=。
主要的安全性参数是n ,因此ECC 密钥的长度就定义为n 的长度。
1.2椭圆曲线密码的密钥选取了基域qF和椭圆曲线后,得到了在有限域qF上的曲线E 确定的具体形式,即上述的椭圆曲线域参数的一个七元组。
每个用户选取一个整数d(1≤d ≤n-1) 作为其私钥,而以点Q=dG(G 为基点)作其公钥,这样形成一个椭圆曲线公钥密码系统。
在这个密码体制中,具体的曲线,基域qF,基点G 及其阶n ,以及每个用户的公钥都是该系统的公开参数,每个用户的私钥是保密的。
1.3基于椭圆曲线密码体制的加解密假设用户A 欲将明文m 加密后发送给B ,A 执行以下操作: (1)查找B 的公钥(E(qF,G ,n ,BQ));(2)将m 表示成一个域元素,即qm F∈;(3)在区间[1,n-1]内选取一个随机数k ; (4)计算点11(,)kG y x =;(5)依据B 的公钥计算点22(,)Bk Qy x =,若2x =0,则返回到第(3)步;(6)计算2C m x=⨯;(7)传送加密数据11(,,)C y x 给B 。
B 收到A 的密文11(,,)C y x 后,执行以下操作。
(1)使用私钥Bd,计算点1212(,)(,)B y y d x x =,再计算q F 中12()x -;(2)计算m=C12()x -,得到明文m 。
2 椭圆曲线密码的研究动态2.1椭圆曲线密码的安全性ECC 的安全性是建立在离散对数问题计算难度基础之上,如果离散对数可以计算,从一个用户的公钥就可得到他的私钥,ECC 就不安全了。
对于一般的ECDLP ,目前有两种较好的求解法[1]:Pohlig-Hellman 方法和Pollard-ρ方法。
但是对于两类特殊的椭圆曲线,已经有了其他有效的求解方法。
一类特殊的椭圆曲线——超奇异椭圆曲线[2](设qF的特征为p ,/qE F的q 阶Frobenius 变换的迹t 是p 的倍数时,E 称为超奇异的),采用概率亚指数算法——MOV 算法和FR 算法可以解决ECDLP 。
另一类特殊椭圆曲线是异常(anomalous)椭圆曲线[2](设mq p=,p ≠2,3为素数,/qE F由方程23ax b yx =++定义,()q P E F ∈的阶为p 。
当p=q 时,异常曲线上的p 阶Frobenius 变换的迹t=1),SSSA 算法可以解决ECDLP 。
2.2 椭圆曲线的选取要保证椭圆曲线密码的安全性,就是要使所选取的曲线能抵抗上述的关于ECDLP 解决的方法和算法,所以选取一条安全的椭圆曲线,是一个深刻的数学难题,在此,仅提供几点椭圆曲线选取的安全准则[3]: (1)为了抗击Pollard-ρ攻击,所选取EC 的阶#E(GF(q))的分解式中应该包含一个大的素数因子,目前应不小于160bit ;(2)为了抗击Weil 对和Tate 对的攻击,对于1≤k ≤30,n 不能除1kq-(不宜选取超奇异椭圆曲线);(3)为了抗击Semaev-Smart-Satoh-Araki 的攻击所选曲线的阶不能等于该曲线所定义的有限域的阶,即#E(qF)≠q (不宜选取异常椭圆曲线);(4)对于二进制域GF(2m)的度m 不宜为合数。
Gaudry ,Hess 和Smart 提出,若m 有小约数l (l=4),存在比Pollard's rho 算法更快求解ECDLP 的方法。
下面介绍3种选择适宜的椭圆曲线的方法: (1)仅限于有限域为2mF 上构造椭圆曲线。
其原理是将定义在特征值比较小的有限域的椭圆曲线提升到该域的扩域上去,并且m 能被小整数k ≥1整除。
这种方法简单,但是得到的曲线较少。
(2)CM(Complex Multiplication)法,根据给定的阶来选取符合此阶的椭圆曲线。
它的实现速度相对较快,但这种方法产生的椭圆曲线具有附带的结构特征。
从安全性角度讲,这是一个潜在的威胁。
(3)随机选取曲线。
随机选取曲线的参数a,b ∈qF如果q 是素数,则满足324270ab +≠;如果q=2m,则b ≠0,然后计算u=#E(Fq)和大素数因子n ,直到所选曲线满足安全需求。
这种方法比较理想,选取的曲线安全级别高,它完全依赖于椭圆曲线阶的计算。
2.3椭圆曲线阶的计算从上述椭圆曲线的安全性来看,如果曲线的阶充分大,平方根攻击如Shanks's baby-step gaint-step 或Pollard's ρ方法就不太有效,要能抗击Pohlig-hellman 攻击,一个好的策略是确保曲线的阶#E(Fq)中包含有大素数因子(该大素数作为所选取基点P 的阶)使得P,Pohlig-hellman 算法的O 计算量不能实现。
由此看来,计算#E(Fq)是研究定义在有限域上的椭圆曲线的一个核心问题。
对于#E(Fq)的计算是一个纯粹的数学问题。
目前有两种方法可以采用: (1)随机选取一条定义于有限域qF的椭圆曲线,直接计算该曲线的阶,使其满足#E(Fq)中包含有大素数因子。
在这方面,R. School 做了开创性的工作,提出了著名的School 算法,后经Atkin 和Elkies 的改进,提出了SEA(School Elkies Atkin)算法。
后来,Morain,Lercier 等人又对它作了一些优化,如今SEA 算法已成为计算椭圆曲线阶的有效算法。
另外,Satoh 也提出了比较有效的算法及目前对于二进制域效率较高的Satoh-FGH 算法。
(2)仅限于有限域为2mF 且它要求所定义的2mF 有限域中的m 能分解为m=de ,其中d 为一个小整数,通过计算子域2dF 上的#E(2dF ),从而计算出#E(2deF )。
这种方法简单易实现,但是适用范围较小,不能计算出任意m 或固定m 的#E(2dF )。
2.4 椭圆曲线的快速算法在椭圆曲线密码体制应用中的大量运算是倍乘(数乘),就是一串点的加法运算,即计算k*P=P+P+⋯+P 共有k 个P 相加。
椭圆曲线密码快速实现的关键就是快速实现kP 的运算(包括算法优化和程序优化、软件实现和硬件实现)。
其中kP 的运算主要基于两方面的运算:基域上域元素和曲线上点的运算。
这些运算与我们所选取的有限域、采用的坐标系、基域中的元素表示方法、选取怎样的椭圆曲线和计算kP 的方法有关。
因为同一基域中的元素表示方法不一样(如2mF 中有多项式和通项表示法);不同的坐标系(如仿射坐标和射影坐标)下,都会影响kP 的计算量。
对于一些特殊的曲线,如Koblitz curves ,已经有了较好的算法,但是对一般随机的椭圆曲线,如何快速计算kP 仍是一个需要研究的问题。
3 椭圆曲线参数快速生成算法3.1产生椭圆曲线的传统算法通常情况下,从特定秩生成曲线组中随机选取一个作为椭圆曲线。
下面的算法生成基于GF(p)域的椭圆曲线参数,而且能够生成足够的信息能使其他人验证这样的曲线的确是随机生成的。
选定如下参数[4]:素数模p ;基点秩的上下界maxr和minr;输出长为B 比特的Hash 函数H ,其中min 21()2log B r ⎡⎤≥⎢⎥⎢⎥;以及Hash 函数的输入比特长L ,L B ≥。
还要使用如下的符号:v = 2log p ⎡⎤⎢⎥;s = (1)v B -⎢⎥⎢⎥⎣⎦;w = v -Bs -1 算法输入:p ,minr,maxr,maxl(用于测试的除数的上限,满足maxl<minr);算法输出:比特串X ;EC 参数q=p ,a ,b ,r ,G (1) 选择长为L 的比特串X ; (2) 计算h=H(X);(3) 选取h 的最右面的w 比特串计为0W;(4) 将字符串X 转换为整数z ; (5) I 从1到s ,作如下循环(5.1)将整数(z+i)mod(2L)转化为长为L 的比特串iX;(5.2)计算iW=H(iX);(6) 将所有的iW以如下形式合并成W :01||||...||s W W W W =|| 代表连接(7) 将长对为v-1的字符串W 转换为整数c ; (8) 如果c=0或4c+27≡0(mod p)则返回到(1); (9) 选择整数a ,b ∈GF(p),满足23(mod )cp ba ≡;(最简单的方式是选择a=c ,b=c 。