CN109039656B - Sm9联合数字签名方法、装置和计算机设备 - Google Patents
Sm9联合数字签名方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN109039656B CN109039656B CN201811095219.9A CN201811095219A CN109039656B CN 109039656 B CN109039656 B CN 109039656B CN 201811095219 A CN201811095219 A CN 201811095219A CN 109039656 B CN109039656 B CN 109039656B
- Authority
- CN
- China
- Prior art keywords
- signature
- server
- signing
- client
- generating
- 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
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/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/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
- H04L9/3073—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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明揭示了一种SM9联合数字签名方法、装置和计算机设备,将签名客户端对应的标识私钥S_A标识私钥S_A分割为两个部分——第一子密钥M和第二子密钥N,第一子密钥M和第二子密钥N分别存放到签名客户端和签名服务端这两个实体中,签名客户端会生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,然后将ω或者签名X传递给所述签名服务端;然后通过签名服务端进行相应的处理,签名服务端利用预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。本申请提高数字签名的安全性,而且签名的方法简单;在上述过程中,只需要两次报文的发送,所以签名速度更快,而且应用场景更加广泛。
Description
技术领域
本发明涉及到数字签名领域,特别是涉及到一种高效安全的SM9联合数字签名方法和装置。
背景技术
SM9标识密码算法是一种基于双线性对的标识密码算法,它可以把用户的身份标识用以生成用户的公、私密钥对,主要用于数字签名、数据加密、密钥交换以及身份认证等。现有数字签名过程中,如果密钥丢失,会影响签名的安全性。现提供一种签名效率高、适用范围广的SM9联合数字方法。
发明内容
本发明主要提供一种签名效率高、适用范围广的SM9联合数字签名方法、装置和计算机设备。
为了实现上述发明目的,本发明提供一种SM9联合数字签名方法,包括以下步骤:
S1、签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成;
S2、生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端;
S3、接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
进一步地,所述系统参数组包括<E,e,P1,P2,[s]P1,g=e(P1,[s]P2),H>,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。
进一步地,所述步骤S1中,所述标识私钥S_A的计算方法,包括:
S_A=[s/(H(1||ID_A)+s)]P1。
进一步地,所述第一子密钥M和第二子密钥N的获取方法,包括:
方法1)、所述签名服务端随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端;或者,
方法2)、所述签名服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端;其中FI包括标识ID_A、请求时间t或请求次数C;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种;或者,
方法3)、利用不同于所述签名客户端和签名服务端的第三方随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端;或者,
方法4)、利用不同于所述签名客户端和签名服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端。
进一步地,所述预签名ω的获取方法,包括:
随机生成1<r<q;
计算ω=gr;
所述签名X的获取方法,包括:
计算消息变换m'=H(m);
计算h'=H(02||m'||ω);
计算l=(r-h')mod q;
计算S=[l]M;
生成签名X=(h',S)或者X=(ω,S)。
进一步地,所述步骤S2中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确的步骤,包括:
通过所述签名服务端计算[N]S;
通过所述签名服务端计算m'=H(m);
如果X=(ω,S),则计算h'=H(02||m'||ω);
通过所述签名服务端验证签名(h',[N]S)是否是对m'的SM9签名,如果验证失败,则停止;
如果X=(h',S),则计算通过SM9验证签名过程,获取ω=gr;
所述签名Y的生成方法,包括:
通过所述签名服务端生成两个随机数1<y<q,1<z<q,
计算v=ωy*gz;
计算h=H(02||m||v);
计算Y_1=y*N mod q;
计算Y_2=(z-h)*N mod q;
生成签名服务端签名Y=(h,Y_1,Y_2)或Y=(gy,gz,Y_1,Y_2)。
进一步地,所述接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z的步骤,包括:
计算FS=[r*Y_1+Y_2]M;
如果Y=(gy,gz,Y_1,Y_2),则计算v=gy*r*gz,h=H(02||m||v);
生成签名Z=(h,FS);
验证Z是否为对m的合法签名,若是,则输出。
进一步地,如签名服务端签名Y=(gy,gz,Y_1,Y_2),在生成所述预签名ω或所述签名X前获取所述签名服务端对gy,gz的承诺,其生成方法,包括:
生成gy,gz的哈希值H(gy),H(gz)或者生成gy,gz组合的哈希值H(gy*gz)。
本申请还提供一种SM9联合数字签名装置,包括:
获取分片单元,用于签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成;
签名发送单元,用于生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端;
生成单元,用于接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本发明的SM9联合数字签名方法,将签名客户端对应的标识私钥S_A标识私钥S_A分割为两个部分——第一子密钥M和第二子密钥N,第一子密钥M和第二子密钥N分别存放到签名客户端和签名服务端这两个实体中,签名客户端会生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,然后将ω或者签名X传递给所述签名服务端;然后通过签名服务端进行相应的处理,签名服务端利用预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。签名客户端和签名服务端任意一方的子密钥丢失,都不会影响标识私钥S_A整体的安全性,进而提高数字签名的安全性,而且签名的方法简单;在上述过程中,只需要两次报文的发送,所以签名速度更快。
附图说明
图1为本发明一实施例的SM9联合数字签名方法的流程示意图;
图2为本发发明一实施例的SM9联合数字签名装置的结构示意框图;
图3为本发明一实施例的计算机设备的结构示意框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,本发明实施例提供一种SM9联合数字签名方法,其特征在于,括以下步骤:
S1、签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成。
在步骤S1中,上述系统参数组包括<E,e,P1,P2,[s]P1,g=e(P1,[s]P2),H>,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。
在步骤S1中,上述标识私钥S_A的计算方法,包括:
S11、S_A=[s/(H(1||ID_A)+s)]P1。
在步骤S1中,上述第一子密钥M和第二子密钥N的获取方法,包括:
方法1)、所述签名服务端随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端;或者,
方法2)、所述签名服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端;其中FI包括标识ID_A、请求时间t或请求次数C;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种;或者,
方法3)、利用不同于所述签名客户端和签名服务端的第三方
随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端;或者,
方法4)、利用不同于所述签名客户端和签名服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端。
上述第一子密钥M和第二子密钥N,既可以在签名客户端生成然后分片给签名服务端,也可以在签名服务端生成然后分片给签名客户端,还可以通过第三方生成然后分片给签名客户端和签名服务端等。
S2、生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。
上述签名服务端会将签名客户端生成的签名X,利用第二分片子密钥N进行补全形成签名Y,然后通过SM9的标准验签方法签证签名Y是否正确,如果正确则会将签名Y发回给签名客户端。还可以利用预签名ω生成签名Y,然后将签名Y发回给签名客户端。
在一个实施中,在步骤S2中,上述预签名ω的获取方法,包括:
随机生成1<r<q;
计算ω=gr;
上述签名X的获取方法,包括:
计算消息变换m'=H(m);
计算h'=H(02||m'||ω);
计算l=(r-h')mod q;
计算S=[l]M;
生成签名X=(h',S)或者X=(ω,S)。
在一个实施例中,在步骤S2中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确的步骤,包括:
通过所述签名服务端计算[N]S;
通过所述签名服务端计算m'=H(m);
如果X=(ω,S),则计算h'=H(02||m'||ω);
通过所述签名服务端验证签名(h',[N]S)是否是对m'的SM9签名,如果验证失败,则停止;
如果X=(h',S),则计算通过SM9验证签名过程,获取ω=gr;
所述签名Y的生成方法,包括:
通过所述签名服务端生成两个随机数1<y<q,1<z<q,
计算v=ωy*gz;
计算h=H(02||m||v);
计算Y_1=y*N mod q;
计算Y_2=(z-h)*N mod q;
生成签名服务端签名Y=(h,Y_1,Y_2)或Y=(gy,gz,Y_1,Y_2)。
S3、接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
在一个实施例中,上述步骤S3,包括:
计算FS=[r*Y_1+Y_2]M;
如果Y=(gy,gz,Y_1,Y_2),则计算v=gy*r*gz,h=H(02||m||v);
生成签名Z=(h,FS);
验证Z是否为对m的合法签名,若是,则输出。
在一个实施例中,如签名服务端签名Y=(gy,gz,Y_1,Y_2),在生成所述预签名ω或所述签名X前获取所述签名服务端对gy,gz的承诺,其生成方法,包括:生成gy,gz的哈希值H(gy),H(gz)或者生成gy,gz组合的哈希值H(gy*gz)。
本发明的SM9联合数字签名方法,将签名客户端对应的标识私钥S_A标识私钥S_A分割为两个部分——第一子密钥M和第二子密钥N,第一子密钥M和第二子密钥N分别存放到签名客户端和签名服务端这两个实体中,签名客户端会生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,然后将ω或者签名X传递给所述签名服务端;然后通过签名服务端进行相应的处理,签名服务端利用预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。签名客户端和签名服务端任意一方的子密钥丢失,都不会影响标识私钥S_A整体的安全性,进而提高数字签名的安全性,而且签名的方法简单;在上述过程中,只需要两次报文的发送,所以签名速度更快,而且应用场景更加广泛。
参照图2,本发明实施例还提供一种SM9联合数字签名装置,其特征在于,包括:
获取分片单元10,用于签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成。
本实施例中,上述系统参数组包括<E,e,P1,P2,[s]P1,g=e(P1,[s]P2),H>,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。
在获取分片单元10中,包括:标识私钥S_A计算模块,用于计算S_A=[s/(H(1||ID_A)+s)]P1。
所述获取分片单元10中,包括:分片子密钥获取模块,用于所述签名服务端随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端;或者,所述签名服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端;其中FI包括标识ID_A、请求时间t或请求次数C;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种;或者,利用不同于所述签名客户端和签名服务端的第三方随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端;或者,利用不同于所述签名客户端和签名服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端。
上述第一子密钥M和第二子密钥N,既可以在签名客户端生成然后分片给签名服务端,也可以在签名服务端生成然后分片给签名客户端,还可以通过第三方生成然后分片给签名客户端和签名服务端等。
签名发送单元20,用于生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,则通过所述签名服务端使用所述第二分片子密钥N对所述签名X变换后生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。
上述签名服务端会将签名客户端生成的签名X,利用第二分片子密钥N进行补全形成完整的签名Y,然后通过SM9的标准验签方法签证签名Y是否正确,如果正确则会将签名Y发回给签名客户端。还可以利用预签名ω生成签名Y,然后将签名Y发回给签名客户端。
在一个实施例中,上述签名发送单元20中,包括:
预签名ω生成模块,用于随机生成1<r<q,然后计算ω=gr;
上述签名发送单元20中,还包括:
签名X生成模块,用于计算消息变换m'=H(m),计算h'=H(02||m'||ω);
计算l=(r-h')mod q,计算S=[l]M,最后生成签名X=(h',S)或者X=(ω,S)。
在一个实施例中,上述签名发送单元20,包括:
验证模块,用于通过所述签名服务端计算[N]S,通过所述签名服务端计算m'=H(m);如果X=(ω,S),则计算h'=H(02||m'||ω);通过所述签名服务端验证签名(h',[N]S)是否是对m'的SM9签名,如果验证失败,则停止;如果X=(h',S),则计算通过SM9验证签名过程,获取ω=gr;
签名Y生成模块,用于通过所述签名服务端生成两个随机数1<y<q,1<z<q,计算v=ωy*gz;计算h=H(02||m||v);计算Y_1=y*N mod q;计算Y_2=(z-h)*N mod q;生成签名服务端签名Y=(h,Y_1,Y_2)或Y=(gy,gz,Y_1,Y_2)。
生成单元30,用于接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
在一个实施例中,上述生成单元30,包括:
签名Z模块,用于计算FS=[r*Y_1+Y_2]M;如果Y=(gy,gz,Y_1,Y_2),则计算v=gy *r*gz,h=H(02||m||v);生成签名Z=(h,FS);
输出模块,用于验证Z是否为对m的合法签名,若是,则输出。
在一个实施例中,如签名服务端签名Y=(gy,gz,Y_1,Y_2),在生成所述预签名ω或所述签名X前获取所述签名服务端对gy,gz的承诺,其通过哈希计算单元生成gy,gz的哈希值H(gy),H(gz)或者生成gy,gz组合的哈希值H(gy*gz)。
本发明的SM9联合数字签名装置,将签名客户端对应的标识私钥S_A标识私钥S_A分割为两个部分——第一子密钥M和第二子密钥N,第一子密钥M和第二子密钥N分别存放到签名客户端和签名服务端这两个实体中,签名客户端会生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,然后将ω或者签名X传递给所述签名服务端;然后通过签名服务端进行相应的处理,签名服务端利用预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端。签名客户端和签名服务端任意一方的子密钥丢失,都不会影响标识私钥S_A整体的安全性,进而提高数字签名的安全性,而且签名的方法简单;在上述过程中,只需要两次报文的发送,所以签名速度更快,而且应用场景更加广泛。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储签名程序等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述任一实施例中的SM9联合数字签名方法。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中的SM9联合数字签名方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种SM9联合数字签名方法,其特征在于,包括以下步骤:
S1、签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成;
S2、生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,所述签名服务端使用所述第二分片子密钥N对所述签名X变换,生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端;
S3、接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
2.根据权利要求1所述的SM9联合数字签名方法,其特征在于,所述系统参数组包括<E,e,P1,P2,[s]P1,g=e(P1,[s]P2),H>,其中,E为椭圆曲线,e代表二元映射e:G1·G2→Gt,G1和G2为椭圆曲线E上的两个点群,G1是一个阶为q的循环群,G2是一个幂为q群,其子群阶为q,q为素数,P1∈G1,P2∈G2,e(P1,[s]P2)=e(P1,P2)s,主密钥包括s,[s]P1表示s个P1相加,[s]P2表示s个P2相加,H为消息映射函数,用于将比特串映射到[1,q-1]上。
3.根据权利要求2所述的SM9联合数字签名方法,其特征在于,所述步骤S1中,所述标识私钥S_A的计算方法,包括:
S_A=[s/(H(1||ID_A)+s)]P1。
4.根据权利要求3所述的SM9联合数字签名方法,其特征在于,所述第一分片子密钥M和第二分片子密钥N的获取方法,包括:
方法1)、所述签名服务端随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端;或者,
方法2)、所述签名服务端生成秘密kdfs,根据派生函数F,派生a=F(kdfs,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端;其中FI包括标识ID_A、请求时间t或请求次数C;F是标准的密钥派生函数KDF、哈希函数或加密函数中的一种;或者,
方法3)、利用不同于所述签名客户端和签名服务端的第三方随机生成1<a<q,设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端;或者,
方法4)、利用不同于所述签名客户端和签名服务端的第三方生成秘密kdft,根据派生函数F,派生a=F(kdft,FI),设置N=a,计算M=[a]S_A,发送M到签名客户端,发送N到签名服务端。
5.根据权利要求4所述的SM9联合数字签名方法,其特征在于,所述预签名ω的获取方法,包括:
随机生成1<r<q;
计算ω=gr;
所述签名X的获取方法,包括:
计算消息变换m'=H(m);
计算h'=H(02||m'||ω);
计算l=(r-h')mod q;
计算S=[l]M;
生成签名X=(h',S)或者X=(ω,S)。
6.根据权利要求5所述的SM9联合数字签名方法,其特征在于,所述步骤S2中,若传递给所述签名服务端的为所述签名X,所述签名服务端使用所述第二分片子密钥N对所述签名X变换,生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确的步骤,包括:
通过所述签名服务端计算[N]S;
通过所述签名服务端计算m'=H(m);
如果X=(ω,S),则计算h'=H(02||m'||ω);
通过所述签名服务端验证签名(h',[N]S)是否是对m'的SM9签名,如果验证失败,则停止;
如果X=(h',S),则计算通过SM9验证签名过程,获取ω=gr;
所述签名Y的生成方法,包括:
通过所述签名服务端生成两个随机数1<y<q,1<z<q,
计算v=ωy*gz;
计算h=H(02||m||v);
计算Y_1=y*N mod q;
计算Y_2=(z-h)*N mod q;
生成签名服务端签名Y=(h,Y_1,Y_2)或Y=(gy,gz,Y_1,Y_2)。
7.根据权利要求6所述的SM9联合数字签名方法,其特征在于,所述接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z的步骤,包括:
计算FS=[r*Y_1+Y_2]M;
如果Y=(gy,gz,Y_1,Y_2),则计算v=gy*r*gz,h=H(02||m||v);
生成签名Z=(h,FS);
验证Z是否为对m的合法签名,若是,则输出。
8.根据权利要求7所述的SM9联合数字签名方法,其特征在于,如签名服务端签名Y=(gy,gz,Y_1,Y_2),在生成所述预签名ω或所述签名X前获取所述签名服务端对gy,gz的承诺,其生成方法,包括:
生成gy,gz的哈希值H(gy),H(gz)或者生成gy,gz组合的哈希值H(gy*gz)。
9.一种SM9联合数字签名装置,其特征在于,包括:
获取分片单元,用于签名客户端获取其标识ID_A对应的标识私钥S_A的第一分片子密钥M,其中,所述标识私钥S_A的第二分片子密钥N由所述签名客户端对应的签名服务端获取;其中,所述S_A由密钥生成中心随机选择主密钥,生成系统参数组后根据SM9标识密钥生成算法生成;
签名发送单元,用于生成预签名ω或者使用第一分片子密钥M对消息m的变换进行签名并生成签名X,将ω或者签名X传递给所述签名服务端,其中,若传递给所述签名服务端的为所述签名X,所述签名服务端使用所述第二分片子密钥N对所述签名X变换,生成所述标识私钥S_A对所述消息m的变换的签名,并验证签名结果是否正确;若传递给所述签名服务端的为所述预签名ω,或者验证签名结果正确,则通过所述签名服务端生成两个随机变量,并对所述预签名ω或者所述签名X中的预签名进行变换,生成所述签名服务端的签名Y,返回给所述签名客户端;
生成单元,用于接收所述签名服务端返回的所述签名Y,结合在生成预签名ω过程的随机数以及所述第一分片子密钥M生成签名Z。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811095219.9A CN109039656B (zh) | 2018-09-19 | 2018-09-19 | Sm9联合数字签名方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811095219.9A CN109039656B (zh) | 2018-09-19 | 2018-09-19 | Sm9联合数字签名方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109039656A CN109039656A (zh) | 2018-12-18 |
CN109039656B true CN109039656B (zh) | 2021-06-18 |
Family
ID=64617437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811095219.9A Active CN109039656B (zh) | 2018-09-19 | 2018-09-19 | Sm9联合数字签名方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109039656B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110912708B (zh) * | 2019-11-26 | 2021-04-27 | 武汉大学 | 一种基于sm9数字签名算法的环签名生成方法 |
CN111372247A (zh) * | 2019-12-23 | 2020-07-03 | 国网天津市电力公司 | 一种基于窄带物联网的终端安全接入方法及终端安全接入系统 |
CN111262704A (zh) * | 2020-01-15 | 2020-06-09 | 江苏芯盛智能科技有限公司 | Sm9数字签名生成方法、装置、计算机设备和存储介质 |
CN112003698B (zh) * | 2020-09-07 | 2024-04-19 | 三未信安科技股份有限公司 | 一种sm9协同数字签名方法和系统 |
CN116112186B (zh) * | 2023-04-07 | 2023-06-27 | 深圳奥联信息安全技术有限公司 | 一种电子签名防伪方法及系统 |
CN117579286B (zh) * | 2024-01-16 | 2024-03-19 | 北京格尔国信科技有限公司 | 数字签名的生成方法、系统、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611931B1 (en) * | 1999-11-15 | 2003-08-26 | Autonetworks Technologies, Ltd. | Check method of temporary storage circuit in electronic control unit |
CN107135080A (zh) * | 2017-07-06 | 2017-09-05 | 深圳奥联信息安全技术有限公司 | Sm9解密方法和装置 |
CN107395368A (zh) * | 2017-08-18 | 2017-11-24 | 北京无字天书科技有限公司 | 无介质环境中的数字签名方法及解密封方法与解密方法 |
CN107438005A (zh) * | 2017-06-21 | 2017-12-05 | 深圳奥联信息安全技术有限公司 | Sm9联合数字签名方法和装置 |
CN107864037A (zh) * | 2017-10-25 | 2018-03-30 | 深圳奥联信息安全技术有限公司 | Sm9联合数字签名方法和装置 |
-
2018
- 2018-09-19 CN CN201811095219.9A patent/CN109039656B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611931B1 (en) * | 1999-11-15 | 2003-08-26 | Autonetworks Technologies, Ltd. | Check method of temporary storage circuit in electronic control unit |
CN107438005A (zh) * | 2017-06-21 | 2017-12-05 | 深圳奥联信息安全技术有限公司 | Sm9联合数字签名方法和装置 |
CN107135080A (zh) * | 2017-07-06 | 2017-09-05 | 深圳奥联信息安全技术有限公司 | Sm9解密方法和装置 |
CN107395368A (zh) * | 2017-08-18 | 2017-11-24 | 北京无字天书科技有限公司 | 无介质环境中的数字签名方法及解密封方法与解密方法 |
CN107864037A (zh) * | 2017-10-25 | 2018-03-30 | 深圳奥联信息安全技术有限公司 | Sm9联合数字签名方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109039656A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109039656B (zh) | Sm9联合数字签名方法、装置和计算机设备 | |
CN107438005B (zh) | Sm9联合数字签名方法和装置 | |
JP6168415B2 (ja) | 端末認証システム、サーバ装置、及び端末認証方法 | |
CN107248909B (zh) | 一种基于sm2算法的无证书安全签名方法 | |
CN111541551B (zh) | 门限签名消息的处理方法、系统、存储介质及服务器 | |
CN106130716B (zh) | 基于认证信息的密钥交换系统及方法 | |
CN107094108B (zh) | 连接到数据总线的部件和在该部件中实现加密功能的方法 | |
JP7105308B2 (ja) | デジタル署名方法、装置及びシステム | |
CN105721153B (zh) | 基于认证信息的密钥交换系统及方法 | |
CN108989054B (zh) | 一种密码系统及数字签名方法 | |
CN105141602A (zh) | 基于收敛加密的文件所有权证明方法 | |
EP2595340A2 (en) | Cryptographic document processing in a network | |
CN109981292B (zh) | 一种基于sm9算法的认证方法、装置及系统 | |
JP2017163612A (ja) | 端末認証システム、サーバ装置、及び端末認証方法 | |
CN107864037A (zh) | Sm9联合数字签名方法和装置 | |
CN109361519B (zh) | 一种改进的包含秘密的数的生成方法及系统 | |
CN108924103A (zh) | 面向云存储的基于身份的在线/离线可搜索加密方法 | |
CN112653554A (zh) | 一种签名方法、系统、设备及可读存储介质 | |
JP6758476B2 (ja) | デバイス間の共通セッション鍵を取得するシステムおよび方法 | |
CN116318739B (zh) | 一种电子数据交换方法及系统 | |
CN110519225B (zh) | 基于非对称密钥池和证书密码学的抗量子计算https通信方法和系统 | |
CN114362912A (zh) | 基于分布式密钥中心的标识密码生成方法、电子设备及介质 | |
CN114257374B (zh) | 一种用于标识密码体制的可验证安全外包计算方法及系统 | |
CN116318654A (zh) | 融合量子密钥分发的sm2算法协同签名系统、方法及设备 | |
CN110868285B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |