【技术实现步骤摘要】
适用于云计算的基于SM2算法的签名及解密方法和系统
本专利技术涉及密码领域,特别涉及适用于云计算的基于SM2算法的签名及解密方法和系统。
技术介绍
目前,基于公钥密码学的数字签名和加解密技术已经广泛应用在电子商务、身份认证等应用中,成为保证信息安全的重要工具,而私钥的安全性及使用是保证这些应用安全的基础。在云计算环境中,主要的资源向服务器端聚集,客户端通常以弱终端的形式存在,如智能手机等,这类弱终端通常以软件的形式存储和使用私钥,因此安全防护能力较差。比如,如果私钥完整的存储在智能手机的单个文件中,那么攻击者通过权限提升则可获得私钥,另外,如果私钥完整的出现在每次的签名计算过程中,那么攻击者则可以有很多方式将其从智能手机内存中导出。为了提高私钥的安全性,现有技术中提出了一种称为门限密码学的算法,即将私钥进行拆分并分布在不同的物理设备中,以避免全部私钥信息的直接存储和使用。比如,一个(t,n)的门限签名方案中,私钥可分布在n个成员中,t个或t个以上成员可以合作完全签名,而小于t个成员时则无法完成签名。但是,上述算法的实现往往交互复杂,通信次数繁多,不能满足云计算环境 ...
【技术保护点】
一种适用于云计算的基于SM2算法的签名方法,其特征在于,包括:第一通信方生成自身的子私钥D1,第二通信方生成自身的子私钥D2;第一通信方生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和Q1发送给第二通信方;第二通信方根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给第一通信方;第一通信方根据D1、r、s2和s3生成完整签名并输出。
【技术特征摘要】
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-1modn,并计算D1-1[*]G,将计算结果P1发送给第二通信方;第二通信方计算D2在Fq上的逆元D2-1modn,并计算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+emodn,将计算结果作为r,其中,mod表示求模运算,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算;若r不等于0,则第二通信方计算D2*k3modn,将计算结果作为s2,并计算D2*(r+k2)modn,将计算结果作为s3。6.根据权利要求4所述的方法,其特征在于,所述第一通信方根据D1、r、s2和s3生成完整签名并输出包括:第一通信方计算(D1*k1)*s2+D1*s3-rmodn,得到计算结果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[-]...
【专利技术属性】
技术研发人员:林璟锵,马原,荆继武,王琼霄,雷灵光,蔡权伟,王雷,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。