一种数字签名算法及系统
阅读说明:本技术 一种数字签名算法及系统 (A kind of Digital Signature Algorithm and system ) 是由 张海松 王超 许明 于 2019-09-06 设计创作,主要内容包括:本发明涉及一种数字签名算法及系统,该算法包括:系统签名主密钥、副密钥和用户签名密钥的生成算法、数字签名生成算法和数字签名验证算法;其中,系统签名主密钥、副密钥和用户签名密钥的生成算法,包括:基于第一随机数确定签名主私钥和签名主公钥;基于第二随机数确定签名副私钥和签名副公钥;基于签名主私钥和签名副私钥,计算第一中间结果;若第一中间结果为0,则中止计算;若第一中间结果不为0,则计算第二中间结果;基于第一中间结果和第二中间结果,生成用户签名密钥。本发明的算法在产生用户签名密钥过程中,当出现第一中间结果为0时,计算中止不生成用户签名密钥,签名主密钥不会泄露,也不需要更新已有用户的签名私钥。(The present invention relates to a kind of Digital Signature Algorithm and system, which includes: system signature master key, the generating algorithm of assistant key and user's signature key, digital signature generating algorithm and digital signature verification algorithm;Wherein, the generating algorithm of system signature master key, assistant key and user's signature key, comprising: sign main private key and signature Your Majesty's key are determined based on the first random number;Sign secondary private key and secondary public key of signing are determined based on the second random number;Based on main private key and the secondary private key of signing of signing, the first intermediate result is calculated;If the first intermediate result is 0, termination of computations;If the first intermediate result is not 0, the second intermediate result is calculated;Based on the first intermediate result and the second intermediate result, user's signature key is generated.Algorithm of the invention is in generating user's signature cipher key processes, when the first intermediate result occur is 0, calculates and stops not generating user's signature key, and signature master key will not be revealed, and the signature private key for updating existing subscriber is not needed yet.)
技术领域
本发明涉及信息安全技术领域,具体涉及一种数字签名算法及系统。
背景技术
SM9是由国家密码管理局发布的一种基于标识的非对称密码算法,其规范标准为《GM/T 0044-2016SM9标识密码算法》,SM9标识密码算法中的数字签名算法规定了系统签名主密钥和用户签名密钥的生成算法、数字签名生成算法和数字签名验证算法。
在实现本发明的过程中,发明人发现:在现有技术中,系统签名主密钥和用户签名密钥的生成算法时,若在有限域FN上计算第一中间结果t1=H1(IDA||hid,N)+ks=0,会出现以下两个问题:
1、签名主私钥ks泄露;
2、之前基于ks已获得密钥的用户都需要更新用户密钥。
发明内容
针对现有技术存在的上述问题,本申请提供了一种数字签名算法及系统。
一种数字签名算法,其包括:系统签名主密钥、副密钥和用户签名密钥的生成算法、数字签名生成算法和数字签名验证算法;其中,所述系统签名主密钥、副密钥和用户签名密钥的生成算法,包括:基于第一随机数确定签名主私钥和签名主公钥;基于第二随机数确定签名副私钥和签名副公钥;基于所述签名主私钥和所述签名副私钥,计算第一中间结果;若所述第一中间结果为0,则中止计算;若所述第一中间结果不为0,则计算第二中间结果;基于所述第一中间结果和所述第二中间结果,生成所述用户签名密钥。
第一随机数和所述第二随机数为1至N-1的整数,且所述第一随机数不等于所述第二随机数。
数字签名验证算法,包括:将第二检验元素的数据类型转换为椭圆曲线上的点,检验所述第二检验元素是否属于第一加法循环群,若属于则成立,否则不成立验证不通过;基于阶为素数N的乘法循环群中的第二元素、第三元素、第五元素、第六元素,第三中间结果和第二加法循环群中的第四元素,确定第四中间整数;若所述第四中间整数为第三中间整数,则验证通过,否则验证不通过。
第四元素P=[h1]Px+Ppub-s;其中,Px、Ppub-s为第二加法循环群中的元素,h1为第三中间结果。
一种数字签名系统,其包括:系统签名主密钥、副密钥和用户签名密钥的生成模块、数字签名生成模块和数字签名验证模块;其中,所述系统签名主密钥和用户签名密钥的生成模块,包括:第一确定单元,用于基于第一随机数确定签名主私钥和签名主公钥;第二确定单元,用于基于第二随机数确定签名副私钥和签名副公钥;计算单元,用于基于所述签名主私钥和所述签名副私钥,计算第一中间结果;第一判断单元,用于若所述第一中间结果为0,则中止计算;若所述第一中间结果不为0,则计算第二中间结果;生成单元,用于基于所述第一中间结果和所述第二中间结果,生成所述用户签名密钥。
第一随机数和所述第二随机数为1至N-1的整数,且所述第一随机数不等于所述第二随机数。
数字签名验证模块,包括:检验单元,用于将第二检验元素的数据类型转换为椭圆曲线上的点,检验所述第二检验元素是否属于第一加法循环群,若属于则成立,否则不成立验证不通过;第三确定单元,用于基于阶为素数N的乘法循环群中的第二元素、第三元素、第五元素、第六元素,第三中间结果和第二加法循环群中的第四元素,确定第四中间整数;第二判断单元,用于若所述第四中间整数为第三中间整数,则验证通过,否则验证不通过。
第四元素P=[h1]Px+Ppub-s;其中,Px、Ppub-s为第二加法循环群中的元素,h1为第三中间结果。
与最接近的现有技术相比,本发明提供的技术方案具有的有益效果是:
1、本发明的算法在产生用户签名密钥过程中,当出现第一中间结果t1为0时,计算中止不生成签名密钥,使得签名主密钥不会泄露,也不需要更新已有用户的签名私钥;
2、本发明的算法基于第一随机数ks不等于第二随机数kx,因此当t1=H1(IDA||hid,N)·kx+ks=0时,基于确定的H1(IDA||hid,N),保证了签名主私钥和签名副私钥不会泄露。
附图说明
图1是本发明算法的系统签名主密钥、副密钥和用户签名密钥的生成算法流程图;
图2是本发明算法的数字签名验证算法流程图。
具体实施方式
下面结合附图和实施例,对本发明进行具体描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
101,如图1所示的系统签名主密钥、副密钥和用户签名密钥的生成算法;
1011,密钥生成中心(KGC)产生第一随机数ks∈[1,N-1]作为签名主私钥,计算阶为素数N的第二加法循环群G2中的元素Ppub-s=[ks]P2作为签名主公钥,则签名主密钥对为(ks,Ppub-s),其中,P2为G2的第二生成元,KGC秘密保存ks、公开Ppub-s;
1012,KGC产生第二随机数kx∈[1,N-1],且kx≠ks,作为签名副私钥,计算G2中的元素Px=[kx]P2作为签名副公钥,其中,KGC秘密保存kx,公开Px;
1013,KGC选择并公开用一个字节表示的签名私钥生成函数识别符hid;
1014,在有限域FN上计算第一中间结果t1=H1(IDA||hid,N)·kx+ks,其中,H1为由密码杂凑函数派生的密码函数,IDA为用户A的标识,IDA||hid表示IDA与hid的拼接;
1015,若t1=0,则计算中止;
若t1≠0,则计算第二中间结果t2=ks·t1 -1modN,从而计算用户A的签名私钥dsA=[t2]P1,其中P1表示阶为素数N的第一加法循环群G1的第一生成元。
本发明当kx≠ks时,基于确定的H1(IDA||hid,N),不能计算ks和kx的数值,也就是说签名主私钥和签名副私钥不会泄露。
102,数字签名生成算法;
设待签名的消息为比特串M,为了获取消息M的数字签名(h,S),作为签名者的用户A应实现以下运算步骤:
1021,计算阶为素数N的乘法循环群GT中的第一元素g=e(P1,Ppub-s),其中e表示从G1×G2到GT的双线性对;
1022,产生第三随机数r∈[1,N-1];
1023,计算阶为素数N的乘法循环群GT中的第一元素w=gr,将w的数据类型转换为比特串,gr表示乘法群GT中第二元素g的r次幂,r为正整数;
1024,计算第一中间整数h=H2(M||w,N),其中H2()为由密码杂凑函数派生的密码函数,输入为M||w拼接的比特串和整数N,输出为一个整数h∈[1,N-1];
1025,计算第二中间整数l=(r-h)mod N,若l=0则返回1022;
1026,计算第一加法循环群G1中的第一检验元素S=[l]dsA;
1027,则消息M的签名为(h,S)。
103,数字签名验证算法
如图2所示,为了检验收到的消息M’及其数字签名(h’,S’),作为验证者的用户B包括以下运算步骤:
1031:检验第三中间整数h’∈[1,N-1]是否成立,若不成立则验证不通过;
1032:将第二检验元素S’的数据类型转换为椭圆曲线上的点,检验S’∈G1是否成立,若不成立则验证不通过;
1033:计算GT中的第二元素g=e(P1,Ppub-s);
1034:计算GT中的第三元素t=gh’;
1035:计算第三中间结果h1=H1(IDA||hid,N);
1036:计算G2中的第四元素P=[h1]Px+Ppub-s;
1037:计算GT中的第五元素u=e(S’,P);
1038:计算GT中的第六元素w’=u·t,将w’的数据类型转换为比特串;
1039:计算第四中间整数h2=H2(M’||w’,N),检验h2=h’是否成立,若成立则验证通过;否则验证不通过。
基于同一发明构思,本发明还提供了一种数字签名算法系统,下面进行说明。
一种数字签名系统,其包括:系统签名主密钥和用户签名密钥的生成模块、数字签名生成模块和数字签名验证模块;其中,所述系统签名主密钥、副密钥和用户签名密钥的生成模块,包括:第一确定单元,用于基于第一随机数确定签名主私钥和签名主公钥;第二确定单元,用于基于第二随机数确定签名副私钥和签名副公钥;计算单元,用于基于所述签名主私钥和所述签名副私钥,计算第一中间结果;第一判断单元,用于若所述第一中间结果为0,则中止计算;若所述第一中间结果不为0,则计算第二中间结果;生成单元,用于基于所述第一中间结果和所述第二中间结果,生成所述用户签名密钥。
第一随机数和所述第二随机数为1至N-1的整数,且所述第一随机数不等于所述第二随机数。
数字签名验证模块,包括:检验单元,用于将第二检验元素的数据类型转换为椭圆曲线上的点,检验所述第二检验元素是否属于第一加法循环群,若属于则成立,否则不成立验证不通过;第三确定单元,用于基于阶为素数N的乘法循环群中的第二元素、第三元素、第五元素、第六元素,第三中间结果和第二加法循环群中的第四元素,确定第四中间整数;第二判断单元,用于若所述第四中间整数为第三中间整数,则验证通过,否则验证不通过。
第四元素P=[h1]Px+Ppub-s;其中,Px和Ppub-s为第二加法循环群中的元素和h1为第三中间结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:一种应用于联盟链的动态椭圆曲线加密方法