一种数字签名的方法、装置和系统转让专利

申请号 : CN201711377948.9

文献号 : CN109936455B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宁红宙郭宝安

申请人 : 航天信息股份有限公司

摘要 :

本申请实施例提供了一种数字签名的生成方法、装置和系统。其中,数字签名方法包括:第一签名方获取第一私密密钥、生成第一随机数,并根据签名对象和第一随机数生成第一中间变量,并将所述第一中间变量发送给第二签名方;所述第一签名方接收所述第二签名方发送的第一签名值和第二中间变量,所述第一签名值和所述第二中间变量根据所述第一中间变量、所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算而得;所述第一签名方根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。

权利要求 :

1.一种数字签名方法,其特征在于,包括:基于椭圆曲线函数进行数字签名,其中,所述椭圆曲线为E(Fq),基点为G=(xG,yG),阶为n,用[k]P表示椭圆曲线上的点乘运算,其中k为整数,P为椭圆曲线上的点;

第一签名方获取第一私密密钥dA、生成第一随机数kA,根据签名对象M和第一随机数kA生成第一中间变量QA和e,并将所述第一中间变量QA和e发送给第二签名方,其中QA=[kA]G,M的哈希值e=H(M),其中H()为给定的哈希计算函数;

所述第一签名方接收所述第二签名方发送的第一签名值r和第二中间变量sB1和sB2,所述第一签名值r和所述第二中间变量sB1和sB2根据所述第一中间变量QA和e、所述第二签名方获取的第二私密密钥dB和所述第二签名方生成的第二随机数kB计算而得,具体的,所述第二签名方进行如下所示计算:令 则

(x1,y1)=[k]G,以确定第一签名值r,以及第二中间变量sB1和sB2r=(e+x1)modn

sB1=(dB·(r+kB))modnsB2=(dB·r+kB)modn所述第一签名方根据所述第一私密密钥dA、所述第一随机数kA、所述第一签名值r和所述第二中间变量sB1和sB2计算第二签名值s,具体的,

‑1

由dA·dB=(1+d) 和 得

‑1

s=((1+d) ·(k+r)‑r)modn‑1

=((1+d) ·(k+r‑(1+d)·r))modn‑1

=((1+d) ·(k‑r·d))modn其中,所述第一签名值r和所述第二签名值s构成所述签名对象的数字签名。

2.根据权利要求1所述的方法,其特征在于,还包括:所述第一签名方根据所述第一私密密钥计算第一部分公钥,并将所述第一部分公钥发送给所述第二签名方;

所述第一签名方接收所述第二签名方发送的第二部分公钥,所述第二部分公钥根据所述第一部分公钥和所述第二私密密钥计算所得;

所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥。

3.根据权利要求2所述的方法,其特征在于,所述第一签名方根据所述第一私密密钥计算第一部分公钥,具体包括:所述第一签名方基于椭圆曲线对第一私密密钥进行计算,得到所述第一部分公钥;

所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥,具体包括:所述第一签名方基于椭圆曲线对第二部分公钥进行计算,得到所述数字签名的公钥。

4.根据权利要求1‑3任一项所述的方法,其特征在于,所述第一签名方根据签名对象和第一随机数生成第一中间变量,具体包括:所述第一签名方根据签名对象和第一随机数,基于椭圆曲线生成第一中间变量;

所述第一签名方根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,具体包括:所述第一签名方根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量,基于椭圆曲线计算第二签名值。

5.一种数字签名方法,其特征在于,包括:基于椭圆曲线函数进行数字签名,其中,所述椭圆曲线为E(Fq),基点为G=(xG,yG),阶为n,用[k]P表示椭圆曲线上的点乘运算,其中k为整数,P为椭圆曲线上的点;

第二签名方接收第一签名方发送的第一中间变量QA和e,所述第一中间变量QA和e为所述第一签名方根据签名对象M和所述第一签名方生成的第一随机数kA计算而得,其中,其中QA=[kA]G,M的哈希值e=H(M),其中H()为给定的哈希计算函数;

所述第二签名方根据所述第一中间变量QA和e、获取的第二私密密钥dB和生成的第二随机数kB计算第一签名值r和第二中间变量sB1和sB2,所述第二随机数kB∈[1,n‑1],具体的,所述第二签名方计算如下:令 则

(x1,y1)=[k]G

第二签名方计算得到:第一签名值r,以及第二中间变量sB1和sB2r=(e+x1)modn

sB1=(dB·(r+kB))modnsB2=(dB·r+kB)modn得到所述第一签名值r,以及第二中间变量sB1和sB2,并将所述第一签名值r和所述第二中间变量sB1和sB2发送给第一签名方,以便所述第一签名方根据所述第一签名值r、所述第一随机数kA、第二中间变量sB1和sB2以及所述第一签名方获取的第一私密密钥dA计算第二签名值s;

具体的,

‑1

由dA·dB=(1+d) 和 得

‑1

s=((1+d) ·(k+r)‑r)modn‑1

=((1+d) ·(k+r‑(1+d)·r))modn‑1

=((1+d) ·(k‑r·d))modn其中,所述第一签名值r和所述第二签名值s构成所述签名对象的数字签名。

6.根据权利要求5所述的方法,其特征在于,还包括:所述第二签名方接收所述第一签名方发送的第一部分公钥,其中,所述第一部分公钥根据所述第一私密密钥计算得到;

所述第二签名方根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,并将所述第二部分公钥发送所述第一签名方,以便所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥。

7.根据权利要求6所述的方法,其特征在于,所述第二签名方根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,具体包括:所述第二签名方基于椭圆曲线对所述第一部分公钥和所述第二私密密钥计算所述第二部分公钥。

8.根据权利要求5‑7任一项所述的方法,其特征在于,所述第二签名方根据所述第一中间变量以及所述第二签名方获取的第二私密密钥和第二随机数计算第一签名值和第二中间变量,具体包括:所述第二签名方根据所述第一中间变量以及所述第二签名方获取的第二私密密钥和第二随机数,基于椭圆曲线计算第一签名值和第二中间变量。

9.一种数字签名装置,其特征在于,包括:处理器,用于获取第一私密密钥dA、生成第一随机数kA,并根据签名对象M和所述第一随机数kA生成第一中间变量QA和e,其中QA=[kA]G,M的哈希值e=H(M),其中H()为给定的哈希计算函数;

发送器,用于将所述第一中间变量QA和e发送给第二签名方;

接收器,用于接收所述第二签名方发送的第一签名值r和第二中间变量sB1和sB2,所述第一签名值和所述第二中间变量sB1和sB2根据所述第一中间变量QA和e、所述第二签名方获取的第二私密密钥dB和所述第二签名方生成的第二随机数kB计算而得,具体的,所述第二签名方计算如下所示:令 则

(x1,y1)=[k]G,以确定第一签名值r,以及第二中间变量sB1和sB2r=(e+x1)modn

sB1=(dB·(r+kB))modnsB2=(dB·r+kB)modn;

所述处理器还用于根据所述第一私密密钥dA、所述第一随机数kA、所述第一签名值r和所述第二中间变量sB1和sB2计算第二签名值s,具体的,‑1

由dA·dB=(1+d) 和 得

‑1

s=((1+d) ·(k+r)‑r)modn‑1

=((1+d) ·(k+r‑(1+d)·r))modn‑1

=((1+d) ·(k‑r·d))modn;

其中,所述第一签名值r和所述第二签名值s构成所述签名对象的数字签名。

10.根据权利要求9所述的装置,其特征在于,所述处理器还用于根据所述第一私密密钥计算第一部分公钥;

所述发送器还用于将所述第一部分公钥发送给所述第二签名方;

所述接收器还用于接收所述第二签名方发送的第二部分公钥,所述第二部分公钥根据所述第一部分公钥和所述第二私密密钥计算所得;

所述处理器还用于根据所述第二部分公钥计算所述数字签名的公钥。

11.根据权利要求10所述的装置,其特征在于,所述处理器根据所述第一私密密钥计算第一部分公钥,具体包括:所述处理器基于椭圆曲线对第一私密密钥进行计算,得到所述第一部分公钥;

所述处理器根据所述第二部分公钥计算所述数字签名的公钥,具体包括:所述处理器基于椭圆曲线对所述第二部分公钥进行计算,得到所述数字签名的公钥。

12.根据权利要求9‑11任一项所述的装置,其特征在于,所述处理器根据签名对象和第一随机数生成第一中间变量,具体包括:所述处理器根据签名对象和第一随机数,基于椭圆曲线生成第一中间变量;

所述处理器根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,具体包括:所述处理器根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量,基于椭圆曲线计算第二签名值。

13.一种数字签名装置,其特征在于,包括:接收器,用于接收第一签名方发送的第一中间变量QA和e,所述第一中间变量QA和e为所述第一签名方根据签名对象M和生成的第一随机数kA计算得到,其中,QA=[kA]G,M的哈希值e=H(M),其中H()为给定的哈希计算函数;

处理器,用于根据所述第一中间变量QA和e、第二签名方获取的第二私密密钥dB和所述第二签名方生成的第二随机数kB计算第一签名值r和第二中间变量sB1和sB2,所述第二随机数kB∈[1,n‑1],具体的,第二签名方计算如下:令 则

(x1,y1)=[k]G

第二签名方计算得到:第一签名值r,以及第二中间变量sB1和sB2r=(e+x1)modn

sB1=(dB·(r+kB))modnsB2=(dB·r+kB)modn;

发送器,用于将所述第一签名值r和所述第二中间变量sB1和sB2发送给第一签名方,以便所述第一签名方根据所述第一签名值r、所述第一随机数kA、第二中间变量sB1和sB1以及所述第一签名方获取的第一私密密钥dA计算第二签名值s;

具体的,

‑1

由dA·dB=(1+d) 和 得

‑1

s=((1+d) ·(k+r)‑r)modn‑1

=((1+d) ·(k+r‑(1+d)·r))modn‑1

=((1+d) ·(k‑r·d))modn其中,所述第一签名值r和所述第二签名值s构成所述签名对象的数字签名。

14.根据权利要求13所述的装置,其特征在于,所述接收器还用于接收所述第一签名方发送的第一部分公钥,其中,所述第一部分公钥根据所述第一私密密钥计算得到;

所述处理器还用于根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥;

所述发送器用于将所述第二部分公钥发送所述第一签名方,以便所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥。

15.根据权利要求14所述的装置,其特征在于,所述处理器根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,具体包括:所述处理器基于椭圆曲线对所述第一部分公钥和所述第二私密密钥计算所述第二部分公钥。

16.根据权利要求13‑15任一项所述的装置,其特征在于,所述处理器根据所述第一中间变量以及获取的第二私密密钥和第二随机数计算第一签名值和第二中间变量,具体包括:所述处理器根据所述第一中间变量以及获取的第二私密密钥和第二随机数,基于椭圆曲线计算第一签名值和第二中间变量。

17.一种数字签名系统,其特征在于,包括:第一签名装置,用于获取第一私密密钥dA、生成第一随机数kA,并根据签名对象M和所述第一随机数kA生成第一中间变量QA和e,以及将所述第一中间变量QA和e发送给第二签名装置,其中QA=[kA]G,M的哈希值e=H(M),其中H()为给定的哈希计算函数;

第二签名装置,用于获取第二私密密钥dB、生成第二随机数kB,所述第二随机数kB∈[1,n‑1];并根据所述第一中间变量QA和e、所述第二私密密钥dB和第二随机数kB计算第一签名值r和第二中间变量sB1和sB2,具体的,所述第二签名计算如下所示:令 则

(x1,y1)=[k]G,以确定第一签名值r,以及第二中间变量sB1和sB2r=(e+x1)modn

sB1=(dB·(r+kB))modnsB2=(dB·r+kB)modn;

并将所述第一签名值r和所述第二中间变量sB1和sB2发送给所述第一签名装置;

所述第一签名装置还用于根据所述第一私密密钥dA、所述第一随机数kA、所述第一签名值r和所述第二中间变量sB1和sB2计算第二签名值s,具体的,具体的,

‑1

由dA·dB=(1+d) 和 得

‑1

s=((1+d) ·(k+r)‑r)modn‑1

=((1+d) ·(k+r‑(1+d)·r))modn‑1

=((1+d) ·(k‑r·d))modn;

其中,所述第一签名值r和所述第二签名值s构成所述签名对象的数字签名。

说明书 :

一种数字签名的方法、装置和系统

技术领域

[0001] 本申请实施例涉及数据保护,尤其涉及数字签名。

背景技术

[0002] 采用非对称密码算法的数字签名技术可用于网络数字世界中的抗抵赖场景,与现实世界中的签名手段相对应。随着证书权威(Certificate Authority,CA)技术的发展与应用,以及数字签名法的实施,数字签名技术在数字世界中占有越来越重要的地位。基于网络业务的行政审批、电子合同、电子发票、网络交易支付等都采用了数字签名技术来保障业务的不可抵赖性。
[0003] 在传统的数字签名技术中,签名者不仅持有CA机构签发的用于标明其身份和公钥的数字证书,还拥有用于计算签名的私钥。私钥一般保存在密码设备中,如:USBKEY、IC卡等,以防止密钥被拷贝或窃取,且这些密码设备只能在签名者的控制中使用,签名者对其私钥拥有完全控制权,其它任何第三方无法取得签名者的私钥。
[0004] 随着云计算、移动互联和物联网技术的发展和应用,以及新的业务应用场景的要求,催生了对多方签名计算的需求,以保障签名密钥的安全性,而传统数字签名算法无法直接完成多方数字签名的计算需求。

发明内容

[0005] 有鉴于此,本发明实施例所解决的技术问题在于提供一种多方数字签名的方法,用以弥补现有技术中数字签名算法无法进行多方计算的缺陷,进而保障了签名私钥的安全性。
[0006] 第一方面,本申请实施例提供了一种数字签名方法,其特征在于,包括:
[0007] 第一签名方获取第一私密密钥、生成第一随机数,根据签名对象和第一随机数生成第一中间变量,并将所述第一中间变量发送给第二签名方;所述第一签名方接收所述第二签名方发送的第一签名值和第二中间变量,所述第一签名值和所述第二中间变量根据所述第一中间变量、所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算而得;所述第一签名方根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0008] 本申请实施例提供的数字签名方法,由第一签名方与其他签名方或计算方共同协作产生数字签名,第一签名方一方无法产生完整的签名结果,从而保障了数字签名的私密性。同时,密钥产生过程由各个签名参与方共同计算产生,而非单独生成后分割产生,从而保障了签名私钥的私密性。
[0009] 本申请实施例提供的一种数字签名方法中,第一签名方仅拥有部分签名私钥,因而无法推算出完整的签名私钥和公钥,只有通过第二签名方的参与计算,才可生成完整的签名公钥。
[0010] 第二方面,本申请实施例提供了一种数字签名方法,其特征在于,包括:
[0011] 第二签名方接收第一签名方发送的第一中间变量,所述第一中间变量为所述第一签名方根据签名对象和所述第一签名方生成的第一随机数计算得到;所述第二签名方根据所述第一中间变量、获取的第二私密密钥和生成的第二随机数计算第一签名值和第二中间变量,并将所述第一签名值和所述第二中间变量发送给第一签名方,以便所述第一签名方根据所述第一签名值、所述第一随机数、第二中间变量以及所述第一签名方获取的第一私密密钥计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0012] 本申请实施例提供的数字签名方法,由第二签名方协助其他签名方或计算方产生数字签名,第二签名方或其他签名方一方无法产生完整的签名结果,从而保障了数字签名的私密性。同时,密钥产生过程由各个签名参与方共同计算产生,而非单独生成后分割产生,从而保障了签名私钥的私密性。
[0013] 本申请实施例提供的一种数字签名方法中,第二签名协助其他签名方完成签名公钥的部分计算,使得其他签名方或第二签名方一方仅拥有部分签名私钥,因而无法推算出完整的签名私钥和公钥,从而保障了签名私钥的私密性。
[0014] 第三方面,本申请实施例提供了一种数字签名装置,包括处理器、发送器和接收器。
[0015] 处理器,用于获取第一私密密钥、生成第一随机数,并根据签名对象和所述第一随机数生成第一中间变量;发送器,用于将所述第一中间变量发送给第二签名方;接收器,用于接收所述第二签名方发送的第一签名值和第二中间变量,所述第一签名值和所述第二中间变量根据所述第一中间变量、所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算而得;所述处理器还用于根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0016] 第四方面,本申请实施例提供了一种数字签名装置,包括接收器、处理器和发送器。接收器,用于接收第一签名方发送的第一中间变量,所述第一中间变量为所述第一签名方根据签名对象和生成的第一随机数计算得到;处理器,用于根据所述第一中间变量、所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算第一签名值和第二中间变量;发送器,用于将所述第一签名值和所述第二中间变量发送给第一签名方,以便所述第一签名方根据所述第一签名值、所述第一随机数、第二中间变量以及所述第一签名方获取的第一私密密钥计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0017] 第五方面,本申请实施例提供了一种数字签名系统,其特征在于,包括第一签名装置和第二签名装置。
[0018] 第一签名装置,用于获取第一私密密钥、生成第一随机数,并根据签名对象和所述第一随机数生成第一中间变量,以及将所述第一中间变量发送给第二签名装置;
[0019] 第二签名装置,用于获取第二私密密钥、生成第二随机数,并根据所述第一中间变量、所述第二私密密钥和第二随机数计算第一签名值和第二中间变量,并将所述第一签名值和所述第二中间变量发送给所述第一签名装置;
[0020] 所述第一签名装置还用于根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0021] 本申请实施例提供了一种数字签名方法、装置、系统,由多个签名计算方共同协作产生数字签名,任何一方或者任何几方都无法产生完整的签名结果。同时,任何参与签名方都拥有部分签名私钥,任何签名方无法推算出完整的签名密钥,且密钥产生过程由各个签名参与方共同计算产生,而非单独生成后分割产生,从而保障了签名私钥的私密性。同时签名计算的结果能使用现有的签名验证方法来验证,以保证与现有的签名体系相吻合。

附图说明

[0022] 后文将参照附图以示例性而非限制性的方式详细描述本申请实施例的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0023] 图1是根据本申请一个实施例的数字签名方法示意图;
[0024] 图2是根据本申请另一个实施例的数字签名方法示意图;
[0025] 图3是根据本申请一个实施例的公钥生成步骤示意图;
[0026] 图4是根据本申请一个实施例的数字签名装置示意图;
[0027] 图5是根据本申请一个实施例的数字签名装置示意图;
[0028] 图6是根据本申请一个实施例的数字签名系统示意图。

具体实施方式

[0029] 实施本发明实施例的任一技术方案必不一定需要同时达到以上的所有优点。
[0030] 为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
[0031] 下面结合本发明实施例附图进一步说明本发明实施例具体实现。
[0032] 图1是根据本申请一个实施例的数字签名方法示意图。如图1所示,所述数字签名方法100包括以下步骤。
[0033] 步骤102,第一签名方获取第一私密密钥、生成第一随机数,并根据签名对象和第一随机数生成第一中间变量。
[0034] 应当理解的是,所述获取第一私密密钥可包括生成第一私密密钥和读取存储的第一私密密钥等情况。
[0035] 可选的,该第一私密密钥dA可为第一签名方独立于第二签名方随机选择的,且dA∈[1,n‑1],其中,n为大于等于2的自然数。
[0036] 另外可选的,所述第一随机数kA为第一签名方独立于第二签名方随机选择生成的,且kA∈[1,n‑1],其中,n为大于等于2的自然数。
[0037] 可选的,在一次数字签名过程中,第一私密密钥和第一随机数可以相同也可以不同。一个可能的区别在于:第一私密密钥与公钥存在对应关系,在生成后可以多次使用;第一随机数可为每次执行步骤102时独立随机生成。第一私密密钥与公钥的对应关系,在下文图3所示的公钥生成步骤中会有进一步详细描述。
[0038] 可选的,所述第一中间变量为所述第一签名方根据所述签名对象和所述第一随机数计算而得的、可用于计算数字签名的过程值。第一变量可以包含一个或多个过程值。
[0039] 步骤104,第一签名方将第一中间变量发送给第二签名方。
[0040] 步骤106,第二签名方获取第二私密密钥、生成第二随机数,并根据第一中间变量、第二私密密钥和第二随机数生成第一签名值和第二中间变量。
[0041] 可选的,该第二私密密钥dB可为第二签名方独立于第一签名方随机选择的,且dB∈[1,n‑1],其中,n为大于等于2的自然数。
[0042] 另外可选的,所述第一随机数kB为第二签名方独立于第一签名方随机选择生成的,且kB∈[1,n‑1],其中,n为大于等于2的自然数。
[0043] 可选的,在一次数字签名过程中,第二私密密钥和第二随机数可以相同也可以不同。一个可能的区别在于:第二私密密钥与公钥存在对应关系,在生成后可以多次使用;第二随机数可为每次执行步骤106时独立随机生成。第二私密密钥与第一私密密钥及公钥的对应关系,在下文图3所示的公钥生成步骤中会有进一步详细描述。
[0044] 可选的,所述第二中间变量为所述第二签名方根据第一中间变量、第二私密密钥和第二随机数计算而得的、可用于计算数字签名的过程值。第二中间变量可以包含一个或多个过程值。
[0045] 步骤108,第二签名方将第一签名值和第二中间变量发送给第一签名方。
[0046] 步骤110,第一签名方根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0047] 应理解的是,除步骤内部的逻辑顺序外,本申请方法中的步骤编号并不限定步骤的顺序。例如,步骤102中虽然限定第一签名方获取第一私密密钥,但该第一私密密钥在步骤110中才进行使用,因此,该第一私密密钥的获取并非必需在步骤104、106及108之前。
[0048] 可选的,该数字签名方法可以基于各种加密函数进行数字签名。
[0049] 本申请实施例提供的数字签名方法,由第一签名方和第二签名方协作产生数字签名,第一签名方或第二签名方一方无法产生完整的签名结果,从而保障了数字签名的私密性。同时,密钥产生过程由各个签名参与方共同计算产生,而非单独生成后分割产生,从而保障了签名私钥的私密性。
[0050] 图2是根据本申请另一个实施例的数字签名方法示意图。可选的,该实施例基于椭圆曲线函数进行数字签名。例如,椭圆曲线参数可采用国家密码管理局规定的SM2曲线参数,具体可参见《SM2椭圆曲线公钥密码算法》(GM/T 0003‑2012)。设椭圆曲线为E(Fq),基点为G=(xG,yG),阶为n,用[k]P表示椭圆曲线上的点乘运算,其中k为整数,P为椭圆曲线上的点。
[0051] 如图2所示,数字签名方法200包括以下步骤。
[0052] 步骤202,第一签名方,或称A方,获取第一私密密钥dA。所述第一私密密钥dA∈[1,n‑1],与图1步骤102中的第一私密密钥类似,在此不再赘述。需要进一步定义的是,此时n为如前所述的椭圆曲线的阶。
[0053] 步骤204,第一签名方生成第一随机数kA,计算签名对象消息M的哈希值e,并根据哈希值e和第一随机数kA生成第一中间变量QA和e。
[0054] 其中,该第一随机数kA∈[1,n‑1],同样,第一随机数与图1步骤102中的第一随机数定义类似,在此不再赘述。另外需要进一步定义的是,此时n为如前所述的椭圆曲线的阶。
[0055] 所述第一中间变量包括两个过程值QA和e。
[0056] 可选的,计算QA=[kA]G。
[0057] 可选的,消息M的哈希值e=H(M),其中H()为给定的哈希计算函数。应当理解的是,本发明对具体的哈希计算函数不做限定,在对消息M进行哈希运算后依然可以保留消息M的指纹特征的计算函数均可用于计算消息M的哈希值。
[0058] 步骤206,第一签名方将第一中间变量QA和e发送至第二签名方。
[0059] 步骤208,第二签名方,或称B方,获取第二密密钥dB。所述第二私密密钥dB与图1步骤106中的第二私密密钥类似,在此不再赘述。另外需要进一步定义的是,此时n为如前所述的椭圆曲线的阶。
[0060] 步骤210,第二签名方生成第二随机数kB,根据第二随机数kB、第二私密密钥dB、和第一中间变量计算第一签名值r,以及第二中间变量sB1和sB2。
[0061] 其中,该第二随机数kB∈[1,n‑1],所述第二随机数kB与图1步骤106中的第二随机数类似,在此不再赘述。另外需要进一步定义的是,此时n为如前所述的椭圆曲线的阶。
[0062] 具体的,第二签名方计算:
[0063]
[0064] 令 则
[0065] (x1,y1)=[k]G
[0066] 第二签名方计算得到:第一签名值r,以及第二中间变量sB1和sB2
[0067] r=(e+x1)modn
[0068] sB1=(dB·(r+kB))modn
[0069] sB2=(dB·r+kB)modn
[0070] 步骤212,第二签名方把第一签名值r、第二中间变量sB1和sB2传给第一签名方。
[0071] 步骤214,第一签名方根据第一私密密钥dA、第一随机数kA、第一签名值r、第二中间变量sB1和sB2计算第二签名值s。
[0072] 具体的,
[0073]‑1
[0074] 由dA·dB=(1+d) 和 得
[0075] s=((1+d)‑1·(k+r)‑r)modn
[0076] =((1+d)‑1·(k+r‑(1+d)·r))modn
[0077] =((1+d)‑1·(k‑r·d))modn
[0078] 其中,消息M的数字签名值包括第一签名值和第二签名值,也即,将(r,s)作为签名值。
[0079] 可选的,根据上述实施例所述的数字签名方法100或/和数字签名方法200还可包括公钥生成步骤。应当理解的是,除步骤间的内部逻辑之外,所述公钥生成步骤的顺序与所述数字签名的顺序不做特别的限定。
[0080] 图3为根据本发明一个实施例的公钥生成步骤示意图,所述公钥生成步骤如下。
[0081] 步骤302,所述第一签名方根据所述第一私密密钥计算第一部分公钥,并将所述第一部分公钥发送给所述第二签名方。
[0082] 可选的,所述第一部分公钥可基于图2所述的椭圆曲线进行计算,也即,所述第一签名方根据所述第一私密密钥计算第一部分公钥,具体包括:
[0083] 所述第一签名方基于椭圆曲线对第一私密密钥进行计算,得到所述第一部分公钥。
[0084] 具体的,第一签名方计算第一部分公钥
[0085] 步骤304,第二签名方根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,并将第二部分公钥发送给第一签名方。
[0086] 可选的,所述第二签名方根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,具体包括:
[0087] 所述第二签名方基于图2所述的椭圆曲线对所述第一部分公钥和所述第二私密密钥计算所述第二部分公钥。
[0088] 具体的,第二部分公钥
[0089] 步骤306,所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥。该数字签名的公钥为第一签名方和第二签名方的共同公钥。
[0090] 应当理解的是,该公钥与第一签名方的第一私密密钥以及第二签名方的第二私密密钥存在对应关系。换言之,当使用该公钥时,对应的第一私密密钥和第二私密密钥应当为计算该公钥时的第一私密密钥和第二私密密钥。
[0091] 可选的,所述第二部分公钥可基于图2所述的椭圆曲线进行计算,也即,所述第一签名方根据所述第一部分公钥计算所述第二部分公钥,具体包括:
[0092] 所述第一签名方基于椭圆曲线对第一部分公钥进行计算,得到所述第二部分公钥。
[0093] 具体的,第一签名方计算共同的公钥P:
[0094]
[0095] 令d=(dA·dB)‑1‑1,则有
[0096] dA·dB=(1+d)‑1
[0097] P=[d]G
[0098] 应当理解的是,在生成数字签名后,任意验证方可利用共同公钥P和签名值(r,s)对数字签名进行验证。
[0099] 可选的,签名验证过程采用SM2签名验证算法,具体参见《SM2椭圆曲线公钥密码算法》(GM/T 0003‑2012)。验证过程即为通过A和B的共同公钥P和签名值(r,s)计算(x′1,y′1)的过程即
[0100] (x′1,y′1)=[s]G+[r+s]P
[0101] =[s]G+[(r+s)·d)]G
[0102] =[s+r·d+s·d]G
[0103] =[(1+d)·s+r·d]G
[0104] 由s=((1+d)‑1·(k‑r·d))modn,则
[0105] (x1′,y1′)=[k‑r·d+r·d]G
[0106] =[k]G
[0107] 若r=(e+x1′)modn,则验证通过。
[0108] 由此可见,本申请实施例提供了一种方法,可由多个签名计算方共同协作产生数字签名,任何一方或者任何几方都无法产生完整的签名结果。密钥产生过程由各个签名参与方共同计算产生,而非单独生成后分割产生,从而保障了签名私钥的私密性。同时签名计算的结果能使用现有的签名验证方法来验证,以保证与现有的签名体系相吻合。
[0109] 图4是根据本申请一个实施例的数字签名装置示意图。如图4所示,数字签名装置包括发送器402、处理器404和接收器406。
[0110] 应当理解的是,该数字签名装置400可实现前述方法100和方法200中第一签名方的功能,具体内容不再赘述。
[0111] 处理器404,用于获取第一私密密钥、生成第一随机数,根据签名对象和第一随机数生成第一中间变量。其中第一私密密钥和第一随机数的定义在方法100的步骤102中已有描述,在此不再赘述。可选的,所述数字签名装置400可进一步包括存储器或用于存储的单元(未图示),当所述处理器404获取第一私密密钥时,可以从存储器或用于存储的单元中进行读取。
[0112] 发送器402,用于将所述第一中间变量发送给第二签名方。
[0113] 接收器406,用于接收第二签名方发送的第一签名值和第二中间变量,所述第一签名值和所述第二中间变量根据所述第一中间变量、所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算而得。
[0114] 处理器404还用于根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0115] 可选的,处理器404还用于根据所述第一私密密钥计算第一部分公钥;
[0116] 发送器402还用于将所述第一部分公钥发送给所述第二签名方;
[0117] 接收器406还用于接收所述第二签名方发送的第二部分公钥,所述第二部分公钥根据所述第一部分公钥和所述第二私密密钥计算所得;
[0118] 处理器404还用于根据所述第二部分公钥计算所述数字签名的公钥。
[0119] 可选的,处理器404根据所述第一私密密钥计算第一部分公钥,具体包括:
[0120] 处理器404基于椭圆曲线对第一私密密钥进行计算,得到所述第一部分公钥;
[0121] 处理器404根据所述第二部分公钥计算所述数字签名的公钥,具体包括:
[0122] 处理器404基于椭圆曲线对第二部分公钥进行计算,得到所述数字签名的公钥。
[0123] 可选的,所述处理器404根据签名对象和第一随机数生成第一中间变量,具体包括:
[0124] 所述处理器404根据签名对象和第一随机数,基于椭圆曲线生成第一中间变量;
[0125] 所述处理器404根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,具体包括:
[0126] 所述处理器404根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量,基于椭圆曲线计算第二签名值。
[0127] 图5是根据本申请一个实施例的数字签名装置示意图。如图5所示,数字签名装置500包括发送器502、处理器504和接收器506。
[0128] 应当理解的是,该数字签名装置500可实现前述方法100和方法200中第二签名方的功能,具体内容不再赘述。
[0129] 接收器506,用于接收第一签名方发送的第一中间变量,所述第一中间变量为第一签名方根据签名对象和生成的第一随机数计算得到。
[0130] 处理器504,用于根据所述第一中间变量以及所述第二签名方获取的第二私密密钥和所述第二签名方生成的第二随机数计算第一签名值和第二中间变量;其中第二私密密钥和第二随机数的定义在方法100的步骤106中已有描述,在此不再赘述。可选的,所述数字签名装置500可进一步包括存储器或用于存储的单元(未图示),当所述处理器504获取第二私密密钥时,可以从存储器或用于存储的单元中进行读取。
[0131] 发送器502,用于将所述第一签名值和第二中间变量发送给第一签名方,以便所述第一签名方根据所述第一签名值、第二中间变量、所述第一签名方获取的第一私密密钥和所述第一签名方生成的第一随机数计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0132] 可选的,接收器506还用于接收所述第一签名方发送的第一部分公钥,其中,所述第一部分公钥根据所述第一私密密钥计算得到。
[0133] 处理器504还用于根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥。
[0134] 发送器502用于将所述第二部分公钥发送所述第一签名方,以便所述第一签名方根据所述第二部分公钥计算所述数字签名的公钥。
[0135] 可选的,处理器504根据所述第一部分公钥和所述第二私密密钥计算第二部分公钥,具体包括:
[0136] 处理器504基于椭圆曲线对所述第一部分公钥和所述第二私密密钥计算所述第二部分公钥。
[0137] 可选的,处理器504根据所述第一中间变量以及获取的第二私密密钥和第二随机数计算第一签名值和第二中间变量,具体包括:
[0138] 处理器504根据所述第一中间变量以及获取的第二私密密钥和第二随机数,基于椭圆曲线计算第一签名值和第二中间变量。
[0139] 图6是根据本申请一个实施例的数字签名系统示意图,如图6所示,数字签名系统600包括第一签名装置602和第二签名装置604。
[0140] 第一签名装置602,用于获取第一私密密钥、生成第一随机数,并根据签名对象生成第一中间变量,以及将所述第一中间变量发送给第二签名装置604;
[0141] 第二签名装置604,用于获取第二私密密钥、生成第二随机数,并根据所述第一中间变量以及所述第二私密密钥和第二随机数计算第一签名值和第二中间变量,并将所述第一签名值和第二中间变量发送给所述第一签名装置602;
[0142] 第一签名装置602还用于根据所述第一私密密钥、所述第一随机数、所述第一签名值和所述第二中间变量计算第二签名值,其中,所述第一签名值和所述第二签名值构成所述签名对象的数字签名。
[0143] 应当理解的是,第一签名装置602可为如前所述的数字签名装置400,即可实现前述方法100和方法200中第一签名方的功能,第二签名装置604可为如前所述的数字签名装置500,即可实现前述方法100和方法200中第二签名方的功能,具体内容不再赘述。
[0144] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0145] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,所述计算机可读记录介质包括用于以计算机(例如计算机)可读的形式存储或传送信息的任何机制。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等,该计算机软件产品包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0146] 最后应说明的是:以上实施例仅用以说明本申请实施例的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
[0147] 本领域的技术人员应明白,本发明实施例的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0148] 本发明实施例是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0149] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0150] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。