CN104243456A - 适用于云计算的基于sm2算法的签名及解密方法和*** - Google Patents

适用于云计算的基于sm2算法的签名及解密方法和*** Download PDF

Info

Publication number
CN104243456A
CN104243456A CN201410437599.5A CN201410437599A CN104243456A CN 104243456 A CN104243456 A CN 104243456A CN 201410437599 A CN201410437599 A CN 201410437599A CN 104243456 A CN104243456 A CN 104243456A
Authority
CN
China
Prior art keywords
communication party
elliptic curve
calculation
signature
result
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.)
Granted
Application number
CN201410437599.5A
Other languages
English (en)
Other versions
CN104243456B (zh
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.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
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 Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201410437599.5A priority Critical patent/CN104243456B/zh
Publication of CN104243456A publication Critical patent/CN104243456A/zh
Application granted granted Critical
Publication of CN104243456B publication Critical patent/CN104243456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了适用于云计算的基于SM2算法的签名及解密方法和***。具体地,可在通信双方分别存储部分私钥,两方联合才能对消息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名或解密密文,从而提高了云计算环境中的私钥的安全性;而且,签名过程和解密过程中,通信双方仅需要进行很少的交互,从而能够满足云计算环境中低延迟、少交互的应用需求。

Description

适用于云计算的基于SM2算法的签名及解密方法和***
技术领域
本发明涉及密码领域,特别涉及适用于云计算的基于SM2算法的签名及解密方法和***。
背景技术
目前,基于公钥密码学的数字签名和加解密技术已经广泛应用在电子商务、身份认证等应用中,成为保证信息安全的重要工具,而私钥的安全性及使用是保证这些应用安全的基础。
在云计算环境中,主要的资源向服务器端聚集,客户端通常以弱终端的形式存在,如智能手机等,这类弱终端通常以软件的形式存储和使用私钥,因此安全防护能力较差。比如,如果私钥完整的存储在智能手机的单个文件中,那么攻击者通过权限提升则可获得私钥,另外,如果私钥完整的出现在每次的签名计算过程中,那么攻击者则可以有很多方式将其从智能手机内存中导出。
为了提高私钥的安全性,现有技术中提出了一种称为门限密码学的算法,即将私钥进行拆分并分布在不同的物理设备中,以避免全部私钥信息的直接存储和使用。比如,一个(t,n)的门限签名方案中,私钥可分布在n个成员中,t个或t个以上成员可以合作完全签名,而小于t个成员时则无法完成签名。
但是,上述算法的实现往往交互复杂,通信次数繁多,不能满足云计算环境中低延迟、少交互的应用需求,也就是说,上述方式对云计算环境并不适用。
发明内容
有鉴于此,本发明提供了适用于云计算的基于SM2算法的签名及解密方法和***,能够提高云计算环境中的私钥的安全性。
为了达到上述目的,本发明的技术方案是这样实现的:
一种适用于云计算的基于SM2算法的签名方法,包括:
第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2;
第一通信方生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和Q1发送给第二通信方;
第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方;
第一通信方根据D1、r、s2和s3生成完整签名并输出。
一种适用于云计算的基于SM2算法的解密方法,包括:
第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2;
第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,并发送给第二通信方;
第二通信方根据D2和T1生成第二部分明文T2,并发送给第一通信方;
第一通信方根据T2对密文C进行完整解密,得到完整明文输出。
一种适用于云计算的基于SM2算法的签名***,包括:
第一通信方,用于生成自身的子私钥D1;并生成待签名消息M的消息摘要e和第一部分签名Q1,将e和Q1发送给第二通信方;根据D1、r、s2和s3生成完整签名并输出;
第二通信方,用于生成自身的子私钥D2;并根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
一种适用于云计算的基于SM2算法的解密***,包括:
第一通信方,用于生成自身的子私钥D1;并根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明文输出;
第二通信方,用于生成自身的子私钥D2;并根据D2和T1生成第二部分明文T2,并发送给第一通信方。
可见,采用本发明所述方案,可在通信双方分别存储部分私钥,两方联合才能对消息进行签名或解密等操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名或解密密文,相应地,当将该方案应用于云计算环境中时,即可提高云计算环境中的私钥的安全性;而且,签名过程和解密过程中,通信双方仅需要进行很少的交互,从而能够满足云计算环境中低延迟、少交互的应用需求。
附图说明
图1为本发明适用于云计算的基于SM2算法的签名方法实施例的流程图。
图2为本发明第一通信方和第二通信方生成各自的子私钥和公钥的过程示意图。
图3为本发明第一通信方和第二通信方生成待签名消息M的完整签名的过程示意图。
图4为本发明适用于云计算的基于SM2算法的解密方法实施例的流程图。
图5为本发明第一通信方和第二通信方解密得到密文C的完整明文的过程示意图。
具体实施方式
针对现有技术中存在的问题,本发明中提出一种适用于云计算环境中的、基于SM2算法的签名方案和解密方案。SM2算法是一种标准的商用密码算法,在密码产品中被广泛的支持和使用。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步的详细说明。
图1为本发明适用于云计算的基于SM2算法的签名方法实施例的流程图,如图1所示,包括以下步骤11~14。
步骤11:第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2。
为便于表述,分别用第一通信方和第二通信方来表示通信双方,其中,第一通信方可以为客户端或服务器端,相应地,当第一通信方为客户端时,第二通信方则为服务器端,当第一通信方为服务器端时,第二通信方则为客户端。
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上n阶的基点,各参数的具体取值等均根据SM2算法预先设定。
第一通信方和第二通信方需要分别生成自身的子私钥D1和D2,另外,还可进一步合作生成公钥P。
相应地,图2为本发明第一通信方和第二通信方生成各自的子私钥和公钥的过程示意图,如图2所示,包括以下步骤21~26。
步骤21:第一通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1。
即有:D1∈[1,n-1]。
步骤22:第二通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2。
即有:D2∈[1,n-1]。
步骤23:第一通信方计算D1在Fq上的逆元D1-1mod n。
mod表示求模运算。
步骤24:第二通信方计算D2在Fq上的逆元D2-1mod n。
步骤25:第一通信方计算D1-1[*]G,将计算结果P1发送给第二通信方。
即有:P1=D1-1[*]G,其中,[*]表示椭圆曲线点乘运算。
步骤26:第二通信方计算D2-1[*]P1[-]G,将计算结果P作为公钥进行公开。
即有:P=D2-1[*]P1[-]G,其中,[-]表示椭圆曲线点减运算。
需要说明的是,上述步骤21~26的表示方式仅为举例说明,并不用于限制各步骤的执行顺序,在实际应用中,可根据实际需要设定各步骤的执行顺序,只要最终能够得到所需的结果即可,后续涉及到的各示意图中同样如此,不再赘述。
步骤12:第一通信方生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和Q1发送给第二通信方。
步骤13:第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
步骤14:第一通信方根据D1、r、s2和s3生成完整签名并输出。
通过步骤12~14所示过程,即可生成待签名消息M的完整签名。
图3为本发明第一通信方和第二通信方生成待签名消息M的完整签名的过程示意图,如图3所示,包括以下步骤31~39。
步骤31:第一通信方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,其中,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数。
即有:M'=Z||M,||表示拼接;
e=Hash(M')。
步骤32:第一通信方产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]G,将计算结果作为Q1。
即有:k1∈[1,n-1];
Q1=k1[*]G。
步骤33:第一通信方将e和Q1发送给第二通信方。
步骤34:第二通信方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G,得到计算结果Q2。
即有:k2∈[1,n-1];
Q2=k2[*]G。
步骤35:第二通信方产生一个位于[1,n-1]之间的随机数k3,计算k3[*]Q1[+]Q2,得到计算结果(x1,y1),并计算x1+e mod n,将计算结果作为r,其中,[+]表示椭圆曲线点加运算。
即有:k3∈[1,n-1];
(x1,y1)=k3[*]Q1[+]Q2;
r=x1+e mod n。
其中,若r不等于0,则执行步骤36,若r等于0,则第二通信方可重新产生k3,并重新计算得到(x1,y1)和r,直到r不等于0为止。
步骤36:若r不等于0,则第二通信方计算D2*k3mod n,将计算结果作为s2,并计算D2*(r+k2)mod n,将计算结果作为s3。
即有:s2=D2*k3mod n;
S3=D2*(r+k2)mod n。
步骤37:第二通信方将r、s2和s3发送给第一通信方。
步骤38:第一通信方计算(D1*k1)*s2+D1*s3-r mod n,得到计算结果s。
即有:s=(D1*k1)s2+D1*s3-r mod n。
其中,若s等于0或等于n-r,则可从重新产生k1,并将与此相关的步骤重新执行,若s不等于0且不等于n-r,则执行步骤39。
步骤39:若s不等于0且不等于n-r,则第一通信方将(r,s)作为完整签名输出。
同时,还可输出待签名消息M。
上述各步骤中涉及到的各随机数k1、k2、k3等均为整数。
图4为本发明适用于云计算的基于SM2算法的解密方法实施例的流程图,如图4所示,包括以下步骤41~44。
步骤41:第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2。
为便于表述,分别用第一通信方和第二通信方来表示通信双方,其中,第一通信方可以为客户端或服务器端,相应地,当第一通信方为客户端时,第二通信方则为服务器端,当第一通信方为服务器端时,第二通信方则为客户端。
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E上n阶的基点,各参数的具体取值等均根据SM2算法预先设定。
本步骤的具体实现可参照步骤11中的相关说明,此处不再赘述。
步骤42:第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,并发送给第二通信方。
步骤43:第二通信方根据D2和T1生成第二部分明文T2,并发送给第一通信方。
步骤44:第一通信方根据T2对密文C进行完整解密,得到完整明文输出。
通过步骤42~44所示过程,即可得到密文C的完整明文。
图5为本发明第一通信方和第二通信方解密得到密文C的完整明文的过程示意图,如图5所示,包括以下步骤51~510。
步骤51:第一通信方从密文C中提取出比特串C1,密文C由比特串C1、C2和C3拼接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线E上的非无穷远点。
即有:C=C1||C2||C3。
对C1进行数据类型转换,通常是指将其从比特串转换为整数,如何进行转换为现有技术,如何验证C1是否为椭圆曲线E上的非无穷远点同样为现有技术。
若C1为椭圆曲线E上的非无穷远点,则执行步骤52,否则,可报错退出。
步骤52:第一通信方计算D1-1[*]C1,将计算结果作为T1,其中,D1-1为D1在Fq上的逆元。
即有:T1=D1-1[*]C1。
步骤53:第一通信方将T1发送给第二通信方。
步骤54:第二通信方计算D2-1[*]T1,将计算结果作为T2,其中,D2-1为D2在Fq上的逆元。
即有:T2=D2-1[*]T1。
步骤55:第二通信方将T2发送给第一通信方。
步骤56:第一通信方计算T2[-]C1,得到计算结果(x2,y2)。
即有:(x2,y2)=T2[-]C1。
步骤57:第一通信方计算KDF(x2||y2,klen),得到计算结果t,其中,||表示拼接,KDF()为预定的密钥派生函数,klen表示输出的比特串长度,取值为预先设定。
即有:t=KDF(x2||y2,klen)。
若t不等于0,则执行步骤58,否则,可报错退出。
步骤58:若t不等于0,第一通信方从密文C中提取出比特串C2,并计算得到计算结果M″,其中,表示按位异或运算。
即有:
步骤59:第一通信方计算Hash(x2||M″||y2),得到计算结果u。
即有:u=Hash(x2||M″||y2)。
步骤510:第一通信方从密文C中提取出比特串C3,若u等于C3,则将M″作为完整明文输出。
若u不等于C3,可报错退出。
基于上述介绍,本发明同时公开了一种适用于云计算的基于SM2算法的签名***以及一种适用于云计算的基于SM2算法的解密***,分别介绍如下。
所述适用于云计算的基于SM2算法的签名***中包括:
第一通信方,用于生成自身的子私钥D1;并生成待签名消息M的消息摘要e和第一部分签名Q1,将e和Q1发送给第二通信方;根据D1、r、s2和s3生成完整签名并输出;
第二通信方,用于生成自身的子私钥D2;并根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
其中,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
D1和D2均为位于[1,n-1]之间的一个随机数。
另外,
第一通信方可进一步用于,计算D1在Fq上的逆元D1-1mod n,并计算D1-1[*]G,将计算结果P1发送给第二通信方;
第二通信方可进一步用于,计算D2在Fq上的逆元D2-1mod n,并计算D2-1[*]P1[-]G,将计算结果P作为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
具体地,
第一通信方计算e=Hash(M'),M'=Z||M,其中,||表示拼接,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数;并计算Q1=k1[*]G,其中,k1为位于[1,n-1]之间的一个随机数,[*]表示椭圆曲线点乘运算。
第二通信方计算r=x1+e mod n,(x1,y1)=k3[*]Q1[+]Q2,Q2=k2[*]G;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;k2和k3均为位于[1,n-1]之间的一个随机数;当r不等于0时,计算s2=D2*k3mod n,s3=D2*(r+k2)mod n。
第一通信方计算(D1*k1)*s2+D1*s3-r mod n,得到计算结果s,其中,mod表示求模运算,若s不等于0且不等于n-r,则将(r,s)作为完整签名输出。
所述适用于云计算的基于SM2算法的解密***中包括:
第一通信方,用于生成自身的子私钥D1;并根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明文输出;
第二通信方,用于生成自身的子私钥D2;并根据D2和T1生成第二部分明文T2,并发送给第一通信方。
其中,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
D1和D2均为位于[1,n-1]之间的一个随机数。
另外,
第一通信方可进一步用于,从密文C中提取出比特串C1,密文C由比特串C1、C2和C3拼接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线E上的非无穷远点;若是,则计算D1-1[*]C1,将计算结果作为T1,其中,D1-1为D1在Fq上的逆元,[*]表示椭圆曲线点乘运算。
具体地,
第二通信方计算T2=D2-1[*]T1,其中,D2-1为D2在Fq上的逆元,[*]表示椭圆曲线点乘运算。
第一通信方还可进一步用于,计算T2[-]C1,得到计算结果(x2,y2),其中,[-]表示椭圆曲线点减运算;计算KDF(x2||y2,klen),得到计算结果t,其中,||表示拼接,KDF()表示预定的密钥派生函数,klen表示预定的输出的比特串长度;若t不等于0,则从密文C中提取出比特串C2,并计算得到计算结果M″,其中,表示按位异或运算;计算Hash(x2||M″||y2),得到计算结果u,其中,Hash()表示预定的密码杂凑函数;从密文C中提取出比特串C3,若u等于C3,则将M″作为完整明文输出。
上述***实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再赘述。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (22)

1.一种适用于云计算的基于SM2算法的签名方法,其特征在于,包括:
第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2;
第一通信方生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和Q1发送给第二通信方;
第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方;
第一通信方根据D1、r、s2和s3生成完整签名并输出。
2.根据权利要求1所述的方法,其特征在于,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
所述第一通信方生成自身的子私钥D1包括:第一通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1;
所述第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2。
3.根据权利要求2所述的方法,其特征在于,
该方法进一步包括:
第一通信方计算D1在Fq上的逆元D1-1mod n,并计算D1-1[*]G,将计算结果P1发送给第二通信方;
第二通信方计算D2在Fq上的逆元D2-1mod n,并计算D2-1[*]P1[-]G,将计算结果P作为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
4.根据权利要求2或3所述的方法,其特征在于,
所述第一通信方生成待签名消息M的消息摘要e和第一部分签名Q1包括:
第一通信方将Z和M拼接形成M',并计算Hash(M'),将计算结果作为e,其中,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数;
第一通信方产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]G,将计算结果作为Q1,其中,[*]表示椭圆曲线点乘运算。
5.根据权利要求2或3所述的方法,其特征在于,
所述第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3包括:
第二通信方产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G,得到计算结果Q2,其中,[*]表示椭圆曲线点乘运算;
第二通信方产生一个位于[1,n-1]之间的随机数k3,计算k3[*]Q1[+]Q2,得到计算结果(x1,y1),并计算x1+e mod n,将计算结果作为r,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;
若r不等于0,则第二通信方计算D2*k3mod n,将计算结果作为s2,并计算D2*(r+k2)mod n,将计算结果作为s3。
6.根据权利要求4所述的方法,其特征在于,
所述第一通信方根据D1、r、s2和s3生成完整签名并输出包括:
第一通信方计算(D1*k1)*s2+D1*s3-r mod n,得到计算结果s,其中,mod表示求模运算;
若s不等于0且不等于n-r,则第一通信方将(r,s)作为完整签名输出。
7.一种适用于云计算的基于SM2算法的解密方法,其特征在于,包括:
第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2;
第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,并发送给第二通信方;
第二通信方根据D2和T1生成第二部分明文T2,并发送给第一通信方;
第一通信方根据T2对密文C进行完整解密,得到完整明文输出。
8.根据权利要求7所述的方法,其特征在于,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
所述第一通信方生成自身的子私钥D1包括:第一通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D1;
所述第二通信方生成自身的子私钥D2包括:第二通信方产生一个位于[1,n-1]之间的随机数,将产生的随机数作为D2。
9.根据权利要求8所述的方法,其特征在于,
所述第一通信方根据D1对获取到的密文C进行部分解密,得到第一部分明文T1包括:
第一通信方从密文C中提取出比特串C1,密文C由比特串C1、C2和C3拼接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线E上的非无穷远点;
若是,则计算D1-1[*]C1,将计算结果作为T1,其中,D1-1为D1在Fq上的逆元,[*]表示椭圆曲线点乘运算。
10.根据权利要求8所述的方法,其特征在于,
所述第二通信方根据D2和T1生成第二部分明文T2包括:
第二通信方计算D2-1[*]T1,将计算结果作为T2,其中,D2-1为D2在Fq上的逆元,[*]表示椭圆曲线点乘运算。
11.根据权利要求9所述的方法,其特征在于,
所述第一通信方根据T2对密文C进行完整解密,得到完整明文输出包括:
第一通信方计算T2[-]C1,得到计算结果(x2,y2),其中,[-]表示椭圆曲线点减运算;
第一通信方计算KDF(x2||y2,klen),得到计算结果t,其中,||表示拼接,KDF()表示预定的密钥派生函数,klen表示预定的输出的比特串长度;
若t不等于0,则第一通信方从密文C中提取出比特串C2,并计算,得到计算结果M″,其中,表示按位异或运算;
第一通信方计算Hash(x2||M″||y2),得到计算结果u,其中,Hash()表示预定的密码杂凑函数;
第一通信方从密文C中提取出比特串C3,若u等于C3,则将M″作为完整明文输出。
12.一种适用于云计算的基于SM2算法的签名***,其特征在于,包括:
第一通信方,用于生成自身的子私钥D1;并生成待签名消息M的消息摘要e和第一部分签名Q1,将e和Q1发送给第二通信方;根据D1、r、s2和s3生成完整签名并输出;
第二通信方,用于生成自身的子私钥D2;并根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方。
13.根据权利要求12所述的***,其特征在于,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
D1和D2均为位于[1,n-1]之间的一个随机数。
14.根据权利要求13所述的***,其特征在于,
第一通信方进一步用于,计算D1在Fq上的逆元D1-1mod n,并计算D1-1[*]G,将计算结果P1发送给第二通信方;
第二通信方进一步用于,计算D2在Fq上的逆元D2-1mod n,并计算D2-1[*]P1[-]G,将计算结果P作为公钥进行公开,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
15.根据权利要求13或14所述的***,其特征在于,
第一通信方计算e=Hash(M'),M'=Z||M,其中,||表示拼接,Z表示第一通信方和第二通信方共同的身份标识,Hash()表示预定的密码杂凑函数;并计算Q1=k1[*]G,其中,k1为位于[1,n-1]之间的一个随机数,[*]表示椭圆曲线点乘运算。
16.根据权利要求13或14所述的***,其特征在于,
第二通信方计算r=x1+e mod n,(x1,y1)=k3[*]Q1[+]Q2,Q2=k2[*]G;其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;k2和k3均为位于[1,n-1]之间的一个随机数;当r不等于0时,计算s2=D2*k3mod n,s3=D2*(r+k2)mod n。
17.根据权利要求15所述的***,其特征在于,
第一通信方计算(D1*k1)*s2+D1*s3-r mod n,得到计算结果s,其中,mod表示求模运算,若s不等于0且不等于n-r,则将(r,s)作为完整签名输出。
18.一种适用于云计算的基于SM2算法的解密***,其特征在于,包括:
第一通信方,用于生成自身的子私钥D1;并根据D1对获取到的密文C进行部分解密,得到第一部分明文T1,发送给第二通信方;根据T2对密文C进行完整解密,得到完整明文输出;
第二通信方,用于生成自身的子私钥D2;并根据D2和T1生成第二部分明文T2,并发送给第一通信方。
19.根据权利要求18所述的***,其特征在于,
第一通信方和第二通信方共享SM2算法的椭圆曲线参数E(Fq)、G和n,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点;
D1和D2均为位于[1,n-1]之间的一个随机数。
20.根据权利要求19所述的***,其特征在于,
第一通信方进一步用于,从密文C中提取出比特串C1,密文C由比特串C1、C2和C3拼接而成,并对C1进行数据类型转换后,验证C1是否为椭圆曲线E上的非无穷远点;若是,则计算D1-1[*]C1,将计算结果作为T1,其中,D1-1为D1在Fq上的逆元,[*]表示椭圆曲线点乘运算。
21.根据权利要求19所述的***,其特征在于,
第二通信方计算T2=D2-1[*]T1,其中,D2-1为D2在Fq上的逆元,[*]表示椭圆曲线点乘运算。
22.根据权利要求20所述的***,其特征在于,
第一通信方进一步用于,计算T2[-]C1,得到计算结果(x2,y2),其中,[-]表示椭圆曲线点减运算;计算KDF(x2||y2,klen),得到计算结果t,其中,||表示拼接,KDF()表示预定的密钥派生函数,klen表示预定的输出的比特串长度;若t不等于0,则从密文C中提取出比特串C2,并计算得到计算结果M″,其中,表示按位异或运算;计算Hash(x2||M″||y2),得到计算结果u,其中,Hash()表示预定的密码杂凑函数;从密文C中提取出比特串C3,若u等于C3,则将M″作为完整明文输出。
CN201410437599.5A 2014-08-29 2014-08-29 适用于云计算的基于sm2算法的签名及解密方法和*** Active CN104243456B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410437599.5A CN104243456B (zh) 2014-08-29 2014-08-29 适用于云计算的基于sm2算法的签名及解密方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410437599.5A CN104243456B (zh) 2014-08-29 2014-08-29 适用于云计算的基于sm2算法的签名及解密方法和***

Publications (2)

Publication Number Publication Date
CN104243456A true CN104243456A (zh) 2014-12-24
CN104243456B CN104243456B (zh) 2017-11-03

Family

ID=52230806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410437599.5A Active CN104243456B (zh) 2014-08-29 2014-08-29 适用于云计算的基于sm2算法的签名及解密方法和***

Country Status (1)

Country Link
CN (1) CN104243456B (zh)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106685651A (zh) * 2016-12-22 2017-05-17 北京信安世纪科技有限公司 一种客户端和服务端协作生成数字签名的方法
CN106685662A (zh) * 2016-12-23 2017-05-17 中国电子科技集团公司第三十研究所 一种基于余数***的商密sm2加密算法的白盒软件实现方法
CN106850229A (zh) * 2017-01-22 2017-06-13 武汉理工大学 基于乘积秘密分割的sm2数字签名生成方法及***
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与***
CN107276752A (zh) * 2016-06-27 2017-10-20 收付宝科技有限公司 对云支付限制密钥进行解密的方法、装置和***
CN107342855A (zh) * 2017-06-14 2017-11-10 山东同智伟业软件股份有限公司 基于sm2算法的签名方法
CN107360002A (zh) * 2017-08-15 2017-11-17 武汉信安珞珈科技有限公司 一种数字证书的申请方法
CN107483212A (zh) * 2017-08-15 2017-12-15 武汉信安珞珈科技有限公司 一种双方协作生成数字签名的方法
CN107634836A (zh) * 2017-09-05 2018-01-26 何德彪 一种sm2数字签名生成方法及***
CN107864037A (zh) * 2017-10-25 2018-03-30 深圳奥联信息安全技术有限公司 Sm9联合数字签名方法和装置
CN108055136A (zh) * 2017-12-22 2018-05-18 上海众人网络安全技术有限公司 基于椭圆曲线的签名方法、装置、计算机设备及存储介质
CN108199835A (zh) * 2018-01-19 2018-06-22 北京江南天安科技有限公司 一种多方联合私钥解密方法及***
CN108574570A (zh) * 2017-03-08 2018-09-25 华为技术有限公司 私钥生成方法、设备以及***
CN108737103A (zh) * 2018-03-27 2018-11-02 中国科学院数据与通信保护研究教育中心 一种应用于cs架构的sm2算法签名方法
CN108964923A (zh) * 2018-06-22 2018-12-07 成都卫士通信息产业股份有限公司 隐藏私钥的交互式sm2签名方法、***和终端
CN108989047A (zh) * 2018-07-19 2018-12-11 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的通信双方协同签名方法与***
CN109088726A (zh) * 2018-07-19 2018-12-25 郑州信大捷安信息技术股份有限公司 基于sm2算法的通信双方协同签名及解密方法和***
CN109246129A (zh) * 2018-10-12 2019-01-18 天津赢达信科技有限公司 一种可验证客户端身份的sm2协同签名方法及***
CN109245903A (zh) * 2018-09-29 2019-01-18 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾***
CN109450640A (zh) * 2018-10-24 2019-03-08 成都卫士通信息产业股份有限公司 基于sm2的两方签名方法及***
CN109743166A (zh) * 2018-12-10 2019-05-10 普华诚信信息技术有限公司 多方签名生成方法及安全信息验证***
CN109818741A (zh) * 2017-11-22 2019-05-28 航天信息股份有限公司 一种基于椭圆曲线的解密计算方法及装置
CN109936455A (zh) * 2017-12-19 2019-06-25 航天信息股份有限公司 一种数字签名的方法、装置和***
CN110278088A (zh) * 2019-07-18 2019-09-24 广州安研信息科技有限公司 一种sm2协同签名方法
CN110535636A (zh) * 2019-07-19 2019-12-03 北京向芯力科技有限公司 一种轻量级的基于sm2算法的协同签名方法与装置
CN110943826A (zh) * 2018-09-21 2020-03-31 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的拆分密钥签名方法与***
CN111130787A (zh) * 2020-03-26 2020-05-08 北京信安世纪科技股份有限公司 数字签名方法、设备和存储介质
CN111274613A (zh) * 2020-01-20 2020-06-12 广州安研信息科技有限公司 迭代式sm2数字签名生成方法、***、介质和设备
CN111355582A (zh) * 2020-03-03 2020-06-30 成都天瑞芯安科技有限公司 基于sm2算法的两方联合签名和解密的方法及***
CN111628863A (zh) * 2020-05-29 2020-09-04 北京海泰方圆科技股份有限公司 一种数据签名的方法、装置、电子设备及存储介质
CN111754233A (zh) * 2020-06-29 2020-10-09 兴唐通信科技有限公司 基于多方签名的电子支付方法和***
WO2020223918A1 (zh) * 2019-05-08 2020-11-12 云图有限公司 一种临时身份认证方法、装置及***
CN111447065B (zh) * 2019-01-16 2021-03-09 中国科学院软件研究所 一种主动安全的sm2数字签名两方生成方法
CN112636918A (zh) * 2020-12-08 2021-04-09 无锡艾立德智能科技有限公司 一种高效的基于sm2两方协同签名方法
CN112887097A (zh) * 2019-11-29 2021-06-01 航天信息股份有限公司 基于sm2椭圆曲线的签名方法、相关装置、及存储介质
CN113343259A (zh) * 2021-06-17 2021-09-03 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质
CN113573304A (zh) * 2020-04-28 2021-10-29 刘琦 签名实现、验签方法以及签名终端、验签终端和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231668A (en) * 1991-07-26 1993-07-27 The United States Of America, As Represented By The Secretary Of Commerce Digital signature algorithm
CN1192834A (zh) * 1995-06-05 1998-09-09 塞特科有限公司 多步数字签名方法和***
CN101192928A (zh) * 2006-12-01 2008-06-04 华为技术有限公司 移动自组织网络的认证方法、网络和***
CN101252431A (zh) * 2007-09-06 2008-08-27 广州信睿网络科技有限公司 一种通用的数字签名方案的实现方法
CN103546288A (zh) * 2013-09-25 2014-01-29 中国科学院数据与通信保护研究教育中心 Sm2数字签名生成算法的实现方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231668A (en) * 1991-07-26 1993-07-27 The United States Of America, As Represented By The Secretary Of Commerce Digital signature algorithm
CN1192834A (zh) * 1995-06-05 1998-09-09 塞特科有限公司 多步数字签名方法和***
CN101192928A (zh) * 2006-12-01 2008-06-04 华为技术有限公司 移动自组织网络的认证方法、网络和***
CN101252431A (zh) * 2007-09-06 2008-08-27 广州信睿网络科技有限公司 一种通用的数字签名方案的实现方法
CN103546288A (zh) * 2013-09-25 2014-01-29 中国科学院数据与通信保护研究教育中心 Sm2数字签名生成算法的实现方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
L.HARN: "Group-oriented(t,n)threshold digital signature scheme and digital multisignature", 《IEEE》 *
尚铭 等: "SM2椭圆曲线门限密码算法", 《密码学报》 *

Cited By (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276752B (zh) * 2016-06-27 2020-10-30 吕文华 对云支付限制密钥进行解密的方法、装置和***
CN107276752A (zh) * 2016-06-27 2017-10-20 收付宝科技有限公司 对云支付限制密钥进行解密的方法、装置和***
CN106685651A (zh) * 2016-12-22 2017-05-17 北京信安世纪科技有限公司 一种客户端和服务端协作生成数字签名的方法
CN106685662A (zh) * 2016-12-23 2017-05-17 中国电子科技集团公司第三十研究所 一种基于余数***的商密sm2加密算法的白盒软件实现方法
CN106685662B (zh) * 2016-12-23 2019-09-24 中国电子科技集团公司第三十研究所 一种基于余数***的商密sm2加密算法的白盒软件实现方法
CN106850229A (zh) * 2017-01-22 2017-06-13 武汉理工大学 基于乘积秘密分割的sm2数字签名生成方法及***
CN106850229B (zh) * 2017-01-22 2019-10-25 武汉理工大学 基于乘积秘密分割的sm2数字签名生成方法及***
US11212088B2 (en) 2017-03-08 2021-12-28 Huawei Technologies Co., Ltd. Private key generation method and system, and device
CN108574570A (zh) * 2017-03-08 2018-09-25 华为技术有限公司 私钥生成方法、设备以及***
CN108574570B (zh) * 2017-03-08 2022-05-17 华为技术有限公司 私钥生成方法、设备以及***
CN107342855A (zh) * 2017-06-14 2017-11-10 山东同智伟业软件股份有限公司 基于sm2算法的签名方法
CN107342855B (zh) * 2017-06-14 2021-02-09 山东同智伟业软件股份有限公司 基于sm2算法的签名方法
CN107196763B (zh) * 2017-07-06 2020-02-18 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与***
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与***
CN107483212A (zh) * 2017-08-15 2017-12-15 武汉信安珞珈科技有限公司 一种双方协作生成数字签名的方法
CN107360002A (zh) * 2017-08-15 2017-11-17 武汉信安珞珈科技有限公司 一种数字证书的申请方法
CN107634836A (zh) * 2017-09-05 2018-01-26 何德彪 一种sm2数字签名生成方法及***
CN107864037A (zh) * 2017-10-25 2018-03-30 深圳奥联信息安全技术有限公司 Sm9联合数字签名方法和装置
CN109818741A (zh) * 2017-11-22 2019-05-28 航天信息股份有限公司 一种基于椭圆曲线的解密计算方法及装置
CN109936455A (zh) * 2017-12-19 2019-06-25 航天信息股份有限公司 一种数字签名的方法、装置和***
CN108055136A (zh) * 2017-12-22 2018-05-18 上海众人网络安全技术有限公司 基于椭圆曲线的签名方法、装置、计算机设备及存储介质
CN108199835A (zh) * 2018-01-19 2018-06-22 北京江南天安科技有限公司 一种多方联合私钥解密方法及***
CN108737103A (zh) * 2018-03-27 2018-11-02 中国科学院数据与通信保护研究教育中心 一种应用于cs架构的sm2算法签名方法
CN108737103B (zh) * 2018-03-27 2021-06-29 中国科学院数据与通信保护研究教育中心 一种应用于cs架构的sm2算法签名方法
CN108964923A (zh) * 2018-06-22 2018-12-07 成都卫士通信息产业股份有限公司 隐藏私钥的交互式sm2签名方法、***和终端
CN108964923B (zh) * 2018-06-22 2021-07-20 成都卫士通信息产业股份有限公司 隐藏私钥的交互式sm2签名方法、***和终端
CN108989047B (zh) * 2018-07-19 2021-03-02 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的通信双方协同签名方法与***
CN109088726B (zh) * 2018-07-19 2021-01-26 郑州信大捷安信息技术股份有限公司 基于sm2算法的通信双方协同签名及解密方法和***
CN109088726A (zh) * 2018-07-19 2018-12-25 郑州信大捷安信息技术股份有限公司 基于sm2算法的通信双方协同签名及解密方法和***
CN108989047A (zh) * 2018-07-19 2018-12-11 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的通信双方协同签名方法与***
CN110943826A (zh) * 2018-09-21 2020-03-31 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的拆分密钥签名方法与***
CN110943826B (zh) * 2018-09-21 2022-03-25 郑州信大捷安信息技术股份有限公司 一种基于sm2算法的拆分密钥签名方法与***
CN109245903A (zh) * 2018-09-29 2019-01-18 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109245903B (zh) * 2018-09-29 2021-10-01 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109246129A (zh) * 2018-10-12 2019-01-18 天津赢达信科技有限公司 一种可验证客户端身份的sm2协同签名方法及***
CN109246129B (zh) * 2018-10-12 2020-12-25 天津赢达信科技有限公司 一种可验证客户端身份的sm2协同签名方法及***
CN109450640A (zh) * 2018-10-24 2019-03-08 成都卫士通信息产业股份有限公司 基于sm2的两方签名方法及***
CN109450640B (zh) * 2018-10-24 2022-05-17 成都卫士通信息产业股份有限公司 基于sm2的两方签名方法及***
CN109274503B (zh) * 2018-11-05 2022-01-04 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾***
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾***
CN109743166B (zh) * 2018-12-10 2023-06-23 普华诚信信息技术有限公司 多方签名生成方法及安全信息验证***
CN109743166A (zh) * 2018-12-10 2019-05-10 普华诚信信息技术有限公司 多方签名生成方法及安全信息验证***
CN111447065B (zh) * 2019-01-16 2021-03-09 中国科学院软件研究所 一种主动安全的sm2数字签名两方生成方法
WO2020223918A1 (zh) * 2019-05-08 2020-11-12 云图有限公司 一种临时身份认证方法、装置及***
CN110278088A (zh) * 2019-07-18 2019-09-24 广州安研信息科技有限公司 一种sm2协同签名方法
CN110535636A (zh) * 2019-07-19 2019-12-03 北京向芯力科技有限公司 一种轻量级的基于sm2算法的协同签名方法与装置
CN112887097A (zh) * 2019-11-29 2021-06-01 航天信息股份有限公司 基于sm2椭圆曲线的签名方法、相关装置、及存储介质
CN111274613A (zh) * 2020-01-20 2020-06-12 广州安研信息科技有限公司 迭代式sm2数字签名生成方法、***、介质和设备
CN111355582A (zh) * 2020-03-03 2020-06-30 成都天瑞芯安科技有限公司 基于sm2算法的两方联合签名和解密的方法及***
CN111130787A (zh) * 2020-03-26 2020-05-08 北京信安世纪科技股份有限公司 数字签名方法、设备和存储介质
CN113573304A (zh) * 2020-04-28 2021-10-29 刘琦 签名实现、验签方法以及签名终端、验签终端和存储介质
CN111628863A (zh) * 2020-05-29 2020-09-04 北京海泰方圆科技股份有限公司 一种数据签名的方法、装置、电子设备及存储介质
CN111628863B (zh) * 2020-05-29 2021-02-09 北京海泰方圆科技股份有限公司 一种数据签名的方法、装置、电子设备及存储介质
CN111754233A (zh) * 2020-06-29 2020-10-09 兴唐通信科技有限公司 基于多方签名的电子支付方法和***
CN111754233B (zh) * 2020-06-29 2023-11-07 兴唐通信科技有限公司 基于多方签名的电子支付方法和***
CN112636918B (zh) * 2020-12-08 2021-06-29 无锡艾立德智能科技有限公司 一种高效的基于sm2两方协同签名方法
CN112636918A (zh) * 2020-12-08 2021-04-09 无锡艾立德智能科技有限公司 一种高效的基于sm2两方协同签名方法
CN113343259A (zh) * 2021-06-17 2021-09-03 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质
CN113343259B (zh) * 2021-06-17 2023-09-29 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN104243456B (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
CN104243456A (zh) 适用于云计算的基于sm2算法的签名及解密方法和***
CN107196763B (zh) Sm2算法协同签名及解密方法、装置与***
CN109088726B (zh) 基于sm2算法的通信双方协同签名及解密方法和***
US10911231B2 (en) Method for restoring public key based on SM2 signature
JP6740902B2 (ja) 認証暗号化方法、認証復号方法および情報処理装置
CA2792571C (en) Hashing prefix-free values in a signature scheme
US11223486B2 (en) Digital signature method, device, and system
CN103138938B (zh) 基于csp的sm2证书申请及应用方法
US9705683B2 (en) Verifiable implicit certificates
TWI807125B (zh) 用以分配數位簽署資料之份額的電腦實施系統及方法
CN107425971B (zh) 无证书的数据加/解密方法和装置、终端
CN111783129A (zh) 一种保护隐私的数据处理方法及***
US11616641B2 (en) Computer implemented system and method for sharing a common secret
CN103973439A (zh) 一种多变量公钥加密方法
US10530581B2 (en) Authenticated broadcast encryption
CN115499126A (zh) 基于sm2密钥分散存储的密钥对生成方法、协作签名方法、解密方法、装置和介质
CN107104788B (zh) 终端及其不可抵赖的加密签名方法和装置
Tiwari Cryptography in blockchain
WO2018102382A1 (en) Method and system for switching public keys in ciphertexts
CN114503506A (zh) 支持交易中包含的明文数据变更的区块链***
CN107342855B (zh) 基于sm2算法的签名方法
CN113849831A (zh) 一种基于sm2算法的两方协同签名和解密方法及***
Bruce et al. Cryptographic computation of private shared key based mutual authentication protocol: Simulation and modeling over wireless networks
CN115086048B (zh) 数据处理方法、装置、电子设备及可读存储介质
US12034840B2 (en) Computer implemented system and method for sharing a common secret preliminary class

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant