CN114070564A - 数字签名的方法和装置 - Google Patents

数字签名的方法和装置 Download PDF

Info

Publication number
CN114070564A
CN114070564A CN202010762162.4A CN202010762162A CN114070564A CN 114070564 A CN114070564 A CN 114070564A CN 202010762162 A CN202010762162 A CN 202010762162A CN 114070564 A CN114070564 A CN 114070564A
Authority
CN
China
Prior art keywords
information
user
private key
server
random number
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.)
Pending
Application number
CN202010762162.4A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010762162.4A priority Critical patent/CN114070564A/zh
Publication of CN114070564A publication Critical patent/CN114070564A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了信息安全领域的数字签名方法。本申请提出的技术方案中,将用户的私钥分为两个份额,其中一个份额由用户的口令生成,另一个份额存储在服务器。本申请的技术方案中,由于属于用户保管的那一份私钥份额不再固定保存在用户的某一个本地设备上,因此当用户需要进行数字签名时,用户不再局限于必须使用一个固定的本地设备,而是可以使用任意能够基于用户口令生成私钥的设备均可以与服务器联合实现数字签名,从而可以提高用户实现数字签名的便捷性。

Description

数字签名的方法和装置
技术领域
本申请涉及网络信息安全领域,并且,更具体地,涉及数字签名的方法和装置。
背景技术
网络的安全,主要是网络信息安全,需要取相应的安全技术措施,提供适合的安全服务。数字签名机制作为保障网络信息安全的手段之一,可以解决网络信息的伪造、抵赖、冒充和篡改问题。
数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名。
数字签名可以使用信息发送者的私钥对信息原文进行加密,得到加密的摘要信息,并向该摘要信息和信息原文一起传送给接收者。接收者用自己的公钥解密被加密的摘要信息,并基于信息原文产生一个摘要信息,以及自己生成的摘要信息与解密得到的摘要信息对比。如果相同,则说明接受者收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过。因此数字签名能够验证信息的完整性。
为了提高数字签名的可靠性,一种常见的解决方案为:将用户私钥通过一定的方式分割成两份或多份,每份称为一份秘密份额,然后将这些秘密份额存储到不同的计算装置中,例如,将其中部分秘密份额存储到用户的本地设备中并将部分秘密份额存放在安全保护措施到位、安全条件好的专业的密码服务机构的在线密码服务系统中;当密码应用程序、设备或系统需要使用用户私钥进行密码运算时,如进行数字签名或数据解密时,存储不同秘密份额的两个或多个计算装置分别使用自己的秘密份额进行密码运算,最后将各装置计算的结果合并,形成最后的、使用用户私钥进行密码运算的结果,例如得到数字签名或数据解密的结果。这里,对用户私钥进行的分割可以是普通秘密分割,也可以是门限密码(threshold cryptography)分割。
但是,上述技术方案却存在如下问题:用户必须使用存储了私钥的本地设备才能实现信息的数字签名,反之,用户在没有携带存储了私钥的本地设备的情况下,没有办法实现数字签名,这大大影响了用户进行数字签名的便捷性。
发明内容
本申请提供一种数字签名的方法,可以提高数字签名的便捷性。
第一方面,本申请提供一种数字签名的方法,该方法包括:用户设备获取用户输入的口令;所述用户设备使用预设的密钥推演函数,基于所述口令,生成所述用户的第一私钥份额;所述用户设备获取待签名数据;所述用户设备联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名。
由用户保管的那一份私钥不再存储在固定某台本地设备上,而是由用户输入的口令生成。这使得用户只需记住口令,即可在任意一台具有基于口令生成密钥的功能的本地设备上联合服务器实现数字签名,从而可以提高用户实现数字签名的便捷性。
在第一方面的一些可能的实现方式中,所述用户设备联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名,包括:所述用户设备使用同态加密机制对所述第一私钥份额进行加密,得到第一加密信息;所述用户设备联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的信息。
该实现方式中,对用户设备和服务器上的私钥份额分别进行加密后在联合签名,这样可以保证私钥份额的安全性,从而可以提高数字签名的安全性。例如,如图3和图4所示的方法中,使用加法同态加密机制进行加密。
在第一方面的一些可能的实现方式中,所述用户设备联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,包括:所述用户设备联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
该实现方式中,使用椭圆曲线数字签名算法(elliptic curve digitalsignature algorithm,ECDSA)算法实现签名,可以提高签名的安全性。
第一方面使用ECDSA实现数字签名的一些实现方式中,所述用户设备和所述服务器之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述用户设备联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述用户设备联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名所述服务器使用的随机数。
并且,所述用户设备和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
用户设备和服务器通过乘法秘密共享的方式来共享各自使用的随机数,以及通过加密秘密共享的方式来共享各自所知的私钥份额,可以降低各自的计算复杂度。
第一方面中,使用ECDSA实现数字签名的一些实现方式中,所述第一私钥份额与所述第一加密信息满足如下关系式:c1=HE(sk1),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息。其中,所述用户设备联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名,包括:所述用户设备从
Figure BDA0002613374690000021
中随机选取所述第一随机数,
Figure BDA0002613374690000022
表示小于且与q互素的所有整数,q表示椭圆曲线群的阶位;所述用户设备基于所述第一随机数生成第一随机数信息,所述第一随机数信息与所述第一随机数之间满足如下关系式:R1=[k1]P,其中,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示所述椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加;所述用户设备基于所述待签名数据生成数据信息,所述数据信息与所述待签名数据之间满足如下关系:H=h(m),其中,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;所述用户设备向所述服务器发送所述第一加密信息、所述第一随机数信息和所述数据信息;所述用户设备从所述服务器接收第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure BDA0002613374690000023
Figure BDA0002613374690000024
c3=HE(η·q+t1),
Figure BDA0002613374690000031
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure BDA0002613374690000032
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure BDA0002613374690000033
中选取的所述第二随机数,η表示从
Figure BDA0002613374690000034
中选取的第三随机数,
Figure BDA0002613374690000035
表示小于且与q2互素的所有整数;所述用户设备使用所述同态加密机制对所述第三加密信息进行解密,得到第一解密信息;所述用户设备基于所述第一解密信息生成第一签名信息,所述第一签名信息与所述第一解密信息满足如下关系式:
Figure BDA0002613374690000036
其中,
Figure BDA0002613374690000037
表示k1的模q乘法逆,s'表示所述第一解密信息;所述用户设备基于所述第一签名信息和所述第二随机数信息生成第二签名信息,所述第一签名信息中包含所述第二随机数信息和所述第一签名信息。
如图3或图4所示的方法中,根据使用加法秘密共享方式对用户的私钥进行拆分得到的第一私钥份额和第二私钥份额,以及根据使用乘法秘密共享方式对随机数进行拆分得到两个随机数进行签名。
该实现方式中的签名方式,既可以提高签名的安全性,又可以降低数字签名的复杂性。
在第一方面的一些实现方式中,所述方法还包括:所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户。
该实现方式中,用户设备通过零知识证明方法来验证用户的合法性。该方法无需额外的认证机制来认证用户的合法性相比,可以提高数字签名的实现效率。
用户设备和服务器联合使用ECDSA方式来实现数字签名的情况下,在一个示例中,所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户,包括:所述用户设备基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r]·(pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000039
中选取的第四随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;所述用户设备向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
该示例中,用户设备在使用零知识证明方法验证用户合法性的情况下,使用加法同态加密机制来实现验证信息的安全性。
用户设备和服务器联合使用ECDSA方式来实现数字签名的情况下,在另一个示例中,所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户,包括:所述用户设备基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000038
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;所述用户设备向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
该示例中,用户设备在使用零知识证明方法验证用户合法性的情况下,使用长期公钥加密机制来实现验证信息的安全性。
在第一方面的一些实现方式中,所述用户设备获取用户输入的口令之前,所述方法还包括:所述用户设备获取所述用户输入的所述口令;所述用户设备使用所述密钥推演函数,基于所述口令生成所述第一私钥份额,所述口令用作所述密钥推演函数的秘密值;所述用户设备根据所述第一私钥份额和所述用户的私钥,生成所述用户的第二私钥份额;所述用户设备向所述服务器发送所述第二私钥份额。
也就是说,用户设备预先基于用户的口令拆分好用户的私钥,并将属于服务器保管的第二私钥份额发送给服务器存储。该实现方式的示例如图2所示的方法所示。
其中,用户设备可以基于加密秘密共享的方式来拆分用户私钥。当然,也可以使用乘法秘密共享的方式来拆分用户私钥。
第二方面,本申请提供一种数字签名的方法,该方法包括:服务器读取用户的第二私钥份额;所述服务器联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,所述第一私钥份额为所述用户设备使用预设的密钥推演函数基于所述用户向所述用户设备输入的口令生成的。
在第二方面的一些实现方式中,所述服务器联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,包括:所述服务器联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第一加密信息为所述用户设备使用同态加密机制对所述第一私钥份额进行加密得到的,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的。
在第二方面的一些实现方式中,所述服务器联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,包括:所述服务器联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
在第二方面的一些实现方式中,所述服务器和所述用户设备之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述服务器联合所述用户设备使用所述使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述服务器联合所述用户设备使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述服务器所使用的随机数。
并且,所述用户设备和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
在第二方面的一些实现方式中,所述服务器联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名,包括:所述服务器从所述用户设备接收所述第一加密信息、第一随机数信息和数据信息,所述第一加密信息、所述第一随机数信息和所述数据信息满足如下关系式:c1=HE(sk1),R1=[k1]P,H=h(m),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示一个阶位为q的椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;所述服务器基于所述第一加密信息、所述第一随机信息和所述数据信息生成第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure BDA0002613374690000041
c3=HE(η·q+t1),
Figure BDA0002613374690000042
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure BDA0002613374690000051
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure BDA0002613374690000052
中选取的所述第二随机数,η表示从
Figure BDA0002613374690000053
中选取的第三随机数,
Figure BDA0002613374690000054
表示小于且与q互素的所有整数,
Figure BDA0002613374690000055
表示小于且与q2互素的所有整数;所述服务器向所述用户设备发送所述第二随机数信息和所述第三加密信息,以便于所述用户设备获取所述待签名数据的签名。
在第二方面的一些实现方式中,所述方法还包括:所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户。
在第二方面的一些实现方式中,所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户,包括:所述服务器从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000057
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述用户的公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;所述服务器基于所述第一验证信息生成第一密钥,所述第一密钥满足如下关系式:μ'=KDF([sk2]Φ),其中,μ'表示所述第一密钥,[sk2]Φ表示sk2个Φ相加;所述服务器使用所述第一密钥对所述第二验证信息进行解密,得到Q1和π;所述服务器在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
在第二方面的一些实现方式中,所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户,包括:所述服务器从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000056
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;所述服务器使用所述公钥加密机制对所述第二验证信息进行解密,得到Q1和π;所述服务器在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
在第二方面的一些实现方式中,所述方法还包括:所述服务器接收所述用户设备发送的所述第二私钥份额;所述服务器存储所述第二私钥份额。
第三方面,本申请提供一种数字签名的装置。所述装置包括:获取模块,用于获取用户输入的口令;处理模块,用于使用预设的密钥推演函数,基于所述口令,生成所述用户的第一私钥份额;所述获取模块还用于获取待签名数据;所述处理模块还用于联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名。
在第三方面的一些实现方式中,所述处理模块具体用于:使用同态加密机制对所述第一私钥份额进行加密,得到第一加密信息;联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的信息。
在第三方面的一些实现方式中,所述处理模块具体用于:联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
在第三方面的一些实现方式中,所述装置和所述服务器之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述装置联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述装置使用的随机数,所述第二随机数是指所述装置联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名所述服务器使用的随机数。
并且,所述装置和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
在第三方面的一些实现方式中,所述第一私钥份额与所述第一加密信息满足如下关系式:c1=HE(sk1),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息。其中,所述处理模块具体用于:从
Figure BDA0002613374690000061
中随机选取第一随机数,
Figure BDA0002613374690000062
表示小于且与q互素的所有整数,q表示椭圆曲线群的阶位;基于所述第一随机数生成第一随机数信息,所述第一随机数信息与所述第一随机数之间满足如下关系式:R1=[k1]P,其中,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示所述椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加;基于所述待签名数据生成数据信息,所述数据信息与所述待签名数据之间满足如下关系:H=h(m),其中,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;向所述服务器发送所述第一加密信息、所述第一随机数信息和所述数据信息;从所述服务器接收第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure BDA0002613374690000063
c3=HE(η·q+t1),
Figure BDA0002613374690000064
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure BDA0002613374690000065
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure BDA0002613374690000066
中选取的所述第二随机数,η表示从
Figure BDA0002613374690000067
中选取的第三随机数,
Figure BDA0002613374690000068
表示小于且与q2互素的所有整数;使用所述同态加密机制对所述第三加密信息进行解密,得到第一解密信息;基于所述第一解密信息生成第一签名信息,所述第一签名信息与所述第一解密信息满足如下关系式:
Figure BDA0002613374690000069
其中,
Figure BDA00026133746900000610
表示k1的模q乘法逆,s'表示所述第一解密信息;基于所述第一签名信息和所述第二随机数信息生成第二签名信息,所述第一签名信息中包含所述第二随机数信息和所述第一签名信息。
在第三方面的一些实现方式中,所述处理模块还用于:使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户。
在第三方面的一些实现方式中,所述处理模块具体用于:基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA00026133746900000611
中选取的第四随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
在第三方面的一些实现方式中,所述处理模块具体用于:基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000071
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
在第三方面的一些实现方式中,所述获取模块获取用户输入的口令之前,所述获取模块还用于获取所述用户输入的所述口令;
相应地,所述处理模块还用于:使用所述密钥推演函数,基于所述口令生成所述第一私钥份额,所述口令用作所述密钥推演函数的秘密值;根据所述第一私钥份额和所述用户的私钥,生成所述用户的第二私钥份额;向所述服务器发送所述第二私钥份额。
第四方面,本申请提供一种数字签名的装置,所述装置包括:读取模块,用于从存储器中读取用户的第二私钥份额;处理模块,用于联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,所述第一私钥份额为所述用户设备使用预设的密钥推演函数基于所述用户向所述用户设备输入的口令生成的。
在第四方面的一些实现方式中,所述处理模块具体用于:联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第一加密信息为所述用户设备使用同态加密机制对所述第一私钥份额进行加密得到的,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的。
在第四方面的一些实现方式中,所述处理模块具体用于:联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
在第四方面的一些实现方式中,所述装置和所述用户设备之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述装置联合所述用户设备使用所述使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述装置联合所述用户设备使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述服务器所使用的随机数。
并且,所述装置和所述用户设备之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
在第四方面的一些实现方式中,所述处理模块具体用于接收所述第一加密信息、第一随机数信息和数据信息,所述第一加密信息、所述第一随机数信息和所述数据信息满足如下关系式:c1=HE(sk1),R1=[k1]P,H=h(m),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示一个阶位为q的椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;基于所述第一加密信息、所述第一随机信息和所述数据信息生成第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure BDA0002613374690000081
c3=HE(η·q+t1),
Figure BDA0002613374690000082
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure BDA0002613374690000083
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure BDA0002613374690000084
中选取的第二随机数,η表示从
Figure BDA0002613374690000085
中选取的第三随机数,
Figure BDA0002613374690000086
表示小于且与q互素的所有整数,
Figure BDA0002613374690000087
表示小于且与q2互素的所有整数;向所述用户设备发送所述第二随机数信息和所述第三加密信息,以便于所述用户设备获取所述待签名数据的签名。
在第四方面的一些实现方式中,所述处理模块还用于:通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户。
在第四方面的一些实现方式中,所述处理模块具体用于:从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000088
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述用户的公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;基于所述第一验证信息生成第一密钥,所述第一密钥满足如下关系式:μ'=KDF([sk2]Φ),其中,μ'表示所述第一密钥,[sk2]Φ表示sk2个Φ相加;使用所述第一密钥对所述第二验证信息进行解密,得到Q1和π;在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
在第四方面的一些实现方式中,所述处理模块具体用于:从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure BDA0002613374690000089
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;使用所述公钥加密机制对所述第二验证信息进行解密,得到Q1和π;在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
在第四方面的一些实现方式中,所述处理模块还用于:接收所述用户设备发送的所述第二私钥份额以及将所述第二私钥份额存储到所述存储器。
第五方面,本申请提供了一种数字签名的装置,该装置包括:存储器、处理器和通信接口。所述存储器用于存储指令;所述处理器用于执行所述存储器存储的指令;当所述存储器存储的指令被执行时,所述处理器和所述通信接口用于执行第一方面或其中任意一种实现方式中的方法。
第六方面,本申请提供了一种数字签名的装置,该装置包括:存储器、处理器和通信接口。所述存储器用于存储指令;所述处理器用于执行所述存储器存储的指令;当所述存储器存储的指令被执行时,所述处理器用于执行第二方面或其中任意一种实现方式中的方法。
第七方面,本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的指令,该指令用于实现第一方面或其中任意一种实现方式中的方法。
第八方面,本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的指令,该指令用于实现第二方面或其中任意一种实现方式中的方法。
第九方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行第一方面或其中任意一种实现方式中的方法。
第十方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行第二方面或其中任意一种实现方式中的方法。
第十一方面,本申请提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行第一方面或其中任意一种实现方式中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或其中任意一种实现方式中的方法。
第十二方面,本申请提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行第二方面或其中任意一种实现方式中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第二方面或其中任意一种实现方式中的方法。
第十三方面,本申请提供了一种用户设备,用户设备包括处理器、存储器和通信接口,其中:存储器中存储有计算机指令,处理器执行计算机指令,以调用通信接口实现第一方面或其中任意一种实现方式中的方法。
第十四方面,本申请提供了一种服务器,服务器包括处理器、存储器和通信接口,其中:存储器中存储有计算机指令,处理器执行计算机指令,以调用通信接口实现第二方面或其中任意一种实现方式中的方法。
第十五方面,本申请提供一种签名系统,包含用户设备和服务器,所述用户设备用于执行第一方面或其中任意一种实现方式中的方法,所述服务器用于执行第二方面或其中对应实现方式中的方法,以实现数字签名。
附图说明
图1是可以应用本申请实施例的数字签名的方法的网络系统的示例性结构图;
图2是本申请一个实施例的私钥拆分的方法的示例性流程图;
图3是本申请一个实施例的数字签名的方法的示例性流程图;
图4是本申请另一个实施例的数字签名的方法的示例性流程图;
图5是本申请一个实施例的数字签名的装置的示例性结构图;
图6是本申请另一个实施例的数字签名的装置的示例性结构图;
图7是本申请又一个实施例的数字签名的装置的示例性结构图;
图8是本申请一个实施例的计算机程序产品的示例性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
零知识证明(Zero Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。
本申请的技术方案中,假设P和Q是椭圆曲线点群中的元素,椭圆曲线点群中的元素也称为椭圆曲线点,则P+Q表示P和Q的点加;[k]P表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P);“…”表示多个同类型的数据项或多个同类型的运算;z-1表示整数z的模n乘法逆,即z(z)-1modn=1,n为椭圆曲线点群的阶(阶位);多个整数相乘,包括整数符号相乘、常数与整数符号相乘,在不产生二义性的情况下,省略掉乘号“·”,例如k1·k2简化为k1k2,又如3·c简化为3c;mod n表示模n运算(modulo operation),如无特殊说明书,本申请中的模n运算的算子mod n的优先级是最低的,如a+b mod n等同于(a+b)mod n,a-b mod n等同于(a-b)mod n,ab mod n等同于(ab)mod n。
图1为可以应用本申请技术方案的网络系统的示意性架构图。如图1所述,该系统中可以包含服务器110、用户设备120和用户设备130。其中,服务器110与用户设备120和用户设备130之间可以相互通信。用户设备120或用户设备130可以是个人电脑或移动智能设备或安全存储设备等设备。
可以理解的是,图1仅是一种示例,不应对本申请的技术方案构成限制。例如,可以应用本申请技术方案的网络系统中可以包含更多的服务器,或者,可以包含更多或更少的用户设备,或者,还可以包括其他网络设备。
现有技术中,用户的私钥可以分为两份,分别可以称为第一私钥份额和第二私钥份额,其中,第一私钥份额可以存储在用户设备120上,第二私钥份额可以存储在服务器110上.这样,需要对用户的数据进行签名或解密时,需要用户设备120和服务器110进行协作,交互信息,一起完成数据的签名处理。
该方法虽然可以提高私钥的安全性(即冒充用户的人只有同时获得用户设备120和服务器110上的私钥份额,才能冒充用户进行签名),但是存在如下问题:用户只能使用用户设备120来实现签名,或者说,没有用户设备120的情况下,用户没有办法实现签名,从而降低用户进行数字签名的便捷性。
针对上述问题,本申请提出了新的数字签名的技术方案。本申请提出的技术方案中,将用户的私钥分为两个份额,其中一个份额由用户的口令生成,另一个份额存储在服务器。本申请的技术方案中,由于属于用户保管的那一份私钥份额不再固定保存在用户的某一个本地设备上,因此当用户需要进行数字签名时,用户不再局限与必须使用一个固定的本地设备,而是可以使用任意能够基于用户口令生成私钥的设备均可以与服务器联合实现数字签名,从而可以提高用户实现数字签名的便捷性。
图2为本申请一个实施例的拆分私钥的方法的示例性流程图。如图2所示,该方法可以包括S210,S220、S230、S240和S250。
S210,用户设备获取用户输入的口令。
例如,用户设备可以通过输入装置接收用户输入的口令。其中,用户设备的输入装置可以是键盘、触摸屏、麦克风、摄像头或者通信接口等。
该用户设备的一种示例为图1中的用户设备120。
S220,用户设备使用预设的密钥推演函数,基于所述口令生成第一私钥份额。其中,所述口令用作所述密钥推演函数的秘密值。
本申请实施例中,将基于口令生成的那一部分私钥称为第一私钥份额。本申请的实施例中,私钥也称为密钥。
本申请的实施例中,预设的密钥推演函数的一种示例为基于口令的密钥推演函数(password-based key derivation function,PBKDF)。
例如,若将第一私钥份额即为sk1,则sk1=PBKDF(pw,salt,itr#),其中,pw表示口令,salt表示随机盐值,itr#表示重复次数,salt可以随机生成,itr#可以预先设置。
S230,用户设备根据第一私钥份额和用户的私钥,生成用户的第二私钥份额。
本申请实施例中,将由服务器存储或者说保管的那一部分私钥称为第二私钥份额。
本申请实施例的一种示例中,可以采用加法秘密共享的方法来将用户的私钥拆分为第一私钥份额和第二私钥份额。
例如,基于该第一私钥份额和第二私钥份额进行签名时将使用ECDSA的情况下,sk=(sk1+sk2)modq,其中,q表示椭圆曲线群的阶,sk表示用户的私钥,sk2表示第二私钥份额。
基于该示例性情况,用户设备根据第一私钥份额和用户的私钥生成第二私钥份额可以包括:sk2=(sk-sk1)modq。
可以理解的是,本实施例中并不限于采用加法秘密共享的方法来将用户的私钥拆分为第一私钥份额和第二私钥份额。例如,本实施例可以使用乘法秘密共享的方法来将用户的私钥拆分为第一私钥份额和第二私钥份额。其中,与其他拆分私钥的方法相比,采用加法秘密共享的方法来将用户的私钥拆分为第一私钥份额和第二私钥份额可以降低用户设备和服务器的复杂度。
S240,用户设备向服务器发送第二私钥份额。该服务器的一种示例为图1中的服务器110。
通常来说,用户设备向服务器发送第二私钥份额的同时,还可以发送用户的标识信息,以便于服务器获知该第二私钥份额对应于该用户。
在一些示例中,用户设备还可以向服务器发送用户设备基于口令生成第一私钥份额时所使用的其他全部或部分参数,以便于后续签名过程中需要基于用户的口令生成第一私钥份额时,用户设备可以从服务器获取这些参数。
例如,sk1=PBKDF(pw,sal,t it#r)的情况下,用户设备还可以向服务器发送salt和itr#。
在服务器侧,相应地,服务器接收用户设备向服务器发送的各种信息,例如第二私钥份额、用户的标识信息,salt和itr#。
S250,服务器存储第二私钥份额。
在用户设备发送用户的标识信息的情况下,服务器可以记录用户的标识信息与该第二私钥份额的对应关系。在用户设备发送其他生成第一私钥份额的参数的情况下,服务器还可以记录这些参数与用户的标识信息的对应关系。
图3为本申请一个实施例的数字签名的方法的示意性流程图。该方法可以包括S310至S395。
S310,用户设备向服务器发送请求消息,该请求消息用于请求生成第一私钥份额所需的参数。相应地,服务器接收该请求消息。
可以理解的是,该用户设备与图2所示的方法中的用户设备可以是同一个用户设备,也可以是不同的用户设备。
例如,图2中的用户设备为用户设备120,本实施例中的用户设备为用户设备130。
生成第一私钥份额所需的参数可以是用户设备在此之前发送给服务器的,例如,S240中用户设备向服务器发送的salt和itr#。
在一些示例中,该请求消息中可以包含用户的标识信息。
S320,服务器向用户设备发送所述参数。相应地,用户设备接收所述参数。
作为一种示例,服务器上存储有用户的标识信息与所述参数的对应关系。这种情况下,服务器可以根据请求消息中携带的标识信息和服务器上存储的对应关系获知所述参数,从向用户设备发送所述参数。
例如,服务器读取用户对应的salt和itr#,并向用户设备发送salt和itr#。
S330,用户设备接收用户输入的口令。
S340,用户设备获取待签名数据。
待签名数据的示例包含邮件、同意书、合同等等。
S350,用户设备使用预设的密钥推演函数,基于所述口令,生成用户的第一私钥份额,其中,口令用作所述密钥推演函数的秘密值。
该步骤的实现可以参考S220,此处不再赘述。
S360,用户设备基于第一私钥份额和待签名数据,生成第一相关信息,第一相关信息包含第一加密信息、第一随机数信息、数据信息、第一验证信息、第二验证信息和加密机制信息。
例如,用户设备建立临时加法同态加密机制,该机制中的加密函数记为HE(),解密函数记为HD(),所述加密机制信息用于描述HE()。作为一种示例,该加法同态加密机制可以使用paillier加密算法。
若将该加法同态加密机制下的明文空间长度记为l,则通常情况下,l应满足:l≥max(3.log|q|+2,k),其中,q表示椭圆曲线群的阶,k表示安全系数,k可以根据需要预先设置。
用户设备选取随机数
Figure BDA0002613374690000121
计算R1=[k1]P和c1=HE(sk1),其中,R1表示第一随机数信息,P表示椭圆曲线群中的点或者点的坐标,c1表示第一加密信息,
Figure BDA0002613374690000122
表示小于且与q互素的所有整数,q表示椭圆曲线群的阶位。
用户设备计算Q1=[sk1]P和π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,ZKPoK[]表示零知识证明,&表示“且”,π是为了证明用户知道第一私钥份额。具体地,ZKPoK[c1&Q1]表示零知识证明c1和Q1
用户设备选取
Figure BDA0002613374690000123
并计算Φ=[r]P、μ=KDF([r](pk-Q1))和c2={Q1,π}μ,其中,pk表示用户的公钥,KDF()表示密钥推演函数(key derivation function)。Φ表示所述第一验证信息,c2表示第二验证信息。在一些示例中,公钥可以基于用户的私钥和一些参数计算得到。
数据信息可以表示为h(m),其中h()表示杂凑函数,m表示待签名数据。
S370,用户设备向服务器发送所述第一相关信息。相应地,服务器接收所述第一相关信息。
第一相关信息可以表示为(Des.HE,R1,c1,c2,Φ,h(m)),Des.HE表示对HE()的描述。(Des.HE,R1,c1,c2,Φ,h(m))可以表示将逗号相隔的信息拼接在一起。
S380,服务器根据第二私钥份额、所述用户的私钥和所述第一相关信息,生成第二相关信息,所述第二相关信息包含第二随机数信息和第三加密信息。
具体地,服务器计算μ=KDF([sk2]Φ),用μ解密c2,得到Q1和π;然后服务器验证[sk2]P+Q1=pk是否成立,并验证π是否正确。验证π是否正确的方法可以参考相关现有技术,此处不再赘述。
如果[sk2]P+Q1=pk且π正确,则可以继续后续流程,否则可以放弃此次签名。
服务器在[sk2]P+Q1=pk且π正确的情况下,可以选取随机数
Figure BDA0002613374690000131
计算R=(rx,ry)=[k2]·R1
Figure BDA0002613374690000132
选取随机数
Figure BDA0002613374690000133
计算
Figure BDA0002613374690000134
c3=HE(η·q+t1),
Figure BDA0002613374690000135
c=c3⊙c4
Figure BDA0002613374690000137
表示小于且与q2互素的所有整数。
将c当做第三加密信息,将R当做第二随机数信息,生成包含第三加密信息和第二随机数信息的第二相关信息,第二相关信息可以表示为(R,c)。
S390,服务器向用户设备发送第二相关信息。相应地,用户设备从服务器接收该第二相关信息。
S395,用户设备根据第二相关信息生成待签名数据的签名信息。
例如,用户设备计算s'=HD(c)和计算
Figure BDA0002613374690000136
用户设备验证(R,s)是否为m的合法签名。如果是,则将(R,s)作为待签名数据m的签名信息,否则放弃该次签名。
(R,s)可以表示将R和s拼接在一起,验证(R,s)是否为合法签名的方法可以参考现有技术,此处不再赘述。
本实施例的方法中,在用户设备侧,无需保管用户的私钥,从而可以避免限制用户仅能使用固定的用户设备来进行数字签名,进而可以实现数字签名的便携性。
此外,服务器利用sk2认证用户的合法性,无需部署额外的认证密钥在服务器端,可以降低用户合法性认证的复杂度,提升数字签名的效率。
在用户设备侧,用户设备利用服务器保管sk2的事实进行同态加密,以实现用户合法性的验证,无需额外的加密机制就可以保护用于用户认证的信息的通信,可以提高数字签名的效率。
另外,用户设备利用同态加密的方法对sk1进行加密,不直接泄露sk1给服务器,可以保持提高数字签名的安全性。
可以理解的是,本申请实施例中,用户设备使用加法同态加密机制对第一私钥份额进行加密仅是一种示例,本申请的其他实施例中,用户设备可以使用其他机制来对第一私钥份额进行加密。
例如,服务器和用户设备可以拥有长期公钥加密系统(Encs(·),Decs(·)),且用户设备可以使用其中的Encs(·)来获取第二验证信息;服务器可以使用Decs(·)来解密第二验证信息。其中,用户设备使用Encs(·)获取第二验证信息可以表示为c2=Encs{Q1,π},相应地,服务器使用Decs(·)解密第二验证信息以获取Q1和π可以表示为(Q1,π)=Decs(c2)。这种情况下,用户设备可以不向服务器发送加密机制信息。
上述实施例中,用户设备与服务器之间采用乘法秘密共享的方法来将椭圆曲线签名算法所需的随机数拆分为用户设备使用的第一随机数和服务器使用的第二随机数。可以理解的是,本申请的实施例中并不限定用户设备与服务器之间仅能使用乘法秘密共享的方法来拆分该随机数。例如,本申请的实施例中,可以采用加法秘密共享的方法来拆分该随机数。其中,与使用其他方法拆分该随机数相比,使用乘法秘密共享的方法来拆分该随机数,可以降低用户设备与服务器的复杂度。
本申请的一些实施例中,可选地,用户设备与服务器之间可以通过其他方式来验证用户的合法性,例如,用户设备与服务器之间可以有额外的认证机制来认证用户的合法性。
作为一种示例,用户可以在服务器上预先设置一个用于验证用户合法性的口令,在需要对用户的数据进行数字签名的情况下,用户设备和服务器可以利用该口令进行用户认证。
作为另一个示例,用户可以向服务器注册用户设备对应的手机号码,然后服务器向该用户设备发送一次性口令。这样,用户设备即可以基于该一次性口令与服务器实现用户的认证。
本申请通过额外的认证机制来认证用户以实现数字签名的方法的示例性流程图如图4所示。
S410,用户设备与服务器双方相互认证。
例如,用户设备与服务器可以通过上述预先设置验证口令或者一次性口令来实现认证。
S420,服务器向用户设备发送用于基于口令生成第一私钥份额所需的参数。
例如,服务器在认证了用户的情况下,才向用户设备发送用于基于口令生成第一私钥份额所需的参数。该步骤可以参考S320,此处不再赘述。
S430,用户设备接收用户输入的口令。
S440,用户设备获取待签名数据。
S450,用户设备使用预设的密钥推演函数,基于所述口令,生成用户的第一私钥份额,其中,口令用作所述密钥推演函数的秘密值。
可以理解,S430至S450可以分别参考S330至S450,此处不再赘述。
S460,用户设备基于第一私钥份额和待签名数据,生成第一相关信息,第一相关信息包含第一加密信息、第一随机数信息、数据信息和加密机制信息。
其中,用户设备生成第一加密信息、第一随机数信息、数据信息、加密机制信息以及第一相关信息的方式可以参考S360中相关内容,此处不再赘述。
S470,用户设备向服务器发送所述第一相关信息。相应地,服务器接收所述第一相关信息。
S480,服务器根据第二私钥份额、所述用户的私钥和所述第一相关信息,生成第二相关信息,所述第二相关信息包含第二随机数信息和第三加密信息。
该步骤中服务器生成第二随机数信息和第三加密信息以及第二相关信息的方式,可以参考S380中的相关内容,此处不再赘述。不同之处在于,该步骤中,服务器可以不进行用户的认证。
S490,服务器向用户设备发送第二相关信息。相应地,用户设备从服务器接收该第二相关信息。
S495,用户设备根据第二相关信息生成待签名数据的签名信息。
该步骤可以参考S395,此处不再赘述。
本实施例的方法中,在用户设备侧,无需保管用户的私钥,从而可以避免限制用户仅能使用固定的用户设备来进行数字签名,进而可以实现数字签名的便携性。
另外,用户设备利用同态加密的方法对sk1进行加密,不直接泄露sk1给服务器,可以保持提高数字签名的安全性。
与图3所示的实施例类似,可以理解的是,本申请实施例中,用户设备使用同态加密机制对第一私钥份额进行加密仅是一种示例,本申请的其他实施例中,用户设备可以使用其他机制来对第一私钥份额进行加密。
本申请的上述实施例中,对于用户的私钥,采取的是加法秘密共享拆分的方式进行拆分,以得到第一私钥份额和第二私钥份额的。例如,用户的私钥、第一私钥份额和第二私钥份额满足如下示例性关系:sk=sk1+sk2modq。
可选地,本申请的实施例中,也可以使用乘法秘密共享拆分的方式将用户的私钥拆分为第一私钥份额和第二私钥份额。例如,用户的私钥、第一私钥份额和第二私钥份额满足如下示例性关系:sk=sk1·sk2
使用乘法秘密共享拆分的方式对用户的私钥进行拆分的情况下,相关的签名方法可以参考前述实施例,此处不再赘述。
本申请的上述实施例中,对于随机数k,采取的是乘法秘密共享的方式来进行拆分,以得到k1和k2。采取乘法秘密共享的方式进行拆分的一种示例中,k、k1和k2之间满足如下关系:k=k1·k2modq。
可以理解的是,本申请也可以使用其他方式对k进行拆分,例如使用加密秘密共享的方式对k进行拆分。只是采取乘法秘密共享的方式进行拆分可以使得后续签名过程更为简便。
图5是本申请一个实施例的数字签名的装置500的示意性结构图。装置500可以包括获取模块510和处理模块520。装置500可以是用户设备或能够应用与用户设备上的芯片。
装置1100可以用于实现本申请中的数字签名的方法,例如,可以用于执行图2至图4中任一个所示的方法由用户设备执行的相关步骤。
其中,获取模块510可以用于执行与用户设备获取信息的相关步骤,处理模块520可以用于执行与用户设备计算、处理、认证、验证、接收或发送等相关的步骤。
图6是本申请一个实施例的数字签名的装置600的示意性结构图。装置600可以包括读取模块610和处理模块620。装置600可以是服务器或能够应用与服务器的芯片。
装置600可以用于实现本申请中的数字签名的方法,例如,可以用于执行图2至图4中任一个所示的方法中由服务器执行的步骤。
其中,读取模块610可以用于执行与服务器读取信息的相关步骤,处理模块620可以用于执行与服务器计算、处理、认证、验证、接收或发送等相关的步骤。
图7为本申请一个实施例的装置700的示意性结构图。装置700包括处理器702、通信接口703和存储器704。装置700可以为用户设备、服务器或能够应用于用户设备的芯片或能够应用于服务器的芯片。
处理器702、存储器704和通信接口703之间可以通过总线通信。存储器704中存储有可执行代码,处理器702读取存储器704中的可执行代码以执行对应的方法。存储器704中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
例如,存储器704中的可执行代码用于实现图2至图4中任一个所示的方法中由用户设备执行的步骤,处理器702读取存储器704中的该可执行代码以使得处理器702和通信接口703执行所述步骤。
又如,存储器704中的可执行代码用于实现图2至图4中任一个所示的方法中由服务器执行的步骤,处理器702读取存储器704中的该可执行代码以使得处理器702和通信接口703执行所述步骤。
其中,处理器702可以为CPU。存储器704可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM)。存储器704还可以包括非易失性存储器(2non-volatile memory,2NVM),例如只读存储器(2read-only memory,2ROM),快闪存储器,硬盘驱动器(hard disk drive,HDD)或固态启动器(solid state disk,SSD)。
在本申请的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图8示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品800是使用信号承载介质801来提供的。所述信号承载介质801可以包括一个或多个程序指令802,其当被一个或多个处理器运行时可以提供以上针对图2至图4中任一个所示的方法中描述的功能或者部分功能。因此,例如,图3中所示的实施例,S310至S395的一个或多个特征可以由与信号承载介质801相关联的一个或多个指令来承担。
在一些示例中,信号承载介质801可以包含计算机可读介质803,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。在一些实施方式中,信号承载介质801可以包含计算机可记录介质804,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质801可以包含通信介质805,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质801可以由无线形式的通信介质805(例如,遵守IEEE 802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令802可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质803、计算机可记录介质804、和/或通信介质805中的一个或多个传达到计算设备的程序指令802,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能词条。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (40)

1.一种数字签名的方法,其特征在于,包括:
用户设备获取用户输入的口令;
所述用户设备使用预设的密钥推演函数,基于所述口令,生成所述用户的第一私钥份额;
所述用户设备获取待签名数据;
所述用户设备联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名。
2.如权利要求1所述的方法,其特征在于,所述用户设备联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名,包括:
所述用户设备使用同态加密机制对所述第一私钥份额进行加密,得到第一加密信息;
所述用户设备联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的信息。
3.如权利要求2所述的方法,其特征在于,所述用户设备联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,包括:
所述用户设备联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
4.如权利要求3所述的方法,其特征在于,所述用户设备和所述服务器之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述用户设备联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述用户设备联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名所述服务器使用的随机数;
并且,所述用户设备和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
5.如权利要求4所述的方法,其特征在于,所述第一私钥份额与所述第一加密信息满足如下关系式:c1=HE(sk1),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息;
其中,所述用户设备联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名,包括:
所述用户设备从
Figure FDA0002613374680000011
中随机选取所述第一随机数,
Figure FDA0002613374680000012
表示小于且与q互素的所有整数,q表示椭圆曲线群的阶位;
所述用户设备基于所述第一随机数生成第一随机数信息,所述第一随机数信息与所述第一随机数之间满足如下关系式:R1=[k1]P,其中,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示所述椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加;
所述用户设备基于所述待签名数据生成数据信息,所述数据信息与所述待签名数据之间满足如下关系:H=h(m),其中,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;
所述用户设备向所述服务器发送所述第一加密信息、所述第一随机数信息和所述数据信息;
所述用户设备从所述服务器接收第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure FDA0002613374680000021
Figure FDA0002613374680000022
c3=HE(η·q+t1),
Figure FDA0002613374680000023
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure FDA0002613374680000024
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure FDA0002613374680000025
中选取的所述第二随机数,η表示从
Figure FDA0002613374680000026
中选取的第三随机数,
Figure FDA0002613374680000027
表示小于且与q2互素的所有整数;
所述用户设备使用所述同态加密机制对所述第三加密信息进行解密,得到第一解密信息;
所述用户设备基于所述第一解密信息生成第一签名信息,所述第一签名信息与所述第一解密信息满足如下关系式:
Figure FDA0002613374680000028
其中,
Figure FDA0002613374680000029
表示k1的模q乘法逆,s'表示所述第一解密信息;
所述用户设备基于所述第一签名信息和所述第二随机数信息生成第二签名信息,所述第一签名信息中包含所述第二随机数信息和所述第一签名信息。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户。
7.如权利要求6所述的方法,其特征在于,所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户,包括:
所述用户设备基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA00026133746800000210
中选取的第四随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;
所述用户设备向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
8.如权利要求6所述的方法,其特征在于,所述用户设备使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户,包括:
所述用户设备基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA00026133746800000211
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;
所述用户设备向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
9.如权利要求1至8中任一项所述的方法,其特征在于,所述用户设备获取用户输入的口令之前,所述方法还包括:
所述用户设备获取所述用户输入的所述口令;
所述用户设备使用所述密钥推演函数,基于所述口令生成所述第一私钥份额,所述口令用作所述密钥推演函数的秘密值;
所述用户设备根据所述第一私钥份额和所述用户的私钥,生成所述用户的第二私钥份额;
所述用户设备向所述服务器发送所述第二私钥份额。
10.一种数字签名的方法,其特征在于,包括:
服务器从存储器中读取用户的第二私钥份额;
所述服务器联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,所述第一私钥份额为所述用户设备使用预设的密钥推演函数基于所述用户向所述用户设备输入的口令生成的。
11.如权利要求10所述的方法,其特征在于,所述服务器联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,包括:
所述服务器联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第一加密信息为所述用户设备使用同态加密机制对所述第一私钥份额进行加密得到的,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的。
12.如权利要求11所述的方法,其特征在于,所述服务器联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,包括:
所述服务器联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
13.如权利要求12所述的方法,其特征在于,所述服务器和所述用户设备之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述服务器联合所述用户设备使用所述使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述服务器联合所述用户设备使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述服务器所使用的随机数;
并且,所述用户设备和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
14.如权利要求13所述的方法,其特征在于,所述服务器联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名,包括:
所述服务器从所述用户设备接收所述第一加密信息、第一随机数信息和数据信息,所述第一加密信息、所述第一随机数信息和所述数据信息满足如下关系式:c1=HE(sk1),R1=[k1]P,H=h(m),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示一个阶位为q的椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;
所述服务器基于所述第一加密信息、所述第一随机信息和所述数据信息生成第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure FDA0002613374680000041
c3=HE(η·q+t1),
Figure FDA0002613374680000042
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure FDA0002613374680000043
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure FDA0002613374680000044
中选取的所述第二随机数,η表示从
Figure FDA0002613374680000045
中选取的第三随机数,
Figure FDA0002613374680000046
表示小于且与q互素的所有整数,
Figure FDA0002613374680000047
表示小于且与q2互素的所有整数;
所述服务器向所述用户设备发送所述第二随机数信息和所述第三加密信息,以便于所述用户设备获取所述待签名数据的签名。
15.如权利要求14所述的方法,其特征在于,所述方法还包括:
所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户。
16.如权利要求15所述的方法,其特征在于,所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户,包括:
所述服务器从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000048
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述用户的公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;
所述服务器基于所述第一验证信息生成第一密钥,所述第一密钥满足如下关系式:μ'=KDF([sk2]Φ),其中,μ'表示所述第一密钥,[sk2]Φ表示sk2个Φ相加;
所述服务器使用所述第一密钥对所述第二验证信息进行解密,得到Q1和π;
所述服务器在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
17.如权利要求15所述的方法,其特征在于,所述服务器通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户,包括:
所述服务器从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000049
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;
所述服务器使用所述公钥加密机制对所述第二验证信息进行解密,得到Q1和π;
所述服务器在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
18.如权利要求10至17中任一项所述的方法,其特征在于,所述方法还包括:
所述服务器接收所述用户设备发送的所述第二私钥份额;
所述服务器存储所述第二私钥份额。
19.一种数字签名的装置,其特征在于,包括:
获取模块,用于获取用户输入的口令;
处理模块,用于使用预设的密钥推演函数,基于所述口令,生成所述用户的第一私钥份额;
所述获取模块还用于获取待签名数据;
所述处理模块还用于联合服务器,基于所述第一私钥份额和所述服务器上为所述用户存储的第二私钥份额,对所述待签名数据进行签名。
20.如权利要求19所述的装置,其特征在于,所述处理模块具体用于:
使用同态加密机制对所述第一私钥份额进行加密,得到第一加密信息;
联合所述服务器,基于所述第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的信息。
21.如权利要求20所述的装置,其特征在于,所述处理模块具体用于:
联合所述服务器,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
22.如权利要求21所述的装置,其特征在于,所述装置和所述服务器之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述装置联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述装置使用的随机数,所述第二随机数是指所述装置联合所述服务器使用椭圆曲线数字签名算法对所述待签名数据进行签名所述服务器使用的随机数;
并且,所述装置和所述服务器之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
23.如权利要求22所述的装置,其特征在于,所述第一私钥份额与所述第一加密信息满足如下关系式:c1=HE(sk1),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息;
其中,所述处理模块具体用于:
Figure FDA0002613374680000051
中随机选取所述第一随机数,
Figure FDA0002613374680000052
表示小于且与q互素的所有整数,q表示椭圆曲线群的阶位;
基于所述第一随机数生成第一随机数信息,所述第一随机数信息与所述第一随机数之间满足如下关系式:R1=[k1]P,其中,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示所述椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加;
基于所述待签名数据生成数据信息,所述数据信息与所述待签名数据之间满足如下关系:H=h(m),其中,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;
向所述服务器发送所述第一加密信息、所述第一随机数信息和所述数据信息;
从所述服务器接收第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure FDA0002613374680000053
c3=HE(η·q+t1),
Figure FDA0002613374680000054
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure FDA0002613374680000055
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure FDA0002613374680000056
中选取的所述第二随机数,η表示从
Figure FDA0002613374680000057
中选取的第三随机数,
Figure FDA0002613374680000058
表示小于且与q2互素的所有整数;
使用所述同态加密机制对所述第三加密信息进行解密,得到第一解密信息;
基于所述第一解密信息生成第一签名信息,所述第一签名信息与所述第一解密信息满足如下关系式:
Figure FDA0002613374680000061
其中,
Figure FDA0002613374680000062
表示k1的模q乘法逆,s'表示所述第一解密信息;
基于所述第一签名信息和所述第二随机数信息生成第二签名信息,所述第一签名信息中包含所述第二随机数信息和所述第一签名信息。
24.如权利要求23所述的装置,其特征在于,所述处理模块还用于:
使用零知识证明方法,向所述服务器证明所述用户为拥有所述第一私钥份额的合法用户。
25.如权利要求24所述的装置,其特征在于,所述处理模块具体用于:
基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000063
中选取的第四随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;
向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
26.如权利要求24所述的装置,其特征在于,所述处理模块具体用于:
基于所述第一私钥份额和所述用户的公钥,生成第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000064
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;
向所述服务器发送所述第一验证信息和所述第二验证信息,以便于所述服务器验证所述用户为拥有所述第一私钥份额的合法用户。
27.如权利要求19至26中任一项所述的装置,其特征在于,所述获取模块获取用户输入的口令之前,所述获取模块还用于获取所述用户输入的所述口令;
相应地,所述处理模块还用于:使用所述密钥推演函数,基于所述口令生成所述第一私钥份额,所述口令用作所述密钥推演函数的秘密值;根据所述第一私钥份额和所述用户的私钥,生成所述用户的第二私钥份额;向所述服务器发送所述第二私钥份额。
28.一种数字签名的装置,其特征在于,包括:
读取模块,用于从存储器中读取用户的第二私钥份额;
处理模块,用于联合用户设备,基于所述用户的第一私钥份额和所述第二私钥份额,对所述用户的待签名数据进行签名,所述第一私钥份额为所述用户设备使用预设的密钥推演函数基于所述用户向所述用户设备输入的口令生成的。
29.如权利要求28所述的装置,其特征在于,所述处理模块具体用于:
联合所述用户设备,基于第一加密信息和第二加密信息,对所述待签名数据进行签名,所述第一加密信息为所述用户设备使用同态加密机制对所述第一私钥份额进行加密得到的,所述第二加密信息为所述服务器使用所述同态加密机制对所述第二私钥份额进行加密得到的。
30.如权利要求29所述的装置,其特征在于,所述处理模块具体用于:
联合所述用户设备,使用椭圆曲线数字签名算法,基于所述第一加密信息和所述第二加密信息,对所述待签名数据进行签名。
31.如权利要求30所述的装置,其特征在于,所述装置和所述用户设备之间通过乘法秘密共享的方式来共享第一随机数和第二随机数,其中,所述第一随机数是指所述装置联合所述用户设备使用所述使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述用户设备使用的随机数,所述第二随机数是指所述装置联合所述用户设备使用椭圆曲线数字签名算法对所述待签名数据进行签名时所述服务器所使用的随机数;
并且,所述装置和所述用户设备之间通过加密秘密共享的方式来共享所述第一私钥份额和所述第二私钥份额。
32.如权利要求31所述的装置,其特征在于,所述处理模块具体用于接收所述第一加密信息、第一随机数信息和数据信息,所述第一加密信息、所述第一随机数信息和所述数据信息满足如下关系式:c1=HE(sk1),R1=[k1]P,H=h(m),其中,sk1表示所述第一私钥份额,HE()表示使用所述同态加密机制进行加密,c1表示所述第一加密信息,R1表示所述第一随机数信息,k1表示所述第一随机数,P表示一个阶位为q的椭圆曲线群上的一个点的坐标,[k1]P表示k1个P相加,m表示所述待签名数据,h(·)表示杂凑函数,H表示所述数据信息;
基于所述第一加密信息、所述第一随机信息和所述数据信息生成第二随机数信息和第三加密信息,所述第二随机数信息和所述第三加密信息满足如下关系式:R=[k2]R1,c=c3⊙c4
Figure FDA0002613374680000071
c3=HE(η·q+t1),
Figure FDA0002613374680000072
其中,R表示所述第二随机数信息,c表示所述第三加密信息,⊙表示对应位置的元素相乘,sk2表示所述第二私钥份额,
Figure FDA0002613374680000073
表示k2的模q乘法逆,rx表示R以(rx,ry)形式表示时的rx,mod表示取模运算,k2表示从
Figure FDA0002613374680000074
中选取的所述第二随机数,η表示从
Figure FDA0002613374680000075
中选取的第三随机数,
Figure FDA0002613374680000076
表示小于且与q互素的所有整数,
Figure FDA0002613374680000077
表示小于且与q2互素的所有整数;
向所述用户设备发送所述第二随机数信息和所述第三加密信息,以便于所述用户设备获取所述待签名数据的签名。
33.如权利要求32所述的装置,其特征在于,所述处理模块还用于:通过零知识证明方法,验证所述用户为拥有所述第一私钥份额的合法用户。
34.如权利要求33所述的装置,其特征在于,所述处理模块具体用于:从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2={Q1,π}μ,μ=KDF([r](pk-Q1)),Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000078
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,{Q1,π}μ表示使用密钥μ对Q1和π进行对称加密,ZKPoK[]表示零知识证明,&表示并且,KDF()表示密钥推演函数,pk表示所述用户的公钥,[r](pk-Q1)表示r个(pk-Q1)相乘;
基于所述第一验证信息生成第一密钥,所述第一密钥满足如下关系式:μ'=KDF([sk2]Φ),其中,μ'表示所述第一密钥,[sk2]Φ表示sk2个Φ相加;
使用所述第一密钥对所述第二验证信息进行解密,得到Q1和π;
在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
35.如权利要求33所述的装置,其特征在于,所述处理模块具体用于:
从所述用户设备接收第一验证信息和第二验证信息,所述第一验证信息和所述第二验证信息满足如下关系式:Φ=[r]P,c2=EncS{Q1,π},Q1=[sk1]P,π=ZKPoK[α:c1=HE(α)&Q1=[α]P],其中,Φ表示所述第一验证信息,c2表示所述第二验证信息,r表示从
Figure FDA0002613374680000081
中选取的随机数,[r]P表示r个P相加,[sk1]P表示sk1个P相加,ZKPoK[]表示零知识证明,&表示并且,EncS{Q1,π}表示使用公钥加密机制对Q1和π进行加密,pk表示所述公钥;
使用所述公钥加密机制对所述第二验证信息进行解密,得到Q1和π;
在Q1满足如下关系式:[sk2]P+Q1=pk,以及π正确的情况下,确定所述用户为拥有所述第一私钥份额的合法用户。
36.如权利要求28至35中任一项所述的装置,其特征在于,所述处理模块还用于:
接收所述用户设备发送的所述第二私钥份额以及将所述第二私钥份额存储到所述存储器。
37.一种数字签名的装置,其特征在于,包括:处理器,所述处理器与存储器耦合;
所述存储器用于存储指令;
所述处理器用于执行所述存储器中存储的指令,以实现如权利要求1至9中任一项所述的方法。
38.一种数字签名的装置,其特征在于,包括:处理器,所述处理器与存储器耦合;
所述存储器用于存储指令;
所述处理器用于执行所述存储器中存储的指令,以实现如权利要求10至18中任一项所述的方法。
39.一种计算机可读介质,其特征在于,包括指令,当所述指令在处理器上运行时,使得所述处理器实现如权利要求1至9中任一项所述的方法。
40.一种计算机可读介质,其特征在于,包括指令,当所述指令在处理器上运行时,使得所述处理器实现如权利要求10至18中任一项所述的方法。
CN202010762162.4A 2020-07-31 2020-07-31 数字签名的方法和装置 Pending CN114070564A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010762162.4A CN114070564A (zh) 2020-07-31 2020-07-31 数字签名的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010762162.4A CN114070564A (zh) 2020-07-31 2020-07-31 数字签名的方法和装置

Publications (1)

Publication Number Publication Date
CN114070564A true CN114070564A (zh) 2022-02-18

Family

ID=80228010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010762162.4A Pending CN114070564A (zh) 2020-07-31 2020-07-31 数字签名的方法和装置

Country Status (1)

Country Link
CN (1) CN114070564A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826614A (zh) * 2022-04-22 2022-07-29 安天科技集团股份有限公司 一种可认证密码库文件分布式存储方法、装置和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105812125A (zh) * 2016-03-28 2016-07-27 北京信安世纪科技有限公司 私钥的生成方法及装置
CN106357401A (zh) * 2016-11-11 2017-01-25 武汉理工大学 一种私钥存储及使用方法
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN107872322A (zh) * 2017-11-02 2018-04-03 武汉理工大学 基于同态加密的数字签名协同生成方法及系统
CN109413084A (zh) * 2018-11-15 2019-03-01 北京信安世纪科技股份有限公司 一种口令更新方法、装置及系统
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105812125A (zh) * 2016-03-28 2016-07-27 北京信安世纪科技有限公司 私钥的生成方法及装置
CN106357401A (zh) * 2016-11-11 2017-01-25 武汉理工大学 一种私钥存储及使用方法
CN106603246A (zh) * 2017-01-22 2017-04-26 武汉理工大学 一种sm2数字签名分割生成方法及系统
CN107872322A (zh) * 2017-11-02 2018-04-03 武汉理工大学 基于同态加密的数字签名协同生成方法及系统
CN109413084A (zh) * 2018-11-15 2019-03-01 北京信安世纪科技股份有限公司 一种口令更新方法、装置及系统
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826614A (zh) * 2022-04-22 2022-07-29 安天科技集团股份有限公司 一种可认证密码库文件分布式存储方法、装置和电子设备
CN114826614B (zh) * 2022-04-22 2024-02-23 安天科技集团股份有限公司 一种可认证密码库文件分布式存储方法、装置和电子设备

Similar Documents

Publication Publication Date Title
EP3642997B1 (en) Secure communications providing forward secrecy
CN107948189B (zh) 非对称密码身份鉴别方法、装置、计算机设备及存储介质
CN107483212B (zh) 一种双方协作生成数字签名的方法
JP5201136B2 (ja) 匿名認証システムおよび匿名認証方法
CN108199835B (zh) 一种多方联合私钥解密方法
WO2017097041A1 (zh) 数据传输方法和装置
US20110145576A1 (en) Secure method of data transmission and encryption and decryption system allowing such transmission
US9705683B2 (en) Verifiable implicit certificates
EP3318043A1 (en) Mutual authentication of confidential communication
CN109547209B (zh) 一种两方sm2数字签名生成方法
CN107360002B (zh) 一种数字证书的申请方法
US20150043735A1 (en) Re-encrypted data verification program, re-encryption apparatus and re-encryption system
CN112804205A (zh) 数据加密方法及装置、数据解密方法及装置
CN111342955B (zh) 一种通信方法及其设备、计算机存储介质
CN110336673B (zh) 一种基于隐私保护的区块链设计方法
CN109861956B (zh) 基于状态通道的数据验证系统、方法、装置及设备
CN109951276B (zh) 基于tpm的嵌入式设备远程身份认证方法
CN112784284B (zh) 加密处理系统、加密处理方法以及记录介质
US20240097894A1 (en) Threshold key exchange
JPWO2019093478A1 (ja) 鍵交換装置、鍵交換システム、鍵交換方法、及び鍵交換プログラム
JP2015501110A (ja) グループ暗号化方法およびデバイス
KR20210063378A (ko) 공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법
JP5324813B2 (ja) 鍵生成装置、証明書生成装置、サービス提供システム、鍵生成方法、証明書生成方法、サービス提供方法およびプログラム
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
NL1043779B1 (en) Method for electronic signing and authenticaton strongly linked to the authenticator factors possession and knowledge

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination