CN103475473B - 数字签名方法和设备、数字签名中密码运算方法和服务器 - Google Patents
数字签名方法和设备、数字签名中密码运算方法和服务器 Download PDFInfo
- Publication number
- CN103475473B CN103475473B CN201310377462.0A CN201310377462A CN103475473B CN 103475473 B CN103475473 B CN 103475473B CN 201310377462 A CN201310377462 A CN 201310377462A CN 103475473 B CN103475473 B CN 103475473B
- Authority
- CN
- China
- Prior art keywords
- parameter
- signature
- digital signature
- random number
- user side
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种数字签名方法和设备,该方法包括:接收服务器发送的参数(e,Xe),其中,Xe=eG,e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;根据所述参数(e,Xe)和本地持有的参数(ki‑1,Xi‑1)获取签名参数(ki,Xi),其中,Xi‑1=ki‑1G;利用签名参数(ki,Xi)执行数字签名。另外还提供一种数字签名中密码运算方法和服务器,该方法包括:依据设定周期产生真随机数e;计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;将参数(e,Xe)发送至执行签名的用户端;其中,用户端为根据参数(e,Xe)和参数(ki‑1,Xi‑1)获取签名随机数(ki,Xi)并根据(ki,Xi)执行数字签名的客户端。通过本发明技术,在将数字签名算法的外包处理时,避免了服务网络获得用户的密码运算的隐私泄漏,保证了外包密码运算的隐私性,确保签名的安全。
Description
技术领域
本发明涉及密码学技术领域,特别是涉及一种数字签名方法和设备、数字签名中密码运算方法和服务器。
背景技术
椭圆曲线密码体制(ECC)的基本原理是在一个预先定义的椭圆曲线上面执行点乘运算其中点G是固定参数,k是随机产生的大数。为了保证数字签名算法自身的安全性,要求k是真正的物理随机数。点乘运算Q=kG可以分解为点加、倍点、模乘等基本运算,这些基本运算都建立在有限域Fp的数学基础上。
有限域Fp上的椭圆曲线方程可以存在多种形式,其中典型的椭圆曲线方程形如y2=x3+ax+b(4a3+27b2≠0mod p),在该椭圆曲线上的所有点及无穷远点∞构成椭圆曲线点集E(Fp)={(x,y)|x,y∈Fp,y2=x3+ax+b}∪{∞},椭圆曲线点集E(Fp)的阶为n=#E(Fp)。在椭圆曲线上定义点加运算,则椭圆曲线点集E(Fp)构成一个Abel群。在点加运算的基础上,可以导出倍点运算、点乘运算,其中点乘运算(kG)是椭圆曲线密码体制的核心运算。椭圆曲线上的运算可以采用不同的坐标系来表达,常用的坐标系是仿射坐标系和Jacobi投影坐标系,以下分别加以介绍。
仿射坐标系:平面上过一定点O作两条相交的坐标轴x和y,它们的交角是ω。以定点O作为原点,在每条坐标轴上定义长度单位(分别是OE1、OE2),这样就在平面上建立了一个仿射坐标系。对于平面上任一点M,过M作两坐标轴的平行线,与坐标轴分别交于M1、M2,它们在两轴的坐标分别标记为x、y,于是点M就对应有序数组(x,y)。
Jacobi投影坐标系:Jacobi投影坐标系下的点(X,Y,Z)与仿射坐标系下的点(x,y)一一对应。给定仿射坐标系下的座标(x,y),转换成Jacobi投影坐标系下的坐标为(X,Y,Z),其中X=x、Y=y、Z=1;给定Jacobi投影坐标系下的坐标(X,Y,Z),转换成仿射坐标系下的座标为(x,y),且满足x=X/Z2、y=Y/Z3。同时,仿射坐标系下的无穷远点∞和Jacobi投影坐标系下的点(1,1,0)对应。
在椭圆曲线上任取两点P(x1,y1)、Q(x2,y2),令O表示无穷远点,定义点加运算R(xR,yR)=P+Q,其运算规则如下:
(1)P+O=O+P=P;
(2)-P=(x1,-y1),P+(-P)=O;
(3)若Q≠-P,则
其中,当x1≠x2时当x1=x2时
在椭圆曲线上任取点P(x,y),令O表示无穷远点,定义倍点运算R(xR,yR)=2P。倍点运算等同于点加运算中P=Q,其运算规则如下:
(1)若y=0,则R=2P=O;
(2)若y≠0,则其中
上述点加、倍点运算公式均定义在有限域Fp上,其中包含有限域上的加法、乘法和求逆等运算。在有限域Fp上,加法、乘法均为模p运算,譬如任意x,y∈Fp,则加法定义为z=(x+y)mod p,z∈Fp。所述求逆运算是指给出任意点x∈Fp,找出另一个点y∈Fp使得条件xy=1满足。在有限域Fp上,求逆运算比乘法运算复杂度更高,而转换成Jacobi投影坐标则可以避免求逆运算,因此在工程应用中更多地采用Jacobi投影坐标系。
Jacobi投影坐标系中,在椭圆曲线上任取两点P(X1,Y1,Z1)、Q(X2,Y2,Z2),点加运算R(X3,Y3,Z3)=P+Q的运算规则为:
Jacobi投影坐标系中,在椭圆曲线上任取点P(X1,Y1,Z1),倍点运算R(X3,Y3,Z3)=2P的运算规则为:
在上述数学基础上,可以执行点乘运算对于任意整数k=(kt-1,…,k1,k0)2,G∈E(Fp),令O表示无穷远点,kG按以下步骤计算:
(1)Q←O;
(2)For i from 0 to t-1 do
a)If ki=1 then Q←Q+G
b)G←2G
(3)输出Q。
可以看出,利用点加、倍点运算即可完成点乘运算Q=kG。
基于点乘运算,可以构建椭圆曲线密码体制(ECC)的其他算法及协议,譬如数字签名的产生及其验证算法(ECDSA、SM2等)。数字签名算法具有很多实际用途,可以在通信协议中表明用户的身份,也可以用在X.509数字证书中用来证实该证书是有特定数字认证机构(CA)所签发。
在主流的数字签名算法(如DSA、ECDSA等)中,签名输出结果与用户私钥具有线性关系。要保证数字签名算法的安全性,必须满足两个基本条件:
(1)保护用于签名的私钥d;
(2)保证参数k是真随机数,并且不被泄露。
其中,随机数k与私钥d有同样的保密要求,因为攻击者获知了随机数k,则可以反过来计算出私钥d。如果泄露私钥及相关参数,会给用户带来不可估量的损失,因此必须确保随机数k安全地产生、存储、销毁。
由于数字签名的复杂度高,对于本身不具备大规模运算能力的节点(如某些嵌入式设备),则可能需要将数字签名算法的执行过程外包给所连接的服务网络。但将密码学运算进行外包时,则可能会导致服务网络获得用户的密码运算的隐私泄露,难以保证运算的隐私性,无法确保签名的安全。
发明内容
基于此,有必要针对现有技术将公钥密码体制中的密码学运算进行外包时,难以保证运算的隐私性的问题,提供一种数字签名方法和设备。
一种数字签名方法,包括如下步骤:
接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;
根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),具体包括:将所述参数(e,Xe)和参数(ki-1,Xi-1)进行线性操作获得签名参数(ki,Xi);其中,ki-1为随机数,Xi-1=ki-1G;
利用所述签名参数(ki,Xi)执行数字签名。
一种数字签名设备,包括:
参数接收模块,用于接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;
签名参数获取模块,用于根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),具体包括:将所述参数(e,Xe)和参数(ki-1,Xi-1)进行线性操作获得签名参数(ki,Xi);其中,ki-1为随机数,Xi-1=ki-1G;
数字签名模块,用于利用所述签名参数(ki,Xi)执行数字签名。
上述数字签名方法和设备,由执行数字签名的用户端本地和执行外包的运算服务器共同导出随机数,密码学运算部分同时外包给服务器来完成,在用户端根据共同导出的随机数获取签名参数并完成数字签名过程,在将数字签名算法的外包处理时,避免了服务网络获得用户的密码运算的隐私泄漏,保证了外包密码运算的隐私性,确保签名的安全。
另外,有必要针对上述导致数字签名的成本较高、大量用户并发执行签名运算时处理能力差的问题,提供一种数字签名中密码运算方法和服务器。
一种数字签名中密码运算方法,包括如下步骤:
依据设定周期产生真随机数e;
计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;
将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)进行线性操作获取签名参数(ki,Xi),并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
一种数字签名中密码运算服务器,包括:
随机数产生模块,用于依据设定周期产生真随机数e;
参数获取模块,用于计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;
参数发送模块,用于将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)进行线性操作获取签名参数(ki,Xi),并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
上述数字签名中密码运算方法和服务器,由外包的服务网络产生真随机数并完成密码学运算部分,将运算结果发送至执行签名的用户端,执行数字签名的用户端根据自身在本地持有的参数(ki-1,Xi-1)和服务网络发送的参数(e,Xe)获取签名参数(ki,Xi),从而利用签名参数(ki,Xi)完成数字签名过程,在将数字签名算法的外包处理时,避免了服务网络获得用户的密码运算的隐私泄漏,保证了外包密码运算的隐私性,可以确保签名的安全。
附图说明
图1为一个实施例的数字签名方法的流程图;
图2为一种椭圆曲线密码体制中的ECDSA算法计算签名值的流程图;
图3为一种基于本发明的数字签名方法实现的SM2签名算法计算签名值的流程图;
图4为一个实施例的数字签名设备结构示意图;
图5为一个实施例的数字签名中密码运算方法流程图;
图6为一个实施例的数字签名中密码运算服务器的结构示意图。
具体实施方式
下面结合附图对本发明的数字签名方法的具体实施方式作详细描述。
参见图1所示,图1为一个实施例的数字签名方法的流程图,主要包括如下步骤:
步骤S101,接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元。
在本步骤中,所述服务器为执行外包的外包密码运算的服务器,该服务器可以持续产生真随机数e并计算Xe,当需要执行签名运算操作时,向服务器提出外包申请,在此过程中,可以设置为只需要验证身份,无需提交请求参数,即可以接收由服务器返回已计算和存储的参数(e,Xe),为了避免第三方获得参数(e,Xe)并进行分析攻击,参数需在预先建立的安全信道中传递。
步骤S102,根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),其中,ki-1为随机数,Xi-1=ki-1G。
在本步骤中,将执行签名用户端本地持有的参数(ki-1,Xi-1)与所接收的服务器发送参数(e,Xe)进行相关运算,得到用于执行签名的签名参数(ki,Xi)。
在一个实施例中,对于参数(ki-1,Xi-1),第一次进行签名时(i=1),则参数(ki-1,Xi-1)为(k0,X0),k0为执行签名的用户端初始化阶段产生的高质量的真随机数,在此后的签名过程中,参数(ki-1,Xi-1)为上一次签名所使用的签名参数。
本实施例中,除了初始化阶段之外,用户端无需持有高质量的真随机数,无需配备专用的真随机数发生器,仅需要执行简单的运算,如若干次点加、倍点运算,避免了复杂的点乘运算操作。
对于真随机数k0及其相关参数(k0,X0),执行签名的用户端与服务器之间也可以通过执行标准协议(如ECDH)来导出共享密钥sk,由服务器计算Xsk=sk·G并将Xsk返回给用户端,使得用户端获得初始化的真随机数k0=sk及与其相关的参数(k0,X0)。在这种情况下,用户端无需配备专用的真随机数发生器,也能够产生高质量的真随机数k0及参数(k0,X0)。
步骤S103,利用所述签名参数(ki,Xi)执行数字签名。
在本步骤中,签名参数(ki,Xi)及签名私钥只在本地使用,确保了数字签名算法的安全性。
上述数字签名方法,由执行数字签名的用户端和服务器共同导出随机数,将密码学运算部分外包给服务器来完成,同时在用户端根据共同导出的随机数获取签名参数并完成数字签名过程,在将数字签名算法的外包处理时,避免了服务网络获得用户的密码运算的隐私泄漏,保证了外包密码运算的隐私性,确保签名的安全。
而且,执行签名的用户端无需配备专用的真随机数发生器,降低了签名成本、提高了签名效率。避免了复杂的点乘运算操作,降低了签名成本、提高了签名效率。而且签名私钥只在执行签名的用户端使用,也可以进一步确保数字签名算法的安全。
进一步地,由于服务器可以采用云计算技术进行动态扩展,具有海量计算能力、海量存储、动态扩展等技术优势,用来执行密码学运算的性价比更高,大量用户并发执行签名运算时处理能力强。
在一个实施例中,在步骤S103中获取签名参数的方法,可以包括如下:
将所述参数(e,Xe)和参数(ki-1,Xi-1)进行线性操作获得签名参数(ki,Xi);即
Γ:{(ki-1,Xi-1),(e,Xe)}→(ki,Xi)
其中,Γ表示为线性操作;
例如:
k1=2(k0+e),
X1=2(X0+Xe)=2(k0G+eG)=2(k0+e)G=k1G
通过上述线性操作得到签名参数(ki,Xi),用于执行签名运算。
在本实施例中,由执行签名的用户端和服务器分别导出的随机数通过一个线性操作,仅需要执行简单的运算即可获得签名参数,在避免了传递随机数导致的攻击和有效利用了服务器的运算能力的同时,避免了用户端要进行复杂的运算操作,降低了运算成本。
需要声明的是,在获取签名参数的方法中,并不限定于上述线性操作方式,也可以采用其它形式的运算操作来完成。
在一个实施例中,在步骤S103中获取签名参数的方法,还可以包括如下:
首先,获取并存储服务器返回的N个(e,Xe)的历史数据,其中N≥2。
然后,根据所述(e,Xe)的历史数据导出签名参数(kn,Xn),其中,n为当次签名对应的随机数序号,α为设定系数,k0为初始化的真随机数。
在本实施例中,通过计算可以得到(k1,X1)、(k2,X2)、……(kn,Xn),这样,服务器只需要按照设定速率产生真随机数e,并向各个执行签名的用户端发送e,用户端根据e即可以导出随机数kn并计算Xn,这样避免了在大量用户并发执行签名运算时导致服务器的运算负载过重,提高了运算效率。
为了更加清晰本发明的数字签名方法,下面列举基于本发明实现的根据ECDSA签名算法来计算签名值的应用实例。
参见图2所示,本应用实例中,是对于域参数D=(q,FR,a,b,G,n,h),使用密钥d对消息m签名,执行如下步骤:
步骤S201,接收服务器发送的参数(e,Xe),其中,Xe=eG,e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元。
步骤S202,根据参数(e,Xe)和参数(ki-1,Xi-1)计算签名参数(ki,Xi)。
步骤S203,将签名参数表达为坐标形式,Xi=kiG=(x1,y1),并将x1转换为整数
步骤S204,计算r=x1mod n,如果r=0则回到步骤S202,否则执行步骤S205。
步骤S205,计算k-1modn。
步骤S206,计算SHA-1(m),并将该位串转换为整数e,其中,SHA-1为安全哈希算法(Secure Hash Algorithm)。
步骤S207,计算s=k-1(e+dr)mod n,如果s=0,则回到步骤S202,否则执行步骤S208。
步骤S208,输出签名结果(r,s)。
为了更加清晰本发明的数字签名方法,下面列举基于本发明实现的根据国家密码管理局公布的SM2签名算法来计算签名值的应用实例。
步骤S301,接收服务器发送的参数(e,Xe),其中,Xe=eG,e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元。
步骤S302,根据参数(e,Xe)和参数(ki-1,Xi-1)计算签名参数(ki,Xi)。
步骤S303,将签名参数表达为坐标形式,Xi=kiG=(x1,y1)。
步骤S304,计算Hv(ZA||M),并将该位串转换为整数e,其中ZA是关于用户的可辨别标识、部分椭圆曲线系统参数和用户公钥的杂凑值,Hv代表消息摘要长度为v比特的密码杂凑函数,ZA=SHA256(ENTLA||IDA||a||b||xG||yG||xA||yA)。
步骤S305,计算r=(e+x1)mod n,如果r=0,则回到步骤S302,否则执行步骤S306。
步骤S306,计算s=((1+d)-1·(k-dr))mod n,如果s=0,则回到步骤S302,否则执行步骤S307。
步骤S307,输出签名结果(r,s)。
下面结合附图对本发明的数字签名设备的具体实施方式作详细描述。
参见图4所示,图4为一个实施例的数字签名设备结构示意图,主要包括:
参数接收模块,用于接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;
签名参数获取模块,用于根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),其中,ki-1为随机数,Xi-1=ki-1G;
数字签名模块,用于利用所述签名参数(ki,Xi)执行数字签名。
在一个实施例中,所述签名参数获取模块进一步用于将所述参数(e,Xe)和参数(k0,X0)进行线性操作获得签名参数(k,X)。
在一个实施例中,所述签名参数获取模块获取签名参数(ki,Xi)的方法包括:
获取并存储服务器返回的N个(e,Xe)的历史数据,其中N≥2;
根据所述(e,Xe)的历史数据导出签名参数(kn,Xn),其中,n为当次签名对应的随机数序号,α为设定系数,k0为初始化的真随机数。
本发明的数字签名设备与本发明的数字签名方法一一对应,在上述数字签名方法的实施例阐述的技术特征及其有益效果均适用于数字签名设备的实施例中,特此声明。
下面结合附图对本发明的数字签名中密码运算方法的具体实施方式作详细描述。
参见图5所示,图5为一个实施例的数字签名中密码运算方法流程图,主要包括如下步骤:
步骤S501,依据设定周期产生真随机数e。
在本步骤中,所述设定的周期可以为2次/秒,主要是在数字签名过程中,将密码运算进行外包时,由外包的服务网络产生真随机数,在此过程中,可以结合云计算系统技术,利用云服务器产生真随机数并完成密码学运算部分。
步骤S502,计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元。
在本步骤中,主要是由外包的服务网络完成密码学运算部分。
步骤S503,将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi)并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
在本步骤中,对于执行签名的客户端本地持有的参数(ki-1,Xi-1),在第一次签名时,则参数(ki-1,Xi-1)为(k0,X0),k0为用户端初始化阶段产生的高质量的真随机数,在此后的签名过程中,参数(ki-1,Xi-1)为上一次签名所使用的签名参数。
对于真随机数k0及其相关参数(k0,X0),执行签名的用户端与服务网络之间也可以通过执行标准协议(如ECDH)来导出共享密钥sk,由服务网络计算Xsk=sk·G并将Xsk返回给用户端,使得用户端获得初始化的真随机数k0=sk及与其相关的参数(k0,X0)。在这种情况下,用户端无需配备专用的真随机数发生器,也能够产生高质量的真随机数k0及参数(k0,X0)。
当用户端进行密码运算外包申请时,服务网络发送参数(e,Xe)至执行签名的用户端,在此过程中,可以设置为只需要验证用户端的身份,无需用户端提交任何参数。同时,为了避免第三方获得参数(e,Xe)并进行分析攻击,则参数需要在预先建立的安全信道中传递。
上述数字签名中密码运算方法,由外包的服务网络产生真随机数并完成密码学运算部分,将运算结果发送至执行签名的用户端,执行数字签名的用户端根据自身在本地持有的参数(ki-1,Xi-1)和服务网络发送的参数(e,Xe)获取签名参数(ki,Xi),从而利用签名参数(ki,Xi)完成数字签名过程,执行签名的用户端无需配备专用的真随机数发生器,就可以根据签名参数和签名私钥完成数字签名过程,降低了签名成本、提高了签名效率。同时,利用该密码运算方法,在将数字签名算法的外包处理时,避免了服务网络获得用户的密码运算的隐私泄漏,保证了外包密码运算的隐私性,确保签名的安全。
另外,可以结合云计算系统技术来进行密码运算,由于云计算系统是基于主流的通用服务器硬件来构建,云服务器的动态扩展性能好,具有海量计算能力、海量存储、动态扩展等技术优势,用来执行密码学运算的性价比高,大量用户并发执行签名运算时处理能力强。
在一个实施例中,步骤S503中的从密码运算请求选择相应的参数的方法,包括如下步骤:
a)获取每个用户端已获得的最后一个参数(e_prev,Xe_prev);
b)从存储的(e,Xe)参数中查找出该用户端未使用的参数(e_next,Xe_next);
c)将该用户端未使用的参数(e_next,Xe_next)发送至执行签名的用户端。
具体的,通过持续产生(e,Xe)参数序列,并且记录每个用户端已获取的最后一个(e_prev,Xe_prev)参数。当用户端进行外包申请时,仅仅返回该用户端从未使用过的参数(e_next,Xe_next),如果参数序列已经不存在该用户端尚未使用过的数据,再产生新的随机参数。
本实施例中,通过上述方法,使得新的用户端可以使用历史产生的真随机数,无需为每一个用户都实时计算(e,Xe)参数,这样可以避免在大量用户并发执行签名运算时导致外包的服务网络运算负载过重的问题,可以进一步提高运算性能,提升大量用户并发执行签名运算时处理能力。
下面结合附图对本发明的数字签名中密码运算服务器的具体实施方式作详细描述。
参见图6所示,图6为一个实施例的数字签名中密码运算服务器的结构示意图,主要包括:
随机数产生模块,用于依据设定周期产生真随机数e;
参数获取模块,用于计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;
参数发送模块,用于将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi)并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
在一个实施例中,所述参数发送模块包括:
末次参数获取单元,用于获取每个用户端已获得的最后一个参数(e_prev,Xe_prev);
参数查找单元,用于从存储的(e,Xe)参数中查找出该用户端未使用的参数(e_next,Xe_next);
参数发送单元,用于将该用户端未使用的参数(e_next,Xe_next)发送至执行签名的用户端。
本发明的数字签名中密码运算服务器与本发明的数字签名中密码运算方法一一对应,在上述数字签名中密码运算方法的实施例阐述的技术特征及其有益效果均适用于数字签名中密码运算服务器的实施例中,特此声明。
综合上述实施例的内容,通过本发明的数字签名技术及数字签名中密码运算技术,可以构建一个由多个用户端和基于云计算系统实现的服务器组成的数字签名技术方案,执行数字签名的每个用户端可以将密码学运算外包给云计算系统来完成,通过服务端、用户端共同导出随机数的方式,避免了传递随机数受到攻击,除了初始化阶段之外,用户端不需要产生高质量的真随机数,因此,用户端无需配备专用的真随机数发生器,降低了签名成本、提高了签名效率,而且可以有效利用云计算系统的强大计算能力,大量用户并发执行签名运算能力强,同时在将数字签名运算外包地过程中,密码运算的隐私性可以得到保证。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种数字签名方法,其特征在于,包括如下步骤:
接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;
根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),具体包括:将所述参数(e,Xe)和参数(ki-1,Xi-1)进行线性操作获得签名参数(ki,Xi);其中,ki-1为随机数,Xi-1=ki-1G;
利用所述签名参数(ki,Xi)执行数字签名。
2.根据权利要求1所述的数字签名方法,其特征在于,所述根据所述参数(e,Xe)和参数(ki-1,Xi-1)获取签名参数(ki,Xi)的步骤包括:
获取并存储服务器发送的N个(e,Xe)历史数据,其中N≥2;
根据所述(e,Xe)的历史数据导出签名参数(kn,Xn),其中,n为当次签名对应的随机数序号,α为设定系数,k0为初始化的真随机数。
3.一种数字签名设备,其特征在于,包括:
参数接收模块,用于接收服务器发送的参数(e,Xe),其中,Xe=eG,所述e为服务器产生的真随机数,G为椭圆曲线密码体制的生成元;
签名参数获取模块,用于根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)获取签名参数(ki,Xi),具体包括:将所述参数(e,Xe)和参数(ki-1,Xi-1)进行线性操作获得签名参数(ki,Xi);其中,ki-1为随机数,Xi-1=ki-1G;
数字签名模块,用于利用所述签名参数(ki,Xi)执行数字签名。
4.根据权利要求3所述的数字签名设备,其特征在于,所述签名参数获取模块获取签名参数(ki,Xi)的方法包括:
获取并存储服务器返回的N个(e,Xe)的历史数据,其中N≥2;
根据所述(e,Xe)的历史数据导出签名参数(kn,Xn),其中,n为当次签名对应的随机数序号,α为设定系数,k0为初始化的真随机数。
5.一种数字签名中密码运算方法,其特征在于,包括如下步骤:
依据设定周期产生真随机数e;
计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;
将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)进行线性操作获取签名参数(ki,Xi),并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
6.根据权利要求5所述的数字签名中密码运算方法,其特征在于,所述将所述参数(e,Xe)发送至执行签名的用户端的步骤包括:
获取每个用户端已获得的最后一个参数(e_prev,Xe_prev);
从存储的(e,Xe)参数中查找出该用户端未使用的参数(e_next,Xe_next);
将该用户端未使用的参数(e_next,Xe_next)发送至执行签名的用户端。
7.一种数字签名中密码运算服务器,其特征在于,包括:
随机数产生模块,用于依据设定周期产生真随机数e;
参数获取模块,用于计算并存储参数(e,Xe);其中,Xe=eG,G为椭圆曲线密码体制的生成元;
参数发送模块,用于将所述参数(e,Xe)发送至执行签名的用户端;其中,所述用户端为根据所述参数(e,Xe)和本地持有的参数(ki-1,Xi-1)进行线性操作获取签名参数(ki,Xi),并根据(ki,Xi)执行数字签名的客户端,ki-1为随机数,Xi-1=ki-1G。
8.根据权利要求7所述的数字签名中密码运算服务器,其特征在于,所述参数发送模块包括:
末次参数获取单元,用于获取每个用户端已获得的最后一个参数(e_prev,Xe_prev);
参数查找单元,用于从存储的(e,Xe)参数中查找出该用户端未使用的参数(e_next,Xe_next);
参数发送单元,用于将该用户端未使用的参数(e_next,Xe_next)发送至执行签名的用户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310377462.0A CN103475473B (zh) | 2013-08-26 | 2013-08-26 | 数字签名方法和设备、数字签名中密码运算方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310377462.0A CN103475473B (zh) | 2013-08-26 | 2013-08-26 | 数字签名方法和设备、数字签名中密码运算方法和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103475473A CN103475473A (zh) | 2013-12-25 |
CN103475473B true CN103475473B (zh) | 2016-10-05 |
Family
ID=49800186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310377462.0A Active CN103475473B (zh) | 2013-08-26 | 2013-08-26 | 数字签名方法和设备、数字签名中密码运算方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103475473B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105610583B (zh) * | 2014-11-04 | 2018-10-26 | 上海华虹集成电路有限责任公司 | 用于抵御错误曲线攻击的ecdsa方法 |
CN106856431A (zh) * | 2015-12-09 | 2017-06-16 | 上海华虹集成电路有限责任公司 | 改进的椭圆曲线数字签名算法及验签方法 |
CN106789064A (zh) * | 2016-12-07 | 2017-05-31 | 北京信安世纪科技有限公司 | 一种基于国密算法的数字签名方法及装置 |
EP3376705A1 (en) * | 2017-03-17 | 2018-09-19 | Koninklijke Philips N.V. | Elliptic curve point multiplication device and method in a white-box context |
CN107124274B (zh) * | 2017-05-18 | 2019-10-25 | 深圳奥联信息安全技术有限公司 | 基于sm2的数字签名方法和装置 |
CN107040385B (zh) * | 2017-05-23 | 2020-10-27 | 广东工业大学 | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 |
CN108259506B (zh) * | 2018-02-08 | 2019-04-26 | 上海交通大学 | Sm2白盒密码实现方法 |
CN109889341A (zh) * | 2019-01-15 | 2019-06-14 | 思力科(深圳)电子科技有限公司 | 数据处理方法、电子标签及射频读卡器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098157A (zh) * | 2009-12-10 | 2011-06-15 | 塔塔咨询服务有限公司 | 一种基于无证书公共密钥基础结构用于加强客户/服务器通讯协议安全性的系统和方法 |
CN102761556A (zh) * | 2012-07-26 | 2012-10-31 | 郑州信大捷安信息技术股份有限公司 | 保护移动客户端通信保密性及隐私功能的方法 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103583060A (zh) * | 2011-06-03 | 2014-02-12 | 黑莓有限公司 | 用于接入私有网络的系统和方法 |
-
2013
- 2013-08-26 CN CN201310377462.0A patent/CN103475473B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098157A (zh) * | 2009-12-10 | 2011-06-15 | 塔塔咨询服务有限公司 | 一种基于无证书公共密钥基础结构用于加强客户/服务器通讯协议安全性的系统和方法 |
CN102761556A (zh) * | 2012-07-26 | 2012-10-31 | 郑州信大捷安信息技术股份有限公司 | 保护移动客户端通信保密性及隐私功能的方法 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN103475473A (zh) | 2013-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103475473B (zh) | 数字签名方法和设备、数字签名中密码运算方法和服务器 | |
CN103023637B (zh) | 一种云存储中可撤销的关键字搜索公钥加密及搜索方法 | |
US9571274B2 (en) | Key agreement protocol | |
CN103067165B (zh) | 公钥密码体制中的外包计算方法、设备和服务器 | |
US20110038478A1 (en) | Digital signature generation apparatus, digital signature verification apparatus, and key generation apparatus | |
Lai et al. | Efficient identity-based online/offline encryption and signcryption with short ciphertext | |
CN103095459B (zh) | 公钥密码体制中模幂运算方法、设备和服务器 | |
CN109861826B (zh) | 一种双向代理重签名的实现方法及装置 | |
CN103220146B (zh) | 基于多变量公钥密码体制的零知识数字签名方法 | |
Yu et al. | Identity-based proxy signcryption protocol with universal composability | |
CN105245343A (zh) | 一种基于多变量密码技术的在线离线签名系统及方法 | |
US20160352689A1 (en) | Key agreement protocol | |
Wang et al. | An ID-based online/offline signature scheme without random oracles for wireless sensor networks | |
JP2022095852A (ja) | デジタル署名方法、署名情報の検証方法、関連装置及び電子機器 | |
CN102769530A (zh) | 一种计算高效的在线/离线数字签名方法 | |
CN105119929A (zh) | 单一恶意云服务器下的安全模指数外包方法及系统 | |
CN109618348B (zh) | 一种单向代理重签名的实现方法及装置 | |
Chen et al. | Online/offline signature based on UOV in wireless sensor networks | |
Wang et al. | Server-aided verification proxy re-signature | |
Yang et al. | Divisible on-line/off-line proxy re-signature | |
Shao et al. | A provably secure signature scheme based on factoring and discrete logarithms | |
WO2016187690A1 (en) | Key agreement protocol | |
Yang et al. | On-line/off-line threshold proxy re-signature scheme through the simulation approach | |
CN114285576A (zh) | 一种非对的在线离线签密方法 | |
Valluri | Digital signature scheme based on the conjugate twisted root extraction problem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 528200 science and technology road, Nanhai Software Science Park, Nanhai Town, Nanhai District, Foshan, Guangdong Applicant after: Age of security Polytron Technologies Inc Address before: 528200 science and technology road, Nanhai Software Science Park, Nanhai Town, Nanhai District, Foshan, Guangdong Applicant before: Guangdong Certificate Authority Center Co., Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |