[go: up one dir, main page]

CN1831754A - 一种椭圆曲线密码系统及实现方法 - Google Patents

一种椭圆曲线密码系统及实现方法 Download PDF

Info

Publication number
CN1831754A
CN1831754A CN 200510115512 CN200510115512A CN1831754A CN 1831754 A CN1831754 A CN 1831754A CN 200510115512 CN200510115512 CN 200510115512 CN 200510115512 A CN200510115512 A CN 200510115512A CN 1831754 A CN1831754 A CN 1831754A
Authority
CN
China
Prior art keywords
module
montgomery
computing
elliptic curve
algorithm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200510115512
Other languages
English (en)
Other versions
CN100414492C (zh
Inventor
范欣欣
王育民
詹阳
姜正涛
谭示崇
田海博
袁素春
于松亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
BEIJING PUAODE DITIAL TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING PUAODE DITIAL TECHNOLOGY Co Ltd filed Critical BEIJING PUAODE DITIAL TECHNOLOGY Co Ltd
Priority to CNB2005101155123A priority Critical patent/CN100414492C/zh
Publication of CN1831754A publication Critical patent/CN1831754A/zh
Application granted granted Critical
Publication of CN100414492C publication Critical patent/CN100414492C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

一种椭圆曲线密码系统及实现方法,包括有限域算法模块,用于利用Montgom ery算术实现大素数域中的运算;点加与倍点算法模块,实现椭圆曲线上的点加运算与倍点运算;标量乘算法模块,用于实现所述椭圆曲线密码系统的标量乘运算;DH密钥协商算法模块,用于调用标量乘算法模块,完成密钥协商;数字签名与验证模块,用于调用标量乘算法模块,完成对消息的数字签名与验证过程。其提供了一种适合硬件实现的椭圆曲线密码系统及实现方法,无需显式执行耗时的模归约运算,使其同时适合软件与硬件实现。

Description

一种椭圆曲线密码系统及实现方法
技术领域
本发明涉及电子设备的数字内容保护系统,特别是涉及一种椭圆曲线密码系统及实现方法。
背景技术
随着信息技术的不断发展和应用,电子信息的安全性问题变得越来越重要。而密码学作为信息安全的核心,在信息安全中扮演着极为重要的角色。密码学的发展中有两个重要的里程碑:1949年Shanon的“保密通信中的数学理论”和1976年Diffie和Hellman的“密码学的新方向”。Shanon的理论是对密码学的研究变成具有一定理论系统的科学;“密码学的新方向”一文提出了公开密钥密码的思想,开创了公钥密码学的新纪元。公钥密码提出后,立刻受到了人们的普遍关注。从1976年以来,人们提出了大量公钥密码体制的实现方案。所有这些方案的安全性都是基于求解某个数学难题的,截至目前为止,有如下三类既具有一定安全性又易于实现的数学难题:
1.基于大数分解问题(IFP)的公钥密码系统,其中包括RSA体制和Rabin体制;
2.基于有限域上离散对数问题(DLP)的公钥密码体制,其中主要包括ElGamal类加密体制和签名方案,Diffie-Hellman密钥交换方案,Schnorr签名方案和Nyberg-Ruppel签名方案等;
3.基于椭圆曲线离散对数问题(ECDLP)的公钥密码体制,其中主要包括椭圆曲线型的Diffie-Hellman密钥交换方案,椭圆曲线型的MQV密钥交换方案;椭圆曲线型的数字签名算法。
将椭圆曲线用于密码算法,于1985年由Koblitz和Victor Miller分别独立地提出。它问世以来一直是密码分析学的研究对象。现在,在商业和政府的用途中,椭圆曲线密码系统(ECC)都被认为是安全的。根据已知的密码分析学知识,椭圆曲线密码系统相比于传统的密码系统来说提供了更高的安全性。例如,相比基于RSA和ELGamal的加密与数字签名算法和基于Diffie-Hellman密钥协商算法来说,椭圆曲线密码系统具有更短的密钥和更有效的算法。而这两方面的优势使得椭圆曲线密码系统比起传统的密码系统来说更实用,且能广泛用于存储量和计算量受限的环境下,如移动电话和个人数字助理。同样的原因使得椭圆曲线密码系统也倍受高要求系统的青睐,如安全网络设备(这些设备经常用到公钥运算)。
椭圆曲线密码系统(ECC)相对于RSA和DSA等系统吸引人的最主要原因是其安全性是基于有限域上的椭圆曲线上的点群中的离散对数问题ECDLP,ECDLP是比因子分解问题更难的问题,许多密码专家认为它是指数级的难度,即解决其数学问题--椭圆曲线离散对数问题(ECDLP)的已知最好的算法也要用完全指数时间。与之相比,RSA和DSA等其它公钥密码系统所基于的数学问题--因数分解问题(IFP)和离散对数问题(DLP)都是亚指数时间算法,与RSA和DSA等系统相比,椭圆曲线密码系统具有如下更好的优势:
1.安全性更高
密码算法的安全性能通过该算法的抗攻击强度来反映。表1.1描述了椭圆曲线密码系统和其它几种公钥密码算法抗攻击强度的比较。我们可以看到,与其他公钥算法相比,椭圆曲线密码系统抗攻击性具有绝对的优势。如160bit的椭圆曲线密码系统可提供与1024bit的RSA、DSA相当的安全强度,而210bit的椭圆曲线密码系统则与2048bit RSA、DSA具有相同的安全强度。
        表1.1  ECC与RSA/DSA抗攻击性能比较
  RSA/DSA密钥长度(比特)  ECC密钥长度(比特)   RSA和ECC密钥长度比率   所需工作量MIPS年
  512  106   5∶1   104
  768  132   6∶1   108
  1024  160   7∶1   1011
  2048  210   10∶1   1020
  21,000  600   35∶1   1078
其中MIPS年表示每秒钟能运行一百万次指令的计算机运行一年的工作量
2.计算量小,处理速度快
虽然在RSA中可以通过选取较小的公钥(如3)的方法提高公钥处理的速度,既提高加密和签名验证的速度,使其在加密和签名验证上与椭圆曲线密码系统有可比性,但在私钥的处理速度上(解密和签名)椭圆曲线密码系统比RSA、DSA要快。表1.2描述了椭圆曲线密码系统与RSA、DSA在密钥生成,签名和验证速度的比较。
                      表1.2  ECC与RSA/DSA计算速度比较
  ECDSA GF(2n)standard   ECDSA GF(2n)improved   ECDSAGF(p) RSA DSA
  key generation   13.0   11.7   5.5   1s   22.7
  signature   13.3   11.3   6.3   43.3   23.6
  verification   68   60   26   0.65   28.3
其中,ECC算法为191bit,RSA/DSA为1024bit。随着安全强度的增加,ECC比RSA/DSA运算的速度提高的更快。
3.存储空间少
椭圆曲线密码系统的密钥尺寸和系统参数与RSA/DSA相比要小得多,意味着它所占的存储空间要少得多。这对于密码算法在IC卡和无线环境中的应用具有特别重要的意义。
4.带宽要求低
当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时,椭圆曲线密码系统带宽要求要低得多。带宽要求低使椭圆曲线密码系统在无线网络中具有广阔的应用前景。
由上面的优点我们可以看到,随着计算能力的提高需要密钥长度的增加,椭圆曲线密码系统相对其它公钥密码系统更吸引我们的关注。其每比特更高的安全性所带来的优点包括:更高的速度,更低的能量消耗,节约带宽,提高存储效率。这些优点在一些对于带宽、处理器能力或存储有限制的应用中显得尤为重要。
发明内容
本发明的目的在于提供一种椭圆曲线密码系统及实现方法,为高层认证协议的实现提供底层模块。
为实现本发明的目的而提供的一种椭圆曲线密码系统,包括:
(一)有限域算法模块,用于利用Montgomery算术实现大素数域中的运算。
所述的有限域算法模块包括模加运算模块、模减运算模块、模乘运算模块、模平方运算模块、模归约运算模块、求逆运算模块。
所述的模乘运算模块为CIOS-Montgomery乘法算法模块。
所述的模平方运算模块为SRCIL-Montgomery平方算法模块。
所述的求逆运算模块为指数求逆算法模块。
本发明的椭圆曲线密码系统还包括:
(二)点加与倍点算法模块,用于在利用Montgomery算术实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,其调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
所述点加运算与倍点运算为优化点加与倍点算法运算。
(三)标量乘算法模块,用于实现所述椭圆曲线密码系统的核心运算:标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
所述标量乘运算采用NAF随机标量乘算法。
(四)DH密钥协商算法模块,用于调用标量乘算法模块,完成密钥协商,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
(五)数字签名与验证模块,用于调用标量乘算法模块,完成对消息的数字签名与验证过程,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
本发明还提供一种椭圆曲线密码系统的实现方法,包括下列步骤:
(一)利用Montgomery算数实现椭圆曲线密码系统中的大素数域中的运算。
所述运算包括模加运算、模减运算、模乘运算、模平方运算、模归约运算、求逆运算。
所述模乘运算模块为CIOS-Montgomery乘法算法。
所述的模平方运算为SRCIL-Montgomery平方算法。
所述的求逆运算模块为指数求逆算法模块。
本发明的椭圆曲线密码系统实现方法,还包括下列步骤:
(二)在利用Montgomery算数实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,其调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
所述点加运算与倍点运算为优化点加与倍点算法运算。
(三)标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
所述标量乘运算采用NAF随机标量乘算法。
(四)调用DH密钥协商算法模块,通过标量乘算法模块,完成密钥协商,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
(五)调用数字签名与验证模块,通过标量乘算法模块,完成对消息的数字签名与验证过程,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
本发明的有益效果是:本发明提供了一种适合硬件实现的椭圆曲线密码系统及实现方法,其采用了Montgomery算数来实现大素数域中的各种运算,实现椭圆曲线密码系统的所需所有算数运算能够在Montgomery域中进行:模加/模减、模乘以及求逆运算,无需显式执行耗时的模归约运算,使其同时适合软件与硬件实现。
附图说明
图1为椭圆曲线密码系统层次体系结构图;
图2为素数域与Montgomery域元素之间的转换关系。
具体实施方式
下面结合附图1、2进一步详细说明本发明的椭圆曲线密码系统及方法。
椭圆曲线的定义:
一条椭圆曲线是在射影平面上满足方程:
Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4X2+a6Z3----------------[3-1]的所有点的集合,且曲线上的每个点都是非奇异或者光滑的。
其中,Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4X2+a6Z3是维尔斯特拉斯方程(Weierstrass,Karl Theodor Wilhelm Weierstrass,1815-1897),是一个齐次方程。
所谓“非奇异”或“光滑”的,在数学中是指曲线上任意一点的偏导数Fx(x,y,z),Fy(x,y,z),Fz(x,y,z)不能同时为0。
设椭圆曲线上有一个无穷远点O∞(0∶1∶0),因为这个点满足方程[3-1],
x=X/Z,y=Y/Z代入方程[3-1]得到:
Y2+a1xy+a3y=x3+a2x2+a4x+a6-------------------------[3-2]
其中,(x,y)为普通平面直角坐标系上的坐标。
也就是说满足方程[3-2]的光滑曲线加上一个无穷远点O∞,组成了椭圆曲线。
椭圆曲线是连续的,并不适合用于加密,因此,一般地,要把适合加密的椭圆曲线定义在有限域上。
有限域是一种只由有限个元素组成的域。
给出一个有限域Fp,这个域只有有限个元素,即Fp中只有p(p为素数)个元素0,1,2……p-2,p-1。
定义Fp的加法(a+b)法则是a+b≡c(mod p);即,(a+b)÷p的余数和c÷p的余数相同;
Fp的乘法(a×b)法则是a×b≡c(mod p);
Fp的除法(a÷b)法则是a/b≡c(mod p);即a×b-1≡c(mod p);(b-1也是一个0到p-1之间的整数,但满足b×b-1≡1(mod p))。
Fp的单位元是1,零元是0。
但是,并不是所有的有限域上的椭圆曲线都适合加密,其中对于定义在大素数域上的椭圆曲线是适合于加密的椭圆曲线,大素数域上的椭圆曲线可通过同构映射将一般的曲线方程变换为特别简单的形式:y2=x3+ax+b,其中曲线参数a,b∈Fp并且满足4a3+27b2≠0(mod p)。
因此,满足下列方程的所有点(x,y),再加上无穷远点O∞,构成一条定义在大素数域Fp上的椭圆曲线。
Y2=x3+ax+b(mod p)
其中x,y属于0到p-1间的大素数,并将这条椭圆曲线记为Ep(a,b)。
公开密钥算法总是要基于一个数学上的难题。比如RSA密码系统依据的是:给定两个大素数p、q很容易相乘得到n,而对n进行因式分解却相对困难。
考虑如下等式:
K=kG[其中K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数,不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相当困难了。
这就是椭圆曲线密码系统基于的数学难题。把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(private key),K称为公开密钥(publickey)。
本发明是采用了Montgomery算数来实现大素数域中的各种运算,从而实现椭圆曲线密码的系统和方法。
如图2所示Montgomery算数由Peter Montgomery提出,其核心运算是Montgomery乘法,由于Montgomery乘法既不需要计算及其耗时的除法也不需要利用商估值技术,因此它简化了模归约运算。
从数学的角度来看,Montgomery域与素数域GF(p)是同构的,GF(p)中的每一个元素在Montgomery域都有一个唯一与之对应的元素。元素a∈GF(p)在Montgomery域中表示为a′=a·R mod p,其中R称为Montgomery常数(R必须大于p)。Montgomery常数R与大素数域的特征必须互素,即gcd(R,p)=1。通常选取R是2的幂次:R=2m,其中m反映了硬件的规模,较佳为R=2192
利用Montgomery算数完成素数域运算需要将操作数由素数域转化到Montgomery域,转化可利用Montgomery乘法完成:a′=MonMul(a,R2)=a·R2/R mod p=a·R mod p。
在系统中通过硬件实现Montgomery乘法算法,则这种转化在硬件实现时不再需要其它的运算,因此也不需要附加的硬件资源,转化时Montgomery常数R=2m mod p已经被预计算,即计算R2需要一些花费,但对于每个模p仅需计算一次。
由Montgomery域转化到素数域也可利用Montgomery乘法完成:a=MonMul(a′,1)=a′·1/R mod p=a·R·1/R mod p=a mod p;b与a的运算方式是一样的,即对b有下式成立b=MonMul(b′,1)=b′·1/R mod p=b·R·1/R mod p=b mod p。当在Montgomery域中执行大量算数运算时,这种转化的花费可以忽略,因为只需在所有运算开始和结束时进行一次。本发明中的椭圆曲线密码系统运算开始时所有的操作数被转化到Montgomery域中接着在Montgomery域完成所有椭圆曲线上的点运算,最后运算结果被转化到大素数域。
这样,本发明利用大整数的Montgomery表示可以有效地实现素数域中的模运算,而且在Montgomery域中无需显式执行耗时的模归约运算,实现椭圆曲线密码系统的所需的所有算数运算能够在Montgomery域中进行:模加/模减、模乘、求逆运算、模平方运算以及模归约运算。
模加运算:a+b mod p=MonAdd(a’,b’)=(a+b)R mod p=a’+b’mod p
模乘运算:a·bmod p=MonMul(a’,b’)=(a·b)R mod p=a’·b’/R mod p
求逆运算:a-1 mod p=MonInv(a’)=a-1R mod p=a’-1R2 mod p
模减运算:a-b mod p=MonSub(a’,b’)=(a-b)R mod p=a’-b’mod p
模平方运算:a2mod p=MonSq(a’2)=(a2)R mod p=a’2/R mod p
模归约运算:r=cR-1 mod p
其中,MonMul:模乘运算;MonAdd:模加运算;MonInv:求逆运算;MonSub:模减运算;MonSq:模平方运算
下面结合图1详细说明本发明实施例的椭圆曲线密码系统:
如图1所示,本实施例的椭圆曲线密码系统包括:
有限域算法模块,用于利用Montgomery算数实现大素数域中的加法运算、乘法运算、平方运算以及求逆运算。
这里的大素数域就是指的一般的素数域Fp,p是大于2的素数。
所述的有限域算法模块包括模加运算模块、模减运算模块、模乘运算模块、模平方运算模块、模归约运算模块、求逆运算模块。
所述的模乘运算模块为CIOS-Montgomery乘法算法模块(CoarselyIntegrated Operand Scanning),该算法模块占用的资源最少,速度最快。
CIOS-Montgomery乘法算法的原理是:该算法集成了乘法与归约步骤。具体地说,此算法并没有直接计算a与b的乘积然后对该乘积进行归约,而是对乘法和归约在外层循环中交替进行,这样做是由于在第i次外层循环中归约步骤所用到的值m仅依赖于s[i]的值,而在乘法的第i次循环中s[i]的值已经计算完毕。
所述的模平方运算模块为SRCIL-Montgomery平方算法模块(SquaringReduction with Inner Loop),该算法速度最快。SRCIL-Montgomery平方算法原理是:该算法去除了一般Montgomery平方算法中的冗余部分并最大化算法软件并行的能力,其基本思想是使用了一个单独的循环计算ai×ai、去掉了进位的延迟并且通过改变循环的结构去掉冗余的部分。
所述的求逆运算模块为指数求逆算法模块,用费马小定理实现有限域中的求逆运算,即b=ap-2(mod p),其能够利用硬件电路板上的Montgomery乘法器资源,该算法模块在有Montgomery乘法器的硬件电路板上的执行时间约为二元扩展欧几里得算法执行时间的70%。
本实施例中的椭圆曲线密码系统,还包括:
点加与倍点算法模块,用于在利用Montgomery算数实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,其采用优化点加与倍点算法实现群运算,调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
标量乘算法模块,用于实现所述椭圆曲线密码系统的核心运算:标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。所述标量乘模块中的运算采用NAF随机标量乘算法。
NAF随机点标量乘算法原理是:NAF随机点标量乘算法首先对标量进行NAF编码,即标量k的NAF表示为 Σ i = 0 l k i 2 i ,其中ki∈{0,±1}并且相邻的ki中至少有一个为0。通过这种编码方式可以有效地计算标量乘,NAF标量乘算法期望的运行时间约为(m/3)A+mD,其中m=[log2p],A表示点加运算,D表示倍点运算。
DH密钥协商算法模块,用于调用标量乘算法模块,完成密钥协商。其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
EC-Diffie-Hellman密钥协商是从一个主体的私钥和另一个主体的公钥导出一个共享的秘密值,此处两个主体具有相同的EC域参数。如果双方能够正确的执行完该协议,则他们将得到相同的结果。该算法可被一些方案调用以产生一个共享的秘密钥,其中,所输入的密钥是有效的。
数字签名与验证模块,用于调用标量乘算法模块,完成对消息的数字签名与验证过程。其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
椭圆曲线数字签名与验证算法(Elliptic Curve Digital Signature Algorithm,ECDSA)是类似于DSA(Digital Signature Algorithm)的一种基于椭圆曲线的数字签名与验证算法,其不象一般的离散对数问题和整数分解问题,椭圆曲线离散对数问题没有亚指数算法,正由于这点,使得采用椭圆曲线离散对数的算法的每比特强度在实质上更强了。
ECDSA的主要参数包括:定义在有限域GF(p)上的椭圆曲线E,E上的GF(p)-有理点的个数#E(GF(p))可被一个大素数n整除,一个基点G∈E(GF(p)),可记为:D=(p,a,b,G,n,h),(d,Q),Hash函数H。
将D=(p,a,b,G,n,h),Hash函数H,Q公开,d保密。
在本实施例的椭圆曲线密码系统中,首先需要实现底层有限域中的各种基本的运算包括:加法运算、乘法运算、平方运算以及求逆运算;其次在有限域算法库的基础上实现椭圆曲线上的点加运算与倍点运算;最后实现椭圆曲线密码系统的核心运算:标量乘运算;通过调用标量乘算法模块,完成密钥协商;通过调用标量乘算法模块,完成对消息的数字签名与验证过程。
下面结合本发明的椭圆曲线密码系统,进一步详细描述本发明的椭圆曲线密码系统的实现方法,包括下列步骤:
(一)利用Montgomery算数实现大素数域中的加法运算、乘法运算、平方运算以及求逆运算。
这里的大素数域就是指的一般的素数域Fp,p是大于2的素数。
◆模加运算:
modadd算法:
输入:整数a,b∈[0,p-1],a=(at-1,at-2,…,a1,a0),b=(bt-1,bt-2,…,b1,b0)。
输出:c=a+b mod p。
1.c0←Add(a0,b0),//低32比特相加
2.For i from 1 to t-1 do:ci←Add(ai,bi)+carry(ai-1,bi-1).//a与b进行带进位的32比特加法
3.If c≥p,then c←c-p.//如果carry(at-1,bt-1)≠0,则最后的运算结果有进位执行减p运算
4.Return(c).//返回运算结果
其中,Add(ai,bi):=(ai+bi)mod232,carry(ai,bi):=(ai+bi)/232
◆模减运算:
modsub算法:
减运算和加运算是非常类似的,不同的是它要用到借位。
输入:整数a,b∈[0,p-1],a=(at-1,at-2,…,a1,a0),b=(bt-1,bt-2,…,b1,b0)。
输出:c=a-b mod p。
1.borrow←0.//初始化将借位borrow赋予0
2.For i from 0 to t-1 do://a与b进行带进位的32比特加法
2.1. ci←(ai-bi-borrow)mod232  //32比特减法运算结果
2.2. Ifai-bi-borrow≥0,then borrow←0;otherwise borrow←1.//32比特减法结果为正则借位borrow为0,否则借位borrow为1
3.If borrow>0,then c←c+p.//如果运算最后还有借位则执行加p运算
4.Return(c).//返回运算结果
由于在modadd中用到了a-b(a≥b),这只是modsub的一个特殊情况,只须将上面算法中的第3步去掉即可。
◆模乘运算:
Montgomery乘法有多种实现方式,本实施例采用了最为有效的CIOS-Montgomery乘法算法(Coarsely Integrated Operand Scanning),该算法占用的资源最少,速度最快。
输入:整数a,b∈[0,p-1],a=(at-1,at-2,…,a1,a0),b=(bt-1,bt-2,…,b1,b0)。
输出:c=abR-1 mod p
1.For i from 0 to t-1 do:s[i]←0.//初始化存储运算结果的数组
s6←0,s7←0  //初始化临时变量
2.For i from 0 to t-1 do:
2.1. C←0.//初始化临时变量
2.2. Forj from 0 to t-1 do://a与b进行32比特乘法
计算(C,S)=s[j]+ajbi+C,//32比特乘法的中间结果
令t[j]←S.//存储32比特进位
2.3.(C,S)←s6+C,s6←S,s7←C.//存储最高位的运算结果
2.4.C←0,m=s[0]*p’[0]mod 232,(C,S)=s[0]+m*p[0].//对最低32比特进行归约
2.5.Forj form 1 to t-1 do://逐段归约
计算(C,S)=s[j]+m*p[j]+C,//32比特中间结果归约
令s[j-1]←S.//存储32比特进位
2.6.(C,S)←s6+C,s[t-1]←S,s6←s7+C  //存储归约结果
3. If s6!=0  //有进位
3.1 C=1;//初始化临时变量
3.2 For i from 0 to t-1 do://逐段进行进位纠正
计算(C,S)=s[i]+~p[i]+C,//进位纠正
令s[i]←S.//存储32比特进位
4.Return((St-1,…,s1,s0))  //返回运算结果
这里C,S都是32比特的字,(C,S)是C,S的连接,它是64比特;
p’[0]=-p[0]-1 mod 232,其中p[0]是192比特素数p的最低32比特(最低的字)。
◆模平方运算:
Montgomery平方也有多种实现方式,本实施例采用了最为有效的SRCIL-Montgomery平方算法(Squaring Reduction with Inner Loop),该算法速度最快。
输入:整数a,b∈[0,p-1],a=(at-1,at-2,…,a1,a0)。
输出:c=a2R-1 mod p
1.For i from 0 to t-1 do:(s[2i+1],s[2i])←ai×ai;//计算第i段相乘结果
2.For i from 0 to t-1 do://对第1步运算结果进行归约
2.1 m=s[i]×p′[0]mod 232;//计算每段归约值
2.2 Forj from 0 to i do://逐段归约
(C,s[i+j])=s[i+j]+m×p[j]+C;//32比特中间结果归约
2.3 C1=0;C2=0;//初始化临时变量
2.4 Forj from i+1 to t-1 do://计算ai与aj的乘积并进行归约
2.4.1 slong=2×C1+C+s[i+j]  //存储中间结果
2.4.2 (C1,S)=ai×aj;//计算ai与aj的乘积
2.4.3 (C,s[i+j]=slong+2×S;//与低段运算结果的进位相加
2.4.4 (C2,s[i+j]=m×p[j]+s[i+j]+C2.//32比特中间段归约
2.5 (prevcar,s[i+t])=C+2×C1+C2+s[i+t]+prevcar;//存储最高32比特
3.s[2t]=s[2t]+prevcar;//存储最高位的进位
4.For i from 0 to t-1 do:s[i]←s[i+t]  //将运算结果移至低t个单元
5.If s[2t]!=0//若进位不等于0
1.1 C=1;//初始化临时变量
1.2 For i from 0 to t-1 do://逐段进行进位纠正
计算(C,S)=s[i]+~p[i]+C;//进位纠正
令s[i]←S.//存储32比特进位
6.Return((st-1,…,s1,s0))  //返回运算结果
其中,C,C1,C2,S都是32比特的字,(C,S)是C,S的连接,它是64比特;p’[0]=-p[0]-1 mod 232,其中p[0]是192比特素数p的最低32比特(最低的字)。
◆Montgomery模归约算法:
输入:c=(c2t-1,…,c1,c0)
输出:r=cR-1 mod p.
1.For i from 0 to t-1 do://归约
1.1 C=0;//初始化临时变量
1.2 m=ci*p’[0];//计算每段归约值
1.3 Forj from 0 to t-1 do://逐段归约
计算(C,S)=ci+j+m*p[j]+C;//32比特中间结果归约
1.4 (prevcar,s[i+t])=C+s[i+t]+prevcar;//存储最高32比特
2.For i from 0 to t-1 do:c[i]←c[i+t]  //将运算结果移至低t个单元
3.If prevcar!=0  //若进位不等于0
3.1 C=1;//初始化临时变量
3.2 For i from 0 to t-1 do://逐段进行进位纠正
计算(C,S)=c[i]+~p[i]+C;//进位纠正
令r[i]←S  //存储32比特进位
4.Return((rt-1,…,r1,r0))  //返回运算结果
◆Montgomery求逆算法:
考虑到利用硬件电路板上的Montgomery乘法器资源,因此本实施例考虑用费马小定理实现有限域中的求逆运算,即b=ap-2(mod p)。该算法在有Montgomery乘法器的硬件电路板上的执行时间约为二元扩展欧几里得(Euclid)算法执行时间的70%。
输入:整数a∈[0,p-1],a=(at-1,at-2,…,a1,a0)
输出:b=a-1 mod p.
1. a=a·R mod p;//将a变换到Montgomery域
2. x=1·R mod p;//将1变换到Montgomery域
3.For i from j-1 down to 0 do://计算模指数
3.1  x=MontMult( x, x);//模平方运算
3.2 If ei=1 then  x=MontMult( x, a);
//如果p-2的当前比特是1则执行模乘运算
4.Return b=MontMult( x,1).//返回运算结果至素数域
◆除法:
有限域中的除法运算是乘法和求逆的组合,本领域普通技术人员能够根据本实施例中关于乘法与求逆的描述,实现本发明的除法运算,因此,在本实施例中不再详细描述。
(二)在利用Montgomery算数实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,本实施例采用优化的点加与倍点算法实现群运算,调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
对于群运算,本实施例对IEEEP1363标准中的点加以及倍点算法进行了优化,采用了与IEEEP1363标准(IEEEP1363标准的参考文献:IEEE std1363-2000:Standard specifications for public-key cryptography,2000,standards.ieee.org/catalog/oils/busarch.html)中不同的运算顺序,从而使得算法所需要的临时变量最少,优化算法如下:
◆点加(elliptic_add)
GF(p)上椭圆曲线y2=x3+ax+b的点加公式的Modified-Jacobian坐标形式是:
P = ( X 1 , Y 1 , Z 1 , aZ 1 4 ) , Q = ( X 2 , Y 2 , Z 2 , aZ 2 4 ) , P + Q = ( X 3 , Y 3 , Z 3 , aZ 3 4 )
这里 U 1 = X 1 Z 2 2 , U 2 = X 2 Z 1 2 , S 1 = Y 1 Z 2 3 , S 2 = Y 2 Z 1 3 , H=U2-U1,T=S2-S1,X3=-H3-2U1H2+T2,Y3=-S1H3+T(U1H2-X3),Z3=Z1Z2H,
aZ 3 4 = a ( Z 3 ) 4 .
其算法如下:
输入:p,a,b,Qin=(X,Y,Z),P=(X2,Y2).
输出:Qout=(X,Y,Z,aZ4)=Qin+P.
1.If(P==O)       //判断是否点P是无穷远点
     aZ4=a*Z4 if necessary    //需要时计算aZ4的值
     return Qout    //返回点加结果
2.If(Z==0)       //判断是否点Qin是无穷远点
     Qout=P       //点加结果为P
     return Qout   //返回点加结果
3.aZ4=Z2        //计算Z2
4.T1=X2*aZ4    //计算U2=X2Z2
5.T1=T1-X       //计算H=U2-U1
6.aZ4=Z*aZ4     //计算Z3
7.aZ4=Y2*aZ4   //计算Y2=Y2Z3
8.aZ4=aZ4-Y     //计算T=S2-S1
9.Z=Z*T1        //计算Z3=ZH
10.If(T1==0)     //如果U2=U1
      If(aZ4==0)   //如果P=Qin
      Qout=P      //初始化Qout
      Double(Qout)     //此时计算结果为2P
      return Qout     //返回点加结果
else              //此时P=-Qin
    Z=0          //此时计算结果为无穷远点
    aZ4=0       //此时计算结果为无穷远点
    return Qout  //返回点加结果
11. T 2 = T 1 2             //计算H2
12.T1=T1*T2     //计算H3
13.Y=T1*Y        //计算S1H3
14.T2=X*T2      //计算U1H2
15.X=(aZ4)2     //计算T2
16.X=X-T1        //计算T2-H3
17.X=X-T2        //计算T2-U1H2-H3
18.X=X-T2        //计算X3=T2-2U1H2-H3
19.T2=T2-X      //计算U1H2-X3
20.T2=aZ4*T2    //计算T(U1H2-X3)
21.Y=T2-Y       //计算Y3=T(U1H2-X3)-S1H3
22.aZ4=Z2       //计算Z2
23.aZ4=(aZ4)2  //计算Z4
24.If(a==p-3)  //如果a=p-3
      aZ4=0-3aZ4    //计算-3Z4
    else
      aZ4=a*aZ4     //计算aZ4
这个算法需要9次域乘法、5次域平方和2个临时变量。
◆倍点(elliptic_doubl)
GF(p)上椭圆曲线y2=x3+ax+b的倍点公式的Modified-Jacobian坐标形式是:
Q in = ( X 1 , Y 1 , Z 1 , a Z 1 4 ) , Q out = 2 Q in = ( X 3 , Y 3 , Z 3 , aZ 3 4 )
这里: S = 4 X 1 Y 1 2 , U = 8 Y 1 4 , M = 3 X 1 2 + ( aZ 1 4 ) , T=M2-2S,X3=T,Y3=M(S-T)-U,Z3=2Y1Z1 aZ 3 4 = 2 U ( aZ 1 ) 4
其算法如下:
输入:p,a=-3,b,Qin=(X,Y,Z,aZ4).
输出:Qout=(X,Y,Z,aZ4)=2 Qin.
1.If(Z==0)return Qout  //如果Qin是无穷远点输出结果
2.T1=2Y              //计算2Y
3.Z=T1*Z             //计算Z3=2YZ
4.Y=Y2                   //计算Y2
5.T1=2X              //计算2X
6.T1=2T1                 //计算4X
7.T1=T1*Y           //计算S=4XY2
8.T2=X2                 //计算X2
9. X=2T2                //计算2X2
10.T2=X+T2             //计算3X2
11.T2=T2+aZ4           //计算M=3X2+aZ4
12. X = T 2 2          //计算M2
13.X=X-T1             //计算M2-S
14.X=X-T1             //计算X3=T=M2-2S
15.T1=T1-X        //计算S-T
16.T2=T2*T1           //计算M(S-T)
17.Y=2Y           //计算2Y2
18.Y=Y2               //计算4Y4
19.Y=2Y           //计算U=8Y4
20.T1=2Y          //计算2U
21.aZ4=T1*aZ4        //计算2U(aZ4)
22.Y=T2-Y        //计算Y3=M(S-T)-U
本实施例选取的a=p-3,上面算法仅需4次域乘法以及4次域平方。
(三)实现所述椭圆曲线密码系统的核心运算:标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。所述标量乘模块中的运算采用NAF随机标量乘算法。
对于标量乘算法,考虑到硬件实现标量乘算法时是采用有限状态机对标量的状态进行编码的,因此为了减少有限状态机控制逻辑的复杂性以及存储空间的大小本实施例对标量进行了NAF编码并采用了下面的随机点标量乘算法,该算法无需进行预计算。
◆随机点标量乘
随机点标量乘算法对标量进行NAF(non-adjacent form)编码,下面将这一算法描述如下:
输入:整数 k = Σ i = 0 l - 1 b i 2 i , 其中bi∈{0,1}且bl=bl+1=0,椭圆曲线上的点P
输出:椭圆曲线上的点Q,Q=kP
/*对标量进行NAF(non-adjacent form)编码: 其中ki∈{0,±1}*/
1.α←0    //初始化临时变量
2.For i from 0 to l do://NAF(non-adiacent form)编码
Figure A20051011551200233
ki←bi+α-2β,//计算NAF编码并存储在ki
α←β,
/*由标量的NAF表示计算标量乘*/
3.For i from l down to 0 do://计算标量乘
3.1.Q←2Q    //倍点运算
3.2.If ki≠0 then://ki不为零时需要执行点加运算
        If ki==1,then Q←Q+P;//ki=1时执行Q+P
        Else Q←Q-P              //ki=-1时执行Q+(-P)
Return(Q)              //返回标量乘运算结果
(四)用于调用标量乘算法模块,完成对消息的数字签名与验证过程。其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
DH密钥协商算法:
EC-Diffie-Hellman密钥协商是从一个主体的私钥和另一个主体的公钥导出一个共享的秘密值,此处两个主体具有相同的EC域参数。如果双方能够正确的执行完该协议,则他们将得到相同的结果。该算法可被一些方案调用以产生一个共享的秘密钥,其中,所输入的密钥是有效的。
输入:
——EC基本参数q,a,b,n和G以及相应的密钥s和W′(对于s和W′,基本参数应该一样)
——主体自己的私钥s
——另一主体的公钥W′
其中:私钥s,EC基本参数q,a,b,r和G,以及公钥W′是有效的;所有的密钥都和同一基本参数相关。
输出:导出的共享秘密值z∈GF(q);或者“error”
操作.共享的秘密值z必须按照以下步骤进行:
1.计算椭圆曲线点P=s W′.
2.如果P=O输出“error”并停止。
3.令z=xP,既点P的x坐标。
4.输出z作为共享的秘密钥。
(五)调用标量乘算法模块,完成对消息的数字签名与验证过程。其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
椭圆曲线数字签名与验证算法(ECDSA):
ECDSA(Elliptic Curve Digital Signature Algorithm)是类似于DSA(DigitalSignature Algorithm)的一种基于椭圆曲线的数字签字与验证算法。不象一般的离散对数问题和整数分解问题,椭圆曲线离散对数问题没有亚指数算法,正由于这点,使得采用椭圆曲线离散对数的算法的每比特强度在实质上更强了。
ECDSA的主要参数包括:定义在有限域GF(p)上的椭圆曲线E,E上的GF(p)-有理点的个数#E(GF(p))可被一个大素数n整除,一个基点G∈E(GF(p))。我们可记为:D=(p,a,b,G,n,h),(d,Q),Hash函数H。
将D=(p,a,b,G,n,h),Hash函数H,Q公开,d保密。
◆签名生成:
签名者A利用上面的参数及公私钥对如下对一消息m进行签名:
1.随机或伪随机地选择一个整数 k ∈ R Z n * ;
2.计算kG=(x1,y1),r=x1 mod n,如果r=0,则返回到1;
3.计算k-1 mod n;
4.计算e=H(m);
5.计算s=k-1(e+dr)mod n,如果s=0,则返回到1。
其中,(r,s)是A对消息m的签名。
◆签名验证:
验证者B如下验证(r,s)是A对消息m的签名:
1.验证r,s是[1,n-1]中的整数;
2.计算e=H(m);
3.计算w=s-1 mod n;
4.计算u1=ew mod n,u2=rw mod n;
5.计算X=uiG+u2Q=(x1,y1),如果X=O,则拒绝这个签名,否则,计算v=x1 mod n,当且仅当v=r时接受这个签名。
本发明提供了一种适合硬件实现的椭圆曲线密码系统及实现方法,其采用了Montgomery算数来实现大素数域中的各种运算,实现椭圆曲线密码系统的所需所有算数运算能够在Montgomery域中进行:模加/模减、模乘以及求逆运算,无需显示执行耗时的模归约运算,使其同时适合软件与硬件实现。
本实施例是为了使本领域普通技术人员理解而对本发明所进行的详细描述,但本领域普通技术人员可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改,其均在本发明的保护范围内。

Claims (22)

1.一种椭圆曲线密码系统,其特征在于,包括有限域算法模块,用于利用Montgomery算术实现大素数域中的运算。
2.根据权利要求1所述的椭圆曲线密码系统,其特征在于,所述的有限域算法模块包括模加运算模块、模减运算模块、模乘运算模块、模平方运算模块、模归约运算模块、求逆运算模块。
3.根据权利要求2所述的椭圆曲线密码系统,其特征在于,所述的模乘运算模块为CIOS-Montgomery乘法算法模块。
4.根据权利要求3所述的椭圆曲线密码系统,其特征在于,所述的模平方运算模块为SRCIL-Montgomery平方算法模块。
5.根据权利要求4所述的椭圆曲线密码系统,其特征在于,所述的求逆运算模块为指数求逆算法模块。
6.根据权利要求1~5任一项所述的椭圆曲线密码系统,其特征在于,还包括点加与倍点算法模块,用于在利用Montgomery算术实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,其调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
7.根据权利要求6所述的椭圆曲线密码系统,其特征在于,所述点加运算与倍点运算为优化点加与倍点算法运算。
8.根据权利要求7所述的椭圆曲线密码系统,其特征在于,还包括标量乘算法模块,用于实现所述椭圆曲线密码系统的核心运算:标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
9.根据权利要求8所述的椭圆曲线密码系统,其特征在于,所述标量乘运算采用NAF随机标量乘算法。
10.根据权利要求9所述的椭圆曲线密码系统,其特征在于,还包括DH密钥协商算法模块,用于调用标量乘算法模块,完成密钥协商,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
11.根据权利要求10所述的椭圆曲线密码系统,其特征在于,还包括数字签名与验证模块,用于调用标量乘算法模块,完成对消息的数字签名与验证过程,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
12.一种椭圆曲线密码系统的实现方法,其特征在于,包括下列步骤:
利用Montgomery算数实现椭圆曲线密码系统中的大素数域中的运算。
13.根据权利要求12所述的实现方法,其特征在于,所述运算包括模加运算、模减运算、模乘运算、模平方运算、模归约运算、求逆运算。
14.根据权利要求13所述的实现方法,其特征在于,所述模乘运算模块为CIOS-Montgomery乘法算法。
15.根据权利要求14所述的实现方法,其特征在于,所述的模平方运算为SRCIL-Montgomery平方算法。
16.根据权利要求15所述的实现方法,其特征在于,所述的求逆运算模块为指数求逆算法模块。
17.根据权利要求12~16所述的实现方法,其特征在于,还包括下列步骤:
在利用Montgomery算数实现有限域算法的基础上实现椭圆曲线上的点加运算与倍点运算,其调用有限域算法模块,输入参数为Montgomery域中元素,因而运算结果依然在Montgomery域中。
18.根据权利要求17所述的实现方法,其特征在于,所述点加运算与倍点运算为优化点加与倍点算法运算。
19.根据权利要求18所述的实现方法,其特征在于,还包括下列步骤:标量乘运算,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
20.根据权利要求19所述的实现方法,其特征在于,所述标量乘运算采用NAF随机标量乘算法。
21.根据权利要求20所述的实现方法,其特征在于,还包括下列步骤:
调用DH密钥协商算法模块,通过标量乘算法模块,完成密钥协商,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
22.根据权利要求21所述的实现方法,其特征在于,还包括下列步骤:
调用数字签名与验证模块,通过标量乘算法模块,完成对消息的数字签名与验证过程,其输入参数为素数域中元素,运算前转化为Montgomery域中,运算结果转化回素数域中。
CNB2005101155123A 2005-11-04 2005-11-04 一种椭圆曲线密码系统及实现方法 Expired - Fee Related CN100414492C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101155123A CN100414492C (zh) 2005-11-04 2005-11-04 一种椭圆曲线密码系统及实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101155123A CN100414492C (zh) 2005-11-04 2005-11-04 一种椭圆曲线密码系统及实现方法

Publications (2)

Publication Number Publication Date
CN1831754A true CN1831754A (zh) 2006-09-13
CN100414492C CN100414492C (zh) 2008-08-27

Family

ID=36994081

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101155123A Expired - Fee Related CN100414492C (zh) 2005-11-04 2005-11-04 一种椭圆曲线密码系统及实现方法

Country Status (1)

Country Link
CN (1) CN100414492C (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009026771A1 (fr) * 2007-08-24 2009-03-05 Guan, Haiying Procédé pour négocier une clé, chiffrer et déchiffrer des informations, signer et authentifier les informations
CN101782845A (zh) * 2009-01-20 2010-07-21 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN101971138A (zh) * 2008-02-15 2011-02-09 汤姆森许可贸易公司 用于计算椭圆曲线上的点的倍数的设备和方法
CN101378319B (zh) * 2008-10-08 2011-07-06 东南大学 一种组播通讯源的认证方法
CN101252431B (zh) * 2007-09-06 2011-07-27 广州信睿网络科技有限公司 一种通用的数字签名方案的实现方法
CN101582170B (zh) * 2009-06-09 2011-08-31 上海大学 一种基于椭圆曲线密码体制的遥感图像加密方法
CN102479171A (zh) * 2010-11-25 2012-05-30 上海华虹集成电路有限责任公司 一种实现二进制域超奇异曲线上Eta双线性对的方法
CN101547089B (zh) * 2008-03-28 2012-07-25 上海爱信诺航芯电子科技有限公司 集成电路中素数域椭圆曲线密码算法的实现方法
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN102866878A (zh) * 2007-12-28 2013-01-09 英特尔公司 加速对特性2椭圆曲线密码系统的计算的方法
WO2013078970A1 (zh) * 2011-11-30 2013-06-06 西安西电捷通无线网络通信股份有限公司 基于sm2密钥交换协议的密钥协商方法及装置
CN104468125A (zh) * 2014-12-24 2015-03-25 江西倍康信息技术有限公司 基于国密算法的移动互联网信息通信加密方法
CN104917608A (zh) * 2015-05-19 2015-09-16 清华大学 一种密钥抗功耗攻击的方法
CN105337734A (zh) * 2014-08-05 2016-02-17 英赛瑟库尔公司 包括错误检测的椭圆曲线加密方法
CN105610583A (zh) * 2014-11-04 2016-05-25 上海华虹集成电路有限责任公司 用于抵御错误曲线攻击的ecdsa方法
CN106100844A (zh) * 2016-05-24 2016-11-09 天津大学 基于点盲化方法的优化自动双线性对加密方法及装置
CN106161022A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 基于ecc密码模块的防攻击方法及装置
CN102790673B (zh) * 2011-05-17 2017-05-10 上海华虹集成电路有限责任公司 一种适用于ecc算法的抗错误攻击的方法
CN106888088A (zh) * 2017-03-29 2017-06-23 中国人民解放军信息工程大学 椭圆曲线密码快速实现方法及其装置
CN108008932A (zh) * 2016-10-28 2018-05-08 畅想科技有限公司 除法合成
CN108512665A (zh) * 2017-02-28 2018-09-07 塞尔蒂卡姆公司 在椭圆曲线密码系统中生成椭圆曲线点
CN110663215A (zh) * 2017-03-17 2020-01-07 皇家飞利浦有限公司 在白盒场景中的椭圆曲线点乘设备和方法
CN111835517A (zh) * 2020-06-29 2020-10-27 易兆微电子(杭州)股份有限公司 一种双域椭圆曲线点乘硬件加速器
CN113783702A (zh) * 2021-09-28 2021-12-10 南京宁麒智能计算芯片研究院有限公司 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN114650135A (zh) * 2022-04-01 2022-06-21 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN114879934A (zh) * 2021-12-14 2022-08-09 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法
CN118627046A (zh) * 2024-08-09 2024-09-10 信联科技(南京)有限公司 一种结合指定时间与隐私保护的批量认证方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116647318A (zh) * 2022-02-16 2023-08-25 瑞昱半导体股份有限公司 防御密码系统时间攻击的方法及密码系统处理电路

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999030458A1 (en) * 1997-12-05 1999-06-17 Secured Information Technology, Inc. Transformation methods for optimizing elliptic curve cryptographic computations
JP2001265218A (ja) * 2000-03-23 2001-09-28 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の演算方法及び装置と、演算プログラムを記録した記録媒体
JP2003216026A (ja) * 2002-01-18 2003-07-30 Sony Corp 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009026771A1 (fr) * 2007-08-24 2009-03-05 Guan, Haiying Procédé pour négocier une clé, chiffrer et déchiffrer des informations, signer et authentifier les informations
CN101252431B (zh) * 2007-09-06 2011-07-27 广州信睿网络科技有限公司 一种通用的数字签名方案的实现方法
CN102866878B (zh) * 2007-12-28 2016-09-28 英特尔公司 加速对特性2椭圆曲线密码系统的计算的方法
CN102866878A (zh) * 2007-12-28 2013-01-09 英特尔公司 加速对特性2椭圆曲线密码系统的计算的方法
CN101971138B (zh) * 2008-02-15 2014-08-20 汤姆森许可贸易公司 用于计算椭圆曲线上的点的倍数的设备和方法
CN101971138A (zh) * 2008-02-15 2011-02-09 汤姆森许可贸易公司 用于计算椭圆曲线上的点的倍数的设备和方法
CN101547089B (zh) * 2008-03-28 2012-07-25 上海爱信诺航芯电子科技有限公司 集成电路中素数域椭圆曲线密码算法的实现方法
CN101378319B (zh) * 2008-10-08 2011-07-06 东南大学 一种组播通讯源的认证方法
CN101782845A (zh) * 2009-01-20 2010-07-21 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN101782845B (zh) * 2009-01-20 2014-11-26 北京华大信安科技有限公司 一种椭圆曲线密码的高速运算装置和方法
CN101582170B (zh) * 2009-06-09 2011-08-31 上海大学 一种基于椭圆曲线密码体制的遥感图像加密方法
CN102479171A (zh) * 2010-11-25 2012-05-30 上海华虹集成电路有限责任公司 一种实现二进制域超奇异曲线上Eta双线性对的方法
CN102761415B (zh) * 2011-04-27 2015-04-08 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN102761415A (zh) * 2011-04-27 2012-10-31 航天信息股份有限公司 p元域SM2椭圆曲线的数字签名生成、验证及混合系统
CN102790673B (zh) * 2011-05-17 2017-05-10 上海华虹集成电路有限责任公司 一种适用于ecc算法的抗错误攻击的方法
WO2013078970A1 (zh) * 2011-11-30 2013-06-06 西安西电捷通无线网络通信股份有限公司 基于sm2密钥交换协议的密钥协商方法及装置
US9313026B2 (en) 2011-11-30 2016-04-12 China Iwncomm Co., Ltd. Key negotiation method and apparatus according to SM2 key exchange protocol
CN105337734A (zh) * 2014-08-05 2016-02-17 英赛瑟库尔公司 包括错误检测的椭圆曲线加密方法
CN105610583A (zh) * 2014-11-04 2016-05-25 上海华虹集成电路有限责任公司 用于抵御错误曲线攻击的ecdsa方法
CN105610583B (zh) * 2014-11-04 2018-10-26 上海华虹集成电路有限责任公司 用于抵御错误曲线攻击的ecdsa方法
CN104468125A (zh) * 2014-12-24 2015-03-25 江西倍康信息技术有限公司 基于国密算法的移动互联网信息通信加密方法
CN106161022A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 基于ecc密码模块的防攻击方法及装置
CN104917608A (zh) * 2015-05-19 2015-09-16 清华大学 一种密钥抗功耗攻击的方法
CN104917608B (zh) * 2015-05-19 2018-04-20 清华大学 一种密钥抗功耗攻击的方法
CN106100844A (zh) * 2016-05-24 2016-11-09 天津大学 基于点盲化方法的优化自动双线性对加密方法及装置
CN106100844B (zh) * 2016-05-24 2020-08-18 天津大学 基于点盲化方法的优化自动双线性对加密方法及装置
CN108008932B (zh) * 2016-10-28 2023-06-20 畅想科技有限公司 除法合成
CN108008932A (zh) * 2016-10-28 2018-05-08 畅想科技有限公司 除法合成
CN108512665B (zh) * 2017-02-28 2023-06-16 黑莓有限公司 在椭圆曲线密码系统中生成椭圆曲线点
CN108512665A (zh) * 2017-02-28 2018-09-07 塞尔蒂卡姆公司 在椭圆曲线密码系统中生成椭圆曲线点
CN110663215A (zh) * 2017-03-17 2020-01-07 皇家飞利浦有限公司 在白盒场景中的椭圆曲线点乘设备和方法
CN110663215B (zh) * 2017-03-17 2024-03-08 皇家飞利浦有限公司 在白盒场景中的椭圆曲线点乘设备和方法
CN106888088A (zh) * 2017-03-29 2017-06-23 中国人民解放军信息工程大学 椭圆曲线密码快速实现方法及其装置
CN111835517A (zh) * 2020-06-29 2020-10-27 易兆微电子(杭州)股份有限公司 一种双域椭圆曲线点乘硬件加速器
CN111835517B (zh) * 2020-06-29 2023-12-22 易兆微电子(杭州)股份有限公司 一种双域椭圆曲线点乘硬件加速器
CN113783702A (zh) * 2021-09-28 2021-12-10 南京宁麒智能计算芯片研究院有限公司 一种椭圆曲线数字签名与验签的硬件实现方法和系统
CN114879934A (zh) * 2021-12-14 2022-08-09 中国科学院深圳先进技术研究院 一种高效的零知识证明加速器及方法
CN114650135A (zh) * 2022-04-01 2022-06-21 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN114650135B (zh) * 2022-04-01 2024-01-02 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN118627046A (zh) * 2024-08-09 2024-09-10 信联科技(南京)有限公司 一种结合指定时间与隐私保护的批量认证方法及系统

Also Published As

Publication number Publication date
CN100414492C (zh) 2008-08-27

Similar Documents

Publication Publication Date Title
CN1831754A (zh) 一种椭圆曲线密码系统及实现方法
CN1148643C (zh) 模幂运算装置
CN1242587C (zh) 高速、灵活的加密系统的方法及设备
CN1265280C (zh) 扩展整数的计算域的范围
CN1345495A (zh) 实现椭圆曲线类型公共密钥加密算法的电子部件中的对策方法
CN1235446A (zh) 椭圆曲线变换装置、利用装置和利用系统
CN1734526A (zh) 数据变换装置和数据变换方法
CN1203431C (zh) 公用密钥加密装置
CN1280726A (zh) 优化椭圆曲线密码计算的变换方法
CN1921382A (zh) 一种基于aes算法的加解密方法及加解密器
CN1205538C (zh) 用于多精度整数算术运算的装置
CN1941699A (zh) 密码方法、主机系统、可信平台模块和计算机安排
CN1280755C (zh) 系统大规模集成电路与电子设备
CN1251715A (zh) 有限域离散对数密码系统的割圆多项式结构
CN1312630A (zh) 基于分块加密方式的加密装置与方法及译码装置与方法
CN1871810A (zh) 认证系统和远隔分散保存系统
CN101061526A (zh) 密码处理运算装置
CN1922643A (zh) 加密系统、加密装置、解密装置、程序和集成电路
CN1267816C (zh) 信息安全装置,质数生成装置,和质数生成方法
CN1605059A (zh) 蒙哥马利乘法器中的流水线内核
CN1269680A (zh) 交织器装置以及用于交织数据集的方法
CN1841443A (zh) 计算方法、计算设备以及计算机程序
CN1878059A (zh) 一种分组加密及解密算法
CN1957384A (zh) 电子元件和数据处理方法
CN1921381A (zh) 密钥更新方法、加密处理方法、密码系统以及终端装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SICHUAN CHANGHONG ELECTRIC CO., LTD.

Free format text: FORMER OWNER: BEIJING POWER DIGITAL TECHLABS CO., LTD.

Effective date: 20100609

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100016 ROOM AE26-28, 2/F, BUILDING 51, NO.14, JIUXIANQIAO ROAD, CHAOYANG DISTRICT, BEIJING TO: 621000 NO.35, MIANXING EAST ROAD, MIANYANG CITY HIGH-TECH ZONE, SICHUAN PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20100609

Address after: 621000 Mianyang province high tech Zone, East Hing Road, No. 35 cotton

Patentee after: Sichuan Changhong Electrical Appliance Co., Ltd.

Address before: 100016, room two, building 51, building 14, Jiuxianqiao Road, Chaoyang District, Beijing,

Patentee before: Beijing Puaode Ditial Technology Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080827

Termination date: 20201104

CF01 Termination of patent right due to non-payment of annual fee