签名生成装置及签名验证装置的制作方法

文档序号:7635390阅读:373来源:国知局
专利名称:签名生成装置及签名验证装置的制作方法
技术领域
本发明涉及作为信息安全技术的加密技术,特别涉及进行基于数字签名的处理的签名生成装置及签名验证装置。
背景技术
作为用来从接收装置向发送装置发送数据时的发送者的确定及防止数据的篡改的技术,有作为公钥加密的一种的数字签名方式。
在该数字签名方式中,发送装置使用发送装置的私钥对想要发送的数据制作签名数据,将签名数据与想要发送的数据一起向接收装置发送。接收装置使用发送装置的公钥验证签名数据,判断是否被篡改了(例如参照非专利文献1)。另外,很难根据公钥计算私钥的值。
最近,作为能够高速处理的公钥加密,提出了NTRU(NTRUCryptosystems,Inc.,NTRU加密系统公司的注册商标)加密(例如参照非专利文献2)。该NTRU加密与在某种规则下进行幂模运算的RSA(Rivest Shamir Adleman)加密及椭圆曲线上的点的标量乘运算的椭圆曲线加密相比,能够高速地通过可运算的多项式运算进行加密和解密。因而,NTRU加密能够比以往的公钥加密更高速地进行处理,即使在软件的处理中也能够在实用的时间内进行处理。
即,在公钥加密中使用NTRU加密的加密通信系统中,具有能够比以往的使用公钥加密的加密通信系统更高速地进行发送装置及接收装置的处理的优点。
此外,在上述非专利文献2中提出的方式是将数据加密的保密加密方式,但此后提出了NTRU加密的数字签名方式(例如参照非专利文献3)。这样的数字签名方式因分析法的出现等,其方式被变更过几次。
以下对称作NTRUSign的数字签名方式(以下称作NTRUSign签名方式)简单地进行说明(例如参照专利文献1及非专利文献4)。
<NTRUSign签名方式>
(1)NTRUSign签名方式的参数在NTRUSign签名方式中,使用非负整数的参数N、q、df、dg、Normbound。以下对这些参数的意义进行说明。
(i)参数NNTRUSign签名方式是利用多项式的运算进行签名生成及签名验证的数字签名方式。在NTRUSign签名方式中处理的多项式的次数由上述参数决定。
在NTRUSign签名方式中处理的多项式相对上述参数N,是N-1次以下的整数系数多项式,例如在N=5时是X^4+X^3+1等多项式。这里,“X^a”意味着X的a次方。此外,公钥h及签名s都表现为N-1次以下的多项式。此外,私钥是4个N-1次以下的多项式对(f,g,F,G)。即,f、g、F、G都是N-1次以下的多项式。另外,以下,有时也将由4个多项式构成的组(f,g,F,G)取2个对(f,g)、(F,G)所进一步构成的对,标记为{(f,g),(F,G)}。
并且,多项式运算相对上述参数N,使用X^N=1的关系式进行运算,以使运算结果总为N-1次以下的多项式。例如,在N=5的情况下,如果设多项式与多项式的积为×、整数与多项式的积(或者整数与整数的积)为·,则根据X^5=1的关系,进行运算,使得多项式X^4+X^2+1与多项式X^3+X的积如下式(X^4++X^2+1)×(X^3+X)=X^7+2·X^5+2·X^3+X=X^2·1+2·1+2·X^3+X
=2·X^3+X^2+X+2那样,总为N-1次以下的多项式。
另外,在NTRUSign签名方式中,N-1次的多项式a=a_0+a_1·X+a_2·X^2+……+a_(N-1)·X^(N-1)被看作与矢量(a_0,a_1,a-2,……,a_(N-1))相同。这里,a_0、a_1、a_2、……、a_(N-1)是多项式a的系数,是整数。
(ii)参数q在NTRUSign签名方式中,使用作为2以上的整数的参数q。在NTRUSign签名方式中出现的多项式的系数取以q为模的余数。
(iii)参数df、dg作为在NTRUSign签名方式中处理的私钥的一部分的多项式f以及在生成作为公钥的多项式h时与多项式f一起使用的多项式g的选择方法,分别由参数df、dg决定。
首先,多项式f选择为,使df个的系数是1,并且其他系数为0。即,多项式f是N-1次以下的多项式,从0次(常数项)到N-1次有N个系数,但在该N个系数中选择为,df个的系数是1,并且(N-df)个的系数为0。并且,多项式g选择为,dg个的系数是1,并且其他系数为0。
(iv)参数Normbound在NTRUSign签名方式中,计算由签名s制作的2·N维的矢量与作为消息数据(以下简单称作消息)的散列值的2·N维的矢量之间的距离,根据该距离判断签名s是否是正确的签名。Normbound是在该判断时使用的阈值。即,如果上述距离不足Normbound,则将签名s作为正确的签名受理,如果为Normbound以上,则作为不正确的签名而拒绝。另外,在非专利文献4中,作为NTRUSign签名方式的参数的例子,举出了(N,q,df,dg,Normbound)=(251,128,73,71,310)的例子。
(2)消息的散列值、范数(norm)及矢量间的距离在NTRUSign签名方式中,制作与消息的散列值对应的签名。消息的散列值是N次多项式的对,视为与2·N维的矢量相同。另外,关于从消息求出散列值的散列函数,详见非专利文献1。
在NTRUSign签名方式中,在签名验证中使用矢量间的距离,在这样的距离的计算中使用范数(中心范数)。以下,表示范数及矢量间的距离的定义。
将多项式a=a_0+a-1·X+a_2·X^2+……+a_(N-1)·X^(N-1)的范数||a||如以下这样定义。
||a||=sqrt((a_0-μ)^2+(a_1-μ)^2+……+(a_(N-1)-μ)^2)μ=(1/N)·(a_0+a_1+……+a_(N-1))这里,sqrt(x)表示x的平方根。
将多项式a、b的对(a,b)的范数||(a,b)||如以下这样定义。
||(a,b)||=sqrt(||a||^2+||b||^2)多项式a、b的对(a,b)和c、d的对(c,d)的距离(矢量间的距离)由||(c-a,d-b)||定义。
(3)NTRUSign签名方式的密钥生成在NTRUSign签名方式中,如上所述,使用参数df、dg随机地生成多项式f、多项式g。并且,如非专利文献4所述,使用Fq×f=1(mod q)的多项式Fq,由h=Fq×g(mod q)生成多项式h。进而,求出满足下式的范数较小的多项式F、G。
f×G-g×F=q这里,设私钥为{(f,g),(F,G)},公钥为h。私钥是用来生成签名的密钥,也称作签名生成密钥。此外,公钥是用来验证签名的密钥,也称作签名验证密钥。
此外,x=y(mod q)是将使余数包括在从0到q-1的范围内地用模q除多项式y的第i次的系数后所得的余数、作为多项式x的第i次的系数的运算(0≤i≤N-1)。即,是将多项式y的各系数包括在从0到q-1的范围内地进行(mod q)运算后所得的多项式、作为多项式x的运算。
(4)NTRUSign签名方式的签名生成在NTRUSign签名方式的签名生成中,计算作为签名对象的消息m的签名s。首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)(m1及m2是N次多项式)。
使用该2·N维的矢量(m1,m2)和私钥{(f,g),(F,G)},计算满足下式的多项式a、b、A、B。
G×m1-F×m2=A+q×B-g×m1+f×m2=a+q×b这里,设A、a的系数取包括在从<-q/2>+1到<q/2>的范围内地用模q除后所得的余数。即,在用模q除时的余数是从<q/2>到q-1的情况下,对q进行减法运算,来进行调整,使余数包括在上述范围内。这里,<x>表示在x以下的数中最大的数。例如<-1/2>=-1。
接着,由下式计算多项式s、t,将多项式s作为签名输出。
s=f×B+F×b(mod q)t=g×B+G×b(mod q)图1是用来说明签名s的生成方法的说明图。
在NTRUSign签名方式中,在由私钥矩阵{(f,g),(F,G)}展开的2·N维栅格上,根据上述的式s=f×B+F×b(mod q)及t=g×B+G×b(mod q)导出对于消息m的散列值H(m)=(m1,m2)的最接近栅格点P。即,找到最接近于(m1,m2)的栅格点作为最接近栅格点P。并且,仅将表示该最接近栅格点P的签名矢量(s,t)中的多项式s作为签名处理。
(5)NTRUSign签名方式的签名验证在NTRUSign签名方式的签名验证中,验证签名s是否是作为签名对象的消息m的正确的签名。首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)。
利用公钥h,根据下式计算多项式t。
t=s×h(mod q)求出2·N维矢量(s,t)与(m1,m2)的距离,检查是否是不足Normbound。如果是不足Normbound,则判断为签名s正确,并受理该签名s。如果为Normbound以上,则判断为签名s不正确,并拒绝该签名s。
图2是用来说明签名s的验证方法的说明图。
在NTRUSign签名方式中,根据使用了签名s与公钥h的上述式t=s×h(mod q),导出由公钥矩阵{(1,h),(0,q)}展开的2·N维栅格上的栅格点P(s,t)。这里,在这样的2·N维栅格上,判断对于消息m的散列值H(m)=(m1,m2)是否处于以栅格点P(s,t)为中心的半径=Normbound的超球面内。如果处于超球面内,则判断为签名s正确,并受理,如果不在超球面内,则判断为签名s不正确,并拒绝。
这里,在上述的NTRUSign签名方式中,存在即使是正确的签名s、但在签名验证时判断为“不正确”的情况(签名验证错误)。
以下表示设N为2时的签名验证错误的例子。在以下中,着眼s与m1的距离。设q=128、m1=(1,127),s=(-3,124)。此时,s mod q=(125,124)。m1-s=(4,3),m1与s的距离为||m1-s||=sqrt((4-3.5)^2+(3-3.5)^2)=sqrt(0.5)。但是,由于m1-(s mod q)=(-124,3),所以m1与(s mod q)的距离为||m1-(s mod q)||=sqrt((-124-(-60.5))^2+(3-(-60.5))^2)=sqrt(8064.5),其距离变大。在Normbound较小的情况下,通过对s取以q为模的余数,距离变大,即使是正确的签名也将该签名判断为不正确,发生了不适当的签名验证错误。
所以,提出了防止发生上述不适当的签名验证错误的方法(例如参照非专利文献5)。具体而言,首先,在签名验证时,通过对s modq加上范数为0的矢量(α,……,α)(所有的要素为α的矢量),取以q为模的余数,由此计算多项式s’=(s mod q)+(α,……,α)mod q。接着,使用s’和公钥h计算t’=s×h(mod q),求出2·N维矢量(s’,t’)与(m1,m2)的距离,检查该距离是否是不足Normbound。即,将从1到q-1的值代入到α中,求出从1到q-1的各个情况下的距离,检查这些距离是否是不足Normbound。结果,如果某个距离是不足Normbound,则判断为签名s正确,并受理该签名s。另一方面,如果对应于从1到q-1的所有的α值的距离都不是不足Normbound,则判断为签名s不正确,并拒绝签名s。
这里,在上述那样的例子的情况下,如果对s mod q=(125,124)以α=3加上(α,α),则s’=(s mod q)+(α,α)=(125,124)+(3,3)=(128,127)=(0,127)mod q。此时,m1与s’的距离为||m1-s’||=||(1,0)||=sqrt((1-0.5)^2+(0-0.5)^2)=sqrt(0.5),m1与s’的距离和m1与s的距离相同。因而,在这样的情况下,只要正确地生成了签名,在签名验证时就会判断为正确,所以能够防止不适当的签名验证错误。
专利文献1国际公开第03/050998号小册子非专利文献1冈本龙明,山本博资,《現代暗号》,産業図書(1997年)非专利文献2J.Hoffstein,J.Pipher,and J.H.Silverman,“NTRUAring based public key cryptosystem”,Lecture Notes in Computer Science,1423,pp.267-288,Springer-Verlag,1998.
非专利文献3J.Hoffstein,J.Pipher,and J.H.Silverman,“NSSAn NTRU Lattice-Based Signatrue Scheme,’Advances inCryptoplogy-Eurocrypt’01,LNCS,Vol.2045,PP.123-137,Springer-Verlag,2001非专利文献4J.Hoffstein,J.Pipher,J.H.Silverman,and W.Whyte,“NTRUSignDigital Signatures Using the NTRU Lattice,’CT-RSA’03LNCS,Vol.2612,PP.122-140,Springer-Verlag,2003非专利文献5“Efficient Embedded Security Standards(EESS)EESS#1Implementation Aspects of NTRUEncrypt and NTRUSign”,Ver2.0,June 20th,2003但是,在上述非专利文献5的方法中,也有发生不适当的签名验证错误的问题。
在上述的非专利文献5的方法中,在以下的情况下,发生了不适当的签名验证错误。
例如,设q=128、m1(-2,127)、s=(0,129)。此时,s modq=(0,1)。m1-s=(-2,-2),m1与s的距离是||m1-s||=sqrt((-2-(-2))^2+(-2-(-2))^2)=0。但是,由于m1-(s mod q)=(-2,126),所以m1与s mod q的距离为||m1-(s mod q)||=sqrt((-2-62)^2+(126-62)^2)=sqrt(8192),距离变大。这里,尝试上述非专利文献5的方法。但是,多项式s的要素的最大值129与最小值0的差为129,超过了q=128,所以在上述的非专利文献5的方法中,即使在对多项式s加上(α,α)后对该相加结果取以q为模的余数,也不能求出要素的最大值与最小值的差为129那样的多项式s’。
因而,在如上述那样多项式s的要素的最大值与最小值的差超过了q的情况下,通过对多项式s取模为q的余数(进行s mod q)而丢失了信息,所以发生了不适当的签名验证错误。

发明内容
所以,本发明是鉴于这样的问题而做出的,目的是提供能够可靠地防止发生不适当的签名验证错误的签名生成装置及签名验证装置。
为了达到上述目的,有关本发明的签名生成装置是按照签名方式生成对于消息数据的签名数据的签名生成装置,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq(这里,f(mod q)表示将f用q除后的余数。),生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的元F、G(这里,×表示环R的乘法运算。),生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;签名验证步骤,使用上述公钥验证上述签名数据;上述签名生成装置具备签名矢量生成单元,利用上述私钥,计算对于上述消息数据的、由上述环R的元s、t构成的签名矢量;签名数据生成单元,生成上述签名数据,上述签名数据表示能够确定上述元s的上述环R的第1元、和将上述元t用q除时的商即上述环R的第2元。例如,上述第1元由将上述元s用q除时的商即上述环R的元sh、和将上述元s用q除时的余数即上述环R的元sl构成。
由此,由于签名数据表示能够确定元s的第1元、和将元t用q除时的商即第2元,所以取得了该签名数据及消息数据的签名验证装置能够利用由该签名数据表示的第1元,将签名矢量的一部分即元s正确地复原。例如,在第1元由将上述元s用q除时的商及余数即元sh、sl构成的情况下,签名验证装置通过对该元sh乘以q,再加上上述元sl,能够将元s正确地复原。进而,签名验证装置通过使用对该签名数据所示的第2元乘以q后的结果,能够将签名矢量的一部分即元t正确地复原。例如,通过对上述元sl与元h的积的以q为模的余数加上第2元与q的积,能够将元t正确地复原。这样,在本发明中,不对签名矢量即元s、t进行(mod q)的运算,而生成能够在签名验证装置侧正确地将该元s、t复原的签名数据,所以能够可靠地防止发生以往例那样的不适当的签名验证错误。即,即使在元s的各要素的最大值和最小值的差超过了q那样的情况下,也能够不丢失元s的信息、使签名验证装置根据该元s进行正确的签名验证。
此外,其特征也可以是,上述签名生成装置还具备散列值生成单元,该散列值生成单元通过对上述消息数据使用散列函数,生成上述环R的元m1及元m2;上述签名数据生成单元生成上述元s与上述元m1的差,作为上述第1元。
由此,由于第1元是元s与元m1的差,所以取得了签名数据及消息数据的签名验证装置能够使用由该签名数据表示的第1元,将签名矢量的一部分即元s正确地复原。即,签名验证装置通过对消息数据使用散列函数而生成元m1,通过对第1元加上该元m1,能够将元s正确地复原。此外,由于第1元是元s与元m1的差,所以与上述那样第1元由元sl、sh构成的情况相比,能够削减第1元的信息量、即签名数据的信息量。进而,签名验证装置通过对该元s与元h的积的以q为模的余数加上第2元与q的积,能够将签名矢量的一部分即元t正确地复原。
此外,其特征也可以是,上述签名矢量生成单元计算上述元s,以使上述元m1与上述元s的各自的第i个要素(i是从1到N的任一个整数)为相同的值。例如,上述签名矢量生成单元通过进行范数为0的上述环R的元的加法运算或减法运算,计算上述元s。
由此,由于进行范数为0的元的加法运算或减法运算,来计算元s,以使元s的第i个要素与元m1的第i个要素相等,所以第1元的第i个要素为0,其他各要素的值也能够接近于0,能够进一步削减第1元的信息量、即签名数据的信息量。此外,通过范数为0的元的加法运算或减法运算,来进行元s的第i个要素的值的调整,所以能够不改变已计算出的元s的范数而进行上述那样的调整,在进行该调整的基础上,能够将签名矢量与由元m1、m2构成的散列值矢量的距离保持为一定。
此外,有关本发明的签名验证装置是按照签名方式验证对于消息数据的签名数据的签名验证装置,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq(这里,f(mod q)表示将f用q除后的余数。),生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的元F、G(这里,×表示环R的乘法运算。),生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;签名验证步骤,使用上述公钥验证上述签名数据;上述签名验证装置具备签名矢量生成单元,使用上述签名数据所表示的上述环R的第1元,将利用上述私钥对上述消息数据计算出的由上述环R的元s、t构成的签名矢量中的上述元s复原,并且使用对上述签名数据所表示的上述环R的第2元乘以q后的结果,将上述元t复原;验证单元,验证上述签名矢量。例如,其特征在于,上述第1元由将上述元s用q除时的商即上述环R的元sh、和将上述元s用q除时的余数即上述环R的元sl构成,上述第2元是将上述元t用q除时的商;上述签名矢量生成单元通过对上述元sh乘以q,再加上上述元sl,将上述元s复原;通过对上述元sl与上述元h的积的以q为模的余数加上上述第2元与q的积,将上述元t复原。
由此,由于签名数据表示能够确定元s的第1元、和将元t用q除时的商即第2元,所以取得了该签名数据及消息数据的签名验证装置能够利用由该签名数据表示的第1元,将签名矢量的一部分即元s正确地复原。例如,在第1元由将上述元s用q除时的商及余数即元sh、sl构成的情况下,签名验证装置通过对该元sh乘以q,再加上上述元sl,能够将元s正确地复原。进而,签名验证装置通过使用对该签名数据所示的第2元乘以q后的结果,能够将签名矢量的一部分即元t正确地复原。例如,通过对上述元sl与元h的积的以q为模的余数加上第2元与q的积,能够将元t正确地复原。
此外,其特征也可以是,上述签名验证装置还具备散列值生成单元,该散列值生成单元通过对上述消息数据使用散列函数,生成上述环R的元m1及元m2;上述第1元由上述元s与上述元m1的差即上述环R的元sl构成,上述第2元是将上述元t用q除时的商;上述签名矢量生成单元通过对上述元sl加上上述元m1,将上述元s复原;通过对上述元s与元h的积的以q为模的余数加上上述第2元与q的积,将上述元t复原。
由此,由于第1元是元s与元m1的差,所以取得了签名数据及消息数据的签名验证装置能够使用由该签名数据表示的第1元,将签名矢量的一部分即元s正确地复原。即,签名验证装置通过对消息数据使用散列函数而生成元m1,对第1元加上该元m1,能够将元s正确地复原。进而,签名验证装置通过对该元s与元h的积的以q为模的余数加上第2元与q的积,能够将签名矢量的一部分即元t正确地复原。
另外,本发明不仅能够作为这样的签名生成装置及签名验证装置实现,还能够作为其方法及程序、保存该程序的存储媒体、集成电路来实现。
发明效果本发明的签名生成装置及签名验证装置的作用效果在于可以可靠地防止发生不适当的签名验证错误。其价值是非常大的。


图1是用来说明签名的生成方法的说明图。
图2是用来说明签名的验证方法的说明图。
图3是表示本发明的实施方式1的数字签名系统的结构的框图。
图4是表示本发明的实施方式1的签名生成部的结构的框图。
图5是表示本发明的实施方式1的签名生成部的动作的流程图。
图6是表示本发明的实施方式1的签名生成装置整体的动作的流程图。
图7是表示本发明的实施方式1的签名验证部的结构的框图。
图8是表示本发明的实施方式1的签名验证部的动作的流程图。
图9是表示本发明的实施方式1的签名验证装置整体的动作的流程图。
图10是表示本发明的实施方式2的数字签名系统的结构的框图。
图11是表示本发明的实施方式2的签名生成部的结构的框图。
图12是表示本发明的实施方式2的签名生成部的动作的流程图。
图13是表示本发明的实施方式2的签名验证部的结构的框图。
图14是表示本发明的实施方式2的签名验证部的动作的流程图。
符号说明100数字签名系统110签名生成装置111发送部112私钥保存部113公钥证书保存部
114 签名生成部115 签名数据集生成部120 签名验证装置121 接收部122 CA公钥保存部123 签名数据集保存部124 签名验证部130 通信线路1141散列值生成部1142签名矢量生成部1143签名数据生成部1241散列值生成部1243签名矢量生成部1244距离判断部具体实施方式
(实施方式1)本发明的实施方式1的改良NTRUSign签名方式是将以往的NTRUSign签名方式改良后的签名方式,在能够防止发生不适当的签名验证错误的情况下生成并验证签名。
下面,对于本实施方式的改良NTRUSign签名方式1详细地进行说明。
<改良NTRUSign签名方式1>
(1)改良NTRUSign签名方式1的参数在改良NTRUSign签名方式1中,使用非负整数的参数N、q、df、dg、Normbound。这些参数的定义与以往的NTRUSign签名方式相同。以下说明这些参数的意思。
(i)参数N改良NTRUSign签名方式1是通过多项式的运算进行签名生成及签名验证的数字签名方式。在改良NTRUSign签名方式1中处理的多项式的次数由上述参数N决定。
在改良NTRUSign签名方式1中处理的多项式相对上述参数N,来说是N-1次以下的整数系数多项式,例如在N=5时,是X^4+X^3+1等多项式。这里,“X^a”意味着X的a次方。此外,公钥h及作为签名矢量的一部分的多项式s都表现为N-1次以下的多项式。此外,私钥是4个N-1次以下的多项式对{f,g,F,G}。即,f、g、F、G都是N-1次以下的多项式。另外,以下,有时将由4个多项式构成的组(f,g,F,G}取2个对(f,g)、(F,G)所进一步构成的对,标记为{(f,g),(F,G)}。
并且,多项式运算相对于上述参数N,使用X^N=1的关系式进行运算,以使运算结果总为N-1次以下的多项式。例如,在N=5的情况下,如果设多项式与多项式的积为×、整数与多项式的积(或者整数与整数的积)为·,则根据X^5=1的关系,进行运算,使得多项式X^4+X^2+1与多项式X^3+X的积如下式(X^4+X^2+1)×(X^3+X)=X^7+2·X^5+2·X^3+X=X^2·1+2·1+2·X^3+X=2·X^3+X^2+X+2那样,总为N-1次以下的多项式。
另外,在改良NTRUSign签名方式1中,也将N-1次的多项式a=a_0+a_1·X+a_2·X^2+……+a_(N-1)·X^(N-1)看作与矢量(a_0,a_1,a_2,……,a_(N-1))相同。这里,a_0、a_1、a_2、……、a_(N-1)是多项式a的系数,是整数。
(ii)参数q
在改良NTRUSign签名方式1中,使用作为2以上的整数的参数q。在改良NTRUSign签名方式1中出现的多项式的系数取以q为模的余数。
(iii)参数df、dg作为在改良NTRUSign签名方式1中处理的私钥的一部分的多项式f、以及在生成作为公钥的多项式h时与多项式f一起使用的多项式g的选择方法,分别由参数df、dg决定。
首先,多项式f选择为,使df个的系数是1,并且其他系数为0。即,多项式f是N-1次以下的多项式,从0次(常数项)到N-1次有N个系数,但在该N个系数中选择为,df个的系数是1,并且(N-df)个的系数为0。并且,多项式g选择为,dg个的系数是1,并且其他系数为0。
(iv)参数Normbound在改良NTRUSign签名方式1中,计算由多项式s、t构成的2·N维的矢量(签名矢量)与作为消息数据(以下简单称作消息)的散列值的2·N维的矢量之间的距离,根据该距离判断签名是否正确。Normbound是在该判断时使用的阈值。即,如果上述距离不足Normbound,则将签名作为正确的签名受理,如果为Normbound以上,则作为不正确的签名拒绝。另外,在非专利文献4中,作为NTRUSign签名方式的参数的例子,举出了(N,q,df,dg,Normbound)=(251,128,73,71,310)的例子。在改良NTRUSign签名方式1中,也可以使用同样的参数例。
(2)消息的散列值、范数及矢量间的距离在改良NTRUSign签名方式1中,也制作与消息的散列值对应的签名。消息的散列值是N次多项式的对,视为与2·N维的矢量相同。另外,关于从消息求出散列值的散列函数,详见非专利文献1。
在改良NTRUSign签名方式1中,与以往的NTRUSign签名方式同样,在签名验证中使用矢量间的距离,在这样的距离的计算中使用范数(中心范数)。以下,表示范数及矢量间的距离的定义。
将多项式a=a_0+a_1·X+a_2·X^2+……+a_(N-1)·X^(N-1)的范数||a||如以下这样定义。
||a||=sqrt((a_0-μ)^2+(a_1-μ)^2+……+(a_(N-1)-μ)^2)μ=(1/N)·(a_0+a_1+a_2+……+a_(N-1))这里,sqrt(x)表示x的平方根。
将多项式a、b的对(a,b)的范数||(a,b)||如以下这样定义。||(a,b)||=sqrt(||a||^2+||b||^2)多项式a、b的对(a,b)和c、d的对(c,d)的距离(矢量间的距离)由||(c-a,d-b)||定义。
(3)改良NTRUSign签名方式1的密钥生成在改良NTRUSign签名方式1中,通过与NTRUSign签名方式同样的方法进行密钥生成。首先,如上所述,使用参数df、dg随机地生成多项式f、多项式g。并且,如非专利文献4所述,使用Fq×f=1(mod q)的多项式Fq,由h=Fq×g(mod q)生成多项式h。进而,求出满足下式的范数较小的多项式F、G。
f×G-g×F=q这里,设私钥为{(f,g),(F,G)},公钥为h。私钥是用来生成签名的密钥,也称作签名生成密钥。此外,公钥是用来验证签名的密钥,也称作签名验证密钥。
此外,x=y(mod q)是将使余数包括在从0到q-1的范围内地用模q除多项式y的第i次的系数后所得的余数、作为多项式x的第i次的系数的运算(0≤i≤N-1)。即,是将多项式y的各系数包括在从0到q-1的范围内地进行(mod q)运算后所得的多项式、作为多项式x的运算。
(4)改良NTRUSign签名方式1的签名生成在改良NTRUSign签名方式1的签名生成中,计算作为签名对象的消息m的签名sl、sh、th。
首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)(m1及m2是N次多项式)。
使用该2·N维的矢量(m1,m2)和私钥{(f,g),(F,G)},计算满足以下的(式1)及(式2)的多项式a、b、A、B。
G×m1-F×m2=A+q×B……(式1)-g×m1+f×m2=a+q×b ……(式2)这里,设A、a的系数取包括在从<-q/2>+1到<q/2>的范围内地用模q除后所得的余数。即,在用模q除时的余数是从<q/2>到q-1的情况下,对q进行减法运算,来进行调整,使余数包括在上述范围内。这里,<x>表示在x以下的数中最大的数。例如<-1/2>=-1。
接着,根据以下的式(3)及式(4),计算多项式s、t。
s=f×B+F×b ……(式3)t=g×B+G×b ……(式4)这里,在本实施方式中,对于多项式s、t,不取模q的余数,而是计算满足s=sl+sh×q以及t=tl+th×q的多项式sl、sh、th。另外,设多项式sl、tl的各系数(各要素)为q以下的非负整数。即,多项式sl、sh是将多项式s用q除时的余数及商,多项式tl、th是将多项式t用q除时的余数及商。并且,在本实施方式中,将多项式sl、sh、th作为签名处理。
(5)改良NTRUSign签名方式1的签名验证首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)。接着,利用公钥h,根据以下的式(6)计算多项式tl。
tl=sl×h(mod q) ……(式6)进而,利用s=sl+sh×q以及t=tl+th×q,计算多项式s、t。即,使用作为签名的多项式sl、sh、th和公钥h,计算多项式s、t。接着,求出2·N维矢量(s,t)与(m1,m2)的距离,检查该距离是否是不足Normbound。如果是不足Normbound,则判断为上述签名正确,并受理该签名。如果为Normbound以上,则判断为上述签名不正确,并拒绝该签名。
图3是表示本实施方式的数字签名系统100的结构的框图。
该数字签名系统100是使用上述的改良NTRUSign签名方式1生成并验证签名的装置,具有签名生成装置110、签名验证装置120和通信线路130构成。
签名生成装置110通过改良NTRUSign签名方式1生成包含有对于所输入的消息m的签名数据S(表示多项式sl、sh、th的数据)等的签名数据集SS,将该签名数据集SS经由通信线路130向签名验证装置120发送。此外,这样的签名生成装置110具备发送部111、私钥保存部112、公钥证书保存部113、签名生成部114、和签名数据集生成部115。
签名验证装置120经由通信线路130从签名生成装置110接收签名数据集SS,通过改良NTRUSign签名方式1验证包含在该签名数据集SS中的签名数据S。此外,这样的签名验证装置120具备接收部121、CA公钥保存部122、签名数据集保存部123、和签名验证部124。
下面对本实施方式的签名生成装置110详细地进行说明。
签名生成装置110的发送部111将签名数据集SS经由通信线路130向签名验证装置120发送。
私钥保存部112保存有用来生成对于消息m的多项式s的私钥KS。设私钥KS是预先赋予的。
公钥证书保存部113保存由上述的多项式h表示的公钥KP(公钥h)的公钥证书CP。公钥证书CP由公钥KP、和认证局CA的公钥KP的签名数据SP构成。该签名数据SP也是使用改良NTRUSign签名方式1生成的。此外,设公钥证书CP是预先赋予的。另外,公钥证书CP也可以包含有公钥KP和签名数据SP以外的其他数据。例如,也可以包含有用户的标识符及公钥证书CP的期限等。
签名生成部114使用保存在私钥保存部112中的私钥KS,生成对于消息m的多项式s、t,还生成用来将该多项式s、t复原并进行验证的签名数据S(多项式sl、sh、th)。
图4是表示本实施方式的签名生成部114的结构的框图。
签名生成部114具备散列值生成部1141、签名矢量生成部1142和签名数据生成部1143。
散列值生成部1141计算表示对于消息m的散列值H的2·N维的矢量(m1,m2)(m1及m2是N次多项式)。
签名矢量生成部1142使用私钥KS和散列值H,根据上述(式1)~(式4),生成多项式s、t。即,签名矢量生成部1142算出签名矢量(s,t),该签名矢量(s,t)在由私钥矩阵{(f,g),(F,G)}展开的2·N维栅格上,表示对于消息m的散列值H(m)=(m1,m2)的最接近栅格点P。
签名数据生成部1143使用由签名矢量生成部1142生成的多项式s、t,计算满足s=sl+sh×q以及t=tl+th×q的多项式sl、sh、th,生成表示该多项式sl、sh、th的签名数据S。
图5是表示签名生成部114的动作的流程图。
首先,签名生成部114的散列值生成部1141计算表示对于消息m的散列值H的2·N维的矢量(m1,m2)(步骤S100)。
接着,签名生成部114的签名矢量生成部1142计算满足上述(式1)及(式2)的多项式a、b、A、B(步骤S102)。进而,签名矢量生成部1142根据上述(式3)及(式4),计算多项式s、t(步骤S104)。
接着,签名生成部114的签名数据生成部1143使用多项式s、t,计算满足s=sl+sh×q以及t=tl+th×q的多项式sl、sh、th,生成表示该多项式sl、sh、th的签名数据S(步骤S106)。
图6是表示签名生成装置110整体的动作的流程图。
签名生成装置110的签名生成部114使用保存在私钥保存部112中的私钥KS,生成对于消息m的多项式s、t,并且根据该多项式s、t生成签名数据S(表示多项式sl、sh、th的数据)(步骤S120)。
接着,签名生成装置110的签名数据集生成部115生成由消息m、签名数据S、和保存在公钥证书保存部113中的公钥证书CP构成的签名数据集SS(步骤S122)。
接着,签名生成装置110的发送部111将签名数据集SS经由通信线路130发送给签名验证装置120(步骤S124)。
以下,对本实施方式的签名验证装置120详细地进行说明。
签名验证装置120的接收部121经由通信线路130接收从签名生成装置110发送的签名数据集SS。
CA公钥保存部122保存有认证局CA的公钥KCP,该认证局CA的公钥KCP用来验证包含在签名数据集SS中的公钥证书CP。
签名数据集保存部123保存有由接收部121接收的签名数据集SS。
签名验证部124验证包含在签名数据集SS中的签名数据S、和包含在公钥证书CP中的签名数据SP。
图7是表示本实施方式的签名验证部124的结构的框图。
签名验证部124具备散列值生成部1241、签名矢量生成部1243、和距离判断部1244。
散列值生成部1241计算作为签名对象数据的消息m及公钥KP的各自的散列值H(=(m1,m2))。
签名矢量生成部1243分别对签名数据S及签名数据SP计算多项式s、t。即,签名矢量生成部1243通过将由签名数据表示的多项式sl、sh代入到s=sl+sh×q中,计算多项式s。进而,签名矢量生成部1243通过将由签名数据表示的多项式sl、和多项式h(由公钥KP或公钥KCP表示的多项式)代入到上述(式6)中,来计算多项式tl,通过将该多项式tl和由签名数据表示的多项式th代入到t=tl+th×q中,计算多项式t。
由此,签名矢量生成部1243分别对签名数据S及签名数据SP生成2·N维矢量(s,t),来作为签名矢量SV。
距离判断部1244分别对消息m及签名数据S、公钥KP及签名数据SP计算散列值H与签名矢量SV的距离,判断该距离是否是不足Normbound。即,如果与消息m及签名数据S对应的散列值与签名矢量SV的距离是不足Normbound,则距离判断部1244判断签名数据S正确,并受理该签名数据S。另一方面,如果是Normbound以上,则距离判断部1244判断签名数据S不正确,并拒绝该签名数据S。此外,如果与公钥KP及签名数据SP对应的散列值与签名矢量SV的距离是不足Normbound,则距离判断部1244判断签名数据SP正确,并受理该签名数据SP。另一方面,如果是Normbound以上,则距离判断部1244判断签名数据SP不正确,并拒绝该签名数据SP。
图8是表示签名验证部124的动作的流程图。
签名验证部124使用公钥KP,对于消息m及签名数据S,通过进行图8所示的动作,验证该签名数据S。另外,签名验证部124在进行签名数据S的验证前,使用公钥KCP,对公钥KP及签名数据SP,通过进行图8所示的动作,验证该签名数据SP。
以下,参照图8对签名验证部124验证签名数据S的具体的动作进行说明。
首先,签名验证部124的散列值生成部1241计算对于签名数据S的消息m的散列值H(=(m1,m2))(步骤S140)。
接着,签名矢量生成部1243通过将由签名数据S表示的多项式sl、和由公钥KP表示的多项式h代入到上述(式6)中,计算多项式tl(步骤S142)。
进而,签名矢量生成部1243通过将由签名数据S表示的多项式sl、sh、th、和在步骤S142中计算的多项式tl代入到s=sl+sh×q及t=tl+th×q中,计算多项式s、t(步骤S144)。此时,签名矢量生成部1243对签名数据S生成2·N维矢量(s,t),来作为签名矢量SV。
距离判断部1244计算在步骤S140中计算出的散列值H(=(m1,m2))和在步骤S144中生成的签名矢量SV的距离(步骤S146)。接着,距离判断部1244判断该距离是否是不足Normbound(步骤S148)。距离判断部1244在判断为不足Normbound时(步骤S148的是),判断为签名数据S正确,并受理该签名数据S(步骤S150)。另一方面,距离判断部1244在判断为不是不足Normbound的情况下(步骤S148的否),判断为签名数据S不正确,并拒绝该签名数据S(步骤S152)。
图9是表示签名验证装置120的整体的动作的流程图。
首先,签名验证装置120的接收部121经由通信线路130从签名生成装置110接收签名数据集SS,将该签名数据集SS保存到签名数据集保存部123中(步骤S170)。
签名验证部124对于包含在签名数据集SS中的公钥证书CP中的公钥KP和其签名数据SP,使用保存在CA公钥保存部122中的认证局CA的公钥KCP,验证签名数据SP是否是公钥KP正确的签名。即,签名验证部124判断签名数据SP是否是正确的签名(步骤S172)。这里,签名验证部124在判断为不是正确的签名时(步骤S172的否),拒绝该签名数据SP(步骤S174)。
另一方面,在签名验证部124在步骤S172中判断为签名数据SP是正确的签名时(步骤S172的是),受理该签名数据SP。进而,签名验证部124对签名数据集SS中的消息m和其签名数据S,使用公钥KP验证签名数据S是否是消息m正确的签名。即,签名验证部124判断签名数据S是否是正确的签名(步骤S176)。
这里,在签名验证部124判断为不是正确的签名时(步骤S176中的否),拒绝该签名数据S(步骤S174),在判断为是正确的签名时(步骤S176的是),受理该签名数据S(步骤S178)。即,在步骤S178中,签名验证部124识别出签名数据集SS是接受了正当的签名的数据。
这样,在本实施方式中,在签名生成装置110中,在使用公钥时,将能够将签名矢量(s,t)复原的多项式sl、sh、th包含在签名数据中。因而,取得了这样的签名数据及消息的签名验证装置120能够从该签名数据正确地复原签名矢量(s,t),能够使用该签名矢量(s,t)进行签名验证。例如,签名验证装置120通过对包含在签名数据中的多项式sh乘以q并加上多项式sl,能够正确地复原作为签名矢量的一部分的多项式s。进而,签名验证装置120通过对包含在签名数据中的多项式sl与公钥(多项式h)的积的以q为模的余数,加上多项式th与q的积,能够正确地复原作为签名矢量的一部分的多项式t。这样,在本发明中,由于对签名矢量(s,t)不进行(mod q)的运算,而生成能够在签名验证装置120侧将该签名矢量(s,t)正确地复原那样的签名数据,所以能够防止(mod q)运算中的信息的丢失,能够可靠地防止发生以往例那样的不适当的签名验证错误。因而,即使在签名矢量(s,t)的各要素的最大值与最小值的差超过了q的情况下,在签名验证时也能够正确地复原签名矢量(s,t)。
(实施方式2)本发明的实施方式2的改良NTRUSign签名方式2是将以往的NTRUSign签名方式改良后的签名方式,与实施方式1同样,是以能够防止发生不适当的签名验证错误的方式来生成并验证签名。进而,在本实施方式的改良NTRUSign签名方式2,与实施方式1相比,可以抑制签名数据的信息量。
下面,对于本实施方式的改良NTRUSign签名方式2详细地进行说明。
<改良NTRUSign签名方式2>
(1)改良NTRUSign签名方式2的参数在改良NTRUSign签名方式2中,使用非负整数的参数N、q、df、dg、Normbound。这些参数的定义与以往的NTRUSign签名方式相同。以下说明这些参数的意思。
(i)参数N改良NTRUSign签名方式2是通过多项式的运算进行签名生成及签名验证的数字签名方式。在改良NTRUSign签名方式2中处理的多项式的次数由上述参数N决定。
在改良NTRUSign签名方式2中处理的多项式相对上述N,是N-1次以下的整数系数多项式,例如在N=5时是X^4+X^3+1等多项式。这里,“X^a’意味着X的a次方。此外,公钥h及作为签名矢量的一部分的多项式s都表现为N-1次以下的多项式。此外,私钥是4个N-1次以下的多项式对{f,g,F,G}。即,f、g、F、G都是N-1次以下的多项式。另外,以下,有时也将由4个多项式构成的组(f,g,F,G)取2个对(f,g)、(F,G)所进一步构成的对,标记为{(f,g),(F,G)}。
并且,多项式运算相对上述参数N,使用X^N=1的关系式进行运算,以使运算结果总为N-1次以下的多项式。例如,在N=5的情况下,如果设多项式与多项式的积为×、整数与多项式的积(或者整数与整数的积)为·,则根据X^5=1的关系,进行运算,使得多项式X^4+X^2+1与多项式X^3+X的积如下式(X^4+X^2+1)×(X^3+X)
=X^7+2·X^5+2·X^3+X=X^2·1+2·1+2·X^3+X=2·X^3+X^2+X+2那样,总为N-1次以下的多项式。
另外,在改良NTRUSign签名方式2中,也将N-1次的多项式a=a_0+a_1·X+a_2·X^2+……+a_(N-1)·X^(N-1)看作与矢量(a_0,a_1,a_2,……,a_(N-1))相同。这里,a_0、a_1、a_2、……、a_(N-1)是多项式a的系数,是整数。
(ii)参数q在改良NTRUSign签名方式2中,使用作为2以上的整数的参数q。在改良NTRUSign签名方式2中出现的多项式的系数取以q为模的余数。
(iii)参数df、dg作为在改良NTRUSign签名方式2中处理的私钥的一部分的多项式f以及在生成作为公钥的多项式h时与多项式f一起使用的多项式g的选择方法分别由参数df、dg决定。
首先,多项式f选择为,使df个的系数是1,并且其他系数为0。即,多项式f是N-1次以下的多项式,从0次(常数项)到N-1次有N个系数,但在该N个系数中选择为,df个的系数是1,并且(N-df)个的系数为0。并且,多项式g选择为,dg个的系数是1,并且其他系数为0。
(iv)参数Normbound在改良NTRUSign签名方式2中,计算由多项式s、t构成的2·N维的矢量(签名矢量)与作为消息数据(以下简单称作消息)的散列值的2·N维的矢量的距离,根据该距离判断签名是否正确。Normbound是在该判断时使用的阈值。即,如果上述距离不足Normbound,则将签名作为正确的签名受理,如果为Normbound以上,则作为不正确的签名拒绝。另外,在非专利文献4中,作为NTRUSign签名方式的参数的例子,举出了(N,q,df,dg,Normbound)=(251,128,73,71,310)的例子。在改良NTRUSign签名方式2中,也可以使用同样的参数例。
(2)消息的散列值、范数及矢量间的距离在改良NTRUSign签名方式2中,也制作与消息的散列值对应的签名。消息的散列值是N次多项式的对,视为与2·N维的矢量相同。另外,关于从消息求出散列值的散列函数,详见非专利文献1。
在改良NTRUSign签名方式2中,与以往的NTRUSign签名方式同样,在签名验证中使用矢量间的距离,在这样的距离的计算中使用范数(中心范数)。以下,表示范数及矢量间的距离的定义。
将多项式a=a_0+a_1·X+a_2·X^2+……+a_(N-1)·X^(N-1)的范数||a||如以下这样定义。
||a||=sqrt((a_0-μ)^2+(a_1-μ)^2+……+(a_(N-1)-μ)^2)μ=(1/N)·(a_0+a_1+a_2+……+a_(N-1))这里,sqrt(x)表示x的平方根。
将多项式a、b的对(a,b)的范数||(a,b)||如以下这样定义。
||(a,b)||=sqrt(||a||^2+||b||^2)多项式a、b的对(a,b)和c、d的对(c,d)的距离(矢量间的距离)由||(c-a,d-b)||定义。
(3)改良NTRUSign签名方式2的密钥生成在改良NTRUSign签名方式2中,通过与NTRUSign签名方式同样的方法进行密钥生成。首先,如上所述,使用参数df、dg随机地生成多项式f、多项式g。并且,如非专利文献4所述,使用Fq×f=1(mod q)的多项式Fq,由
h=Fq×g(mod q)生成多项式h。进而,求出满足下式的范数较小的多项式F、G。
f×G-g×F=q这里,设私钥为{(f,g),(F,G)},公钥为h。私钥是用来生成签名的密钥,也称作签名生成密钥。此外,公钥是用来验证签名的密钥,也称作签名验证密钥。
此外,x=y(mod q)是将使余数包括在从0到q-1的范围内地用模q除多项式y的第i次的系数后所得的余数、作为多项式x的第i次的系数的运算(0≤i≤N-1)。即,是将多项式y的各系数包括在从0到q-1的范围内地进行(mod q)运算后所得的多项式、作为多项式x的运算。
(4)改良NTRUSign签名方式2的签名生成在改良NTRUSign签名方式2的签名生成中,计算作为签名对象的消息m的签名sl’、th’。
首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)(m1及m2是N次多项式)。
使用该2·N维的矢量(m1,m2)和私钥{(f,g),(F,G)},计算满足以下(式11)及(式12)的多项式a、b、A、B。
G×m1-F×m2=A+q×B ……(式11)-g×m1+f×m2=a+q×b ……(式12)这里,设A、a的系数取包括在从<-q/2>+1到<q/2>的范围内地用模q除后所得的余数。即,在用模q除时的余数是从<q/2>到q-1的情况下,对q进行减法运算,来进行调整,使余数包括在上述范围内。这里,<x>表示在x以下的数中最大的数。例如<-1/2>=-1。
接着,根据以下的式(13)及式(14),计算多项式s、t。
s=f×B+F×b……(式13)t=g×B+G×b……(式14)
这里,在本实施方式中,对于多项式s、t,不取模q的余数,而是计算基于该多项式s、t的多项式s’、t’。
即,设多项式s为s=s_0+s_1·X+s_2·X^2+……+s_(N-1)·X^(N-1),设多项式t为t=t_0+t_1·X+t_2·X^2+……+t(N-1)·X^(N-1),设多项式v0为所有的系数都是1的多项式。在此情况下,根据以下的(式15)及(式16)计算多项式s’及t’。
s’=s-(s_0-m1_0)×v0=m1_0+(s_1-s_0+m1_0)·X+(s_2-s_0+m1_0)·X^2+……+(s_(N-1)-s_0+m1_0)·X^(N-1) ……(式15)t’=t-(hs×(s_0-m1_0)mod q)×v0=(t_0-(hs×(s_0-m1_0)mod q))+(t_1-(hs×(s_0-m1_0)mod q))·X+(t_2-(hs×(s_0-m1_0)mod q))·X^2+……+(t_(N-1)-(hs×(s_0-m1_0)mod q))·X^(N-1)……(式16)另外,在上述(式15)及(式16)中,m1_0是多项式m1的0次的项(第1项)的系数,hs是作为公钥的多项式h的所有系数的和。
进而,计算满足s’-m1=sl’及t’=tl’+th’×q的多项式sl’、th’。这里,多项式tl’的所有的系数(要素)都是不足q的非负整数。并且,在本实施方式中,将多项式sl’、th’作为签名处理。
即,在本实施方式中,由于多项式s’与多项式m1的距离较近,所以能够削减作为签名的多项式sl’的信息量。
此外,在本实施方式中,进行范数为0的矢量的加法或减法,计算多项式s’,以使多项式s’的第1个要素与多项式m1的第1个要素相等。因而,作为签名的多项式sl’的第1个要素为0,其他各要素的值也能够接近于0,能够进一步削减多项式sl’的信息量,即签名数据的信息量。此外,由于通过范数为0的矢量的加法或减法进行了多项式s’的第1个要素的值的调整,所以能够不改变已计算出的多项式s的范数而进行上述那样的调整,在进行该调整的基础上,能够将(s,t)与(m1,m2)的距离、和(s’,t’)与(m1,m2)的距离保持为一定。
(5)改良NTRUSign签名方式2的签名验证首先,计算对于消息m的散列值即2·N维的矢量(m1,m2)。进而,根据s’=sl’+m1计算多项式s’。接着,利用公钥h,根据以下的式(17)计算多项式tl’。
tl’=s’×h(mod q) ……(式17)此外,通过将作为签名的多项式th’和由(式17)计算出的tl’代入到t’=tl’+th’×q中,计算多项式t’。
接着,求出2·N维矢量(s’,t’)与(m1,m2)的距离,检查该距离是否是不足Normbound。如果是不足Normbound,则判断为上述签名正确,并受理该签名。如果为Normbound以上,则判断为上述签名不正确,并拒绝该签名。
(6)改良NTRUSign签名方式2的动作验证首先,表示(s,t)与(m1,m2)的距离和(s’,t’)与(m1,m2)的距离相等。根据(式15),s-s’=(s_0-m1_0)×v0的关系成立,根据(式16),t-t’=(hs×(s_0-m1_0)mod q)×v0的关系成立。因而,||s-s’||=(s_0-m1_0)·||v0||以及||t-t’||=(hs×(s_0-m1_0)mod q)·||v0||的关系成立。这里,由于||v0||=0,所以||s-s’||=0及||t-t’||=0,||m1-s||=||m1-s’||以及||m2-t||=||m2-t’||。因而,(s,t)与(m1,m2)的距离和(s’,t’)与(m1,m2)的距离相等。
接着表示s’×h(mod q)为tl’。由s’=s-(s_0-m1_0)×v0,成立以下的关系。
s’×h=s×h-(s_0-m1_0)×v0×h这里,由于多项式v0的系数都是1,所以v0×h=hs+hs·X^2+……+hs·X^(N-1)mod X^N-1。
因而,以下的关系成立。
s’×h=s×h-(s_0-m1_0)×(hs,hs,……,hs)=t-(hs×(s_0-m1_0)×v0 mod q=t’mod q=tl’结果,只要由上述(式16)计算多项式t’、将满足t’=tl’+th’×q的多项式th’与多项式sl’一起作为签名,就能够根据上述(式17)、s’=sl’+m1以及t’=tl’+th’×q,计算2·N维矢量(s’,t’)。并且,由于(s,t)与(m1,m2)的距离和(s’,t’)与(m1,m2)的距离相等,所以能够根据(s’,t’)与(m1,m2)的距离正确地验证签名。
图10是表示本实施方式的数字签名系统200的结构的框图。
该数字签名系统200是使用上述的改良NTRUSign签名方式2生成并验证签名的装置,具有签名生成装置210、签名验证装置220和通信线路230。
签名生成装置210通过改良NTRUSign签名方式2生成包含有对于所输入的消息m的签名数据S(表示多项式sl’、th’的数据)等的签名数据集SS,将该签名数据集SS经由通信线路230向签名验证装置220发送。此外,这样的签名生成装置210具备发送部211、私钥保存部212、公钥证书保存部213、签名生成部214、和签名数据集生成部215。
签名验证装置220经由通信线路230从签名生成装置210接收签名数据集SS,通过改良NTRUSign签名方式2验证包含在该签名数据集SS中的签名数据S。此外,这样的签名验证装置220具备接收部221、CA公钥保存部222、签名数据集保存部223、和签名验证部224。
下面对本实施方式的签名生成装置210详细地进行说明。
签名生成装置210的发送部211将签名数据集SS经由通信线路230向签名验证装置220发送。
私钥保存部212保存有用来生成对于消息m的多项式s的私钥KS。设私钥KS是预先赋予的。
公钥证书保存部213保存由上述的多项式h表示的公钥KP(公钥h)的公钥证书CP。公钥证书CP由公钥KP、和认证局CA的公钥KP的签名数据SP构成。该签名数据SP也是使用改良NTRUSign签名方式2生成的。此外,设公钥证书CP是预先赋予的。另外,公钥证书CP也可以包含有公钥KP和签名数据SP以外的其他数据。例如,也可以包含有用户的标识符及公钥证书CP的期限等。
签名生成部214使用保存在私钥保存部212中的私钥KS,生成对于消息m的多项式s、t,还生成用来将与该多项式s、t同等的多项式s’、t’复原来进行验证的签名数据S(多项式sl’、th’)。
图11是表示本实施方式的签名生成部214的结构的框图。
签名生成部214具备散列值生成部2141、签名矢量生成部2142和签名数据生成部2143。
散列值生成部2141计算表示对于消息m的散列值H的2·N维的矢量(m1,m2)(m1及m2是N次多项式)。
签名矢量生成部2142使用私钥KS和散列值H,根据上述(式11)~(式14),生成多项式s、t。进而,本实施方式的签名矢量生成部2142与实施方式1的签名矢量生成部1142不同,使用所生成的多项式s、t,通过上述(式15)及(式16)计算多项式s’、t’。即,签名矢量生成部2142算出签名矢量(s’,t’),该签名矢量(s’,t’)在由私钥矩阵{(f,g),(F,G)}展开的2·N维栅格上,表示对于消息m的散列值H(m)=(m1,m2)的最接近栅格点P。
签名数据生成部2143与实施方式1的签名数据生成部1143不同,使用由签名矢量生成部2142算出的多项式s’、t’,计算满足s’-m1=sl’及t’=tl’+th’×q的多项式sl’、th’,生成表示该多项式sl’、th’的签名数据S。
图12是表示签名生成部214的动作的流程图。
首先,签名生成部214的散列值生成部2141计算表示对于消息m的散列值H的2·N维的矢量(m1,m2)(步骤S200)。
接着,签名生成部214的签名矢量生成部2142计算满足上述(式11)及(式12)的多项式a、b、A、B(步骤S202)。进而,签名矢量生成部2142根据上述(式13)及(式14),计算多项式s、t(步骤S204)。接着,签名矢量生成部2142使用多项式s、t,根据上述(式15)及(式16),计算多项式s’、t’(步骤S206)。
签名生成部214的签名数据生成部2143计算满足s’-m1=sl’及t’=tl’+th’×q的多项式sl’、th’,生成表示该多项式sl’、th’的签名数据S(步骤S208)。
这里,参照实施方式1的图6所示的流程图,对本实施方式的签名生成装置210整体的动作进行说明。
签名生成装置210的签名生成部214使用保存在私钥保存部212中的私钥KS,生成对于消息m的多项式s、t,并且根据该多项式s、t生成签名数据S(表示多项式sl’、th’的数据)(步骤S120)。
接着,签名生成装置210的签名数据集生成部215生成由消息m、签名数据S、和保存在公钥证书保存部213中的公钥证书CP构成的签名数据集SS(步骤S122)。
接着,签名生成装置210的发送部211将签名数据集SS经由通信线路230发送给签名验证装置220(步骤S124)。
以下,对本实施方式的签名验证装置220详细地说明。
签名验证装置220的接收部221经由通信线路230接收从签名生成装置210发送的签名数据集SS。
CA公钥保存部222保存有用来验证包含在签名数据集SS中的公钥证书CP的认证局CA的公钥KCP。
签名数据集保存部223保存有由接收部221接收的签名数据集SS。
签名验证部224验证包含在签名数据集SS中的签名数据S、和包含在公钥证书CP中的签名数据SP。
图13是表示本实施方式的签名验证部224的结构的框图。
签名验证部224具备散列值生成部2241、签名矢量生成部2243、和距离判断部2244。
散列值生成部2241计算作为签名对象数据的消息m及公钥KP的各自的散列值H(=(m1,m2))。
签名矢量生成部2243与实施方式1的签名矢量生成部1243不同,分别对签名数据S及签名数据SP计算多项式s’、t’。即,签名矢量生成部2243通过将由签名数据表示的多项式sl’代入到s’=sl’+m1中,计算多项式s’。进而,签名矢量生成部2243通过将计算出的多项式s’、和多项式h(由公钥KP或公钥KCP表示的多项式)代入到上述(式17)中,计算多项式tl’。接着,签名矢量生成部2243通过将由签名数据表示的多项式th’和多项式tl’代入到t’=tl’+th’×q中,计算多项式t’。
由此,签名矢量生成部2243分别对签名数据S及签名数据SP生成2·N维矢量(s’,t’),来作为签名矢量SV。
距离判断部2244分别对消息m及签名数据S、公钥KP及签名数据SP计算散列值H与签名矢量SV的距离,判断该距离是否是不足Normbound。即,如果对于消息m及签名数据S的散列值与签名矢量SV的距离是不足Normbound,则距离判断部2244判断签名数据S正确,并受理该签名数据S。另一方面,如果是Normbound以上,则距离判断部2244判断签名数据S不正确,并拒绝该签名数据S。此外,如果对应于公钥KP及签名数据SP的散列值与签名矢量SV的距离是不足Normbound,则距离判断部2244判断签名数据SP正确,并受理该签名数据SP。另一方面,如果是Normbound以上,则距离判断部2244判断签名数据SP不正确,并拒绝该签名数据SP。
图14是表示签名验证部224的动作的流程图。
签名验证部224使用公钥KP,对于消息m及签名数据S,通过进行图14所示的动作,验证该签名数据S。另外,签名验证部224在进行签名数据S的验证前,使用公钥KCP,对公钥KP及签名数据SP通过进行图14所示的动作,验证该签名数据SP。
以下,参照图14对签名验证部224验证签名数据S的具体的动作进行说明。
首先,签名验证部224的散列值生成部2241计算对于签名数据S的消息m的散列值H(=(m1,m2))(步骤S240)。
接着,签名矢量生成部2243通过将由签名数据S表示的多项式sl’代入到s’=sl’+m1中,计算多项式s’(步骤S242)。进而,签名矢量生成部2243通过将计算出的多项式s’、和由公钥KP表示的多项式h代入到上述(式17)中,计算多项式tl’(步骤S244)。接着,签名矢量生成部2243通过将由签名数据S表示的多项式th’和多项式tl’代入到t’=tl’+th’×q中,计算多项式t’(步骤S246)。此时,签名矢量生成部2243对签名数据S生成2·N维矢量(s’,t’),来作为签名矢量SV。
距离判断部2244计算在步骤S240中计算出的散列值H(=(m1,m2))和在步骤S246中生成的签名矢量SV的距离(步骤S248)。接着,距离判断部2244判断该距离是否是不足Normbound(步骤S250)。在距离判断部2244判断为不足Normbound时(步骤S250的是),判断为签名数据S正确,并受理该签名数据S(步骤S252)。另一方面,距离判断部2244在判断为不是不足Normbound的情况下(步骤S250的否),判断为签名数据S不正确,并拒绝该签名数据S(步骤S254)。
这里,参照实施方式1的图9所示的流程图对本实施方式的签名验证装置220的整体的动作进行说明。
首先,签名验证装置220的接收部221经由通信线路230从签名生成装置210接收签名数据集SS,将该签名数据集SS保存到签名数据集保存部223中(步骤S170)。
签名验证部224对于在签名数据集SS中的公钥证书CP中包含的公钥KP和其签名数据SP,使用保存在CA公钥保存部222中的认证局CA的公钥KCP,验证签名数据SP是否是公钥KP正确的签名。即,签名验证部224判断签名数据SP是否是正确的签名(步骤S172)。这里,签名验证部224在判断为不是正确的签名时(步骤S172的否),拒绝该签名数据SP(步骤S174)。
另一方面,在签名验证部224在步骤S172中判断为签名数据SP是正确的签名时(步骤S172的是),受理该签名数据SP。进而,签名验证部224对签名数据集SS中的消息m和其签名数据S,使用公钥KP验证签名数据S是否是消息m正确的签名。即,签名验证部224判断签名数据S是否是正确的签名(步骤S176)。
这里,在签名验证部224判断为不是正确的签名时(步骤S176中的否),拒绝该签名数据S(步骤S174),在判断为是正确的签名时(步骤S176的是),受理该签名数据S(步骤S178)。即,在步骤S178中,签名验证部224识别签名数据集SS是接受了正当的签名的数据。
这样,在本实施方式中,在签名生成装置210中,在使用公钥时,将能够将签名矢量(s’,t’)复原的多项式sl’=s’-m1、th’包含在签名数据中。因而,取得了这样的签名数据及消息的签名验证装置220能够从该签名数据正确地复原签名矢量(s’,t’),能够使用该签名矢量(s’,t’)进行签名验证。例如,签名验证装置220通过对消息m使用散列函数来生成作为散列值的(m1,m2),通过对多项式sl’加上多项式m1,能够正确地复原多项式s’。进而,签名验证装置220通过对该多项式s’与公钥(多项式h)的积的以q为模的余数,加上多项式th’与q的积,能够正确地复原作为签名矢量的一部分的多项式t’。这样,在本发明中,由于对作为签名矢量的签名矢量(s’,t’)不进行(mod q)的运算,而生成能够在签名验证装置220侧将该签名矢量(s’,t’)正确地复原那样的签名数据,所以能够防止(mod q)运算中的信息的丢失,能够可靠地防止发生以往例那样的不适当的签名验证错误。因而,即使在签名矢量(s’,t’)的各要素的最大值与最小值的差超过了q的情况下,在签名验证时也能够正确地复原签名矢量(s’,t’)。
此外,在本实施方式中,作为签名数据而发送了多项式s’与多项式m1的差(多项式sl’)。由于多项式s’与多项式m1的距离较短,并且多项式s’的第1个要素与多项式m1的第1个要素相等,所以多项式sl’(=s’-m1)的各要素变小,与原样发送多项式s’相比能够削减发送数据量。
以上利用上述实施方式1及2对本发明进行了说明,但它们是本发明的一例,本发明并不受这样的实施方式任何限制。即,本发明在不脱离本发明的本质的范围内能够以各种形态实施。例如,以下这样的情况也包含在本发明中。
(1)在实施方式1中,也可以使用将范数为0的矢量加上多项式s而生成的多项式sa(sa=s+(α,α,……,α)),来代替多项式s。这里,α是从1到q-1的任一个整数,(α,α,……,α)是所有的要素都为α的矢量、即范数为0的矢量。在此情况下,将满足sa=sl+sh×q及t=tl+th×q的多项式sl、sh、th作为签名处理。
(2)在实施方式2中,通过将范数为0的矢量与多项式s相加,使多项式s’与多项式m1的第1要素(0次项的系数)相等,但也可以使其他要素、即从第2要素到第N要素的任一个要素相等。例如,将范数为0的矢量与多项式s相加以使多项式s’与多项式m1的第3要素(2次项的系数)相等。
(3)在实施方式2中,发送作为s’和m1之差的sl’=s’-m1,来作为签名数据的一部分,但也可以将由sl”=s’-m1+(β,β,……,β)算出的sl”和β代替sl’作为签名数据的一部分进行发送。这里,(β,β,……,β)是所有的要素都是β的矢量。
(4)上述实施方式1及2的签名生成装置及签名验证装置具体而言是具有微处理器、R0M(Read Only Memory只读存储器)、RAM(Random Access Memory随机存储器)、硬盘单元、显示器单元、键盘、以及鼠标等的计算机系统。在上述RAM或硬盘单元中存储有计算机程序。通过上述微处理器按照上述计算机程序动作,签名生成装置及签名验证装置实现其功能。这里,计算机程序是为了实现规定的功能而将表示对计算机的指令的命令代码多个组合而构成的。
(5)构成上述实施方式1及2的签名生成装置及签名验证装置的结构要素的一部分或全部也可以由1个系统LSI(Large ScaleIntegration大规模集成电路)构成。系统LSI是将多个结构部集成在1个芯片上制造的超多功能LSI,具体而言,是包含微处理器、ROM、RAM等的计算机系统。在上述RAM中存储有计算机程序。通过上述微处理器按照上述计算机程序动作,系统LSI实现其功能。
(6)构成上述实施方式1及2的签名生成装置及签名验证装置的结构要素的一部分或全部也可以由相对于签名生成装置及签名验证装置可拆装的IC(Integrated Circuit集成电路)卡、或单体的模块构成。上述IC卡或上述模块是具有微处理器、ROM、RAM等的计算机系统。上述IC卡或上述模块也可以包含上述超多功能LSI。通过上述微处理器按照上述计算机程序动作,上述IC卡或上述模块实现其功能。该IC卡或该模块也可以具有防篡改性。
(7)本发明不仅可以作为上述实施方式1及2的数字签名系统的其系统或装置来实现,也可以作为处理方法实现。此外,也可以作为使计算机执行该处理方法的动作的计算机程序实现,也可以作为由上述计算机程序构成的数字信号实现。
(8)此外,本发明也可以作为将上述计算机程序或上述数字信号记录在计算机可读取的记录介质、例如软盘、硬盘、CD-ROM(Compact Disk Read Only Memory只读光盘)、MO(Magneto-Opticaldisk磁光盘)、DVD(Digital Versatile Disk数字化视频光盘)、DVD-ROM、DVD-RAM、BD(Blue-ray Disc蓝光盘)、半导体存储器等中的产品实现。此外,也可以作为记录在这些记录介质中的上述数字信号实现。
(9)此外,本发明也可以作为将上述计算机程序或上述数字信号经由电气通信线路、无线或有线通信线路、以因特网为代表的网络、或数据广播等传送的产品来实现。
(10)此外,本发明也可以作为具备微处理器和存储器的计算机系统实现。在此情况下,上述存储器存储有上述计算机程序,上述微处理器按照上述计算机程序而动作。
(11)此外,本发明也可以通过将上述计算机程序或上述数字信号记录在上述记录介质中并移送、或通过将上述计算机程序或上述数字信号经由上述网络等移送,而由独立的其他计算机系统实现。
(12)此外,本发明也可以将上述实施方式1及2分别组合来实现。
工业实用性本发明的签名生成装置及签名验证装置的效果在于,能够可靠地防止发生不适当的签名验证错误,例如能够应用在数字签名系统等中。
权利要求
1.一种签名生成装置,按照签名方式生成对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述签名生成装置具备签名矢量生成单元,利用上述私钥,计算对于上述消息数据的、由上述环R的元s、t构成的签名矢量;和签名数据生成单元,生成上述签名数据,上述签名数据表示能够确定上述元s的上述环R的第1元、和将上述元t用q除时的商即上述环R的第2元。
2.如权利要求1所述的签名生成装置,其特征在于,上述第1元由将上述元s用q除时的商即上述环R的元sh、和将上述元s用q除时的余数即上述环R的元s1构成。
3.如权利要求1所述的签名生成装置,其特征在于,上述签名生成装置还具备散列值生成单元,该散列值生成单元通过对上述消息数据使用散列函数,生成上述环R的元m1及元m2;上述签名数据生成单元生成上述元s与上述元m1的差,作为上述第1元。
4.如权利要求3所述的签名生成装置,其特征在于,上述签名矢量生成单元计算上述元s,以使上述元m1与上述元s的各自的第i个要素为相同的值,其中,i是从1到N的任一个整数。
5.如权利要求4所述的签名生成装置,其特征在于,上述签名矢量生成单元通过进行范数为0的上述环R的元的加法运算或减法运算,计算上述元s。
6.如权利要求3所述的签名生成装置,其特征在于,上述签名矢量生成单元计算上述元s,以使包含在上述第1元中的各要素的值接近于0。
7.一种签名验证装置,按照签名方式验证对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述签名验证装置具备签名矢量生成单元,使用上述签名数据所表示的上述环R的第1元,将利用上述私钥对上述消息数据计算出的由上述环R的元s、t构成的签名矢量中的上述元s复原,并且使用对上述签名数据所表示的上述环R的第2元乘以q后的结果,将上述元t复原;和验证单元,验证上述签名矢量。
8.如权利要求7所述的签名验证装置,其特征在于,上述第1元由将上述元s用q除时的商即上述环R的元sh、和将上述元s用q除时的余数即上述环R的元s1构成,上述第2元是将上述元t用q除时的商;上述签名矢量生成单元通过对上述元sh乘以q,再加上上述元s1,将上述元s复原;通过对上述元s1与上述元h的积的以q为模的余数,加上上述第2元与q的积,将上述元t复原。
9.如权利要求7所述的签名验证装置,其特征在于,上述签名验证装置还具备散列值生成单元,该散列值生成单元通过对上述消息数据使用散列函数,生成上述环R的元m1及元m2;上述第1元由上述元s与上述元m1的差即上述环R的元s1构成,上述第2元是将上述元t用q除时的商;上述签名矢量生成单元通过对上述元s1加上上述元m1,将上述元s复原;通过对上述元s与元h的积的以q为模的余数,加上上述第2元与q的积,将上述元t复原。
10.如权利要求7所述的签名验证装置,其特征在于,上述签名验证装置还具备散列值生成单元,该散列值生成单元通过对上述消息数据使用散列函数,生成上述环R的元m1及元m2;上述验证单元通过将上述签名矢量与由上述元m1及元m2构成的散列值矢量之间的距离和预先设定的距离相比较,验证上述签名矢量。
11.一种签名生成方法,按照签名方式,生成对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述签名生成方法包括上述签名生成步骤;上述签名生成步骤包括签名矢量生成步骤,利用上述私钥,计算对于上述消息数据的、由上述环R的元s、t构成的签名矢量;和签名数据生成步骤,生成上述签名数据,上述签名数据表示能够确定上述元s的上述环R的第1元、和将上述元t用q除时的商即上述环R的第2元。
12.一种签名验证方法,按照签名方式,验证对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合的环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述签名验证方法包括上述签名验证步骤;上述签名验证步骤包括签名矢量生成步骤,使用上述签名数据所表示的上述环R的第1元,将利用上述私钥对上述消息数据计算出的由上述环R的元s、t构成的签名矢量中的上述元s复原,并且使用对上述签名数据所表示的上述环R的第2元乘以q后的结果,将上述元t复原;和验证步骤,验证上述签名矢量。
13.一种程序,用来按照签名方式生成对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合的环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述程序使计算机执行上述签名生成步骤;上述签名生成步骤包括签名矢量生成步骤,利用上述私钥,计算对于上述消息数据的、由上述环R的元s、t构成的签名矢量;和签名数据生成步骤,生成上述签名数据,上述签名数据表示能够确定上述元s的上述环R的第1元、和将上述元t用q除时的商即上述环R的第2元。
14.一种程序,用来按照签名方式验证对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述程序使计算机执行上述签名验证步骤;上述签名验证步骤包括签名矢量生成步骤,使用上述签名数据所表示的上述环R的第1元,将利用上述私钥对上述消息数据计算出的由上述环R的元s、t构成的签名矢量中的上述元s复原,并且使用对上述签名数据所表示的上述环R的第2元乘以q后的结果,将上述元t复原;和验证步骤,验证上述签名矢量。
15.一种集成电路,按照签名方式,生成对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述集成电路具备签名矢量生成单元,利用上述私钥计算对于上述消息数据的、由上述环R的元s、t构成的签名矢量;和签名数据生成单元,生成上述签名数据,上述签名数据表示能够确定上述元s的上述环R的第1元、和将上述元t用q除时的商即上述环R的第2元。
16.一种集成电路,按照签名方式,验证对于消息数据的签名数据,其特征在于,上述签名方式包括密钥生成步骤,对于加法、减法、乘法以及表示元的大小的范数已被定义的N维排列的集合即环R和正整数q,生成上述环R的元f、g以及f(mod q)的倒数即元Fq,并生成以q为模与上述元g及上述元Fq的积同余的元h,来作为公钥,生成满足f×G-g×F=q的F、G,并生成由上述4个元f、g、F、G构成的组{f,g,F,G},来作为私钥,这里,f(mod q)表示将f用q除后的余数,×表示环R的乘法运算;签名生成步骤,使用上述私钥生成对于上述消息数据的、上述环R的元即上述签名数据;和签名验证步骤,使用上述公钥验证上述签名数据;上述集成电路具备签名矢量生成单元,使用上述签名数据所表示的上述环R的第1元,将利用上述私钥对上述消息数据计算出的由上述环R的元s、t构成的签名矢量中的上述元s复原,并且使用对上述签名数据所表示的上述环R的第2元乘以q后的结果,将上述元t复原;和验证单元,验证上述签名矢量。
全文摘要
提供一种能够可靠地防止发生不适当的签名验证错误的签名生成装置及签名验证装置。签名生成装置(110)具备签名生成部(114),该签名生成部(114)使用私钥计算对于消息m的签名矢量(s,t),生成签名数据S,该签名数据S表示能够确定多项式s的多项式sl、sh、和作为将多项式t用q除时的商的多项式th。签名验证装置(120)具备签名验证部(124),该签名验证部(124)使用签名数据S所表示的多项式sl、sh,将利用私钥对消息数据m计算出的签名矢量(s,t)中的多项式s复原,并且使用对签名数据S所表示的多项式th乘以q后的结果,将多项式t复原,来验证该签名矢量(s,t)。
文档编号H04L9/32GK1954548SQ20068000016
公开日2007年4月25日 申请日期2006年4月10日 优先权日2005年4月18日
发明者布田裕一, 长谷川真吾, 矶边秀司, 大森基司, 静谷启树 申请人:松下电器产业株式会社, 国立大学法人东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1