一种基于格的数字签名方法与流程

文档序号:18898508发布日期:2019-10-18 21:36阅读:1178来源:国知局
一种基于格的数字签名方法与流程

本发明属于信息安全技术领域,具体涉及一种基于格的高效数字签名方法。



背景技术:

数字签名是公钥密码体制的基础原件之一,被广泛应用于身份认证,数据完整性检测,防抵赖等场景,在公钥密码学中占据着十分重要的地位。然而由于整数分解和离散对数问题被证明在量子计算机下可以有效求解,因此基于上述困难问题的传统数字签名体制在量子计算机下是不安全的,构造能够地抗量子攻击的数字签名体制已经成为密码学界和工业界的迫切需求。

基于格的数字签名体制被广泛认为能够抵抗量子计算机的攻击,因此备受关注,而ntru签名体制是其中一类高效的签名方案,其所基于的数学问题一般是ntru格上的最短向量问题。ntru格是ntru签名体制中最为核心的部件之一。在美国国家标准与技术研究院征集后量子密码标准算法的首轮候选方案中,基于ntru的签名体制主要有pqntrusign和falcon。



技术实现要素:

与之前的ntru签名方案将安全性基于ntru格上的最短向量问题不同,本发明提供一种基于ntru格上最近向量问题的高效数字签名方法,在保证高效的同时,参数选取更为灵活。

本发明涉及剩余类环zm,当正整数m为偶数时,我们选取作为zm的代表元;当正整数m为奇数时,我们选取作为zm的代表元。

给定n次整系数多项式f(x)和正整数q,记环rq=zq[x]/(f(x))。对环rq中的任意多项式s,我们既可以将其表示为也可以将其表示为n维向量(s0,s1,…,sn-1),si∈zq。类似地,对n维向量(s0,s1,…,sn-1)来说,我们同样可以将其看作是多项式换言之,多项式表示和向量表示是等价的。我们用“·”表示环rq上的乘法运算,用“+”表示环rq上的加法运算。

本发明数字签名实现方法的具体方案如下:

一种基于格的数字签名方法,包括以下步骤:

步骤1.1:选择公开参数(n,q,γ,α,β)及环rq;选择正整数n,q,α,β,γ,其中选择n次整系数多项式f(x),并令环rq=zq[x]/(f(x))。

步骤1.2:密钥生成算法按如下步骤进行:

步骤1.2.1:选取多项式环rq中两个小系数多项式f和g,且f在rq中可逆,其逆记为f-1

步骤1.2.2:计算h=(g+α)·f-1,将h作为签名者的公钥公开,将(f,g)作为签名者的私钥。

步骤1.3:签名算法按照如下步骤进行:

步骤1.3.1:签名者生成n维向量

步骤1.3.2:计算w=h·r。这里我们选取作为w的每个分量的代表元。若存在w的某个分量wi,使得wi==q-1-α/2成立,则返回步骤1.3.1。

步骤1.3.3:计算n维向量和a=v0-(qα(w)mod2);其中h(·)是某公开函数,n维向量qα(w)的定义如下:将w的每个分量wi对α做带余除法wi=qα(wi)·α+rα(wi),其中qα(wi)为商,且余数rα(wi)满足则定义qα(w)=(qα(w0)qα(w1),…,qα(wn-1))。

步骤1.3.4:计算u=r+a·f。

步骤1.3.5:若||a·f||∞>γ,或者||a·g||∞>γ,或者或者则返回步骤1.3.1重新生成签名。否则输出签名u。

步骤1.4:验签算法按如下步骤进行:

步骤1.4.1:验签者利用签名u,验证是否成立,若成立,则输出验签失败;

步骤1.4.2:验签者利用签名者的公钥h、签名u,计算w′=h·umodq。选取作为w′的每个分量的代表元。若存在w′的某个分量w′i,使得w′i==q-1-α/2成立,则输出验签失败。

步骤1.4.3:验签者计算n维向量和v′=qα(w′)mod2;其中n维向量qα(w′)的每个分量qα(w′i)由w′的分量w′i对α做带余除法w′i=qα(w′i)·α+rα(w′i)得到,其中余数满足

步骤1.4.4:如果v′==v′0,则输出验签成功,否则输出验签失败。

步骤1.2.1中,私钥f和g的选取方法可以为:

1)从二元多项式集合中选取,其中二元多项式的系数取值为0或1,且有y个系数为1,其中正整数y为预先设定的固定值。

2)从三元多项式集合中选取,其中三元多项式的系数取值为0,1或-1,且有y个系数为1,y′个系数为-1,其中正整数y和y′为预先设定的固定值;

3)从具有f1f2+f3形式的多项式集合中选取,其中f1,f2,f3从b(y)中或者t(y′,y″)中选取,其中正整数y,y′,y″为预先设定的固定值。

步骤1.3和1.4中,h(·)表示值域为{0,1}n的某公开函数,一般取为哈希函数。

与现有技术相比,本发明的积极效果为:

本发明设计简洁,易于实现,由于使用了ntru格的最近向量问题做为底层数学问题,所以本发明的参数选取更为灵活,公钥规模合理,签名规模小。

附图说明

图1为本发明密钥生成方法流程图;

图2为本发明签名方法流程图;

图3为本发明验签方法流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

步骤1.1:选择公开参数(n,q,γ,α,β)及环rq;选择正整数n,q,α,β,γ,其中,n为2的某个幂次,q为一个满足2n|q-1的奇素数,其中p为一个2的某个小幂次;选择n次整系数多项式f(x)=xn+1,并令环rq=zq[x]/(f(x))。

步骤1.2:密钥生成算法按如下步骤进行,如图1所示:

步骤1.2.1:从t(d+1,d)中独立均匀随机选取环rq中两个小系数多项式f和g,直到f在rq中可逆,其逆记为f-1

步骤1.2.2:计算h=(g+α)·f-1,将h作为签名者的公钥公开,将(f,g)作为签名者的私钥。

关于上述描述中的参数,我们提供两套参数选取。

步骤1.3:签名算法按照如下步骤进行,如图2所示:

步骤1.3.1:签名者均匀随机选取n维向量

步骤1.3.2:计算w=h·r。选取作为w的每个分量的代表元。若存在w的某个分量wi,使得wi==q-1-α/2成立,则返回步骤1.3.1。

步骤1.3.3:计算n维向量和a=v0-(qα(w)mod2);其中h(·)是值域为{0,1}n的某公开哈希函数,n维向量qα(w)的定义如下:将w的每个分量wi对α做带余除法wi=qα(wi)·α+rα(wi),其中qα(wi)为商,且余数rα(wi)满足则定义qα(w)=(qα(w0)qα(w1),…,qα(wn-1))。

步骤1.3.4:计算u=r+a·f。

步骤1.3.5:若||a·f||∞>γ,或者||a·g||∞>γ,或者或者则返回步骤1.3.1重新生成签名。否则输出签名u。

步骤1.4:验签算法按如下步骤进行,如图3所示:

步骤1.4.1:验签者利用签名u,验证是否成立,若成立,则输出验签失败;

步骤1.4.2:验签者利用签名者的公钥h、签名u,计w′=h·umodq。选取作为w′的每个分量的代表元。若存在w′的某个分量w′i,使得w′i==q-1-α/2成立,则输出验签失败。

步骤1.4.3:验签者计算n维向量和v′=qα(w′)mod2;其中n维向量qα(w′)的每个分量qα(w′i)由w′的分量w′i对α做带余除法w′i=qα(w′i)·α+rα(w′i)得到,且余数满足

步骤1.4.4:如果v′==v′0,则输出验签成功,否则输出验签失败。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1