CN117375851A - 一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 - Google Patents
一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 Download PDFInfo
- Publication number
- CN117375851A CN117375851A CN202311511632.XA CN202311511632A CN117375851A CN 117375851 A CN117375851 A CN 117375851A CN 202311511632 A CN202311511632 A CN 202311511632A CN 117375851 A CN117375851 A CN 117375851A
- Authority
- CN
- China
- Prior art keywords
- server
- signature
- temporary
- key
- client
- 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
Links
- 238000012795 verification Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000005516 engineering process Methods 0.000 title claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 230000006854 communication Effects 0.000 abstract description 16
- 238000004891 communication Methods 0.000 abstract description 14
- 230000009545 invasion Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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)
-
- 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/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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
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)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及计算机密码技术领域,且公开了一种基于数字信封技术和SM2算法的两方安全协同签名验签方法,包括以下步骤:S1、密钥分发阶段;S2、协同签名阶段;S3、验证签名阶段。该基于数字信封技术和SM2算法的两方安全协同签名验签方法,通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度。
Description
技术领域
本发明涉及计算机密码技术领域,具体为一种基于数字信封技术和SM2算法的两方安全协同签名验签方法。
背景技术
随着移动互联网的不断发展,政务、金融等领域的信息交换过程会经受更多安全风险,使用数字签名的需求日益增多。现今的诸多数字签名技术往往通过使用非对称加密技术,单纯利用私钥签名、公钥验签的原理实现。
国家密码局于2010年12月17日颁布了非对称加密算法的SM2椭圆曲线公钥密码算法,相较于传统非对称加密算法如RSA算法,SM2在性能与安全上更胜一筹。然而即使应用SM2算法进行私钥签名公钥验签,若客户端用户私钥发生丢失、泄露,或在签名通信中被攻击者截获敏感信息,仍会轻易导致针对数据签名信息的恶意篡改,动摇客户端用户本身签名的完整性与不可否认性,威胁整个信息系统的安全防范机制。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了基于数字信封技术和SM2算法的两方安全协同签名验签方法,具备安全可靠的签名验签机制,实现数据通信双方利用各自私钥生成部分签名,并通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度等优点,解决了上述问题。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种基于数字信封技术和SM2算法的两方安全协同签名验签方法,包括以下步骤:
S1、密钥分发阶段;
S2、协同签名阶段;
S3、验证签名阶段。
所述密钥分发阶段还包括以下步骤:
S1.1、客户端A根据SM2椭圆曲线生成私钥分量DA和临时公钥PA,并把临时临时公钥PA发送给服务端B;
S1.2、服务端B根据SM2椭圆曲线生成私钥分量DB和临时公钥PB,并把临时公钥PB发送给客户端A;
S1.3、客户端A使用生成临时对称密钥KR1加密中间计算数据,并使用服务端B的临时公钥PB加密临时对密钥KR1作为数字信封传输给服务端B;
S1.4、服务端B接收到数据后使用私钥分量DB解密获得临时对密钥KR1,再通过临时对称密钥KR1解密数字信封内容获得中间数据,并计算得出协同签名使用的公钥pk;
所述协同签名阶段还包括以下步骤:
S2.1、客户端A根据约定杂凑算法计算待签名信息的摘要并生成随机数计算第一部分签名,使用临时对称密钥KR2加密后,再使用服务端B的临时公钥PB加密临时对称密钥KR2作为数字信封传输给服务端B;
S2.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR2,再通过临时对称密钥KR2解密数字信封内容获得摘要和第一部分签名;
S2.3、服务端B通过生成的临时随机数、摘要信息和第一部分签名计算出第二、三、四部分签名,并生成临时对称密钥KR3将其加密,再使用客户端A临时公钥PA加密临时对称密钥KR3作为数字信封传输给客户端A;
S2.4、客户端A接收数据后使用私钥分量DA解密获得临时对称密钥KR3,再通过临时对称密钥KR3解密数字信封内容获得第二、三、四部分签名信息;
S2.5、客户端A根据各部分签名信息计算出完整签名信息并进行输出;
所述验证签名阶段还包括以下步骤:
S3.1、客户端A使用临时对称密钥KR4加密完整签名信息和原始待签名信息,再使用服务端B的临时公钥PB加密临时对称密钥KR4作为数字信封传输给服务端B;
S3.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR4,再通过临时对称密钥KR4解密数字信封内容获得完整签名信息和原始待签名信息;
S3.3、服务端B将原始待签名信息根据约定杂凑算法计算生成摘要后,根据完整签名信息和生成的摘要进行计算对比,完成签名验证。
优选的,所述密钥分发包括以下过程:
A1.1、客户端A选择随机数DA作为第一部分私钥分量保存,DA∈[1,n-1],并生成临时公钥PA=DA[*]G,将PA发送给服务端B;
A1.2、服务端B选择随机数DB作为第二部分私钥分量保存,DB∈[1,n-1],并生成临时公钥PB=DB[*]G,将PB发送给客户端A;
A1.3、客户端A计算DA在椭圆曲线E上的逆元DA -1mod n,记作DA -1;
A1.4、服务端B计算DB在椭圆曲线E上的逆元DB -1mod n,记作DB -1;
A1.5、客户端A计算P1=DA-1[*]G,使用SM4等约定对称加密算法生成临时对称密钥KR1并加密P1为P’1,并将KR1使用服务端B临时公钥PB加密为K’R1,连同P’1传给服务端B;
A1.6、服务端B接收数据后使用私钥分量DB解密得到KR1,再使用KR1解密数据得到P1,计算Pk=DB -1[*]P1[–]G,将计算结果Pk作为公钥保存。
优选的,所述协同签名包括以下过程:
B1.1、客户端A将其与服务端B采用如随机数发生器产生的共同身份标识C与待签名信息M进行拼接运算,并使用SM3等约定密码杂凑算法进行哈希计算,取得哈希值e=hash(C||M),并将e转换为整数;
B1.2、客户端A生成随机数k1∈[1,n-1],计算第一部分签名s1=k1[*]G,使用SM4等约定对称加密算法生成临时对称密钥KR2并加密e、s1为e'、s'1,e'将KR2使用服务端B临时公钥PB加密为K'R2,连同e'、s'1发送至服务端B;
B1.3、服务端B接收数据后使用私钥分量DB解密得到KR2,再使用KR2解密数据得到e、s1,同时生成随机数k2∈[1,n-1],计算临时点st=k2[*]G;
B1.4、服务端B生成随机数k3∈[1,n-1],计算椭圆曲线E上坐标点位(x,y)=k3[*]s1[+]st;
B1.5、服务端B计算第二部分签名s2=(e+x)mod n,另记作r,当s2=0时,返回第4步重新生成k3并按顺序依次计算;
B1.6、服务端B计算第三部分签名s3=(DB*k3)mod n,第四部分签名s4=(DB*(s2+k2))mod n,使用SM4等约定对称加密算法生成临时对称密钥KR3并加密s2、s3、s4为s'2、s'3、s'4,并将KR3使用客户端A临时公钥PA加密为KR3’,连同s'2、s'3、s'4,发送至客户端A;
B1.7、客户端A接收数据后使用私钥分量DA解密得到KR3,再使用KR3解密数据得到s2、s3、s4,计算s=((DA*k1)*s3+DA*s4–s2)mod n,当s=0或s=n-s2时,返回第2步重新生成k1并按顺序依次计算;
B1.8、客户端A将坐标点位(r,s)作为完整签名输出。
优选的,所述验证签名包括以下过程:
C1.1、客户端A使用SM4等约定对称加密算法生成临时对称密钥KR4并加密完整签名信息(r,s)和原始待签名信息M,将KR4使用服务端B临时公钥PB加密为KR4’,连同原始待签名信息M和加密后的完整签名信息发送至服务端;
C1.2、服务端B接收数据后使用私钥分量DB解密得到KR4,再使用KR4解密数据得到完整签名信息(r,s)和原始待签名信息M,分别计算r、s的范围是否在[1,n-1]范围内,如不在则验证失败;
C1.3、服务端B计算t=(r+s)mod n,若t=0则验证失败;
C1.4、服务端B计算E上的点V=s[*]G+t[*]Pk,获取V的坐标点位(xV,yV),如V是无穷远点则验证失败;
C1.5、服务端B使用与客户端A共同身份标识C与原始待签名信息M进行拼接运算,使用SM3等约定密码杂凑算法进行哈希计算,取得哈希值ev=hash(C||M),并将ev转换为整数;
C1.6、服务端B计算R=(ev+xV)mod n;
C1.7、服务端B比较R与r,如果相等则验证通过,不相等则验证失败。
优选的,所述SM2椭圆曲线函数公式如下:
y2=x3+ax+b
4a3+27b2≠0(mod q)
公式中,通过函数公式确定一条椭圆曲线E,选定椭圆曲线上阶为素数的基点G作为生成元,n是椭圆曲线的阶,q是定义有限域Fq中元素大小的数目,参数a,b是有限域Fq上的元素,其中“mod”是求模运算,“||”是拼接运算,“[+]”、“[-]”、“[*]”是椭圆曲线的点加、点减、点乘运算。
与现有技术相比,本发明提供了基于数字信封技术和SM2算法的两方安全协同签名验签方法,具备以下有益效果:
1、本发明通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度。
2、本发明通过针对计算机入侵等黑客技术较强的抗攻击能力,同时,在协同签名使用过程中,参与方之间的通信量较小,计算复杂度相对较低,能够快速完成两方安全签名和验签操作。
3、本发明在各种安全通信场景如签署电子合同、进行金融交易时,基于数字信封技术和SM2算法的协同签名及验签方法可有效保障使用者签名的机密性、合法性、完整性和有效性,具备针对计算机入侵等黑客技术较强的抗攻击能力,同时,在协同签名使用过程中,参与方之间的通信量较小,计算复杂度相对较低,能够快速完成两方安全签名和验签操作。
附图说明
图1为本发明方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提高信息系统的安全系数、降低私钥泄露和信道传输的风险隐患,可使用基于数字信封技术提供信道加密安全保护和SM2椭圆曲线公钥密码算法的安全协同签名及验签方法,先将私钥进行分割,通过安全通道使移动客户端与服务端各保存部分私钥,在数据签名过程中,客户端与服务端分别先后签名,最终由客户端合成完整签名,服务端合成公钥后进行验签。本发明可以实现避免因某一方丢失私钥后被他人冒用并篡改原始数据伪造有效签名的风险,从而极大提高信息系统整体的安全性,请参阅图1,客户端A与服务端B在数据交互过程中,通过双方的私钥分量、临时公钥和临时对称密钥作为数字信封,将整个协同签名与验签过程加密保护。协同签名与验签的过程又主要分为密钥分发、协同签名与验证签名三部分,期间会产生私钥分量、临时公钥、公钥、临时对称密钥、签名信息摘要、签名分量、完整签名等数据信息,以下为具体使用与计算过程:
根据SM2椭圆曲线的函数表达式y2=x3+ax+b且4a3+27b2≠0(mod q)确定一条椭圆曲线E,选定椭圆曲线上阶为素数的基点G作为生成元,n是椭圆曲线的阶,q是定义有限域Fq中元素大小的数目,参数a,b是有限域Fq上的元素,其中“mod”是求模运算,“||”是拼接运算,“[+]”、“[-]”、“[*]”是椭圆曲线的点加、点减、点乘运算;
包括以下步骤:
S1、密钥分发阶段;
S2、协同签名阶段;
S3、验证签名阶段;
密钥分发阶段还包括以下步骤:
S1.1、客户端A根据SM2椭圆曲线生成私钥分量DA和临时公钥PA,并把临时临时公钥PA发送给服务端B;
S1.2、服务端B根据SM2椭圆曲线生成私钥分量DB和临时公钥PB,并把临时公钥PB发送给客户端A;
S1.3、客户端A使用生成临时对称密钥KR1加密中间计算数据,并使用服务端B的临时公钥PB加密临时对密钥KR1作为数字信封传输给服务端B;
S1.4、服务端B接收到数据后使用私钥分量DB解密获得临时对密钥KR1,再通过临时对称密钥KR1解密数字信封内容获得中间数据,并计算得出协同签名使用的公钥pk;
协同签名阶段还包括以下步骤:
S2.1、客户端A根据约定杂凑算法计算待签名信息的摘要并生成随机数计算第一部分签名,使用临时对称密钥KR2加密后,再使用服务端B的临时公钥PB加密临时对称密钥KR2作为数字信封传输给服务端B;
S2.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR2,再通过临时对称密钥KR2解密数字信封内容获得摘要和第一部分签名;
S2.3、服务端B通过生成的临时随机数、摘要信息和第一部分签名计算出第二、三、四部分签名,并生成临时对称密钥KR3将其加密,再使用客户端A临时公钥PA加密临时对称密钥KR3作为数字信封传输给客户端A;
S2.4、客户端A接收数据后使用私钥分量DA解密获得临时对称密钥KR3,再通过临时对称密钥KR3解密数字信封内容获得第二、三、四部分签名信息;
S2.5、客户端A根据各部分签名信息计算出完整签名信息并进行输出;
验证签名阶段还包括以下步骤:
S3.1、客户端A使用临时对称密钥KR4加密完整签名信息和原始待签名信息,再使用服务端B的临时公钥PB加密临时对称密钥KR4作为数字信封传输给服务端B;
S3.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR4,再通过临时对称密钥KR4解密数字信封内容获得完整签名信息和原始待签名信息;
S3.3、服务端B将原始待签名信息根据约定杂凑算法计算生成摘要后,根据完整签名信息和生成的摘要进行计算对比,完成签名验证;
实施例一:
PC机的客户端与服务器的服务端之间安全协同签名和验签的方法如下:
密钥分发过程:
PC端A选择随机数DA作为第一部分私钥分量,并生成临时公钥PA,将PA发送给服务端B;
服务端B选择随机数DB作为第二部分私钥分量,并生成临时公钥PB,将PB发送给PC端A;
PC端A根据私钥分量计算临时数据,使用临时对称密钥KR1加密临时数据,并将KR1使用服务端B临时公钥PB加密为KR1’,连同加密后的临时数据传给服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR1,再使用KR1解密数据得到临时数据并计算得出公钥Pk;
协同签名过程:
PC端A计算待签名信息M的摘要e;
PC端A生成随机数计算第一部分签名s1,使用临时对称密钥KR2加密e、s1,将KR2使用服务端B临时公钥PB加密为KR2’,连同加密后的数据发送至服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR2,再使用KR2解密数据得到e、s1,同时生成随机数并计算临时点st信息;
服务端B生成随机数并根据s1与st计算椭圆曲线E上坐标点位(x,y);服务端B根据坐标与摘要e计算第二部分签名s2,另记作r,且当s2=0时,返回第4步重新生成随机数并按顺序依次计算;
服务端B继续根据私钥分量计算第三部分签名s3和第四部分签名s4,使用临时对称密钥KR3加密s2、s3、s4,并将KR3使用PC端A临时公钥PA加密为KR3’,连同加密后的数据发送至PC端A;
PC端A接收数据后使用私钥分量DA解密得到KR3,再使用KR3解密数据,根据得到的s2、s3、s4计算s,当s=0或s=n-s2时,返回第2步重新生成随机数并按顺序依次计算;
PC端A将坐标点位(r,s)作为完整签名输出;
验证签名过程:
PC端A使用临时对称密钥KR4加密完整签名信息(r,s)和原始待签名信息M,将KR4使用服务端B临时公钥PB加密,连同原始待签名信息M和加密后的完整签名信息发送至服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR4,再使用KR4解密数据得到完整签名信息(r,s)和原始待签名信息M,分别计算r、s的范围是否在[1,n-1]范围内,如不在则验证失败;
服务端B根据r与s之和模n计算t,若t=0则验证失败;
服务端B根据t计算E上的点V,获取V的坐标点位(xV,yV),如V是无穷远点则验证失败;
服务端B计算原始待签名信息M的摘要ev;
服务端B计算根据摘要ev与坐标xV计算R;
服务端B比较R与r,如果相等则验证通过,不相等则验证失败;
此时,PC端A与服务端B完成了基于数字信封技术和SM2算法的密钥分发、协同签名和验签过程,通信中全程使用数字信封实现信道加密,并且通过SM2算法的协同签名实现了两方分别签名,最终服务端B进行验签。
实施例二:
手机客户端A与服务器端B基于数字信封技术与SM2算法的协同签名及验签如下:
密钥分发过程:
手机客户端A选择随机数DA作为第一部分私钥分量,并生成临时公钥PA,将PA发送给服务端B;
服务端B选择随机数DB作为第二部分私钥分量,并生成临时公钥PB,将PB发送给手机客户端A;
手机客户端A根据私钥分量计算临时数据,使用临时对称密钥KR1加密临时数据,并将KR1使用服务端B临时公钥PB加密为KR1’,连同加密后的临时数据传给服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR1,再使用KR1解密数据得到临时数据并计算得出公钥Pk;
协同签名过程:
手机客户端A计算待签名信息M的摘要e;
手机客户端A生成随机数计算第一部分签名s1,使用临时对称密钥KR2加密e、s1,将KR2使用服务端B临时公钥PB加密为KR2’,连同加密后的数据发送至服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR2,再使用KR2解密数据得到e、s1,同时生成随机数并计算临时点st信息;
服务端B生成随机数并根据s1与st计算椭圆曲线E上坐标点位(x,y);
服务端B根据坐标与摘要e计算第二部分签名s2,另记作r,且当s2=0时,返回第4步重新生成随机数并按顺序依次计算;
服务端B继续根据私钥分量计算第三部分签名s3和第四部分签名s4,使用临时对称密钥KR3加密s2、s3、s4,并将KR3使用手机客户端A临时公钥PA加密为KR3’,连同加密后的数据发送至手机客户端A;
手机客户端A接收数据后使用私钥分量DA解密得到KR3,再使用KR3解密数据,根据得到的s2、s3、s4计算s,当s=0或s=n-s2时,返回第2步重新生成随机数并按顺序依次计算;
手机客户端A将坐标点位(r,s)作为完整签名输出;
验证签名过程:
手机客户端A使用临时对称密钥KR4加密完整签名信息(r,s)和原始待签名信息M,将KR4使用服务端B临时公钥PB加密,连同原始待签名信息M和加密后的完整签名信息发送至服务端B;
服务端B接收数据后使用私钥分量DB解密得到KR4,再使用KR4解密数据得到完整签名信息(r,s)和原始待签名信息M,分别计算r、s的范围是否在[1,n-1]范围内,如不在则验证失败;
服务端B根据r与s之和模n计算t,若t=0则验证失败;
服务端B根据t计算E上的点V,获取V的坐标点位(xV,yV),如V是无穷远点则验证失败;
服务端B计算原始待签名信息M的摘要ev;
服务端B计算根据摘要ev与坐标xV计算R;
服务端B比较R与r,如果相等则验证通过,不相等则验证失败;
此时,手机客户端A与服务端B完成了基于数字信封技术和SM2算法的密钥分发、协同签名和验签过程,通信中全程使用数字信封实现信道加密,并且通过SM2算法的协同签名实现了两方分别签名,最终服务端B进行验签。
本发明通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度。
在各种安全通信场景如签署电子合同、进行金融交易时,基于数字信封技术和SM2算法的协同签名及验签方法可有效保障使用者签名的机密性、合法性、完整性和有效性,具备针对计算机入侵等黑客技术较强的抗攻击能力。同时,在协同签名使用过程中,参与方之间的通信量较小,计算复杂度相对较低,能够快速完成两方安全签名和验签操作。
当攻击者非法获取协同签名双方中的任意一个私钥时,攻击者对原始待签名数据改动后所得的部分签名,无法通过计算合成完整签名后的验签操作。即:公钥验签时可有效检验识别出因单一方私钥泄露而对原始数据进行的任意改动。同时,两方通讯过程中全部使用基于临时公钥与临时对称密钥加密的数字信封作为信道加密,也可有效预防攻击者截取中间通信数据并进行破解的问题。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种基于数字信封技术和SM2算法的两方安全协同签名验签方法,其特征在于:包括以下步骤:
S1、密钥分发阶段;
S2、协同签名阶段;
S3、验证签名阶段;
所述密钥分发阶段还包括以下步骤:
S1.1、客户端A根据SM2椭圆曲线生成私钥分量DA和临时公钥PA,并把临时临时公钥PA发送给服务端B;
S1.2、服务端B根据SM2椭圆曲线生成私钥分量DB和临时公钥PB,并把临时公钥PB发送给客户端A;
S1.3、客户端A使用生成临时对称密钥KR1加密中间计算数据,并使用服务端B的临时公钥PB加密临时对密钥KR1作为数字信封传输给服务端B;
S1.4、服务端B接收到数据后使用私钥分量DB解密获得临时对密钥KR1,再通过临时对称密钥KR1解密数字信封内容获得中间数据,并计算得出协同签名使用的公钥pk;
所述协同签名阶段还包括以下步骤:
S2.1、客户端A根据约定杂凑算法计算待签名信息的摘要并生成随机数计算第一部分签名,使用临时对称密钥KR2加密后,再使用服务端B的临时公钥PB加密临时对称密钥KR2作为数字信封传输给服务端B;
S2.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR2,再通过临时对称密钥KR2解密数字信封内容获得摘要和第一部分签名;
S2.3、服务端B通过生成的临时随机数、摘要信息和第一部分签名计算出第二、三、四部分签名,并生成临时对称密钥KR3将其加密,再使用客户端A临时公钥PA加密临时对称密钥KR3作为数字信封传输给客户端A;
S2.4、客户端A接收数据后使用私钥分量DA解密获得临时对称密钥KR3,再通过临时对称密钥KR3解密数字信封内容获得第二、三、四部分签名信息;
S2.5、客户端A根据各部分签名信息计算出完整签名信息并进行输出;
所述验证签名阶段还包括以下步骤:
S3.1、客户端A使用临时对称密钥KR4加密完整签名信息和原始待签名信息,再使用服务端B的临时公钥PB加密临时对称密钥KR4作为数字信封传输给服务端B;
S3.2、服务端B接收数据后使用私钥分量DB解密获得临时对称密钥KR4,再通过临时对称密钥KR4解密数字信封内容获得完整签名信息和原始待签名信息;
S3.3、服务端B将原始待签名信息根据约定杂凑算法计算生成摘要后,根据完整签名信息和生成的摘要进行计算对比,完成签名验证。
2.根据权利要求1所述的基于数字信封技术和SM2算法的两方安全协同签名验签方法,其特征在于:所述密钥分发包括以下过程:
A1.1、客户端A选择随机数DA作为第一部分私钥分量保存,DA∈[1,n-1],并生成临时公钥PA=DA[*]G,将PA发送给服务端B;
A1.2、服务端B选择随机数DB作为第二部分私钥分量保存,DB∈[1,n-1],并生成临时公钥PB=DB[*]G,将PB发送给客户端A;
A1.3、客户端A计算DA在椭圆曲线E上的逆元DA -1mod n,记作DA -1;
A1.4、服务端B计算DB在椭圆曲线E上的逆元DB -1mod n,记作DB -1;
A1.5、客户端A计算P1=DA-1[*]G,使用SM4等约定对称加密算法生成临时对称密钥KR1并加密P1为P’1,并将KR1使用服务端B临时公钥PB加密为K’R1,连同P’1传给服务端B;
A1.6、服务端B接收数据后使用私钥分量DB解密得到KR1,再使用KR1解密数据得到P1,计算Pk=DB -1[*]P1[–]G,将计算结果Pk作为公钥保存。
3.根据权利要求2所述的基于数字信封技术和SM2算法的两方安全协同签名验签方法,其特征在于:所述协同签名包括以下过程:
B1.1、客户端A将其与服务端B采用如随机数发生器产生的共同身份标识C与待签名信息M进行拼接运算,并使用SM3等约定密码杂凑算法进行哈希计算,取得哈希值e=hash(C||M),并将e转换为整数;
B1.2、客户端A生成随机数k1∈[1,n-1],计算第一部分签名s1=k1[*]G,使用SM4等约定对称加密算法生成临时对称密钥KR2并加密e、s1为e'、s'1,e'将KR2使用服务端B临时公钥PB加密为K'R2,连同e'、s'1发送至服务端B;
B1.3、服务端B接收数据后使用私钥分量DB解密得到KR2,再使用KR2解密数据得到e、s1,同时生成随机数k2∈[1,n-1],计算临时点st=k2[*]G;
B1.4、服务端B生成随机数k3∈[1,n-1],计算椭圆曲线E上坐标点位(x,y)=k3[*]s1[+]st;
B1.5、服务端B计算第二部分签名s2=(e+x)mod n,另记作r,当s2=0时,返回第4步重新生成k3并按顺序依次计算;
B1.6、服务端B计算第三部分签名s3=(DB*k3)mod n,第四部分签名s4=(DB*(s2+k2))modn,使用SM4等约定对称加密算法生成临时对称密钥KR3并加密s2、s3、s4为s'2、s'3、s'4,并将KR3使用客户端A临时公钥PA加密为KR3’,连同s'2、s'3、s'4,发送至客户端A;
B1.7、客户端A接收数据后使用私钥分量DA解密得到KR3,再使用KR3解密数据得到s2、s3、s4,计算s=((DA*k1)*s3+DA*s4–s2)mod n,当s=0或s=n-s2时,返回第2步重新生成k1并按顺序依次计算;
B1.8、客户端A将坐标点位(r,s)作为完整签名输出。
4.根据权利要求3所述的基于数字信封技术和SM2算法的两方安全协同签名验签方法,其特征在于:所述验证签名包括以下过程:
C1.1、客户端A使用SM4等约定对称加密算法生成临时对称密钥KR4并加密完整签名信息(r,s)和原始待签名信息M,将KR4使用服务端B临时公钥PB加密为KR4’,连同原始待签名信息M和加密后的完整签名信息发送至服务端;
C1.2、服务端B接收数据后使用私钥分量DB解密得到KR4,再使用KR4解密数据得到完整签名信息(r,s)和原始待签名信息M,分别计算r、s的范围是否在[1,n-1]范围内,如不在则验证失败;
C1.3、服务端B计算t=(r+s)mod n,若t=0则验证失败;
C1.4、服务端B计算E上的点V=s[*]G+t[*]Pk,获取V的坐标点位(xV,yV),如V是无穷远点则验证失败;
C1.5、服务端B使用与客户端A共同身份标识C与原始待签名信息M进行拼接运算,使用SM3等约定密码杂凑算法进行哈希计算,取得哈希值ev=hash(C||M),并将ev转换为整数;
C1.6、服务端B计算R=(ev+xV)mod n;
C1.7、服务端B比较R与r,如果相等则验证通过,不相等则验证失败。
5.根据权利要求1所述的基于数字信封技术和SM2算法的两方安全协同签名验签方法,其特征在于:所述SM2椭圆曲线函数公式如下:
y2=x3+ax+b
4a3+27b2≠0(modq)
公式中,通过函数公式确定一条椭圆曲线E,选定椭圆曲线上阶为素数的基点G作为生成元,n是椭圆曲线的阶,q是定义有限域Fq中元素大小的数目,参数a,b是有限域Fq上的元素,其中“mod”是求模运算,“||”是拼接运算,“[+]”、“[-]”、“[*]”是椭圆曲线的点加、点减、点乘运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311511632.XA CN117375851A (zh) | 2023-11-14 | 2023-11-14 | 一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311511632.XA CN117375851A (zh) | 2023-11-14 | 2023-11-14 | 一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117375851A true CN117375851A (zh) | 2024-01-09 |
Family
ID=89391063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311511632.XA Pending CN117375851A (zh) | 2023-11-14 | 2023-11-14 | 一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117375851A (zh) |
-
2023
- 2023-11-14 CN CN202311511632.XA patent/CN117375851A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109274503B (zh) | 分布式协同签名方法及分布式协同签名装置、软盾系统 | |
US10944575B2 (en) | Implicitly certified digital signatures | |
CN111314089B (zh) | 一种基于sm2的两方协同签名方法及解密方法 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及系统 | |
CN108199835B (zh) | 一种多方联合私钥解密方法 | |
CA2838322C (en) | Secure implicit certificate chaining | |
EP1376976A1 (en) | Methods for authenticating potential members invited to join a group | |
US20050289343A1 (en) | Systems and methods for binding a hardware component and a platform | |
EP1714420B1 (en) | One way authentication | |
US9800418B2 (en) | Signature protocol | |
CN110971411B (zh) | 一种基于sotp技术对私钥乘加密的sm2同态签名方法 | |
CN114726546B (zh) | 数字身份认证方法、装置、设备和存储介质 | |
CN112422288A (zh) | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 | |
CN111565108B (zh) | 签名处理方法、装置及系统 | |
CN111245615B (zh) | 一种基于身份的数字签名密码逆向防火墙方法 | |
CN117375851A (zh) | 一种基于数字信封技术和sm2算法的两方安全协同签名验签方法 | |
Su et al. | New proxy blind signcryption scheme for secure multiple digital messages transmission based on elliptic curve cryptography | |
Alaidi | Enhanced a TCP security protocol by using optional fields in TCP header | |
CN112671729B (zh) | 面向车联网的匿名的抗密钥泄露的认证方法、系统及介质 | |
Anand et al. | AECC: An Enhanced Public Key Cryptosystem for User Defined Messages | |
US20040064690A1 (en) | Methods for applying for crypto-keys from a network system | |
Azhar-Ibrahim | Secure Socket Layer: Fundamentals and certificate verification | |
CN116722984A (zh) | 一种基于后量子密码的区块链安全防御方法及系统 | |
Sun et al. | Application Research in Computer Vision Signature Encryption System of Enterprise Contract Economic Management | |
CN114205081A (zh) | 一种保护用户隐私的盲协同签名方法 |
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 |