买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】签名生成方法、生成装置、签名验证方法和验证装置_中思博安科技(北京)有限公司_201810878819.6 

申请/专利权人:中思博安科技(北京)有限公司

申请日:2018-08-03

公开(公告)日:2021-07-16

公开(公告)号:CN108964916B

主分类号:H04L9/30(20060101)

分类号:H04L9/30(20060101);H04L9/08(20060101);H04L9/06(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.07.16#授权;2019.01.01#实质审查的生效;2018.12.07#公开

摘要:本发明提供了一种签名生成方法、生成装置、签名验证方法和验证装置,该签名生成方法可以跨多个预设椭圆曲线生成数字签名,只有将所有的预设椭圆曲线全部攻破才可以伪造该数字签名,而只要一条预设椭圆曲线是安全的,则基于该签名的系统就是安全的,这就可以有效避免现有加密货币或基于区块链的应用系统由单一曲线secp256k1引起的后门安全问题,提高系统安全性。此外,利用本发明可根据不同价值交换或应用场景选取不同数量的椭圆曲线,从而实现不同安全需求的动态签名。

主权项:1.一种签名生成方法,其特征在于,包括:根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据所述签名私钥计算签名公钥,所述预设椭圆曲线为多个;在获取到待签名的消息的情况下,选取所述预设椭圆曲线的随机数,并利用所述随机数计算所述预设基点的第一基点坐标;基于所述阶次对所述第一基点坐标的横坐标做取余处理得到第一取余结果,并在所述第一取余结果不为0的情况下,基于预设签名规则处理所述第一取余结果得到第一签名值;所述根据基于预设签名规则处理所述第一取余结果得到第一签名值,包括:对所述第一取余结果进行求和或异或处理;基于所述阶次对求和或异或处理结果做取余处理得到第二取余结果,并在所述第二取余结果不等于0的情况下,将所述求和或异或处理结果作为第一签名值;对所述消息做哈希运算得到第一哈希值,并按照预设运算规则对所述第一哈希值、所述随机数、所述签名私钥和所述第一签名值进行运算得到第二签名值;在所述第二签名值不为0的情况下,生成由所述第一签名值和所述第二签名值构成的数字签名。

全文数据:签名生成方法、生成装置、签名验证方法和验证装置技术领域[0001]本发明涉及信息安全技术领域,更具体地说,涉及一种签名生成方法、生成装置、签名验证方法和验证装置。背景技术[0002]数字签名,又称数字签字、公钥数字签名等,提出的初衷就是在网络环境中模拟日常生活中的手工签名或印章。数字签名的基础是公钥密码学,通过数学手段达到传统签名的功能。[0003]现有的加密货币系统或基于区块链的应用系统大部分采用基于secp256kl的椭圆曲线数字签名算法。但由于采用的是单一椭圆曲线SeCp256kl,这就很难避免曲线创造者植入的后门,从而形成安全漏洞。发明内容[0004]有鉴于此,为解决上述问题,本发明提供一种签名生成方法、生成装置、签名验证方法和验证装置,技术方案如下:[0005]—种签名生成方法,包括:[0006]根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据所述签名私钥计算签名公钥,所述预设椭圆曲线为多个;[0007]在获取到待签名的消息的情况下,选取所述预设椭圆曲线的随机数,并利用所述随机数计算所述预设基点的第一基点坐标;[0008]基于所述阶次对所述第一基点坐标的横坐标做取余处理得到第一取余结果,并在所述第一取余结果不为〇的情况下,基于预设签名规则处理所述第一取余结果得到第一签名值;[0009]对所述消息做哈希运算得到第一哈希值,并按照预设运算规则对所述第一哈希值、所述随机数、所述签名私钥和所述第一签名值进行运算得到第二签名值;[0010]在所述第二签名值不为〇的情况下,生成由所述第一签名值和所述第二签名值构成的数字签名。[0011]优选的,所述预设椭圆曲线,包括:[0012]P-256曲线、SM2、secp256rl和secp256kl中的任意多种。[0013]优选的,所述根据基于预设签名规则处理所述第一取余结果得到第一签名值,包括:[0014]将所述第一取余结果作为第一签名值。[0015]优选的,所述根据基于预设签名规则处理所述第一取余结果得到第一签名值,包括:[0016]对所述第一取余结果进行求和异或处理;[0017]基于所述阶次对求和异或处理结果做取余处理得到第二取余结果,并在所述第二取余结果不等于O的情况下,将所述求和异或处理结果作为第一签名值。[0018]优选的,所述方法还包括:[0019]在所述第一取余结果为0或者所述第二签名值为0或者所述第二取余结果等于0的情况下,返回执行所述选取所述预设椭圆曲线的随机数,这一步骤。[0020]一种签名生成装置,包括:[0021]第一确定模块,用于根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据所述签名私钥计算签名公钥,所述预设椭圆曲线为多个;[0022]第一计算模块,用于在获取到待签名的消息的情况下,选取所述预设椭圆曲线的随机数,并利用所述随机数计算所述预设基点的第一基点坐标;[0023]第二确定模块,用于基于所述阶次对所述第一基点坐标的横坐标做取余处理得到第一取余结果,并在所述第一取余结果不为0的情况下,基于预设签名规则处理所述第一取余结果得到第一签名值;[0024]第一运算模块,用于对所述消息做哈希运算得到第一哈希值,并按照预设运算规则对所述第一哈希值、所述随机数、所述签名私钥和所述第一签名值进行运算得到第二签名值;[0025]生成模块,用于在所述第二签名值不为0的情况下,生成由所述第一签名值和所述第二签名值构成的数字签名。[0026]一种签名验证方法,包括:[0027]获取待验证的目标消息的目标数字签名以及目标签名公钥,所述目标数字签名和所述目标签名公钥是按照前文任意一项所述的签名生成方法处理所述目标消息所得到的,所述目标数字签名由目标第一签名值和目标第二签名值构成;[0028]确定所述预设签名规则所对应的预判条件,并在所述目标第一签名值和所述目标第二签名值满足所述预判条件的情况下,对所述目标消息做哈希运算得到第二哈希值;[0029]基于所述阶次对所述目标第二签名值的逆运算值做取余处理得到第三取余结果;[0030]基于所述阶次对所述第三取余结果与所述第二哈希值的点积做取余处理得到第四取余结果,同时基于所述阶次对所述第三取余结果与所述目标第一签名值的点积做取余处理得到第五取余结果;[0031]利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值;[0032]基于所述预设签名规则处理所述中间签名值得到基准签名值,并在所述基准签名值等于所述目标第一签名值的情况下,确定所述目标数字签名有效。[0033]优选的,所述利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值,包括:[0034]根据所述第四取余结果和所述预设基点的点积以及所述第五取余结果和所述签名公钥的点积,计算中间签名;[0035]基于所述阶次对所述中间签名的横坐标做取余处理得到中间签名值。[0036]优选的,所述方法还包括:[0037]在所述目标第一签名值和所述目标第二签名值不满足所述预判条件或者所述基准签名值不等于所述目标第一签名值的情况下,确定所述目标数字签名无效。[0038]一种签名验证装置,包括:[0039]获取模块,用于获取待验证的目标消息的目标数字签名以及目标签名公钥,所述目标数字签名和所述目标签名公钥是按照前文任意一项所述的签名生成方法处理所述目标消息所得到的,所述目标数字签名由目标第一签名值和目标第二签名值构成;[0040]第二运算模块,用于确定所述预设签名规则所对应的预判条件,并在所述目标第一签名值和所述目标第二签名值满足所述预判条件的情况下,对所述目标消息做哈希运算得到第二哈希值;[0041]第一处理模块,用于基于所述阶次对所述目标第二签名值的逆运算值做取余处理得到第三取余结果;[0042]第二处理模块,用于基于所述阶次对所述第三取余结果与所述第二哈希值的点积做取余处理得到第四取余结果,同时基于所述阶次对所述第三取余结果与所述目标第一签名值的点积做取余处理得到第五取余结果;[0043]第二计算模块,用于利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值;[0044]第三确定模块,用于基于所述预设签名规则处理所述中间签名值得到基准签名值,并在所述基准签名值等于所述目标第一签名值的情况下,确定所述目标数字签名有效。[0045]相较于现有技术,本发明实现的有益效果为:[0046]以上本发明公开的签名生成方法,跨多个预设椭圆曲线生成数字签名,只有将所有的预设椭圆曲线全部攻破才可以伪造该数字签名,而只要一条预设椭圆曲线是安全的,则基于该签名的系统就是安全的,这就可以有效避免现有加密货币或基于区块链的应用系统由单一曲线secp256kl引起的后门安全问题,提高系统安全性。[0047]此外,利用本发明可根据不同价值交换或应用场景选取不同数量的椭圆曲线,从而实现不同安全需求的动态签名。附图说明[0048]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0049]图1为本发明实施例提供的签名生成方法的方法流程图;[0050]图2为本发明实施例提供的签名生成装置的结构示意图;[0051]图3为本发明实施例提供的签名验证方法的方法流程图;[0052]图4为本发明实施例提供的签名验证装置的结构示意图。具体实施方式[0053]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0054]数字签名:是一种类似写在纸上的普通物理签名,使用公钥加密领域的技术实现,用于鉴别数字信息的方法。简单地说,是指附加在某一电子文档中的一组特定的符号或代码,它是利用数学方法对该电子文档进行关键信息提取并与用户私有信息进行混合运算而形成的,用于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。[0055]为解决由单一曲线SeCp256kl引起的后门安全问题,提高系统安全性。本发明提供一种签名生成方法,可以根据实际安全需求选择椭圆曲线的数量和参数,方法流程图如图1所示,包括如下步骤:[0056]S10,根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据签名私钥计算签名公钥,预设椭圆曲线为多个。[0057]在执行步骤SlO的过程中,可根据不同价值交换或应用场景选取不同数量的椭圆曲线Ei:y2=x3+aix+bi;其中,[0058]ai,bieFpi且4ai3+27bi2#0modpi,Fpi为预设有限素数域,pi为预设有限素数域Fpi对应的大素数,i=1,2,3···,t,t为椭圆曲线的数量且t彡2;[0059]进一步,选取t个随机数cUe[l,ni-l]作为签名私钥,其中,m为预设基点P1在椭圆曲线Ei上的阶次。[0060]利用签名私钥di计算预设基点Pi的第二基点坐标Qi=CliPi,并将第二基点坐标确定为签名公钥Qi。[0061]此外,本发明给出了不同组织在不同时间段推荐的四个椭圆曲线的参数。而本发明实施例给出签名生成方法不仅可以用于这四个椭圆曲线上,还可以用于其他椭圆曲线。当然,上述仅为举例说明,还可以加入其它椭圆曲线,本实施例对此不做限定。[0062]aP_256曲线[0063]P-2562曲线是美国国家标准与技术研究院NIST于2013年提出的,其曲线方程为:E:y2=x3-3x+bmodp;[0064]相关参数如下所示:[0065]素数p:[0066]P=115792089210356248762697446949407573530086143415290314195533631308867097853951;[0067]方程系数b:[0068]b=5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b;[0069]基点的阶次n:[0070]η=115792089210356248762697446949407573529996955224135760342422259061068512044369;[0071]基点p:[0072]P=〇26bl7dlf2el2c4247f8bce6e563a440f277037d812deb33a0f4al3945d898c296〇[0073]bSM2[0074]SM23是中国国家密码管理局于2010年提出的,其曲线方程为:E:y2=x3+ax+b;[0075]相关参数如下所示:[0076]素数p:[0077]p=fffffffeffffffffffffffffffffffffffffffff00000000ffffffffffffffff;[0078]系数a:[0079]a=fffffffeffffffffffffffffffffffffffffffff00000000fffffffffffffffc;[0080]系数b:[0081]b=28e9fa9e9d9f5e344d5a9e4bcf6509a7f39789f515ab8f92ddbcbd414d940e93;[0082]基点的阶次n:[0083]n=fffffffeffffffffffffffffffffffff7203df6b21c6052b53bbf40939d54123;[0084]基点P:[0085]P=〇232c4ae2c1Π981195f9904466a39c9948fe30bbff2660bel715a4589334c74c7〇[0086]csecp256rl[0087]secp256rl是SECStandardsforEfficientCryptography于2010年给出的一条椭圆曲线,其曲线方程为:E:y2=x3+ax+b;[0088]相关参数如下所示:[0089]素数p:[0090]P=ffffffff00000001〇〇〇〇〇〇〇〇0000000000000000fffffffffffffffffffffff;[0091]系数a:[0092]a=ffffffff00000001000000000000000000000000ffffffffffffffffffffffc;[0093]系数b:[0094]b=5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e7d2604b;[0095]基点的阶次n:[0096]n=ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551;[0097]基点p:[0098]P=〇36bl7dlf2el2c4247f8bce6e563a440f277037d812deb33a0f4al3945d898c296〇[0099]4secp256kl[0100]secp256kl是SECStandardsforEfficientCryptography于2010年给出的另一条椭圆曲线,是现在广为加密货币系统和基于区块链的各类应用系统使用的曲线,其曲线方程为:E:y2=x3+7;[0101]相关参数如下所示:[0102]素数p:[0103]p=fffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffc2f;[0104]基点的阶次η:[0105]n=fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141;[0106]基点p:[0107]P=〇279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798〇[0108]S20,在获取到待签名的消息的情况下,选取预设椭圆曲线的随机数,并利用随机数计算预设基点的第一基点坐标。[0109]在执行步骤S20的过程中,椭圆曲线E1*对应的随机数he[l,m-l],并计算预设基点Pi的第一基点坐标kiPi=xii,yn。[0110]S30,基于阶次对第一基点坐标的横坐标做取余处理得到第一取余结果,并在第一取余结果不为〇的情况下,基于预设签名规则处理第一取余结果得到第一签名值。[0111]在执行步骤S30的过程中,第一取余结果为ri=Xiimodm。此时如果第一取余结果为〇,则表示签名私钥泄露的可能性较大,则返回步骤S20重新选取预设椭圆曲线的随机数;而如果第一取余结果不为0,则说明不会泄露签名私钥的任何信息,则具体可以将第一取余结果确定为第一签名值r=ri,r2,"_,rt。[0112]S40,对消息做哈希运算得到第一哈希值,并按照预设运算规则对第一哈希值、随机数、签名私钥和第一签名值进行运算得到第二签名值。[0113]在执行步骤S40的过程中,对消息m做哈希运算得到第一哈希值e=Hm,H为一个安全的哈希函数。[0114]对第一哈希值e、随机数ki、签名私钥cU和第一签名值ri进行运算得到第二签名值si=ki_1[e+diri]modru〇[0115]S50,在第二签名值不为0的情况下,生成由第一签名值和第二签名值构成的数字签名。[0116]在执行步骤S50的过程中,如果将第一取余结果确定为第一签名值Γι,所生成的数字签名为n,S1,r2,S2,…,rt,st。此时如果第二签名值为0,则表示签名私钥泄露的可能性较大,则返回步骤S20重新选取预设椭圆曲线的随机数。[0117]在其他一些实施例中,为降低数字签名的签名长度,在图1所示出签名生成方法的基础上,步骤S30中“根据基于预设签名规则处理第一取余结果得到第一签名值”可以具体为:[0118]对第一取余结果进行求和异或处理;基于阶次对求和异或处理结果做取余处理得到第二取余结果,并在第二取余结果不等于〇的情况下,将求和异或处理结果作为第一签名值。[0119]以求和处理为例进行说明:[0120]对第一取余结果ri进行求和处理得到1=1'1+12+"_+1'1;;并在1^〇1]1〇1]^的情况下,将r作为第一签名值。此时,对第一哈希值e、随机数ki、签名私钥cU和第一签名值r进行运算得到第二签名值Si=Iu-1[e+dir]modm,所生成的数字签名为r,si,S2,…,st。[0121]此外,如果第二取余结果等于0,则表示签名私钥泄露的可能性较大,则返回步骤S20重新选取预设椭圆曲线的随机数。[0122]需要说明的是,本发明并不限定求和、异或两种处理方式,还可以结合实际应用采用其他处理方式,使处理结果大于0、保证后期验证的准确性即可。[0123]本发明实施例提供的签名生成方法,跨多个预设椭圆曲线生成数字签名,只有将所有的预设椭圆曲线全部攻破才可以伪造该数字签名,而只要一条预设椭圆曲线是安全的,则基于该签名的系统就是安全的,这就可以有效避免现有加密货币或基于区块链的应用系统由单一曲线SeCp256kl引起的后门安全问题,提高系统安全性。同时利用本发明实施例可根据不同价值交换或应用场景选取不同数量的椭圆曲线,从而实现不同安全需求的动态签名。[0124]基于上述实施例提供的签名生成方法,本发明实施例对应提供一种签名生成装置,该装置的结构示意图如图2所示,包括:[0125]第一确定模块10,用于根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据签名私钥计算签名公钥,预设椭圆曲线为多个;[0126]第一计算模块20,用于在获取到待签名的消息的情况下,选取预设椭圆曲线的随机数,并利用随机数计算预设基点的第一基点坐标;[0127]第二确定模块30,用于基于阶次对第一基点坐标的横坐标做取余处理得到第一取余结果,并在第一取余结果不为0的情况下,基于预设签名规则处理第一取余结果得到第一签名值;[0128]第一运算模块40,用于对消息做哈希运算得到第一哈希值,并按照预设运算规则对第一哈希值、随机数、签名私钥和第一签名值进行运算得到第二签名值;[0129]生成模块50,用于在第二签名值不为0的情况下,生成由第一签名值和第二签名值构成的数字签名。[0130]本发明实施例提供的签名生成装置,跨多个预设椭圆曲线生成数字签名,只有将所有的预设椭圆曲线全部攻破才可以伪造该数字签名,而只要一条预设椭圆曲线是安全的,则基于该签名的系统就是安全的,这就可以有效避免现有加密货币或基于区块链的应用系统由单一曲线SeCp256kl引起的后门安全问题,提高系统安全性。同时利用本发明实施例可根据不同价值交换或应用场景选取不同数量的椭圆曲线,从而实现不同安全需求的动态签名。[0131]基于上述实施例提供的签名生成方法以及签名生成装置,本发明实施例则提供一种签名验证方法,该方法的方法流程图如图3所示,包括如下步骤:[0132]S60,获取待验证的目标消息的目标数字签名以及目标签名公钥,目标数字签名和目标签名公钥是按照前文任意一项所述的签名生成方法处理目标消息所得到的,目标数字签名由目标第一签名值和目标第二签名值构成。[0133]S70,确定预设签名规则所对应的预判条件,并在目标第一签名值和目标第二签名值满足预判条件的情况下,对目标消息做哈希运算得到第二哈希值。[0134]如果目标消息!11’的目标数字签名为1’,81’^2’,82’,一,^’,^’),则此时将目标消息m’的第一取余结果^’作为目标第一签名值、S1’为目标第二签名值,预判条件则为0ri’m,0si’m〇[0135]如果目标消息m’的目标数字签名为r’,S1’,S2’,···,’),则此时将目标消息m’的第一取余结果Γι’的求和异或处理结果作为第一签名值、S1’为目标第二签名值,预判条件则为[0136]在目标第一签名值和目标第二签名值满足预判条件的情况下,对目标消息m’做哈希运算得到第二哈希值e’=Hm’)。[0137]此外,如果目标第一签名值和目标第二签名值不满足预判条件,则确定目标数字签名无效。[0138]S80,基于阶次对目标第二签名值的逆运算值做取余处理得到第三取余结果。[0139]在执行步骤S80的过程中,基于阶次m对目标第二签名值S1’的逆运算值Sl’_l做取余处理得到第三取余结果Wi=Si’-Vodrn。[0140]S90,基于阶次对第三取余结果与第二哈希值的点积做取余处理得到第四取余结果,同时基于阶次对第三取余结果与目标第一签名值的点积做取余处理得到第五取余结果。[0141]在执行步骤S90的过程中,以目标消息m’的目标数字签名为r’,S1’,S2’,-_,St’)进行说明:基于阶次m对第三取余结果^与第二哈希值e’的点积做取余处理得到第四取余结果m=e’Wimodm,同时基于阶次m对第三取余结果Wi与目标第一签名值r’的点积做取余处理得到第五取余结果vi=r’Wimodm〇[0M2]S100,利用目标签名公钥、第四取余结果、预设基点、第五取余结果和阶次计算中间签名值。[0143]在执行步骤SlOO的过程中,首先根据第四取余结果U1和预设基点P1的点积U1P1W及第五取余结果Vi和目标签名公钥Qi’的点积ViQi,计算中间签名Ri=mPi+viQi=xi,yi;进一步,基于阶次m对中间签名的横坐标做取余处理得到中间签名值ri”=Ximodm。[0144]S110,基于预设签名规则处理中间签名值得到基准签名值,并在基准签名值等于目标第一签名值的情况下,确定目标数字签名有效。[0145]如果目标消息!11’的目标数字签名为1’,81’^2’,82’,一,^’,^’),则此时基准签名值r”’=ri”,r2”,--.r:。[0146]如果目标消息m’的目标数字签名为r’,S1’,S2’,…,st’),则此时基准签名值r”’_”,”,”=π+Γ2+***rt〇[0147]此外,如果基准签名值不等于目标第一签名值,则确定目标数字签名无效。[0148]本发明实施例提供的签名验证方法,可以对跨多个预设椭圆曲线所生成数字签名进行验证,从而识别被签消息的准确性。[0149]基于上述实施例提供的签名验证方法,本发明实施例则对应提供执行上述签名验证方法的装置,该装置的结构示意图如图4所示,包括:[0150]获取模块60,用于获取待验证的目标消息的目标数字签名以及目标签名公钥,目标数字签名和目标签名公钥是按照前文任意一项所述的签名生成方法处理目标消息所得到的,目标数字签名由目标第一签名值和目标第二签名值构成;[0151]第二运算模块70,用于确定预设签名规则所对应的预判条件,并在目标第一签名值和目标第二签名值满足预判条件的情况下,对目标消息做哈希运算得到第二哈希值;[0152]第一处理模块80,用于基于阶次对目标第二签名值的逆运算值做取余处理得到第三取余结果;[0153]第二处理模块90,用于基于阶次对第三取余结果与第二哈希值的点积做取余处理得到第四取余结果,同时基于阶次对第三取余结果与目标第一签名值的点积做取余处理得到第五取余结果;[0154]第二计算模块100,用于利用目标签名公钥、第四取余结果、预设基点、第五取余结果和阶次计算中间签名值;[0155]第三确定模块110,用于基于预设签名规则处理中间签名值得到基准签名值,并在基准签名值等于目标第一签名值的情况下,确定目标数字签名有效。[0156]本发明实施例提供的签名验证装置,可以对跨多个预设椭圆曲线所生成数字签名进行验证,从而识别被签消息的准确性。[0157]以上对本发明所提供的一种签名生成方法、生成装置、签名验证方法和验证装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。[0158]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0159]还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0160]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

权利要求:1.一种签名生成方法,其特征在于,包括:根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据所述签名私钥计算签名公钥,所述预设椭圆曲线为多个;在获取到待签名的消息的情况下,选取所述预设椭圆曲线的随机数,并利用所述随机数计算所述预设基点的第一基点坐标;基于所述阶次对所述第一基点坐标的横坐标做取余处理得到第一取余结果,并在所述第一取余结果不为O的情况下,基于预设签名规则处理所述第一取余结果得到第一签名值;对所述消息做哈希运算得到第一哈希值,并按照预设运算规则对所述第一哈希值、所述随机数、所述签名私钥和所述第一签名值进行运算得到第二签名值;在所述第二签名值不为O的情况下,生成由所述第一签名值和所述第二签名值构成的数字签名。2.根据权利要求1所述的方法,其特征在于,所述预设椭圆曲线,包括:P-256曲线、SM2、secp256rl和secp256kl中的任意多种。3.根据权利要求1所述的方法,其特征在于,所述根据基于预设签名规则处理所述第一取余结果得到第一签名值,包括:将所述第一取余结果作为第一签名值。4.根据权利要求1所述的方法,其特征在于,所述根据基于预设签名规则处理所述第一取余结果得到第一签名值,包括:对所述第一取余结果进行求和异或处理;基于所述阶次对求和异或处理结果做取余处理得到第二取余结果,并在所述第二取余结果不等于〇的情况下,将所述求和异或处理结果作为第一签名值。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述第一取余结果为〇或者所述第二签名值为〇或者所述第二取余结果等于〇的情况下,返回执行所述选取所述预设椭圆曲线的随机数,这一步骤。6.—种签名生成装置,其特征在于,包括:第一确定模块,用于根据预设椭圆曲线上预设基点的阶次确定签名私钥,并根据所述签名私钥计算签名公钥,所述预设椭圆曲线为多个;第一计算模块,用于在获取到待签名的消息的情况下,选取所述预设椭圆曲线的随机数,并利用所述随机数计算所述预设基点的第一基点坐标;第二确定模块,用于基于所述阶次对所述第一基点坐标的横坐标做取余处理得到第一取余结果,并在所述第一取余结果不为O的情况下,基于预设签名规则处理所述第一取余结果得到第一签名值;第一运算模块,用于对所述消息做哈希运算得到第一哈希值,并按照预设运算规则对所述第一哈希值、所述随机数、所述签名私钥和所述第一签名值进行运算得到第二签名值;生成模块,用于在所述第二签名值不为〇的情况下,生成由所述第一签名值和所述第二签名值构成的数字签名。7.—种签名验证方法,其特征在于,包括:获取待验证的目标消息的目标数字签名以及目标签名公钥,所述目标数字签名和所述目标签名公钥是按照权利要求1〜5任意一项所述的签名生成方法处理所述目标消息所得到的,所述目标数字签名由目标第一签名值和目标第二签名值构成;确定所述预设签名规则所对应的预判条件,并在所述目标第一签名值和所述目标第二签名值满足所述预判条件的情况下,对所述目标消息做哈希运算得到第二哈希值;基于所述阶次对所述目标第二签名值的逆运算值做取余处理得到第三取余结果;基于所述阶次对所述第三取余结果与所述第二哈希值的点积做取余处理得到第四取余结果,同时基于所述阶次对所述第三取余结果与所述目标第一签名值的点积做取余处理得到第五取余结果;利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值;基于所述预设签名规则处理所述中间签名值得到基准签名值,并在所述基准签名值等于所述目标第一签名值的情况下,确定所述目标数字签名有效。8.根据权利要求7所述的方法,其特征在于,所述利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值,包括:根据所述第四取余结果和所述预设基点的点积以及所述第五取余结果和所述签名公钥的点积,计算中间签名;基于所述阶次对所述中间签名的横坐标做取余处理得到中间签名值。9.根据权利要求7所述的方法,其特征在于,所述方法还包括:在所述目标第一签名值和所述目标第二签名值不满足所述预判条件或者所述基准签名值不等于所述目标第一签名值的情况下,确定所述目标数字签名无效。10.—种签名验证装置,其特征在于,包括:获取模块,用于获取待验证的目标消息的目标数字签名以及目标签名公钥,所述目标数字签名和所述目标签名公钥是按照权利要求1〜5任意一项所述的签名生成方法处理所述目标消息所得到的,所述目标数字签名由目标第一签名值和目标第二签名值构成;第二运算模块,用于确定所述预设签名规则所对应的预判条件,并在所述目标第一签名值和所述目标第二签名值满足所述预判条件的情况下,对所述目标消息做哈希运算得到第二哈希值;第一处理模块,用于基于所述阶次对所述目标第二签名值的逆运算值做取余处理得到第三取余结果;第二处理模块,用于基于所述阶次对所述第三取余结果与所述第二哈希值的点积做取余处理得到第四取余结果,同时基于所述阶次对所述第三取余结果与所述目标第一签名值的点积做取余处理得到第五取余结果;第二计算模块,用于利用所述目标签名公钥、所述第四取余结果、所述预设基点、所述第五取余结果和所述阶次计算中间签名值;第三确定模块,用于基于所述预设签名规则处理所述中间签名值得到基准签名值,并在所述基准签名值等于所述目标第一签名值的情况下,确定所述目标数字签名有效。

百度查询: 中思博安科技(北京)有限公司 签名生成方法、生成装置、签名验证方法和验证装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。