基于格上困难问题的数字签名方法技术

技术编号:21971835 阅读:104 留言:0更新日期:2019-08-28 01:33
本发明专利技术公开了一种基于格上困难问题的数字签名方法,主要解决现有技术签名效率较低的问题,并在提高效率的前提下减少签名长度。其实现步骤为:1.签名实体先根据安全需求生成参数系统;再根据密钥生成方法,利用参数系统生成签名私钥和验证公钥;2.签名实体利用验证公钥预先产生签名过程中所需要的随机数值和部分签名值;3.签名实体使用签名私钥对消息进行签名,并输出符合要求的签名消息;4.验证方利用验证公钥验证签名消息的有效性。本发明专利技术在相同的安全级别下提升了签名生成效率,减少了签名长度,可用于保证信息传送的完整性,信息发送者的身份认证以及防止交易抵赖的发生。

Digital Signature Method Based on Lattice Difficulty Problem

【技术实现步骤摘要】
基于格上困难问题的数字签名方法
本专利技术属于信息安全
,具体涉及一种数字签名方法,可用于保证信息传送的完整性,信息发送者的身份认证以及防止交易抵赖的发生。
技术介绍
在量子计算机模型问世后,量子算法将传统密码算法的时间复杂度由Ω(n)降低为O(n),这使得传统基于数论理论构造的密码方案不再安全,而基于格构造的密码方案具有公认的抗量子特性,并且几乎所有的传统密码学原语都可以在格上实现,因此格理论以及格密码的构造和应用被密码学
人员广泛研究。数字签名又称为公钥数字签名,如同物理签名,数字签名是信息发送方确保接收方能验证信息真实性的一段数字串,使用私钥签名,公钥验证。随着格理论的不断发展,出现了许多不同类型的格签名方案,但大体分为两种类型,第一种为基于格上的陷门构造的数字签名方法,第二种为在不使用陷门的前提下构造格上签名的方法。对于第一种类型,Gentry等人于2008年提出了第一个可证明安全的构造格上数字签名的方法,该方法使用了格上陷门来构造验证公钥和签名私钥,并在签名的过程中使用球面离散高斯采样,尽管拥有良好的安全性,但安全性的保证来自于在签名过程中使用球面离散高斯采样技术,这使得该类方法有着一个共同的缺点,签名效率较低。对比上述类型的数字签名方法,在实现上更有优势的应该是接下来要提到的第二种类型,2014年,Bai和Galbraith提出了一种基于Fiat-Shamir转换构造的格签名方法,后来该类型方法又由Alkim等人以TESLA的名称进行研究。尽管这一类方案在硬件实现时有相当高的效率,但是同样也存在着一些缺点。第一,已有的该类型的方法都在密钥生成和签名过程中使用了离散高斯采样;第二,为了确保签名私钥的安全,都使用了拒绝采样方法,这使得签名的输出概率不再是百分百,而是仅有大约1/3且上限被限制在3/4,这些因素都对签名的效率产生了影响。
技术实现思路
本专利技术的目的是针对上述现有技术的不足,提出一种基于格上困难问题的数字签名方法,以提升签名生成的效率,并在相同的安全级别下明减小签名长度。为实现上述目的,本专利技术的技术方案包括以下步骤:(1)签名实体根据自己的安全需求生成参数系统,其中包括:第一个素数p=2、第二个大于p的素数q、一个素数n满足2n-1为梅森素数、一个将任意长度二进制串哈希到n比特长度二进制串的哈希函数Hash、一个模xn-1的一元多项式整系数环一个n阶二进制多项式集合{0,1}n和一个大于等于0且小于q的整数集合定义多项式乘法为环Rq上的乘法;(2)生成签名私钥和验证公钥:签名实体生成一个多项式作为第一个公钥a,a∈Rq,满足多项式a的所有系数和为q的倍数以及多项式asp(modq)的所有系数之和等于q,再产生一个二进制多项式作为验证私钥s,s∈{0,1}n,并利用第一个公钥a和验证私钥s产生第二个公钥:将(t,a)和s分别作为签名实体的验证公钥和签名私钥,其中,符号表示对符号内多项式的每个系数向下取整,(modp)表示将向量中的每个元素模p;(3)产生消息m的签名Sig,并进行验证:(3.1)签名实体利用哈希函数Hash产生一个哈希数值c=Hash(m),将c转换为十进制数,记为cD;(3.2)签名实体生成一个二进制多项式kB,kB∈{0,1}n,并产生第一个签名值:满足多项式pakB(modq)的每个系数均大于(q-1)/2;(3.3)将二进制多项式kB、r和s转换为十进制数,分别记为kD、rD和sD,并产生kD在模2n-1意义下的乘法逆元和第二个签名值:(3.4)产生zD在模2n-1意义下的乘法逆元并产生第一个中间项将b看作n阶多项式,记为bB,验证(zD,rD)是否可作为消息m的签名Sig:若多项式pakB(modq)-padB(modq)的每一个系数都大于0,则Sig=(zD,rD),否则,返回到步骤(3.2);(4)利用签名Sig和公钥(t,a)对消息m的有效性进行验证:(4.1)利用消息m和哈希函数Hash产生哈希数值c=Hash(m);(4.2)产生zD在模2n-1意义下的乘法逆元将c转换为十进制数,记为cD,再产生第一个中间项和第二个中间项将b和d看作n阶多项式,分别记为bB和dB;(4.3)将rD转换为二进制多项式,记为rB,产生验证值:d'=rB-tbB(modp);(4.4)判断dB和d'是否相等,若相等则认为消息m是有效的,否则,认为是无效的。本专利技术与现有技术相比具有以下优点:1)效率高本专利技术相比已有技术,由于未使用高斯采样,并且二进制多项式kB的选取和第一个签名值r生成的过程可以预先进行,因此,提升了签名的效率。2)签名长度短本专利技术相比已有技术,由于在相同的安全级别下,对参数n的选取要求满足2n-1为梅森素数,即n的选取范围有限的,但产生的签名长度仅为参数n大小的两倍,因此,签名长度更短。附图说明图1为本专利技术的实现流程图。具体实施方式参照图1,本专利技术的实施步骤如下:步骤1,签名实体生成参数系统。签名实体根据自己的安全需求生成参数系统,其中包括:第一个素数p=2、第二个大于p的素数q、一个素数n满足2n-1为梅森素数、一个将任意长度二进制串哈希到n比特长度二进制串的哈希函数Hash、一个模xn-1的一元多项式整系数环一个n阶二进制多项式集合{0,1}n和一个大于等于0且小于q的整数集合定义多项式乘法为环Rq意义上的乘法。步骤2,签名实体生成验证公钥和签名私钥。2.1)随机挑选一个二进制多项式作为签名私钥s,s∈{0,1}n,并产生s在Rq中的乘法逆元s*;2.2)签名实体生成一个所有系数和为q的倍数的多项式a,满足多项式asp(modq)的所有系数之和等于q:2.2.1)将q拆分成n个小于q的正整数,记为ti,i=1,2,...,n,其中,q被拆分成n个小于q的正整数(t1,t2,...,tn),这n个数(t1,t2,...,tn)的方差越小,之后签名成功的概率越大;2.2.2)产生中间变量xi满足2xi≡ti(modq),其中,2.2.3)将n个整数xi分别看作n阶多项式的n个系数,记该多项式为t*;2.2.4)产生第一个公钥:a=t*s*(modq);2.3)产生第二个公钥:将(t,a)和s分别作为签名实体的验证公钥和签名私钥,其中,符号表示对符号内多项式的每个系数向下取整,(modp)表示将多项式的每个系数模p。步骤3,利用第一个公钥a产生一个预备随机值的数组列表(R,K)。3.1)记录签名私钥s中系数1的个数;3.2)根据签名私钥s中系数1的个数选取预备随机值并判断多项式s系数1个数的奇偶性:若s中系数1的个数为偶数,则随机选取系数1为奇数个的二进制多项式作为预备随机值否则,选取系数1为偶数个的二进制多项式作为3.3)根据已经产生的和第一个公钥a,产生预备签名值:3.4)判断多项式的每个系数是否均大于(q-1)/2:若均大于,则r=r*且否则,返回到步骤(步骤3.2);3.5)重复3.1)、3.2)、3.3)、3.4)这四个步骤,将每次产生的(r,kB)依次记为(rj,kj),并存储到数组列表(R,K)中,其中,j=1,2,3,…。步骤4,产生消息m的签名Sig,并进行验证。4.1)签名实体利用哈希函数Hash产生一个哈希数值c=H本文档来自技高网
...

【技术保护点】
1.一种基于格上困难问题的数字签名方法,其特征在于,包括如下:(1)签名实体根据自己的安全需求生成参数系统,其中包括:第一个素数p=2、第二个大于p的素数q、一个素数n满足2

【技术特征摘要】
1.一种基于格上困难问题的数字签名方法,其特征在于,包括如下:(1)签名实体根据自己的安全需求生成参数系统,其中包括:第一个素数p=2、第二个大于p的素数q、一个素数n满足2n-1为梅森素数、一个将任意长度二进制串哈希到n比特长度二进制串的哈希函数Hash、一个模xn-1的一元多项式整系数环一个n阶二进制多项式集合{0,1}n和一个大于等于0且小于q的整数集合定义多项式乘法为环Rq上的乘法;(2)生成签名私钥和验证公钥:签名实体生成一个多项式作为第一个公钥a,a∈Rq,满足多项式a的所有系数和为q的倍数以及多项式asp(modq)的所有系数之和等于q,再产生一个二进制多项式作为验证私钥s,s∈{0,1}n,并利用第一个公钥a和验证私钥s产生第二个公钥:将(t,a)和s分别作为签名实体的验证公钥和签名私钥,其中,符号表示对符号内多项式的每个系数向下取整,(modp)表示将向量中的每个元素模p;(3)产生消息m的签名Sig,并进行验证:(3.1)签名实体利用哈希函数Hash产生一个哈希数值c=Hash(m),将c转换为十进制数,记为cD;(3.2)签名实体生成一个二进制多项式kB,kB∈{0,1}n,并产生第一个签名值:满足多项式pakB(modq)的每个系数均大于(q-1)/2;(3.3)将二进制多项式kB、r和s转换为十进制数,分别记为kD、rD和sD,并产生kD在模2n-1意义下的乘法逆元和第二个签名值:(3.4)产生zD在模2n-1意义下的乘法逆元并产生第一个中间项将b看作n阶多项式,记为bB,验证(zD,rD)是否可作为消息m的签名Sig:若多项式pakB(modq)-padB(modq)的每一个系数都大于或0,则Sig=(zD,rD),否则,返回到步骤(3.2);(4)...

【专利技术属性】
技术研发人员:魏文宽王保仓张志立薛冠豪赵青青曲全博曾一波庞宏平
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1