【技术实现步骤摘要】
基于格的数字签名方法
[0001]本专利技术涉及密码技术,尤其涉及基于格的数字签名方法。
技术介绍
[0002]IBM的工程师们预测在未来的二十年内,量子计算机必将被大规模应用。一旦量子计算机被大规模制造出来,大多数基于离散对数、椭圆曲线离散对数或者大整数分解的公钥密码系统都将会被攻破。因此无论我们是否能够准确预测量子计算时代的到来时间,我们都需要将目前的信息安全系统提升到抗量子级别。
[0003]格密码是目前对抗量子攻击的主要数学方法之一。在密码学中,和其他古典的格困难问题(例如SVP和CVP)相比,LWE(Learning With Error)问题和SIS(Short Integer Solution)问题已经被证明有更加全面的功能。
[0004]其中,每个字符串或者值α都表示二进制的值,α‖β表示两个二进制字符串α,β∈{0,1}
*
之间的链接操作;对于任意实数x,表示小于等于x的最大整数,表示大于等于x的最小整数,
[0005]当α为正偶数时,对于任意整数r,定义r'=r ...
【技术保护点】
【技术特征摘要】
1.一种基于格的数字签名方法,其中,每个字符串或者值α都表示二进制的值,α‖β表示两个二进制字符串α,β∈{0,1}
*
之间的链接操作;对于任意实数x,表示小于等于x的最大整数,表示大于等于x的最小整数,当α为正偶数时,对于任意整数r,定义r'=r mod
±
α为满足-α/2<r'≤α/2,r'≡r(modα)的唯一整数r
′
;当α为正偶数时,对于任意整数r,定义r'=r mod
±
α为满足-α/2≤r'≤α/2,r'≡r(modα)的唯一整数r
′
;当α为正整数时,对于任意整数r,定义r'=r mod
+
α为满足0≤r'≤α-1,r'≡r(modα)的唯一正整数r
′
;当同余数r'的具体表达形式不重要的时候,简单写作r modα;如果S是一个有限集合,那么|S|表示它的基数,并且x
←
S表示均匀随机的从S中取一个元素;符号U(S)表示有限集合S上的均匀分布;如果D表示一个概率分布,那么x
←
D表示根据D选择一个元素并赋值给x;如果α既不是一个算法也不是一个集合,那么x
←
α就表示简单的赋值操作,或写作x:=α;如果A是一个概率算法,那么A(x1,x2,...;r)表示将x1,x2,...作为输入,r为随机种子时A的运算结果;我们用y
←
A(x1,x2,...;r)表示随机选取r并令y为A(x1,x2,...;r)的实验结果;用Pr[R1;...;R
n
:E]表示事件E在一连串有序的随机过程R1,...,R
n
之后发生的概率;如果对于任意的c>0,对于所有的λ>λ
c
,都存在一个λ
c
使得f(λ)<1/λ
c
,那么函数f(λ)是可忽略的;定义环其中,为第m个分圆多项式;R
q
中的元素为n维多项式,其形式为a0+a1x1+a2x2+
…
+a
n-1
x
n-1
,其中n是一个正整数;正整数k和l为矩阵样本的维度,表示k
×
l维的矩阵,每个元素为环R
q
上的n维多项式;对于输入是向量的函数,其运算是对向量的每一维分别处理计算;对于元素定义||w||
∞
为||wmod
±
q‖;对于元素w=w0+w1x+
…
+w
n-1
x
n-1
∈R
q
,定义对于w=(w1,w2,
…
,w
k
)∈R
k
,定义当正整数η确定时,定义集合S
η
为所有满足w∈R,‖w‖
∞
≤η的元素组成的集合,S
η
={w∈R∣ ‖w‖
∞
≤η};对于任意正整数h,定义集合B
h
为对于二进制向量h=(h
i
),定义其海明距离为||h‖1=∑h
i
;MLWE分布中的样本形式为MLWE问题是从多项式个来自MLWE分布的样本中恢复秘密值(s,e);具体地,从环中随机选取计算得到t=As+e,其中与分别为两个概率分布,分布参数记为η1与η2,分布可相同也可不同,默认情况下为集合上的均匀分布,为集合上的均匀分布;对于敌手A,定义如果没有最多运行τ时间且优势大于ε的算法A,我们称困难性假设
成立;其中,τ是关于n的多项式,ε是关于n的可忽略函数;一个DKC(deterministic key consensus)方法DKC=(params,Con,Rec)由以下三部分组成:
·
params=(q,κ,g,δ,aux)代表系统参数,其中正整数q,κ,g,δ满足2≤κ,g≤q,0≤δ≤q/2,aux代表其它由(q,κ,g,δ)决定的值所组成的集合,默认为空;
·
(k1,v)
←
Con(σ1,params),其中Con(
·
)为确定性的多项式时间函数,它在输入为时,输出(k1,v),其中
·
k2←
Rec(σ2,v,params),其中Rec(
·
)为确定性的多项式时间函数,它在输入为(σ2,v,params)时,输出当params根据上下文可以确定时,为了描述简便params可缺省表示,所使用的DKC方法都满足正确性要求,即对任意当‖σ
1-σ2||
∞
≤δ时,一定有k1=k2;所述方法包括:生成签名所需的系统参数包括(λ,n,q,κ,k,l,η1,η2,χ1,χ2,β1,β2,γ1,γ2,ω,d,h,L1,L2);其中,正整数λ为安全参数,正整数n为2的幂次,q≥2为满足q=1(mod n/2)的素数,正整数κ满足2≤κ≤12,χ1,χ2为两个相同的或者不同的的噪音分布,k和l为正整数并且为λ的多项式,d为正整数,阈值参数β1,β2,γ1,γ2都是正整数,ω为正整数,β1,β2为正整数且β1≤h
·
η1,β2≤h
·
η2,h为正整数,参数γ1=γ1(q,κ),γ2=γ2(q,κ)为正整数且其取值依赖于q,κ,参数L1,L2均为正整数,公私钥生成:签名者依次执行如下操作:1)所述签名者通过采样,得到随机种子和/或2)所述签名者通过随机采样,得到3)所述签名者将比特长度为L1的随机字符串ρ通过调用函数ExpandA()映射为的矩阵A;其中ExpandA()为一个映射函数;4)所述签名者计算并调用Power2Round
q
(t,d)函数来生成(t1,t0);其中5)所述签名者计算tr:=CRH(ρ,t1,aux
tr
),其中函数CRH中输入的链接顺序可以任意,aux
tr
为取值可为空的集合;6)所述签名者最后输出(pk,sk),其中pk=(ρ,t1)为所述签名者的公钥,sk=(ρ,K,tr,s,e,t0)或sk=(ρ,tr,s,e,t0)为所述签名者的私钥;所述签名者将其中的公钥信息pk,发送给验证者;签名方法:所述签名者拥有私钥sk=(ρ,K,tr,s,e,t0)或sk=(ρ,tr,s,e,t0)和待签名信息M∈{0,1}
*
,通过依次进行如下操作,最终得到并输出相应的签名(z,h,c);首先,所述签名者将长度为L1的随机字符串通过调用函数ExpandA()映射为的矩阵A,其中ExpandA()为一个映射函数;然后,所述签名者通过调用μ:=CRH(tr,M)来生成
其中CRH()函数的输入变量顺序可以任意调整,输出元素属于集合之后,所述签名者得到签名方法中的随机种子其中ρ
′
或通过调用完全随机生成,或根据计算CRH(K,μ)确定性生成;最后,所述签名者设置ctr:=0,(z,h):=
⊥
来完成循环体的初始化工作;然后所述签名者进入循环体,直至找到满足(z,h)≠
⊥
的符合要求的签名为止;具体地,在每轮循环中,签名者有如下两种工作方式:第一种工作方式:1)所述签名者首先通过调用y:=ExpandMask(ρ
′
,ctr)来生成本轮循环的随机元素其中ExpandMask()函数输出集合中的某元素;2)所述签名者计算以及其中HighBits
q
(r,γ1)输出的部分信息该函数可扩展定义到中的每个系数上;可视为中的一个向量元素;3)所述签名者通过调用c:=H(w1,μ)得到c∈B
h
,其中,B
h
为R的一个子集,H(
·
)为一个函数其输入变量的顺序可以任意,它将任意输入的字符串{0,1}
*
映射为集合B
h
中的某元素;4)所述签名者计算z:=y+cs,其中5)所述签名者计算(r1,r0):=Decompose
q
(w-ce,γ1),其中函数调用(r1,r0):=Decompose
q
(r,γ1)将输入分解为和该函数可扩展定义到中的每个系数上;6)如果‖z‖
∞
≥γ
1-β1或者‖r0‖
∞
≥γ
2-β2或者r1≠w1,则直接结束本轮循环,设置ctr:=ctr+1,然后进入下一轮循环;7)所述签名者计算h:=MakeHint
q
(-ct0,w-ce+ct0,γ1);其中MakeHint
q
(z,r,γ1)函数的输入元素满足输出值属于集合{0,1};该函数可扩展定义到中的每个系数上;h∈{0,1}
k
·
n
;8)如果‖ct0‖≥γ2或者h∈{0,1}
k
·
n
的海明距离大于参数ω,则直接结束本轮循环,设置ctr:=ctr+1,然后进入下一轮循环;否则,本轮生成的(z,h,c)是一个符合要求的签名;所述签名者将最后一轮生成的(z,h,c)值,作为输入信息M∈{0,1}
*
的一个合法签名,发送给所述验证者;第二种工作方式基于DKCN,工作原理如下:1)所述签名者首先通过调用y:=ExpandMask(ρ
′
,ctr)来生成本轮循环的随机元素其中ExpandMask()函数的输入元素顺序可以任意,输出元素属于集合2)所述签名者计算以及其中HighBits
q,κ
(r)输出的部分信息该函数可扩展定义到中的每个系数上;可视为中的一个向量元素;
3)所述签名者通过调用c:=H(w1,μ)得到c∈B
h
,其中,B
h
为R的一个子集,H(
·
)为一个函数其输入变量的顺序可以任意,它将任意输入的字符串{0,1}
*
映射为集合B
h
中的某元素;4)所述签名者计算z:=y+cs,其中5)所述签名者计算(r1,r0):=Con(w-ce),其中函数调用(r1,r0):=Con(r)将输入分解为和该函数可扩展定义到中的每个系数上;6)如果‖z‖
∞
≥γ
1-β1或者‖r0‖
∞
≥q/2-κ
·
β2或者r1≠w1,则直接结束本轮循环,设置ctr:=ctr+1,然后进入下一轮循环;7)所述签名者计算h:=MakeHint
q,κ
(-ct0,w-ce+ct0);其中MakeHint
q,κ
(z,r)函数的输入元素满足输出值属于集合{0,1};该函数可扩展定义到中的每个系数上;h∈{0,1}
k
·
n
;8)如果‖ct0‖≥γ2或者h∈{0,1}
k
·
n
的海明距离大于参数ω,则直接结束本轮循环,设置ctr:=ctr+1,然后进入下一轮循环;否则,本轮生成的(z,h,c)是一个符合要求的签名;所述签名者将最后一轮生成的(z,h,c)值,作为输入信息M∈{0,1}
*
的一个合法签名,发送给所述验证者;验证方法:所述验证者在收到(M,(z,h,c))对(其中,M∈{0,1}
*
,h∈{0,1}
k
·
n
,c∈B
h
)后,根据公钥信息pk=(ρ,t1),进行验证操作;如果所述签名者使用第一种工作方式,则所述验证者进行如下操作:1)所述验证者将长度为L1随机字符串通过调用函数ExpandA()映射为的矩阵A;其中ExpandA()为一个映射函数;2)所述验证者计算tr:=CRH(ρ,t1,aux
tr
),其中函数CRH中输入的链接顺序可以任意,函数CRH中输入的链接顺序可以任意,aux
tr
为取值可为空的集合;3)所述验证者通过调用μ:=CRH(tr,M)来生成Power2Round
q
();其中,CRH()输入的链接顺序可以任意,输出元素属于集合4)所述验证者计算w'1:=UseHin...
【专利技术属性】
技术研发人员:赵运磊,黄兴忠,
申请(专利权)人:上海扈民区块链科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。