一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种格数字签名方法及相关设备与流程

2023-02-04 09:16:02 来源:中国专利 TAG:


1.本技术实施例涉及数字签名领域,尤其涉及一种格数字签名方法及相关设备。


背景技术:

2.数字签名是公钥密码体制的基础原件之一,被广泛应用于身份认证,数据完整性检测,防抵赖等场景,在公钥密码学中占据着十分重要的地位。然而由于整数分解和离散对数问题被证明在量子计算机下可以有效求解,因此基于上述困难问题的传统数字签名体制在量子计算机下是不安全的,构造能够地抗量子攻击的数字签名体制已经成为密码学界和工业界的迫切需求。
3.示例性的,dilithium是一个基于格难题设计的数字签名方案,能够抵抗量子攻击,基本运算为多项式的乘法,综合效率高,公钥和签名的尺寸紧凑,目前进入美国国家标准与技术研究院(national institute of standards and technology,nist)后量子算法标准征集的第三轮候选名单,被认为是替代现有基于数论难题的数字签名算法的首选算法。
4.但是目前成为标准的格方案是基于ntru(number theory research unit)格的数字签名方案,ntru格的数字签名方案具有电气与电子工程师协会(institute of electrical and electronics engineers,ieee)标准,基于模格构造的dilithium数字签名方案不适用于ieee标准。


技术实现要素:

5.本技术实施例提供一种格数字签名方法及相关设备,用于构造出适用于ieee标准的基于ntru格的数字签名。本技术实施例还提供了相应的计算机设备、服务器、计算机可读存储介质、芯片系统及计算机程序产品等。
6.本技术第一方面提供一种格数字签名方法,包括:签名方获取用于生成密钥对的公开参数和待验证消息;签名方根据公开参数生成ntru格上的短向量;签名方根据短向量和公开参数确定密钥对,密钥对包括公钥和私钥;签名方根据私钥、公开参数和待验证消息生成消息签名对;签名方向验签方发送公钥和消息签名对,公钥和签名对用于验签方根据公钥对消息签名对进行验签。
7.本技术中的签名方可以是计算机设备,用户通过计算机设备上的客户端执行签名方的操作,验签方可以是服务器。
8.本技术中的待验证消息可以是签名方直接获取的,也可以是验签方获取后发送给签名方的,待验证消息可以是任意的随机消息。
9.本技术中的公开参数可以用来生成密钥对,公开参数的选择与密钥对的安全性相关。
10.本技术中,签名方根据公开参数生成多项式,该多项式可视为ntru(number theory research unit)格上的短向量,由此确定的密钥对的安全性基于ntru格的困难问
题,即对于恢复根据该短向量和公开参数生成的密钥对中的私钥,需要在行向量生成的ntru格中恢复该短向量,即在ntru格中求解最短向量问题。
11.该第一方面,签名方获取用于生成密钥对的公开参数和待验证消息,然后根据公开参数生成ntru格上的短向量,并根据短向量和公开参数确定密钥对,其中密钥对包括公钥和私钥,最后签名方根据私钥和待验证消息生成消息签名对供验签方验签,从而构造出一种基于ntru格的数字签名方案,适用于ieee标准。
12.在第一方面的一种可能的实现方式中,公开参数包括p、q、多项式环rq和三值多项式集合u,三值多项式集合u的多项式系数包括-1、0和1,且gcd(p,q)=1,上述步骤:签名方根据公开参数生成ntru格上的短向量具体包括:签名方从三值多项式集合u中获取多项式g;签名方从三值多项式集合u中获取多项式f,多项式f在多项式环rq中可逆;签名方确定ntru格上的短向量e,短向量e=(pg 1,f)。
13.该种可能的实现方式中,多项式环可以表示为:令q为一个素数,形如a0 a1x

akxk的多项式(系数ai∈zq,k是任意自然数)构成了集合zq[x]。固定一个n次多项式f(x)∈zq[x],称a(x),b(x)∈zq[x]关于f(x)属于同一剩余类,如果a(x)=b(x)mod f(x)。将zq[x]模f(x)的所有剩余类构成的集合记为rq=zq[x]/(f(x)),该集合具有自然的环结构。任一zq[x]/(f(x))中的多项式可视为一个zq上的n维向量。三值多项式集合中多项式的系数为3个,p和q的最大公约数为1,从三值多项式集合中取多项式可以是随机均匀的获取,如果在多项式rq中存在多项式g使得的fg=1mod q,则称f是多项式rq中的可逆多项式。
[0014]
本技术中,签名方具体可以从公开参数中的三值多项式集合中获取两次多项式,提升了方案的可实现性。
[0015]
在第一方面的一种可能的实现方式中,上述步骤:签名方根据短向量和公开参数确定密钥对包括:签名方确定参数h,参数h=(pg 1)/f mod q;签名方确定密钥对,密钥对包括公钥pk和私钥sk,公钥pk=h,私钥sk=(h,f,g)。
[0016]
该种可能的实现方式中,签名方生成短向量后就可以继续根据短向量和公开参数确定出密钥对,其中密钥对包括公钥和私钥,公钥为公开的密钥,私钥为签名方自身单独保存的密钥。
[0017]
本技术中,签名方可以根据短向量和公开参数确定参数,从而确定出密钥对,提升了方案的可实现性。
[0018]
在第一方面的一种可能的实现方式中,公开参数还包括α和l,上述步骤:签名方根据私钥、公开参数和待验证消息生成消息签名对包括:签名方生成预设长度的01字符串k;签名方生成向量r,向量r
←sα/2
,向量r为多项式环rq中的多项式,向量r的多项式系数的绝对值小于或等于α/2;签名方确定参数w,参数w=hr mod
± q,参数w的多项式系数的绝对值小于或等于q/2;签名方确定哈希值c,哈希值c=h(k||m||w mod p),哈希值c为多项式环rq中的多项式,哈希值c的多项式包括l个为1的多项式系数,其中m为待验证消息;签名方确定向量z和向量x,向量z=cf r,向量x=w pcg;当向量z的分量的多项式系数的绝对值的最大值小于α/2-l,且向量x的多项式系数的绝对值的最大值小于或等于q/2-pl,签名方生成消息签名对,消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c)。
[0019]
该种可能的实现方式中,签名方生成私钥后,可以生成一个预设长度的01字符串,01字符串为0和1组成的字符串,长度可以任意取,然后从公开参数中选取向量,从而确定出
参数和哈希值,当签名方确定的向量满足预设条件时,就可以生成得到消息签名对。
[0020]
本技术中,签名方可以生成字符串和向量,从而确定出参数和哈希值,从而确定消息签名对,提供给验签方进行验签,提升了方案的可实现性。
[0021]
本技术第二方面提供一种格数字签名方法,包括:验签方接收签名方发送的公钥和消息签名对,公钥包含于密钥对中,密钥对为签名方根据获取到的公开参数和ntru格上的短向量生成,短向量为签名方根据公开参数生成,消息签名对为签名方根据获取到的待验证消息和密钥对中的私钥生成的;验签方根据公钥对消息签名对进行验签。
[0022]
本技术中,验签方接收到的公钥是签名方ntru格上的短向量生成的,消息签名对的不可伪造性依赖于短整数解问题。验签方接收签名方发送的公钥和消息签名对后就可以根据公钥对消息签名对进行验签,从而实现格数字签名方法完成对待验证消息的验证。
[0023]
该第二方面,验签方接收签名方发送的公钥和消息签名对,验签方根据公钥对消息签名对进行验签,从而完成整个基于ntru格的数字签名方案,适用于ieee标准。
[0024]
在第二方面的一种可能的实现方式中,验签方根据公钥对消息签名对进行验签包括:验签方获取公开参数,公开参数包括α、l、p和q,公钥pk=h,消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c);验签方判断向量z的分量的多项式系数的绝对值是否小于α/2-l;若向量z的分量的多项式系数的绝对值小于α/2-l,验签方确定参数w

,参数w

=hz-c mod
± q,参数w

的多项式系数的绝对值小于或等于q/2;验签方判断参数w

的多项式系数的绝对值的最大值是否小于或等于q/2-pl;若参数w

的多项式系数的绝对值的最大值小于或等于q/2-pl,验签方确定哈希值c

,哈希值c

=h(k||m||w

mod p);验签方判断哈希值c

是否等于哈希值c;若哈希值c

等于哈希值c,验签方确定验签成功。
[0025]
该种可能的实现方式中,验签方获取到公开参数和签名方发送的公钥以及消息签名对后,验签方可以验证签名中的向量长度是否小于预设值,验证通过后继续验证计算出来的特定向量的长度是否小于或等于预设值,验证通过后继续验证哈希值是否与消息签名对中包含的哈希值相等,验证通过后才确定验签成功。
[0026]
本技术中,验签方接收到公钥和消息签名对后,可以分别依次验证向量长度是否足够短以及哈希值是否匹配,从而完成验签,提升了方案的可实现性,此外,验签方计算hz-c,只需要计算一次多项式乘法,从而提升了验签速度。
[0027]
本技术第三方面提供一种格数字签名方法,包括:签名方获取用于生成密钥对的公开参数和待验证消息;签名方根据公开参数生成基于模格的密钥对,密钥对包括公钥和私钥;签名方根据私钥和待验证消息生成消息签名对;签名方向验签方发送公钥和消息签名对,公钥和签名对用于验签方根据公钥对消息签名对进行验签。
[0028]
本技术第三方面提供的格数字签名方法与第一方面提供的格数字签名方法区别在于基于的底层困难问题不同,体现在生成密钥对的方式不同,从而使得生成消息签名对的方式也不同,本技术第三方面中的密钥对为基于模格问题生成。
[0029]
在第三方面的一种可能的实现方式中,公开参数包括m、l、n、η、p、q和多项式环rq,上述步骤:签名方根据公开参数生成基于模格的密钥对包括:签名方生成矩阵a,矩阵a的分量为多项式环rq中均匀选取的多项式,矩阵a的维度为m
×
l;签名方生成秘密向量s1和秘密向量s2,秘密向量秘密向量其中i
η
为属于[-η,η]的整数集;签名方确定参数t,参数t=as1 ps
2 mod q;签名方确定密钥对,密钥对包括公钥pk和私钥sk,公钥
pk=(a,t),私钥sk=(a,t,s1,s2)。
[0030]
本技术中,签名方获取到公开参数后,可以生成矩阵和秘密向量,根据矩阵和秘密向量确定参数,然后根据参数确定基于模格的密钥对,提升了方案的可实现性。
[0031]
在第三方面的一种可能的实现方式中,公开参数还包括γ和v,上述步骤:签名方根据私钥和待验证消息生成消息签名对包括:签名方生成预设长度的01字符串k;签名方生成向量y,向量向量y的分量为多项式环rq中的多项式,向量y的维度为l,向量y的多项式系数的绝对值小于或等于γ/2;签名方确定参数w,参数w=ay mod
± p,参数w各分量的多项式系数的绝对值小于或等于q/2;签名方确定哈希值c,哈希值c=h(k||m||w mod p),哈希值c为多项式环rq中的多项式,哈希值c的多项式包括v个为1的多项式系数;签名方确定向量z和向量x,向量z=cs1 y,向量x=w pcs2;当向量z各分量的多项式系数的绝对值的最大值小于γ/2-vη,且向量x各分量的多项式系数的绝对值的最大值小于或等于q/2-pvη,签名方生成消息签名对,消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c)。
[0032]
本技术中,签名方获取到私钥和待验证消息后,可以生成01字符串和向量,根据向量和公开参数确定参数和哈希值,当向量满足预设条件时生成消息签名对,提升了方案的可实现性。
[0033]
本技术第四方面提供一种格数字签名方法,包括:验签方接收签名方发送的公钥和消息签名对,公钥包含于基于模格的密钥对中,密钥对为签名方根据获取到的公开参数生成,消息签名对为签名方根据获取到的待验证消息和密钥对中的私钥生成的;验签方根据公钥对消息签名对进行验签。
[0034]
本技术第四方面提供的基于模格的数字签名方法与第二方面提供的格数字签名方法区别在于基于的底层困难问题不同,体现在生成密钥对的方式不同,从而使得对消息签名对进行验签的方式也不同,本技术第四方面中的密钥对的安全性由模格上的困难问题保证。
[0035]
在第四方面的一种可能的实现方式中,验签方根据公钥对消息签名对进行验签包括:验签方获取公开参数,公开参数包括η、p、q、γ和v,公钥pk=(a,t),消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c);验签方判断向量z的分量的多项式系数的绝对值是否小于γ/2-vη;若向量z的分量的多项式系数的绝对值小于γ/2-vη,验签方确定参数w

,参数w

=az-ct mod
± q,参数w

的多项式系数的绝对值小于或等于q/2;验签方判断参数w

的多项式系数的绝对值的最大值是否小于或等于q/2-pvη;若参数w

的多项式系数的绝对值的最大值小于或等于q/2-pvη,验签方确定哈希值c

,哈希值c

=h(k||m||w
′ꢀ
mod p),验签方判断哈希值c

是否等于哈希值c;若哈希值c

等于哈希值c,验签方确定验签成功。
[0036]
本技术中,验签方获取到消息签名对和公钥后,可以再获取到公开参数,然后分别依次验证向量长度是否足够短以及哈希值是否匹配,从而完成验签,提升了方案的可实现性。
[0037]
本技术第五方面,提供了一种计算机设备,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该计算机设备包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块或单元,如:获取单元、第一生成单元、确定单元、第二生成单元和发送单元。
[0038]
本技术第六方面,提供了一种服务器,用于执行上述第二方面或第二方面的任意
可能的实现方式中的方法。具体地,该计算机设备包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块或单元,如:接收单元和验签单元。
[0039]
本技术第七方面提供一种计算机设备,该计算机设备包括处理器、内存和存储有计算机程序的计算机可读存储介质;处理器与计算机可读存储介质耦合,处理器上运行的计算机执行指令,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。可选地,该计算机设备还可以包括输入/输出(input/output,i/o)接口,该存储有计算机程序的计算机可读存储介质可以是存储器。
[0040]
本技术第八方面提供一种计算机设备,该计算机设备包括处理器、内存和存储有计算机程序的计算机可读存储介质;处理器与计算机可读存储介质耦合,处理器上运行的计算机执行指令,当计算机执行指令被处理器执行时,处理器执行如上述第二方面或第二方面任意一种可能的实现方式的方法。可选地,该计算机设备还可以包括输入/输出(input/output,i/o)接口,该存储有计算机程序的计算机可读存储介质可以是存储器。
[0041]
本技术第九方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
[0042]
本技术第十方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第二方面或第二方面任意一种可能的实现方式的方法。
[0043]
本技术第十一方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
[0044]
本技术第十二方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第二方面或第二方面任意一种可能的实现方式的方法。
[0045]
本技术第十三方面提供了一种芯片系统,该芯片系统包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持计算机设备实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0046]
本技术第十四方面提供了一种芯片系统,该芯片系统包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持计算机设备实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
[0047]
图1为ssh身份认证架构示意图;
[0048]
图2为本技术实施例提供的格数字签名方法的一实施例示意图;
[0049]
图2a为本技术实施例提供的格数字签名方法的一实施例密钥生成算法示意图;
[0050]
图2b为本技术实施例提供的格数字签名方法的一实施例签名算法示意图;
[0051]
图2c为本技术实施例提供的格数字签名方法的一实施例验签算法示意图;
[0052]
图3为本技术实施例提供的基于模格的数字签名方法的一实施例示意图;
[0053]
图3a为本技术实施例提供的格数字签名方法的一实施例密钥生成算法示意图;
[0054]
图3b为本技术实施例提供的格数字签名方法的一实施例签名算法示意图;
[0055]
图3c为本技术实施例提供的格数字签名方法的一实施例验签算法示意图;
[0056]
图4为本技术实施例提供的计算机设备的一结构示意图;
[0057]
图5为本技术实施例提供的服务器的一结构示意图;
[0058]
图6为本技术实施例提供的计算机设备的另一结构示意图;
[0059]
图7为本技术实施例提供的服务器的另一结构示意图。
具体实施方式
[0060]
下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0061]
本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0062]
本技术实施例提供一种格数字签名方法及相关设备,用于构造出适用于ieee标准的基于ntru格的数字签名。本技术实施例还提供了相应的计算机设备、服务器、计算机可读存储介质、芯片系统及计算机程序产品等。以下分别进行详细说明。
[0063]
数字签名的作用是保证数据完整性、进行身份认证以及防抵赖,例如在通信场景中使收件人确保发件人的身份合法性,以及确保收到的消息没有被篡改;例如数字签名还可以用于生成数字文凭;例如数字签名还可以用于确定数字货币在特定时间的所有权;例如软件安装包下载或更新的时候提供数字签名让用户检查软件来源是否合法,意见检验软件是否被篡改。
[0064]
数字签名方法由密钥生成(key gen)算法、签名(sign)算法和验签(verify)算法三个算法构成。密钥生成算法产生一个密钥对,公钥pk是公开的,私钥sk被签名者秘密地保存。签名算法以消息和私钥为输入,输出消息以及对该消息的签名。验签算法以公钥、消息和签名为输入,如果该签名是输入消息的合法签名(即由sign算法生成的签名),则输出accept,否则输出reject。
[0065]
如图1所示,当用户通过客户端与服务器需要进行交互时,服务器需要客户端向其证明身份,例如进行安全外壳协议(secure shell,ssh)身份认证,此时可以采用数字签名的方法向其证明身份。
[0066]
认证时,客户端首先向服务器发起ssh连接请求,服务器接收到客户端发送的ssh
连接请求后会返回一个随机消息,客户端可以采用数字签名方法生成密钥对,并用密钥对中的私钥对随机消息进行签名,生成消息签名对,并将消息签名对和密钥对中的公钥发送给服务器,服务器就可以使用公钥对消息签名对进行验签,若验签成功,则表示服务器接受客户端的签名,客户端的身份得到认证。
[0067]
一个秩为n的d维格(lattice)定义为这里b1,

,bn∈rd是线性无关的向量。由任意一个zq[x]/(f(x))中的多项式h(x)可以定义ntru(number theory research unit)格
[0068]
下面结合上述数字签名认证场景和格的定义对本技术实施例中的格数字签名方法进行描述,请参阅图2,本技术实施例中格数字签名方法一个实施例包括:
[0069]
201、签名方获取用于生成密钥对的公开参数和待验证消息。
[0070]
签名方可以是计算机设备,具体还可以是用户使用的计算机设备中的客户端,验签方可以是服务器,此外签名方也可以为服务器,验签方也可以为计算机设备。以用户使用的客户端为签名方,服务器为验签方为例,签名方获取的公开参数可以是用户根据自身需求选择的,公开参数的选择与密钥对的安全性相关。待验证消息可以是用户输入的,还可以是用户通过客户端向服务器发送连接请求时,服务器返回的随机消息。
[0071]
202、签名方根据公开参数生成ntru格上的密钥对。
[0072]
该步骤202可以分为两步执行:
[0073]
1、签名方生成ntru格上的短向量。
[0074]
签名方获取到公开参数后,就可以生成ntru格上的短向量,具体的,签名方获取到的公开参数包括p、q、多项式环rq和三值多项式集合u。
[0075]
其中,多项式环(polynomial ring)的定义如下:令q为一个素数,形如a0 a1x

akxk的多项式(系数ai∈zq,k是任意自然数)构成了集合zq[x]。固定一个n次多项式f(x)∈zq[x],称a(x),b(x)∈zq[x]关于f(x)属于同一剩余类,如果a(x)=b(x) mod f(x)。将zq[x]模f(x)的所有剩余类构成的集合记为rq=zq[x]/(f(x)),该集合具有自然的环结构。任一zq[x]/(f(x))中的多项式可视为一个zq上的n维向量。三值多项式集合u中的多项式的系数为3个,具体为-1、0和1。公开参数p和q的最大公约数为1,即gcd(p,q)=1。
[0076]
签名方可以从三值多项式集合u中获取多项式g和多项式f,具体的,获取多项式的方式可以是随机均匀的获取,即任何一个多项式环rq里的多项式可以视为一个n维向量,向量的每个分量在zq里取值,这里zq可以取一般剩余系,也可以取中心剩余系。示例性的,zq可以取为{0,1,2,3,4}也可以取为{-2,-1,0,1,2},指定多项式环rq的参数n=2,q=5,以及取一般剩余系的时候,多项式可以视为一个二维向量(x,y),这里x和y从z5中取。那么随机均匀地从r2中取值,即使得x和y取{0,1,2,3,4}中每一个元素的概率都是等可能的。此外,多项式f在多项式环rq中可逆,即在多项式环rq中存在多项式g使得的fg=1 mod q,则称f是多项式环rq中的可逆多项式。
[0077]
签名方获取到多项式g和多项式f后,就可以确定出短向量e,具体的,短向量e=(pg 1,f)。短向量e是由行向量生成的ntru格中的短向量,其中in为n阶单位阵。能够恢复私钥相当于能够求解ntru格中的最短向量问题(shortest vector problem,
svp)。
[0078]
2、签名方根据短向量和公开参数确定密钥对。
[0079]
签名方生成短向量e后,就可以根据先前得到的公开参数和短向量e确定参数h,具体的,参数h=(pg 1)/f mod q,由此签名方就可以生成密钥对,密钥对包括公钥pk和私钥sk,公钥pk=h,私钥sk=(h,f,g),该密钥对的安全性基于求解ntru格上的困难问题。
[0080]
其中,若p是一个多项式环rq中的多项式,p mod q就是对多项式p的每个系数求mod q,因此参数h为对多项式(pg 1)/f的每个系数求mod q。
[0081]
如图2a所示,本技术实施例中步骤201-步骤202相当于执行密钥生成算法。
[0082]
203、签名方根据私钥、公开参数和待验证消息生成消息签名对。
[0083]
签名方获取的公开参数还包括α和l,签名方生成密钥对后,还需要生成消息签名对以供验签方验签。
[0084]
具体的,签名方生成均匀随机的01字符串k和随机均匀的向量r,其中01字符串k为0和1组成的字符串,长度可以任意取,具体的,有任意个比特的二进制串(binary string),比如长度为8的binary string。向量r
←sα/2
,向量r为多项式环rq中的多项式,向量r的多项式系数的绝对值小于或等于α/2。签名方得到向量r后,可以确定出参数w,具体的,参数w=hr mod
± q,其中参数w的多项式系数的绝对值小于或等于q/2,签名方得到参数w后,可以确定出哈希值c,具体的,哈希值c=h(k||m||w mod p),其中哈希值c为多项式环rq中的多项式,哈希值c的多项式包括l个为1的多项式系数,其他多项式系数为0,m为待验证消息,签名方继续生成向量z和向量x,具体的,向量z=cf r,向量x=w pcg,当上述参数和向量都被确定后,签名方就可以得到消息签名对,具体的,当向量z的分量的多项式系数的绝对值的最大值小于α/2-l,且向量x的多项式系数的绝对值的最大值小于或等于q/2-pl,签名方生成消息签名对(m,σ=(k,z,c)),若向量z和向量x不满足上述条件,则重新生成向量r,并继续执行上述步骤,直至向量z和向量x满足上述条件。
[0085]
具体的,消息签名对的不可伪造性依赖于求解如下短整数解问题((short integer solution,sis)):
[0086][0087]
使得
[0088]
‖x1‖

《q/p-2l 2,‖x2‖

《α-2l,‖x3‖

≤1
[0089]
其中
[0090]
因此本技术实施例提供的数字签名方案是基于ntru格上困难问题的。
[0091]
如图2b所示,本技术实施例中步骤203相当于执行签名算法。
[0092]
204、签名方向验签方发送公钥和消息签名对。
[0093]
签名方生成消息签名对后,将公钥和消息签名对发送给验签方,其中公钥和签名对用于验签方根据公钥对消息签名对进行验签,公钥可以是签名方生成密钥对时就发送给验签方,也可以是和消息签名对一起发送给验签方,本技术实施例对此不作限制。
[0094]
205、验签方根据公钥对消息签名对进行验签。
[0095]
验签方接收到签名方发送的公钥和消息签名对后,还获取签名方获取的公开参
数,其中验签方获取的公开参数包括α、l、p和q。
[0096]
验签方首先判断向量z的分量的多项式系数的绝对值是否小于α/2-l,若向量z的分量的多项式系数的绝对值小于α/2-l,验签方生成参数w

,具体的,参数w

=hz-c mod
± q,其中参数w

的多项式系数的绝对值小于或等于q/2,然后验签方判断参数w

的多项式系数的绝对值的最大值是否小于或等于q/2-pl,若参数w

的多项式系数的绝对值的最大值小于或等于q/2-pl,验签方确定哈希值c

,具体的,哈希值c

=h(k||m||w
′ꢀ
mod p),验签方最后判断哈希值c

是否等于哈希值c,若哈希值c

等于哈希值c,验签方确定验签成功。验签方可以输出1或者0,输出1表示签名合法,输是0表示签名不合法。
[0097]
如图2c所示,本技术实施例中步骤205相当于执行验签算法。
[0098]
本技术实施例中,验签方只需要计算hz-c就可以确定参数w

,相比dilithium的数字签名方案,减少了多项式乘法的次数,从而提升了验签速度。
[0099]
本技术实施例中,签名方获取用于生成密钥对的公开参数和待验证消息,然后根据公开参数生成ntru格上的短向量,并根据短向量和公开参数确定密钥对,其中密钥对包括公钥和私钥,最后签名方根据私钥和待验证消息生成消息签名对供验签方验签,从而构造出一种基于ntru格的数字签名方案,不仅适用于ieee标准,在ntru体制的基础上还结合了dilithium数字签名算法的优势,运算速度快,且密钥紧凑,可以给出常数时间(constant-time)算法来实现。
[0100]
如图3所示,本技术实施例提供的基于模格的数字签名方法的一实施例包括:
[0101]
301、签名方获取用于生成密钥对的公开参数和待验证消息。
[0102]
签名方可以是用户使用的计算机设备中的客户端,签名方获取的公开参数可以是用户根据自身需求选择的,公开参数的选择与密钥对的安全性相关。待验证消息可以是用户输入的,还可以是用户通过客户端向服务器发送连接请求时,服务器返回的随机消息。
[0103]
302、签名方根据公开参数生成模格上的密钥对。
[0104]
签名方获取到公开参数后,就可以生成密钥对,其中密钥对的安全性基于模格上的困难问题(module learning with errors,mlwe),具体的,签名方获取到的公开参数包括m、l、n、η、p、q和多项式环rq,然后签名方生成矩阵a,具体的,矩阵a的分量为多项式环rq中均匀选取的多项式,矩阵a的维度为m
×
l。签名方继续生成秘密向量s1和秘密向量s2,具体的,秘密向量秘密向量其中i
η
为属于[-η,η]的整数集。签名方继续生成参数t,具体的,参数t=as1 ps
2 mod q,最后签名方确定出密钥对,具体的,密钥对包括公钥pk和私钥sk,公钥pk=(a,t),私钥sk=(a,t,s1,s2)。
[0105]
本技术实施例中,该基于模格的密钥对可以导出为本技术实施例提供的格数字签名方法中的密钥对。具体的,将参数a对应为参数h,向量s1对应为多项式f,向量s2对应为多项式g,参数t压缩为1,从而得到基于ntru格的密钥对,其中公钥pk=h,私钥sk=(h,f,g)。
[0106]
如图3a所示,本技术实施例中步骤301和步骤302相当于执行密钥生成算法。
[0107]
303、签名方根据私钥和待验证消息生成消息签名对。
[0108]
签名方获取的公开参数还包括γ和v,签名方生成密钥对后,还需要生成消息签名对以供验签方验签。
[0109]
具体的,签名方生成均匀随机的01字符串k和均匀随机的向量y,其中01字符串k为
0和1组成的字符串,长度可以任意取,向量向量y的每一分量都为多项式环rq中的多项式,向量y的维度为l,向量y的多项式系数的绝对值小于或等于γ/2。签名方得到向量y后,可以确定出参数w,具体的,参数w=ay mod
± p,取模后,参数w各分量的多项式系数的绝对值小于或等于q/2,签名方得到参数w后,可以确定出哈希值c,具体的,哈希值c=h(k||m||w mod p),其中哈希值c为多项式环rq中的多项式,哈希值c的多项式包括v个为1的多项式系数,其他多项式系数为0,m为待验证消息,签名方继续生成向量z和向量x,具体的,向量z=cs1 y,向量x=w pcs2,当上述参数和向量都被确定后,签名方就可以得到消息签名对,具体的,当向量z各分量的多项式系数的绝对值的最大值小于γ/2-vη,且向量x各分量的多项式系数的绝对值的最大值小于或等于q/2-pvη,签名方生成消息签名对(m,σ=(k,z,c)),若向量z和向量x不满足上述条件,则重新生成向量y,并继续执行上述步骤,直至向量z和向量x满足上述条件。
[0110]
如图3b所示,本技术实施例中步骤303相当于执行签名算法。
[0111]
304、签名方向验签方发送公钥和消息签名对。
[0112]
签名方生成消息签名对后,将公钥和消息签名对发送给验签方,其中公钥和签名对用于验签方根据公钥对消息签名对进行验签,公钥可以是签名方生成密钥对时就发送给验签方,也可以是和消息签名对一起发送给验签方,本技术实施例对此不作限制。
[0113]
305、验签方根据公钥对消息签名对进行验签。
[0114]
验签方接收到签名方发送的公钥和消息签名对后,还获取签名方获取的公开参数,其中验签方获取的公开参数包括η、p、q、γ和v。
[0115]
验签方首先判断向量z的分量的多项式系数的绝对值是否小于γ/2-vη,若向量z的分量的多项式系数的绝对值小于γ/2-vη,验签方确定参数w

,具体的,参数w

=az-ct mod
± q,其中参数w

的多项式系数的绝对值小于或等于q/2,然后验签方判断参数w

的多项式系数的绝对值的最大值是否小于或等于q/2-pvη,若参数w

的多项式系数的绝对值的最大值小于或等于q/2-pvη,验签方确定哈希值c

,具体的,哈希值c

=h(k||m||w
′ꢀ
mod p),验签方最后判断哈希值c

是否等于哈希值c,若哈希值c

等于哈希值c,验签方确定验签成功。验签方可以输出1或者0,输出1表示签名合法,输是0表示签名不合法。
[0116]
如图3c所示,本技术实施例中步骤305相当于执行验签算法。
[0117]
本技术实施例中的部分实现方式还可以参考图2部分实施例所描述的格数字签名方法。
[0118]
本技术实施例提供的基于模格的数字签名方法,不仅可以抵抗量子攻击,其生成的密钥对可以导出为基于ntru格的密钥对,从而生成基于ntru格的数字签名方案,相当于从dilithium导出一个ntru格上的高效实例化。
[0119]
如图4所示,本技术实施例提供的计算机设备400的一实施例包括:
[0120]
获取单元401,用于获取用于生成密钥对的公开参数和待验证消息;该获取单元401可以执行上述方法实施例中的步骤201。
[0121]
第一生成单元402,用于根据公开参数生成ntru格上的短向量;该第一生成单元402可以执行上述方法实施例中的步骤202。
[0122]
确定单元403,用于根据短向量和公开参数确定密钥对,密钥对包括公钥和私钥;该确定单元403可以执行上述方法实施例中的步骤202。
[0123]
第二生成单元404,用于根据私钥、公开参数和待验证消息生成消息签名对;该第二生成单元404可以执行上述方法实施例中的步骤203。
[0124]
发送单元405,用于向验签方发送公钥和消息签名对,公钥和签名对用于验签方根据公钥对消息签名对进行验签。该发送单元405可以执行上述方法实施例中的步骤204。
[0125]
本技术实施例中,获取单元401获取用于生成密钥对的公开参数和待验证消息,然后第一生成单元402根据公开参数生成ntru格上的短向量,确定单元403根据短向量和公开参数确定密钥对,其中密钥对包括公钥和私钥,最后第二生成单元404根据私钥和待验证消息生成消息签名对供验签方验签,从而构造出一种基于ntru格的数字签名方案,适用于ieee标准。
[0126]
可选的,公开参数包括p、q、多项式环rq和三值多项式集合u,三值多项式集合u的多项式系数包括-1、0和1,且gcd(p,q)=1,第一生成单元402具体用于从三值多项式集合u中获取多项式g;从三值多项式集合u中获取多项式f,多项式f在多项式环rq中可逆;确定ntru格上的短向量e,短向量e=(pg 1,f)。
[0127]
可选的,确定单元403具体用于确定参数h,参数h=(pg 1)/f mod q;确定密钥对,密钥对包括公钥pk和私钥sk,公钥pk=h,私钥sk=(h,f,g)。
[0128]
可选的,公开参数还包括α和l,第二生成单元404具体用于生成预设长度的01字符串k;生成向量r,向量r
←sα/2
,向量r为多项式环rq中的多项式,向量r的多项式系数的绝对值小于或等于α/2;确定参数w,参数w=hr mod
± q,参数w的多项式系数的绝对值小于或等于q/2;确定哈希值c,哈希值c=h(k||m||w mod p),哈希值c为多项式环rq中的多项式,哈希值c的多项式包括l个为1的多项式系数,其中m为待验证消息;确定向量z和向量x,向量z=cf r,向量x=w pcg;当向量u的分量的多项式系数的绝对值的最大值小于α/2-l,且向量x的多项式系数的绝对值的最大值小于或等于q/2-pl,生成消息签名对,消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c)。
[0129]
本技术实施例提供的计算机设备400可以参阅前述格数字签名方法实施例部分的相应内容进行理解,此处不再重复赘述。
[0130]
如图5所示,本技术实施例提供的服务器500一实施例包括:
[0131]
接收单元501,用于接收签名方发送的公钥和消息签名对,公钥包含于密钥对中,密钥对为签名方根据获取到的公开参数和ntru格上的短向量生成,短向量为签名方根据公开参数生成,消息签名对为签名方根据获取到的待验证消息和密钥对中的私钥生成的;该接收单元501可以执行上述方法实施例中的步骤204。
[0132]
验签单元502,用于根据公钥对消息签名对进行验签。该验签单元502可以执行上述方法实施例中的步骤205。
[0133]
本技术中,验签方接收到的消息签名对的不可伪造性依赖于格上困难问题,因此验签方要基于此进行验签。接收单元501接收签名方发送的公钥和消息签名对后,验签单元502就可以根据公钥对消息签名对进行验签,从而实现格数字签名方法完成对待验证消息的验证。
[0134]
可选的,验签单元502具体用于获取公开参数,公开参数包括α、l、p和q,公钥pk=h,消息签名对包括待验证消息m和签名σ,签名σ=(k,z,c);判断向量z的分量的多项式系数的绝对值是否小于α/2-l;若向量z的分量的多项式系数的绝对值小于α/2-l,确定参数w


参数w

=hz-c mod
± q,参数w

的多项式系数的绝对值小于或等于q/2;判断参数w

的多项式系数的绝对值的最大值是否小于或等于q/2-pl;若参数w

的多项式系数的绝对值的最大值小于或等于q/2-pl;确定哈希值c

,哈希值c

=h(k||m||w
′ꢀ
mod p);判断哈希值c

是否等于哈希值c;若哈希值c

等于哈希值c,确定验签成功。
[0135]
图6所示,为本技术的实施例提供的计算机设备600的一种可能的逻辑结构示意图。计算机设备600包括:处理器601、通信接口602、存储系统603以及总线604。处理器601、通信接口602以及存储系统603通过总线604相互连接。在本技术的实施例中,处理器601用于对计算机设备600的动作进行控制管理,例如,处理器601用于执行图2部分实施例所描述的格数字签名方法。通信接口602用于支持计算机设备600进行通信。存储系统603,用于存储计算机设备600的程序代码和数据。
[0136]
其中,处理器601可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器601也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线604可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0137]
图7所示,为本技术的实施例提供的服务器700的一种可能的逻辑结构示意图。服务器700包括:处理器701、通信接口702、存储系统703以及总线704。处理器701、通信接口702以及存储系统703通过总线704相互连接。在本技术的实施例中,处理器701用于对服务器700的动作进行控制管理,例如,处理器701用于执行图2部分实施例所描述的格数字签名方法。通信接口702用于支持服务器700进行通信。存储系统703,用于存储服务器700的程序代码和数据。
[0138]
其中,处理器701可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线704可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0139]
在本技术的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图2部分实施例所描述的格数字签名方法。
[0140]
在本技术的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图2部分实施例所描述的格数字签名方法。
[0141]
在本技术的另一实施例中,还提供一种芯片系统,该芯片系统包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持实现上述图2部分实施例所描述的格数字签名方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0142]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0143]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0144]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0145]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0146]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献