CN110505056B - 一种支持可信显示的协同签名方法和装置 - Google Patents
一种支持可信显示的协同签名方法和装置 Download PDFInfo
- Publication number
- CN110505056B CN110505056B CN201910657001.6A CN201910657001A CN110505056B CN 110505056 B CN110505056 B CN 110505056B CN 201910657001 A CN201910657001 A CN 201910657001A CN 110505056 B CN110505056 B CN 110505056B
- Authority
- CN
- China
- Prior art keywords
- signature
- message
- caller
- generating
- elliptic curve
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims description 62
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种支持可信显示的协同签名方法和装置,该方法包括以下步骤:1)签名参数初始化,产生整个签名过程中所需的公开参数;2)调用方和协同方生成秘钥;3)调用方和协同方合作生成公钥;4)生成签名。本发明方案保证仅在用户确认待签名消息正确性后,才会生成完整的数字签名;同时保证协同方数据丢失时,由于其缺乏存储在调用方的子私钥,攻击者无法利用协同方生成完整的数字签名。
Description
技术领域
本发明涉及密码学技术,尤其涉及一种支持可信显示的协同签名方法和装置。
背景技术
数字签名设备被广泛应用在电子商务、电子政务等场景,用于提供数字签名、身份认证等功能。
当前,数字签名设备中存储私钥信息,为避免数字签名设备在用户不知情的情况下对错误的消息进行数字签名,现有技术提出:在调用方根据数字签名请求方发送的待签名信息发起数字签名请求时,将待签名信息显示给用户,在用户确认待签名信息正确性、验证用户的PIN码后,完成数字签名并返回给数字签名请求方。但是,该方法中,若数字签名设备丢失或被窃取,攻击者在掌握用户PIN码后,能够使用该设备独立完成数字签名,从而造成个人或企业的损失。
为克服上述问题,现有技术提出:调用方在向数字签名设备发起数字签名请求或将数字签名结果返回给数字签名请求方时,可以通过短信验证码或口令的方式,验证用户身份信息。但是,该访问控制是在调用方处完成的,攻击者可以通过篡改调用方程序等方式,绕过该限制,完成完整的数字签名。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种支持可信显示的协同签名方法和装置。
本发明解决其技术问题所采用的技术方案是:一种支持可信显示的协同签名方法,参与方包括调用方和协同方,包括以下步骤:
1)签名参数初始化
产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
2)调用方和协同方生成秘钥
调用方获得私钥D1,协同方获得私钥D2;D1、D2为位于[1,n-1]之间的两个随机数;
3)调用方和协同方合作生成公钥
3.1)调用方计算D1在Fq上的逆元D1 -1mod n,并计算P1=D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算。
3.2)协同方接收并存储用户身份信息,并计算P=D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;
协同方计算D2在Fq上的逆元D2 -1mod n,并计算P2=D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
3.3)调用方计算W1=D1 -1[*]P2,存储计算结果W1,然后调用方计算P=W1[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
4)生成签名
4.1)调用方根据子私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;
4.2)协同方可信地展示待签名消息M,在用户验证消息无误后,根据待签名消息M生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
4.3)调用方根据D1、r和s2生成完整签名并返回给数字签名请求方。
按上述方案,所述步骤4.1)中调用方根据子私钥D1生成第一部分签名Q1的过程如下:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1;其中,[*]表示椭圆曲线点乘运算。
按上述方案,所述步骤4.2)中协同方中可信地展示待签名消息M前通过本地安全存储私钥拥有者身份信息验证用户的身份。
按上述方案,所述步骤4.2)中协同方生成待签名消息M的消息摘要e的过程如下:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e;其中,Z表示私钥拥有者身份标识,Hash()表示预设的密码杂凑函数。
按上述方案,所述步骤4.2)中根据Q1和e生成第二部分签名r的过程如下:
协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算r=x1+e mod n,将计算结果r作为第二部分签名;若r等于0,则协同方重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算。
按上述方案,所述步骤4.2)中根据D2生成第三部分签名s2,采用以下公式:
s2=D2*(r+k2)mod n。
按上述方案,所述步骤4.3)中调用方根据D1、r和s2生成完整签名(r,s),其中,s=k1+D1*s2-r mod n。
一种支持可信显示的协同签名装置,参与方包括调用方和协同方,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于调用方和协同方生成密钥;调用方获得私钥D1,协同方获得私钥D2;D1、D2为位于[1,n-1]之间的两个随机数;
公钥生成模块,用于调用方和协同方合作生成公钥,具体如下:
1)调用方计算D1在Fq上的逆元D1 -1mod n,并计算P1=D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算。
2)协同方接收并存储用户身份信息,并计算P=D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;
协同方计算D2在Fq上的逆元D2 -1mod n,并计算P2=D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
3)调用方计算W1=D1 -1[*]P2,存储计算结果W1,然后调用方计算P=W1[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
签名生成模块,用于生成待签名消息M的完整签名;具体如下:
1)调用方根据子私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;调用方根据子私钥D1生成第一部分签名Q1的过程如下:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1;其中,[*]表示椭圆曲线点乘运算
2)协同方可信地展示待签名消息M,在用户验证消息无误后,根据待签名消息M生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
其中,协同方生成待签名消息M的消息摘要e的过程如下:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e;其中,Z表示私钥拥有者身份标识,Hash()表示预设的密码杂凑函数;
根据Q1和e生成第二部分签名r的过程如下:
协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算r=x1+e mod n,将计算结果r作为第二部分签名;若r等于0,则协同方重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算;
根据D2生成第三部分签名s2,采用以下公式:
s2=D2*(r+k2)mod n;
3)调用方根据D1、r和s2生成完整签名(r,s),其中,s=k1+D1*s2-r mod n,并将(r,s)返回给数字签名请求方。
本发明产生的有益效果是:本发明方法中,调用方和协同方分别存储部分私钥信息,任何一方无法获取完整的私钥信息;协同方(或协同签名设备)丢失时,攻击者仍无法构造完整的数字签名信息。而且,协同方(或协同签名设备)在进行信息的签名前,可信地展示待签名消息,在用户显示地确认签名消息的正确性后,才会使用存储的子私钥信息完成处理。因此,本方案中,在对消息进行数字签名时,用户能够确认待签名消息的正确性,并保证在协同方(或协同签名设备)丢失时,攻击者仍无法构造完整的数字签名,提高了数字签名的可靠性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图;
图2是本发明实施例的调用方和协同方合作生成公钥的过程示意图;
图3是本发明实施例的调用方和协同方生成待签名消息M的完整签名的过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种支持可信显示的协同签名方法,包括以下步骤:
步骤11:调用方中存储有子私钥D1,协同方中安全存储子私钥D2;
步骤12:调用方根据子私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;
步骤13:协同方可信地展示待签名消息M,在用户验证消息无误后,生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
步骤14:调用方根据D1、r和s2生成完整签名并返回给数字签名请求方;
通过步骤12~14所示过程,即可生成待签名消息M的完整签名。
调用方和协同方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点,各参数的具体取值等均根据SM2算法预先设定。
D1和D2可由调用方和协同方自行生成,D1和D2也可由可信第三方分别安全传递给调用方和协同方。其中,D1、D2为位于[1,n-1]之间的两个随机数。
然后双方合作生成公钥P,相应地,图2为本发明调用方和协同方合作生成公钥的过程示意图,如图2所示,包括以下步骤;
步骤21:调用方计算D1在Fq上的逆元D1 -1mod n,并计算D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算。
步骤22:协同方存储用户身份信息,并计算D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;计算D2在Fq上的逆元D2 -1mod n,并计算D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
步骤23:调用方计算D1 -1[*]P2[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
步骤24:调用方计算D1 -1[*]P2,存储计算结果W1,用于后续数字签名计算。
需要说明的是,上述步骤21~24的表示方式仅为举例说明,并不用于限制各步骤的执行顺序,在实际应用中,可根据实际需要设定各步骤的执行顺序,只要最终能够得到所需的结果即可,后续涉及到的各示意图中同样如此,不再赘述。
图3为本发明调用方和协同签名设备生成待签名消息M的完整签名的过程示意图,如图3所示,包括以下步骤31~310。
步骤31:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1。其中,[*]表示椭圆曲线点乘运算。
步骤32:调用方将Q1和待签名消息M作为参数发送给协同方。
步骤33:协同方中安全存储私钥拥有者身份信息;其在进行签名计算前通过PIN码、生物特征等方式验证用户的身份。仅当用户身份验证通过后,继续处理;否则报错并结束处理。
步骤34:仅当用户身份验证通过后,协同方可信地展示待签名消息M。
步骤35:用户通过按键或点击屏幕的方式,选择进行协同签名或取消协同签名。仅当用户同意进行签名时,继续下列处理步骤;否则返回错误信息,并结束处理流程。
步骤36:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e。其中,Z表示私钥拥有者身份标识,Hash()表示预定的密码杂凑函数。
步骤37:协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算x1+e mod n,将计算结果作为r。若r不等于0,则执行步骤38;若r等于0,则第二通信方可重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止。其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算。
步骤38:协同方计算D2*(r+k2)mod n,将计算结果作为s2,将r和s2返回给调用方。
步骤39:调用方计算k1+D1*s2-r mod n,得到计算结果s,其中,mod表示求模运算。
步骤310:若s不等于0且不等于n-r,则调用方将(r,s)作为完整签名返回给数字签名请求方。
基于上述方法,可以获得一种支持可信显示的协同签名装置,参与方包括调用方和协同方,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于调用方和协同方生成密钥;调用方获得私钥D1,协同方获得私钥D2;D1、D2为位于[1,n-1]之间的两个随机数;
公钥生成模块,用于调用方和协同方合作生成公钥,具体如下:
1)调用方计算D1在Fq上的逆元D1 -1mod n,并计算P1=D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算。
2)协同方接收并存储用户身份信息,并计算P=D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;
协同方计算D2在Fq上的逆元D2 -1mod n,并计算P2=D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
3)调用方计算W1=D1 -1[*]P2,存储计算结果W1,然后调用方计算P=W1[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
签名生成模块,用于生成待签名消息M的完整签名;具体如下:
1)调用方根据子私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;调用方根据子私钥D1生成第一部分签名Q1的过程如下:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1;其中,[*]表示椭圆曲线点乘运算
2)协同方可信地展示待签名消息M,在用户验证消息无误后,根据待签名消息M生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
其中,协同方生成待签名消息M的消息摘要e的过程如下:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e;其中,Z表示私钥拥有者身份标识,Hash()表示预设的密码杂凑函数;
根据Q1和e生成第二部分签名r的过程如下:
协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算r=x1+e mod n,将计算结果r作为第二部分签名;若r等于0,则协同方重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算;
根据D2生成第三部分签名s2,采用以下公式:
s2=D2*(r+k2)mod n;
3)调用方根据D1、r和s2生成完整签名(r,s),其中,s=k1+D1*s2-r mod n,并将(r,s)返回给数字签名请求方。
基于上述方法,本发明还公开了一种支持可信显示的协同签名设备。
一种支持可信显示的协同签名设备,包括:
协同签名设备可生成并安全存储自身的子私钥D2和相应子公钥P2;
协同签名设备也可由可信第三方分发子私钥D2,其安全存储D2和相应子公钥P2;
协同签名设备根据调用方发送的协同签名请求中待签名消息M和第一部分签名Q1,可信地展示待签名消息M;在用户验证消息无误后,生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r;并根据D2生成第三部分签名s2;将r和s2返回给调用方,使得调用方能够构造出完整的数字签名。
其中,
协同签名设备和调用方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点。
在收到调用方发起的协同生成公钥请求时,协同签名设备从[1,n-1]选择一个随机数D2,计算D2在Fq上的逆元D2-1mod n,计算D2-1[*]G并计算结果P2返回给调用方。其中,mod表示求模运算,[*]表示椭圆曲线点乘运算。
具体地,
在接收到调用方发起的协同签名请求时,协同签名设备解析请求获取待签名消息M和第一部分签名Q1。
协同签名设备根据存储的用户身份信息,在进行签名计算前验证用户的身份,验证用户身份的方式包括但不限于PIN码、生物特征等。
协同签名设备可信地展示待签名消息M;使得用户能够通过按键或点击屏幕的方式,选择进行协同签名或取消协同签名。
仅当用户同意进行协同签名时,协同签名设备将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,其中,Z表示私钥拥有者身份标识,Hash()表示预定的密码杂凑函数。
协同签名设备产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算x1+e mod n,将计算结果作为r,其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算。
若r不等于0,则协同签名设备计算D2*(r+k2)mod n,将计算结果作为s2;将r和s2返回给调用方,使得调用方能够构造完整的数字签名。
此外,
调用方和协同签名设备可以通过USB等物理连接的方式直接连接进行交互;通过无线、蓝牙、Near Field Communication(NFC)等非物理连接的方式直接进行交互;也可借助第三方实体转发的方式,完成信息交互。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种支持可信显示的协同签名方法,参与方包括调用方和协同方,其特征在于,包括以下步骤:
1)签名参数初始化
产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
2)调用方和协同方生成秘钥
调用方获得私钥D1,协同方获得私钥D2;D1、D2为位于[1,n-1]之间的两个随机数;
3)调用方和协同方合作生成公钥
3.1)调用方计算D1在Fq上的逆元D1 -1mod n,并计算P1=D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
3.2)协同方接收并存储用户身份信息,并计算P=D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;
协同方计算D2在Fq上的逆元D2 -1mod n,并计算P2=D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
3.3)调用方计算W1=D1 -1[*]P2,存储计算结果W1,然后调用方计算P=W1[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
4)生成签名
4.1)调用方根据私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;
4.2)协同方可信地展示待签名消息M,在用户验证消息无误后,根据待签名消息M生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
4.3)调用方根据D1、r和s2生成完整签名并返回给数字签名请求方。
2.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.1)中调用方根据私钥D1生成第一部分签名Q1的过程如下:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1;其中,[*]表示椭圆曲线点乘运算。
3.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.2)中协同方中可信地展示待签名消息M前通过本地安全存储私钥拥有者身份信息验证用户的身份。
4.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.2)中协同方生成待签名消息M的消息摘要e的过程如下:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e;其中,Z表示协同方的私钥拥有者身份标识,Hash()表示预设的密码杂凑函数。
5.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.2)中根据Q1和e生成第二部分签名r的过程如下:
协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算r=x1+e mod n,将计算结果r作为第二部分签名;若r等于0,则协同方重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算。
6.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.2)中根据D2生成第三部分签名s2,采用以下公式:
s2=D2*(r+k2)mod n。
7.根据权利要求1所述的支持可信显示的协同签名方法,其特征在于,所述步骤4.3)中调用方根据D1、r和s2生成完整签名(r,s),其中,s=k1+D1*s2-r mod n。
8.一种支持可信显示的协同签名装置,参与方包括调用方和协同方,其特征在于,包括:
签名参数初始化模块,用于产生整个签名过程中所需的公开参数;所述参数包括:SM2算法的椭圆曲线相关参数(q,Fq,n,G)、密码杂凑函数Hash();
其中,q为大素数,Fq为包含q个元素的有限域,n为素数,G为椭圆曲线的一个基点,其阶为n;
密钥生成模块,用于调用方和协同方生成密钥;调用方获得私钥D1,协同方获得私钥D2;D1、D2为位于[1,n-1]之间的两个随机数;
公钥生成模块,用于调用方和协同方合作生成公钥,具体如下:
1)调用方计算D1在Fq上的逆元D1 -1mod n,并计算P1=D1 -1[*]G,将计算结果P1和用户身份信息发送给协同方,并发起协同生成公钥请求;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算;
2)协同方接收并存储用户身份信息,并计算P=D2 -1[*]P1[-]G,将计算结果P作为公钥存储用于后续数字签名计算;
协同方计算D2在Fq上的逆元D2 -1mod n,并计算P2=D2 -1[*]G,将计算结果P2返回给调用方,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
3)调用方计算W1=D1 -1[*]P2,存储计算结果W1,然后调用方计算P=W1[-]G,将计算结果P作为公钥公开,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算;
签名生成模块,用于生成待签名消息M的完整签名;具体如下:
1)调用方根据私钥D1生成第一部分签名Q1,并将待签名消息M和Q1发送给协同方;调用方根据私钥D1生成第一部分签名Q1的过程如下:调用方在收到对待签名消息M进行数字签名的请求时,产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]W1,将计算结果作为Q1;其中,[*]表示椭圆曲线点乘运算;
2)协同方可信地展示待签名消息M,在用户验证消息无误后,根据待签名消息M生成待签名消息M的消息摘要e,根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2,将r和s2返回给调用方;
其中,协同方生成待签名消息M的消息摘要e的过程如下:协同方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e;其中,Z表示协同方的私钥拥有者身份标识,Hash()表示预设的密码杂凑函数;
根据Q1和e生成第二部分签名r的过程如下:
协同方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G[+]Q1,得到计算结果(x1,y1),并计算r=x1+e mod n,将计算结果r作为第二部分签名;若r等于0,则协同方重新产生k2,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算,mod表示求模运算;
根据D2生成第三部分签名s2,采用以下公式:
s2=D2*(r+k2)mod n;
3)调用方根据D1、r和s2生成完整签名(r,s),其中,s=k1+D1*s2-r mod n,并将(r,s)返回给数字签名请求方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910657001.6A CN110505056B (zh) | 2019-07-19 | 2019-07-19 | 一种支持可信显示的协同签名方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910657001.6A CN110505056B (zh) | 2019-07-19 | 2019-07-19 | 一种支持可信显示的协同签名方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110505056A CN110505056A (zh) | 2019-11-26 |
CN110505056B true CN110505056B (zh) | 2022-04-15 |
Family
ID=68586256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910657001.6A Active CN110505056B (zh) | 2019-07-19 | 2019-07-19 | 一种支持可信显示的协同签名方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110505056B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111245594B (zh) * | 2019-12-31 | 2023-01-10 | 航天信息股份有限公司 | 一种基于同态运算的协同签名方法及系统 |
CN111211911B (zh) * | 2019-12-31 | 2021-05-14 | 支付宝(杭州)信息技术有限公司 | 一种协同签名方法、装置、设备及系统 |
CN111510299B (zh) * | 2020-04-10 | 2021-03-19 | 宁波富万信息科技有限公司 | 联合数字签名生成方法、电子设备和计算机可读介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109088726B (zh) * | 2018-07-19 | 2021-01-26 | 郑州信大捷安信息技术股份有限公司 | 基于sm2算法的通信双方协同签名及解密方法和系统 |
CN108989047B (zh) * | 2018-07-19 | 2021-03-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于sm2算法的通信双方协同签名方法与系统 |
CN108667627B (zh) * | 2018-07-20 | 2021-05-11 | 武汉大学 | 基于两方协同的sm2数字签名方法 |
-
2019
- 2019-07-19 CN CN201910657001.6A patent/CN110505056B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110505056A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110505056B (zh) | 一种支持可信显示的协同签名方法和装置 | |
CN110224812B (zh) | 一种基于多方安全计算的电子签名移动客户端与协同服务器通信的方法以及设备 | |
CN107248909B (zh) | 一种基于sm2算法的无证书安全签名方法 | |
US9185111B2 (en) | Cryptographic authentication techniques for mobile devices | |
CN108959911A (zh) | 一种密钥链生成、验证方法及其装置 | |
CN109150897B (zh) | 一种端到端的通信加密方法及装置 | |
KR20140009105A (ko) | 무한 중첩된 해시 체인들에 의한 1회용 패스워드 인증 | |
CN109245903B (zh) | 双方协同生成sm2算法的签名方法、装置及存储介质 | |
CN112087428B (zh) | 一种基于数字证书的抗量子计算身份认证系统及方法 | |
CN113067823B (zh) | 邮件用户身份认证和密钥分发方法、系统、设备及介质 | |
CN104126284A (zh) | 生成数字签名 | |
WO2019110399A1 (en) | Two-party signature device and method | |
CN108764912A (zh) | 一种基于短信验证码的支付方法及装置 | |
CN111654481B (zh) | 一种身份认证方法、装置和存储介质 | |
CN116204914A (zh) | 一种可信隐私计算方法、装置、设备及存储介质 | |
CN111130758B (zh) | 一种适用于资源受限设备的轻量级匿名认证方法 | |
CN107395627B (zh) | 一种基于单向函数的轻量级认证协议 | |
CN114257366B (zh) | 信息同态处理方法、装置、设备及计算机可读存储介质 | |
CN113468580A (zh) | 多方协同签名的方法和系统 | |
CN111245594B (zh) | 一种基于同态运算的协同签名方法及系统 | |
CN116865970A (zh) | 基于国密算法的多方协同密钥产生和数字签名方法及系统 | |
CN115860741A (zh) | 区块链数据加密验证方法、装置及系统 | |
CN109842493B (zh) | 基于非对称密钥池的抗量子计算环签名方法和系统 | |
CN112003693A (zh) | 一种基于sm2的多方参与数字签名方法及系统 | |
JP3746919B2 (ja) | 可変認証情報を用いる資格認証方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |