The invention discloses a SM2 algorithm signature method applied to the CS architecture. The method is as follows: 1) client generates sub-private key D1, server generates sub-private key D2; 2) client generates message digest e of message M to B e signed, generates signature request e'= e | b, and sends E'to server; B is password set when client registers with server; 3) server extracts password B from E' and verifies its correctness, if If the error is correct, the feedback confirmation information is sent to the client, and the client generates the first part signature Q1 and sends it to the server. 4) The server generates the second part signature R based on Q1 and message digest e, and generates the third part signature S2 and the fourth part signature S3 based on D2, and sends r, S2 and S3 to the client. (5) the client generates the signature of the message M according to D1, R, S2 and S3. The invention improves the security of the signature algorithm.
【技术实现步骤摘要】
一种应用于CS架构的SM2算法签名方法
本专利技术涉及密码领域,特别涉及一种应用于CS架构的SM2算法签名方法。
技术介绍
目前,基于公钥密码学的数字签名和加解密技术已经广泛用在电子商务、身份认证等应用中,成为保证信息安全的重要工具,而私钥的安全性是保证这些应用安全的基础。为了提高私钥安全性,门限密码学算法将私钥进行拆分并分布在不同的物理设备中,以避免全部私钥信息的直接存储和使用。例如,一个(c,n)的门限签名方案中,私钥可分布在n个成员中,其中t个或t个以上成员可以合作完全签名,而小于t个成员时则无法完成签名。但传统的门限密码算法往往交互复杂、通信次数繁多。基于SM2算法的签名算法可有效解决上述门限签名方案的不足,并提供高安全的私钥保护。该签名方法应用于用客户端/服务器端(Client/Server,CS)架构,CS架构将任务合理分配到客户端(Client)和服务器端(Server),降低了系统的通讯开销,但是在CS架构中,主要资源向服务器端聚集,客户端通常以弱终端形式存在,如智能手机等。客户端通常以软件的形式存储和使用私钥,因此防护能力差。而且上述基于SM2算 ...
【技术保护点】
1.一种应用于CS架构的SM2算法签名方法,其步骤包括:1)客户端生成自身子私钥D1,服务器生成自身子私钥D2;2)客户端生成待签名消息M的消息摘要e,生成签名请求e'=e||b,将e'发送给服务器;其中,b为客户端向服务器注册时设置的口令;3)服务器从e'提取口令b并验证其是否正确,如果错误则结束签名;如果正确,则反馈确认信息给客户端,客户端生成第一部分签名Q1,将Q1发送给服务器;4)服务器根据签名Q1和消息摘要e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给客户端;5)客户端根据D1、r、s2和s3生成消息M的完整签名。
【技术特征摘要】
1.一种应用于CS架构的SM2算法签名方法,其步骤包括:1)客户端生成自身子私钥D1,服务器生成自身子私钥D2;2)客户端生成待签名消息M的消息摘要e,生成签名请求e'=e||b,将e'发送给服务器;其中,b为客户端向服务器注册时设置的口令;3)服务器从e'提取口令b并验证其是否正确,如果错误则结束签名;如果正确,则反馈确认信息给客户端,客户端生成第一部分签名Q1,将Q1发送给服务器;4)服务器根据签名Q1和消息摘要e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给客户端;5)客户端根据D1、r、s2和s3生成消息M的完整签名。2.如权利要求1所述的方法,其特征在于,客户端生成第一部分签名Q1的方法为:客户端产生一个位于[1,n-1]之间的随机数k1,并计算k1[*]G,将计算结果作为签名Q1;[*]表示点乘运算,即计算椭圆曲线E上n阶的基点G的k倍点。3.如权利要求2所述的方法,其特征在于,服务器根据签名Q1和消息摘要e生成第二部分签名r的方法为:服务器产生一个位于[1,n-1]之间的随机数k2,并计算k2[*]G,得到计算结果Q2;然后产生一个位于[1,n-1]之间的随机数k3,计算k3[*]Q1[+]Q2,得到计算结果(x1,y1),并计算x1+emodn,将计算结果作为r;若r等于0,则服务器可重新产生一k3,并重新计算得到(x1,y1)和r,直到r不等于0为止;其中,[+]表示椭圆曲线E上的点加运算。4.如权利要求1所述的方法,其特征在于,服务器根据D2生成第三部分签名s2和第四部分签名s3的方法为:服务器计算D2*k3modn,将计算结果作为签名s2;服务器计算D2*(r+k2)modn,将计算结果作为签名s3;消息M的完整签名s=(D1*k1)s2+D1*s3-rmodn。5.一种应用于CS架构的SM2算法签名方法,其步骤包括:1)客户端生成自身子私钥D1,服务器生成自身子私钥D2;2)客户端生成待签名消息M的消息摘要e,将e发送给服务器;3)服务器向客户端发送挑战c;4)客户端生成第一部分签名Q1,根据Q1、时间戳tn和响应码c’生成Q1’,客户端将Q1’发送给服务器;c’为客户端根据挑战c生成的响应码;5)服务器验证Q1’中的响应码c’是否正确,如果错误则结束签名;如果正确,则服务器根据Q1和e生成第二部分签名r,并根据D2生成第三部分签名s2和第四部分签名s3,将r、s2和s3发送给客户端;6...
【专利技术属性】
技术研发人员:林璟锵,马原,吴鑫莹,陈天宇,荆继武,
申请(专利权)人:中国科学院数据与通信保护研究教育中心,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。