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

文档序号:7635389阅读:224来源:国知局
专利名称:签名生成装置和签名验证装置的制作方法
技术领域
本发明涉及作为信息安全技术的加密技术,特别涉及进行基于数字签名的处理的签名生成装置和签名验证装置。
背景技术
作为防止从接收装置向发送装置发送数据时确定发送人及篡改数据的技术,有作为一种公钥(公開鍵)加密的数字签名方式。
在这种数字签名方式中,发送装置对于要发送的数据,使用发送装置的私钥(秘密鍵)作成签名数据,并将签名数据与要发送的数据一起向接收装置发送。接收装置使用发送装置的公钥来验证签名数据,判定是否被篡改(例如,参照非专利文献1)。再有,由公钥难以计算私钥的值。
最近,作为可高速处理的公钥加密,提出了NTRU(NTRUCryptosystems Inc.的注册商标)加密(例如,参照非专利文献2)。这种NTRU加密与在某个模下进行幂乘余数运算的RSA(Rivest ShamirAdleman)加密或进行椭圆曲线上的点的数乘(scalar倍)运算的椭圆曲线加密相比,通过可进行高速运算的多项式运算来进行加密和解密。因此,NTRU加密与现有的公钥加密相比可高速地进行处理,即使是软件的处理,也可在实用的时间内进行处理。
即,在公钥加密中使用了NTRU加密的加密系统中,与现有的使用了公钥加密的加密通信系统相比,具有发送装置及接收装置的处理可高速地进行的优点。
可是,上述非专利文献2中提出的方式是将数据加密的保密加密方式,但其后提出了NTRU加密的数字签名方式(例如,参照非专利文献3)。这种数字签名方式因解读法的出现等,其方式被变更过几次。
以下,简单地说明有关被称为NTRUSign的数字签名方式(以下,称为NTRUSign签名方式)(例如,参照专利文献1和非专利文献4)。
<NTRUSign签名方式>
(1)NTRUSign签名方式的参数在NTRUSign签名方式中,使用作为非负整数的参数的N、q、df、dg、Normbound。以下,说明这些参数的含义。
(i)参数NNTRUSign签名方式是通过多项式的运算进行签名生成及签名验证的数字签名方式。NTRUSign签名方式中处理的多项式的次数由上述参数N决定。
NTRUSign签名方式中处理的多项式,是对于上述参数N的N-1次以下的整数系数多项式,例如N=5时,是X^4+X^3+1等的多项式。其中,‘X^a’意味着X的a次幂。此外,公钥h和签名s都被作为N-1次以下的多项式来表现。而私钥是四个N-1次以下的多项式对(f,g,F,G)。即,f,g,F,G都是N-1次以下的多项式。再有,在下文中,有时还有将四个多项式组成的组(f,g,F,G)捕捉为(f,g)、(F,G)的进一步的对,并表示为{(f,g),(F,G)}的情况。
然后,多项式运算对于上述参数N,使用X^N=1的关系式进行运算,以使运算结果始终为N-1次以下的多项式。例如,在N=5的情况下,多项式X^4+X^2+1和多项式X^3+X之积,在多项式和多项式之积为×,整数和多项式之积(或整数和整数之积)为·时,根据X^5=1的关系,进行运算,如(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)消息的散列值、范数(ノルム)及矢量间的距离在NTRUSign签名方式中,形成对于消息的散列值的签名。消息的散列值是N次的多项式的对,被视为与2·N维的矢量相同。再有,关于从消息求散列值的散列函数,非专利文献1十分详尽。
在NTRUSign签名方式中,在签名验证中使用矢量间的距离,在这样的距离的计算中使用范数(Centeredノルム中心范数)。以下,表示范数和矢量间的距离的定义。
将多项式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签名方式的密钥生成在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)是将多项式y的第i次的系数除以模q时的余数作为多项式x的第i次的系数,以使余数被限制在从0至q-1的范围的运算(0≤i≤N-1)。即,是将对多项式y的各系数进行了(mod q)运算、以限制在从0至(q-1)的范围的多项式,作为多项式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时的余数限制在从<-q/2>+1至<q/2>的范围的余数。即,在除以模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维点阵上,对应于消息m的散列值H(m)=(m1,m2)的最接近点阵点P通过上述的式s=f×B+F×b(mod q)和t=g×B+G×b(mod q)而被导出。即,最靠近(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被判定为非法而被拒绝。
专利文献1国际公开第03/050998号小册子非专利文献1岡本龍明、山本博資“現代暗号”(现代加密)、産業図書(1997年)非专利文献2J.Hoffstein,J.Pipher,and J.H.Silverman,“NTRUA ring based public key cryptosystem”,Lecture Notes in ComputerScience,1423,pp.267-288,Springer-Verlag,1988.
非专利文献3J.Hoffstein,J.Pipher and J.Silverman,“NSSAnNTRU Lattice-Based Signature Scheme,”Advances in Cryptoplogy-Eurocrypt’01,LNCS,Vo1.2045,pp.123-137,Springer-Verlag,2001非专利文献4J.Hoffstein,N.Graham,J.Pipher,J.Silverman andW.Whyte,“NTRUSignDigital Signatures Using the NTRU Lattice,”CT-RSA’03,LNCS,Vol.2612,pp.122-140,Springer-Verlag,2003非专利文献5S.Min,G.Yamamoto and K.Kim,“On thesecurity of NTRUSign signature scheme”,SCIS2004但是,在上述专利文献1和非专利文献4的NTRUSign签名方式中,存在可以伪造签名的问题。
即,在上述现有的NTRUSign签名方式中,即使在正规的签名s上加上范数0矢量,相加了该范数0矢量的签名s也可能被验证为正确的签名。
范数0矢量是范数为0的矢量,例如,所有的元素为1的矢量是范数0矢量。
全部的元素为1的矢量v0=(1,1,…,1)的范数,根据范数的定义,为||v0 ||=sqrt((1-μ)^2+(1-μ)^2+…+(1-μ)^2)。
这里,由于μ=(1/N)·(1+1+1+…+1)=1,所以||v0||=sqrt((1-1)^2+(1-1)^2+…+(1-1)^2)=0。
即,在签名s上相加范数0矢量而生成的伪造签名(s+v0)的范数与签名s的范数相等,所以(s+v0,t)和(m1,m2)的距离,与(s,t)和(m1,m2)之间距离相等。其结果,该伪造签名(s+v0)在签名验证时被验证为正确的签名。以下,将这样的范数0矢量的相加造成的对签名s的攻击称为‘范数0矢量伪造攻击’。再有,对于这样的攻击,在非专利文献5中被指出。

发明内容
因此,本发明鉴于这样的问题而完成,其目的在于提供能够防止范数0矢量伪造攻击的签名生成装置和签名验证装置。
为了实现上述目的,本发明的签名生成装置使用签名方式来生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名生成装置包括签名生成单元,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名变换单元,变换所述签名数据的形式,以使所述签名数据的范数不改变、而所述签名数据中包含的N个元素中某一个对象元素成为预先确定的值。
由此,由NTRUSign签名方式生成的签名数据的形式被变换为其范数不变化、对象元素成为预先确定的值的形式,所以取得该签名数据和消息数据的签名验证装置,对于该签名数据,可以进行利用NTRUSign签名方式的签名验证,并且,根据该签名数据的形式,可以容易地判定是否试图进行了范数0矢量伪造攻击。例如,在该签名数据的形式被变换,以使签名数据中包含的N个元素中的第一个元素为0的情况下,在对该签名数据试图范数0矢量伪造攻击时,该对象元素成为与0不同的值。因此,签名验证装置仅判别该签名数据的第一个元素是否为0,就可以简单地防止范数0矢量伪造攻击。其结果,可以提高数字签名的安全性。
此外,所述签名生成装置的特征在于,还包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,对所述N维排列的每个,变换所述各N维排列的形式,以使该N维排列的范数不改变、而该N维排列中包含的N个元素中的某一个对象元素成为预先确定的值,所述签名生成单元使用所述组{f,g,F,G}的各个元的形式以该元中包含的N个元素中的某一个对象元素成为预先确定的值的方式被调整的所述私钥、以及通过所述散列值生成单元而被变换了形式的散列值,来生成所述签名数据。
由此,表示散列值的两个N维排列和表示私钥的四个元f,g,F,G分别使包含于它们中的对象元素为预先确定的值,所以即使对它们相加范数0矢量,也可以容易地检测该加法行为,可以可靠地提高数字签名的安全性。
此外,本发明的签名验证装置使用签名方式来验证对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、 g以及作为f(modq)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名验证装置包括签名形式判定单元,判定所述签名数据中包含的N个元素中的某一个对象元素是否为预先确定的值,并在判定为不是预先确定的值时,将所述签名数据作为非法数据来处理;以及签名验证单元,使用所述公钥来验证作为所述环R的元的所述签名数据。
例如,在该签名数据的形式被变换,以使由NTRUSign签名方式生成的签名数据的范数不变化、对象元素为预先确定的值的情况下,签名验证装置对于该签名数据,可以进行利用NTRUSign签名方式的签名验证,并且,根据该签名数据的形式,可以容易地判定是否试图进行了范数0矢量伪造攻击。例如,在该签名数据的形式被变换,以使签名数据中包含的N个元素中的第一个元素为0的情况下,在试图对该签名数据进行范数0矢量伪造攻击时,该对象元素成为与0不同的值。因此,签名验证装置仅判别该签名数据的第一个元素是否为0,就可以简单地防止范数0矢量伪造攻击。其结果,可以提高签名数据的安全性。
此外,所述签名验证单元的特征在于,包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,并对所述N维排列的每个,变换所述各N维排列的形式,以使该N维排列的范数不改变、而该N维排列的元素中的某一个对象元素成为预先确定的值;签名矢量生成单元,将以所述元h中包含的N个元素中的某一个对象元素成为预先确定的值的方式而被调整形式的所述公钥和所述签名数据之积,作为所述环R的元t来计算,通过变换所述元t的形式,以使所述元t的范数不变化、而所述元t中包含的N个元素中的某一个对象元素成为预先确定的值,从而生成由形式被变换过的所述元t和签名数据构成的签名矢量;以及距离判定单元,基于所述签名矢量生成单元生成的签名矢量和通过所述散列值生成单元而被变换了形式的散列值之间的距离,验证所述签名数据。
由此,由于表示散列值的两个N维排列、表示公钥的元h、以及元t分别使包含于它们中的对象元素为预先确定的值,所以即使对它们相加范数0矢量,也可以容易地检测该加法行为,可以可靠地提高数字签名的安全性。
再有,本发明不仅可以作为这样的签名生成装置和签名验证装置来实现,也可以作为其方法或程序、存储该程序的存储媒体、集成电路来实现。
发明效果本发明的签名生成装置和签名验证装置具有可以防止范数0矢量伪造攻击的作用效果,其价值很大。


图1是用于说明签名的生成方法的说明图。
图2是用于说明签名的验证方法的说明图。
图3是表示本发明的实施方式的数字签名系统的结构的方框图。
图4是表示本发明的实施方式的签名生成部的结构的方框图。
图5是表示本发明的实施方式的签名生成部的动作的流程图。
图6是表示本发明的实施方式的签名生成装置的整体动作的流程图。
图7是表示本发明的实施方式的签名验证部的结构的方框图。
图8是表示本发明的实施方式的签名验证部的动作的流程图。
图9是表示本发明的实施方式的签名验证装置的整体动作的流程图。
图10是表示本发明的实施方式的变形例1的签名生成部的动作的流程图。
图11是表示本发明的实施方式的变形例1的签名验证部的动作的流程图。
图12是表示本发明的实施方式的变形例2的签名生成部的动作的流程图。
图13是表示本发明的实施方式的变形例2的签名验证部的动作的流程图。
标号说明100数字签名系统110签名生成装置111发送部112私钥存储部113公钥证书存储部114签名生成部115签名数据集生成部120签名验证装置
121接收部122CA公钥存储部123签名数据集存储部124签名验证部130通信线路1141散列值生成部1142签名矢量生成部1143签名变换部1241散列值生成部1242签名形式判定部1243签名矢量生成部1244距离判定部具体实施方式
(实施方式)本发明的实施方式的改进NTRUSign签名方式是改进了现有的NTRUSign签名方式的签名方式,是生成签名并进行验证以便能够防止范数0矢量伪造攻击的签名方式。
以下,详细地说明有关本实施方式的改进NTRUSign签名方式。
<改进NTRUSign签名方式>
(1)改进NTRUSign签名方式的参数在改进NTRUSign签名方式中,使用非负整数的参数N、q、df、dg、Normbound。这些参数的定义与现有的NTRUSign签名方式相同。以下,说明这些参数的含义。
(i)参数N改进的NTRUSign签名方式是通过多项式的运算进行签名生成及签名验证的数字签名方式。改进NTRUSign签名方式中处理的多项式的次数由上述参数N决定。
改进NTRUSign签名方式中处理的多项式是对于上述参数N的N-1次以下的整数系数多项式,例如N=5时,是X^4+X^3+1等的多项式。其中,‘X^a’意味着X的a次幂。此外,公钥h和签名s都被作为N-1次以下的多项式来表现。此外,私钥是四个N-1次以下的多项式对{f,g,F,G}。即,f、g、F、G都是N-1次以下的多项式。再有,以下,有时还有将四个多项式组成的组(f,g,F,G)捕捉为进一步的(f,g)、(F,G)的对,并表示为{(f,g),(F,G)}的情况。
然后,多项式运算对于上述参数N,使用X^N=1的关系式进行运算,以使运算结果始终为N-1次以下的多项式。例如,在N=5的情况下,多项式X^4+X^2+1和多项式X^3+X之积,在多项式和多项式之积为×,整数和多项式之积(或整数和整数之积)为·时,根据X^5=1的关系,进行运算,如(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)的例子。在改进NTRUSign签名方式中,也可以使用同样的参数例。
(2)消息的散列值、范数及矢量间的距离在改进NTRUSign签名方式中,也形成对于消息的散列值的签名。消息的散列值是N次的多项式的对,被视为与2·N维的矢量相同。再有,关于从消息求散列值的散列函数,非专利文献1十分详尽。
在改进NTRUSign签名方式中,与现有的NTRUSign签名方式同样,在签名验证中使用矢量间的距离,在这样的距离的计算中使用范数(Centeredノルム中心范数)。以下,表示范数和矢量间的距离的定义。
将多项式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签名方式的密钥生成在改进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)是将多项式y的第i次的系数除以模q、以使余数限制在从0至q-1的范围时的余数,作为多项式x的第i次的系数的运算(0≤i≤N-1)。即,是将多项式y的各系数进行了(mod q)运算、以限制在从0至(q-1)的范围的多项式,作为多项式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 …(式1)-g×m1+f×m2=a+q×b …(式2)其中,将A,a的系数取为除以模q时余数限制在从<-q/2>+1至<q/2>的范围的系数。即,在除以模q时的余数为从<q/2>至q-1的情况下,减去q,从而进行调整以限制在上述范围。这里,<x>表示在x以下的数之中最大的数。例如,<-1/2>=-1。
接着,通过下式,计算多项式s,t。
s=f×B+F×b(mod q) …(式3)t=g×B+G×b(mod q) …(式4)在本发明的实施方式中,进一步,在s=s_0+s_1·X+s_2·X^2+…+s_(N-1)·X^(N-1)时,使用该多项式s和与范数0矢量(1,1,…,1)对应的多项式v0,如以下的(式5)所示那样,计算签名s’。
s’=s-s_0×v0=0+(s_1-s_0)·X+(s_2-s_0)·X^2+…+(s_(N-1)-s_0)·X^(N-1) …(式5)即,在本实施方式中,从多项式s减去范数0矢量,以使多项式s的第一个元素(0次项的系数)为0,并将该减法结果的多项式s’作为签名。
换句话说,在本实施方式中,多项式s的范数不变化而变换该多项式s的形式,以使包含于该多项式s中的N个元素中第一个元素为0,其结果,生成多项式s’。
(5)改进NTRUSign签名方式的签名验证在改进NTRUSign签名方式的签名验证中,对签名s’是否是作为签名对象的消息m正确的签名进行验证。
具体地说,首先,检验签名s’的第一个元素(0次项的系数)是否为0。如果第一个元素不为0,则判定为签名s’为非法而拒绝该签名s’。即,通过这样的检验,能够防止范数0矢量伪造攻击。
另一方面,如果第一个元素为0,则计算作为对于消息m的散列值的2·N维的矢量(m1,m2)。然后,使用公钥h,通过以下的(式6),计算多项式t’。
t’=s’×h(mod q) …(式6)求2·N维矢量(s’,t’)和(m1,m2)之间的距离,检验是否低于Normbound。如果低于Normbound,则判定为签名s’正确从而受理该签名s’。如果在Normbound以上,则判定为签名s’非法而拒绝该签名s’。再有,在进行了2·N维矢量的距离是否低于Normbound的检验后,进行签名s’的第一个元素是否为0的检验也可以。
图3是表示本发明的实施方式的数字签名系统100的结构的方框图。
该数字签名系统100是使用上述改进NTRUSign签名方式生成并验证签名的系统,包括签名生成装置110、签名验证装置120、以及通信线路130。
签名生成装置110利用改进NTRUSign签名方式,生成包含有对于输入的消息m的签名s’等的签名数据集SS,并将该签名数据集SS通过通信线路130发送到签名验证装置120。此外,这样的签名生成装置110包括发送部111、私钥存储部112、公钥证书存储部113、签名生成部114、以及签名数据集生成部115。
签名验证装置120通过通信线路130从签名生成装置110接收签名数据集SS,并利用改进NTRUSign签名方式,对包含于该签名数据集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签名方式来生成。此外,设公钥证书CP被预先提供。再有,公钥证书CP也可以包含公钥KR和签名数据SP以外的其他数据。例如,也可以包含用户的识别符或公钥证书CP的期限等。
签名生成部114使用被存储于私钥存储部112中的私钥KS,生成用于表示对于消息m的签名s’的签名数据S。
图4是表示本实施方式的签名生成部114的结构的方框图。
签名生成部114包括散列值生成部1141、签名矢量生成部1142、以及签名变换部1143。
散列值生成部1141计算用于表示对于消息m的散列值H的2·N维的矢量(m1,m2)(m1及m2为N次多项式)。
签名矢量生成部1142使用私钥KS和散列值H,利用上述(式1)~(式4),生成多项式s。
签名变换部1143使用由签名矢量生成部1142生成的多项式s,利用上述(式5),生成多项式s’。即,在多项式s由s=s_0+s_1·X+s_2·X^2+…+s_(N-1)·X^(N-1)表示的情况下,签名变换部1143使用该多项式s和作为范数0矢量的v0=(1,1,…,1),计算s’=0+(s_1-s_0)·X+(s_2-s_0)·X^2+…+(s_(N-1)-s_0)·X^(N-1)。
即,本实施方式的签名变换部1143从多项式s减去范数0矢量,以使多项式s的第一个元素(0次项的系数)为0,并将作为该减法结果的多项式s’作为签名、即签名数据S而生成。
换句话说,签名变换部1143不改变多项式s的范数,而是变换该多项式s的形式,以使包含于该多项式s中的N个元素中第一个元素为0,并将其结果、多项式s’作为签名而生成。
签名数据集生成部115生成由消息m、消息m的签名数据S、公钥证书CP构成的签名数据集SS。
图5是表示签名生成部114的动作的流程图。
首先,签名生成部114的散列值生成部1141计算用于表示对于消息m的散列值H的2·N维的矢量(m1,m2)(步骤S100)。
接着,签名生成部114的签名矢量生成部1142计算满足上述(式1)和(式2)的多项式a,b,A,B(步骤S102)。而且,签名矢量生成部1142利用上述(式3),计算多项式s(步骤S104)。
然后,签名生成部114的签名变换部1143利用上述(式5),从该多项式s减去范数0矢量,将第一个元素(0次项的系数)为0的多项式s’作为签名即签名数据S而生成(步骤S106)。
图6是表示签名生成装置110的整体动作的流程图。
签名生成装置110的签名生成部114使用被存储于私钥存储部112中的私钥KS,生成对于消息m的签名数据S(步骤S120)。
接着,签名生成装置110的签名数据集生成部115生成由消息m、签名数据S、存储于公钥证书存储部113中的公钥证书CP构成的签名数据集SS(步骤S122)。
然后,签名生成装置110的发送部111通过通信线路130将签名数据集SS发送到签名验证装置120(步骤S124)。
以下,详细说明有关本实施方式的签名验证装置120。
签名验证装置120的接收部121通过通信线路130接收从签名生成装置110发送的签名数据集SS。
CA公钥存储部122存储用于验证被包含在签名数据集SS中的公钥证书CP的认证局CA的公钥KCP。
签名数据集存储部123存储由接收部121接收到的签名数据集SS。
签名验证部124对包含于签名数据集SS中的签名数据S、以及包含于公钥证书CP中的签名数据SP进行验证。
图7是表示本实施方式的签名验证部124的结构的方框图。
签名验证部124包括散列值生成部1241、签名形式判定部1242、签名矢量生成部1243、以及距离判定部1244。
散列值生成部1241计算作为签名对象数据的消息m和公钥KP的各自的散列值H(=(m1,m2))。
签名形式判定部1242判定作为改进NTRUSign签名方式的验证对象的签名数据S和签名数据SP的各自的第一个元素是否为0。这里,签名形式判定部1242在判定为签名数据S和签名数据SP的至少一方的第一个元素为0时,对于由接收部121接收到的签名数据集SS判断为试图范数0矢量伪造攻击。即,签名形式判定部1242判断为对签名数据集SS进行过伪造。因此,在本实施方式,通过进行这样的判定,能够防止范数0矢量伪造攻击。
签名矢量生成部1243使用由签名数据S和签名数据SP的每个所表示的多项式s’、以及由公钥KP或公钥KCP所表示的多项式h,通过上述(式6),计算多项式t’。即,签名矢量生成部1243利用t’=s’×h(mod q),计算对于签名数据S和签名数据SP的每个的多项式t’。
而且,签名矢量生成部1243对于签名数据S和签名数据SP的每个,将2·N维矢量(s’,t’)作为签名矢量SV而生成。
距离判定部1244对于消息m及签名数据S、和公钥KP及签名数据SP的每个,计算散列值H和签名矢量SV的距离,并判定该距离是否低于Normbound。即,如果对于消息m和签名数据S的、散列值和签名矢量SV的距离低于Normbound,则距离判定部1244判定为签名数据正确而受理该签名数据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。
以下,对于签名验证部124验证签名数据S的具体的动作,参照图8进行说明。
签名验证部124的签名形式判定部1242首先判定由签名数据S所表示的多项式s’的第一个元素(0次项的系数)是否为0(步骤S140)。这里,签名形式判定部1242在判定为不是0的情况下(步骤S140为“否”),将签名数据S作为非法从而拒绝该签名数据S(步骤S142)。另一方面,在通过签名形式判定部1242判定为是0的情况下(步骤S140为“是”),散列值生成部1241计算与该签名数据S对应的消息m的散列值H(=(m1,m2))(步骤S144)。
接着,签名矢量生成部1243使用由签名数据S所表示的多项式s’、以及由公钥KP表示的多项式h,利用上述(式6),计算多项式t’(步骤S146)。此时,签名矢量生成部1243对于签名数据S,将2·N维矢量(s’,t’)作为签名矢量SV而生成。
距离判定部1244计算由步骤S114算出的散列值H(=(m1,m2))、和由步骤S146生成的签名矢量SV之间的距离(步骤S148)。然后,距离判定部1244判定该距离是否低于Normbound(步骤S150)。距离判定部1244在判定为低于Normbound时(步骤S150为“是”),判定为签名数据S正确而受理该签名数据S(步骤S152)。另一方面,距离判定部1244在判定为不低于Normbound时(步骤S150为“否”),判断为签名数据S非法而拒绝该签名数据S(步骤S142)。
图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,而且,对于签名数据集SS中的消息m和其签名数据S,使用公钥KP验证签名数据S是否为消息m的正确的签名。即,签名验证部124判别签名数据S是否为正确的签名(步骤S176)。
这里,签名验证部124在判别为不是正确的签名时(步骤S176为“否”),拒绝该签名数据S(步骤S174),在判别为是正确的签名时(步骤S176为“是”),受理该签名数据S(步骤S178)。即,在步骤S178,签名验证部124识别为签名数据集SS是接受了合法的签名的数据。
这样,在以本实施方式的改进NTRUSign签名方式进行处理的数字签名系统100中,如上述(式5)所示,不使多项式s的范数变化,而变换该多项式s的形式,并将作为该变换结果的、第一个元素为0的形式的多项式s’作为签名来处理。因而,在该数字签名系统100中,在对表示多项式的签名数据进行验证时,通过判定该多项式的第一个元素是否为0,能够防止对该签名数据的范数0矢量伪造攻击。
即,在本实施方式中,签名验证装置120判别被作为签名处理的多项式是否为上述形式,如果不是上述形式,则将该多项式作为非法的签名来处理。
例如,签名生成装置110将第一个元素为0的s’=0+s_1·X+s_2·X^2+…+s_(N-1)·X^(N-1)作为签名而生成。对于该多项式s’相加范数0矢量v0(1,1,…,1)时,相加后的多项式sa为sa=s’+v0=1+(s_1+1)·X+(s_2+1)·X^2+…+(s_(N-1)+1)·X^(N-1)。即,多项式sa的第一个元素不为0,多项式的sa的形式未变成上述那样的形式。因此,由于多项式sa的形式不是上述那样的形式,所以签名验证装置120将该多项式sa作为非法签名来处理。
即,在现有技术中,在对被作为签名处理的多项式相加范数0矢量时,由于该多项式的范数、和被相加了范数0矢量的多项式的范数相等,所以相加了范数0矢量的多项式也会被作为合法的签名来处理。即,在现有技术中,受到范数0矢量伪造攻击。但是,在本实施方式中,如上述那样,签名生成时,将作为签名处理的多项式的形式变换为预先确定的形式,并在签名验证时,判别验证对象多项式的形式是否为该预先确定的形式。由此,即使签名生成时生成的多项式的范数和验证对象的多项式的范数相等,也能够容易地判别该验证对象的多项式是否是相加了范数0矢量的非法的签名。
换句话说,在本实施方式中,将现有的2·N维矢量(s,t)和(m1,m2)之间的距离为相等的多个多项式s,以预先规定的格式的一个多项式汇总地来表现,并将该格式的多项式作为签名来处理。例如,在将s’、s’+(1,1,…,1)、s’+(2,2,…,2)、s’+(3,3,…,3)、…分别作为多项式s时,对各多项式s计算的、2·N维矢量(s,t)和(m1,m2)之间的距离分别为相等。因此,在本实施方式中,将s’、s’+(1,1,…,1)、s’+(2,2,…,2)、s’+(3,3,…,3)、…例如以第一个元素为0的格式的多项式s’汇总来表现,并将该多项式s’作为签名来处理。因而,对于对多项式s’相加了范数0矢量的s’+(2,2,…,2)或s’+(3,3,…,3)等的多项式的上述距离、和对于多项式s’的上述距离相等。但是,这些多项式的格式与多项式s’的格式有所不同,所以这些多项式被判断为是非法签名。
这样,在本实施方式的数字签名系统100中,范数0矢量伪造攻击不成功,因而安全。
(变形例1)这里,说明有关上述实施方式的第1变形例。
在上述实施方式中,将第一个元素为0的多项式s’作为签名来处理,但在本变形例中,将最后的元素(N-1次项的系数)为0的多项式s’作为签名来处理。即,在上述实施方式中被作为签名处理的多项式的形式是第一个元素为0的形式,而在本变形例中被作为签名处理的多项式的形式是最后的元素为0的形式。
具体地说,本变形例的签名生成部114的签名变换部1143不是利用多项式s和上述(式5),来计算多项式s’,而是利用以下的(式7),计算多项式s’。
s’=s(mod L) …(式7)再有,设L=X^(N-1)+X^(N-2)+…+X+1。
图10是表示本变形例的签名生成部114的动作的流程图。
首先,签名生成部114的散列值生成部1141计算用于表示对消息m的散列值H的2·N维的矢量(m1,m2)(步骤S190)。
接着,签名生成部114的签名矢量生成部1142计算满足上述(式1)和(式2)的多项式a,b,A,B(步骤S192)。而且,签名矢量生成部1142利用上述(式3),计算多项式s(步骤S194)。
然后,签名生成部114的签名变换部1143利用上述(式7),计算该多项式s的以L(=X^(N-1)+X^(N-2)+…+X+1)为模的余数,并将最后的元素(N-1次项的系数)为0的多项式s’作为签名即签名数据S而生成(步骤S196)。
图11是表示本变形例的签名验证部124的动作的流程图。
签名验证部124通过使用公钥KP,对消息m和签名数据S进行图11所示的动作,由此验证该签名数据S。再有,签名验证部124在进行签名数据S的验证之前,通过使用公钥KCP,对公钥KP和签名数据S进行图11所示的动作,由此验证该签名数据SP。
以下,对于签名验证部124验证签名数据S的具体动作,参照图11进行说明。
签名验证部124的签名形式判定部1242首先判定由签名数据S表示的多项式s’的最后的元素(N-1次项的系数)是否为0(步骤S210)。这里,签名形式判定部1242在判定为不是0的情况下(步骤S210为“否”),将签名数据S作为非法而拒绝该签名数据S(步骤S212)。另一方面,在通过签名形式判定部1242判定为是0的情况下(步骤S210为“是”),散列值生成部1241计算与该签名数据S对应的消息m的散列值H(=(m1,m2))(步骤S214)。
接着,签名矢量生成部1243使用由签名数据S表示的多项式s’、和由公钥KP表示的多项式h,利用上述(式6),计算多项式t’(步骤S216)。此时,签名矢量生成部1243对于签名数据S,将2·N维矢量(s’,t’)作为签名矢量SV而生成。
距离判定部1244计算在步骤S214中算出的散列值H(=(m1,m2))和在步骤S216中生成的签名矢量SV之间的距离(步骤S218)。然后,距离判定部1244判定该距离是否低于Normbound(步骤S220)。距离判定部1244在判定为低于Normbound时(步骤S220为“是”),判断为签名数据S正确而受理该签名数据S(步骤S222)。另一方面,距离判定部1244判定为不低于Normbound时(步骤S220为“否”),判断为签名数据S非法而拒绝该签名数据S(步骤S212)。
这样,在本变形例中,如上述(式7)所示,不使多项式s的范数变化,而变换该多项式s的形式,并将作为该变换结果的最后的元素为0的形式的多项式s’作为签名来处理。因而,在该数字签名系统100中,在对表示多项式的签名数据进行验证时,通过判定该多项式的最后的元素是否为0,能够防止对该签名数据的范数0矢量伪造攻击。
(变形例2)这里,说明有关上述实施方式的第2变形例。
在本变形例中,与变形例1同样,将多项式s的形式变换而不使该多项式的范数变化,以使最后的元素(N-1次项的系数)为0,并且,对于消息m的散列值、以及签名和公钥之积的各自的形式也进行变换而不使各自的范数变化,以使最后的元素(N-1次项的系数)为0。
此外,在本变形例的数字签名系统100中,通过取代多项式对{f,g,F,G}而将多项式对{f”,g”,F”,G”}作为私钥,并取代多项式h而将多项式h”用作公钥KP,进行签名生成和签名验证。这里,设L=X^(N-1)+X^(N-2)+…+X+1时,f”,g”,F”,G”和h”利用下式表示。
f”=f(mod L)、g”=g(mod L)、F”=F(mod L)、G”=G(mod L)、h”=h(mod L)即,本变形例中处理的私钥的四个多项式分别以最后的元素(N-1次项的系数)为0的形式被整理,表示本变形例中处理的公钥的多项式也以最后的元素(N-1次项的系数)为0的形式被整理。再有,多项式f,g,F,G的各自的范数与多项式f”,g”,F”,G”各自的范数相等,多项式h的范数与多项式h”的范数相等。
图12是表示本变形例的签名生成部114的动作的流程图。
首先,签名生成部114的散列值生成部1141计算用于表示消息m的散列值H的2·N维的矢量(m1,m2)(步骤S230)。而且,散列值生成部1141利用m1”=m1(mod L)和m2”=m2(mod L)计算(m1”,m2”)(步骤S232)。即,散列值生成部1141通过将2·N维的矢量(m1,m2)的各多项式的形式进行变换而不使这些多项式的范数变化,以使最后的元素(N-1次项的系数)为0,从而生成矢量(m1”,m2”)。
接着,签名生成部114的签名矢量生成部1142计算满足以下的(式8)和(式9)的多项式a”,b”,A”,B”(步骤S234)。
G”×m1”-F”×m2”=A”+q×B” …(式8)-g”×m1”+f”×m2”=a”+q×b” …(式9)而且,签名矢量生成部1142利用以下的(式10),计算多项式s(步骤S236)。
S=f”×B”+F”×b”(mod q)…(式10)然后,签名生成部114的签名变换部1143利用以下的(式11),计算该多项式s的以L(=X^(N-1)+X^(N-2)+…+X+1)为模的余数,并将最后的元素(N-1次项的系数)为0的多项式s”作为签名即签名数据S而生成(步骤S238)。
s”=s(mod L) …(式11)图13是表示本变形例的签名验证部124的动作的流程图。
签名验证部124通过使用公钥KP,对消息m和签名数据S进行图13所示的动作,由此验证该签名数据S。再有,签名验证部124在进行签名数据S的验证之前,通过使用公钥KCP,对公钥KP和签名数据SP进行图13所示的动作,由此验证该签名数据SP。
以下,对于签名验证部124验证签名数据S的具体动作,参照图13进行说明。
签名验证部124的签名形式判定部1242首先判定由签名数据S表示的多项式s”的最后的元素(N-1次项的系数)是否为0(步骤S260)。这里,签名形式判定部1242在判定为不是0的情况下(步骤S260为“否”),将签名数据S作为非法而拒绝该签名数据S(步骤S262)。另一方面,在由签名形式判定部1242判定为是0的情况下(步骤S260为“是”),散列值生成部1241计算与该签名数据S对应的消息m的散列值H(=(m1,m2))(步骤S264)。而且,散列值生成部1241利用m1”=m1(mod L)和m2”=m2(mod L)计算(m1”,m2”)(步骤S266)。
接着,签名矢量生成部1243使用由签名数据S表示的多项式s”和由公钥KP表示的多项式h”,利用以下的(式12),计算多项式t”(步骤S268)。
t”=s”×h”(mod L) …(式12)此时,签名矢量生成部1243对于签名数据S,将2·N维矢量(s”,t”)作为签名矢量SV而生成。
距离判定部1244计算在步骤S266中算出的散列值H(=(m1”,m2”))和在步骤S216中生成的签名矢量SV之间的距离(步骤S270)。然后,距离判定部1244判定该距离是否低于Normbound(步骤S272)。距离判定部1244在判定为低于Normbound时(步骤S272为“是”),判断为签名数据S正确而受理该签名数据S(步骤S274)。另一方面,距离判定部1244在判定为不低于Normbound时(步骤S272为“否”),判断为签名数据S非法而拒绝该签名数据S(步骤S262)。
这样,在本变形例中,不仅将被作为签名处理的多项式s”的形式以最后的元素(N-1次项的系数)为0的形式来整理,而且还将表示私钥的四个多项式f”,g”,F”,G”、表示公钥的多项式h”、消息m的散列值(m1”,m2”)、以及签名s”和公钥h”之积的t”的各自的形式,以最后的元素(N-1次项的系数)为0的形式来整理。由此,能够提高对多项式s”,f”,g”,F”,G”,h”,m1”,m2”,t”各自的安全性。
此外,s”,f”,g”,F”,G”,h”,m1”,m2”,t”的每个的最后的元素被固定为0,所以不存储最后的元素而仅存储0~N-2次的项就可以。由此,可以削减存储所需的大小。
再有,在本变形例中,将多项式对{f”,g”,F”,G”}构成的私钥预先存储在私钥存储部112中,但也可以将多项式对{f,g,F,G}构成的私钥预先存储在私钥存储部112中。同样,在本变形例中,将多项式h”表示的公钥KP预先存储在公钥证书存储部113中,但也可以将多项式h表示的公钥KP预先存储在公钥证书存储部113中。这种情况下,签名生成部114将存储于私钥存储部112中的多项式对{f,g,F,G}变换为多项式对{f”,g”,F”,G”},并使用该多项式对{f”,g”,F”,G”}生成签名s”。此外,签名数据集生成部115将存储于公钥证书存储部113中的表示公钥KP的多项式h变换为多项式h”,并将该多项式h”表示的公钥KP包含在签名数据集SS中。
以上,使用上述实施方式和变形例对本发明进行了说明,但它们是本发明的一例,本发明不限定于这样的实施方式和变形例。即,本发明在不脱离本发明的本质的范围中可以各种各样的方式来实施。例如,以下的情况也被包含在本发明中。
(1)在上述实施方式和变形例中,在签名生成时,使多项式s’的第一个元素(0次项的系数)或最后的元素(N-1次项的系数)为0,在签名验证时,验证该元素是否为0,但也可以使该元素以外的元素为0。例如,也可以使第i(i为从2至N-1的任何一个整数)个元素为0。此外,也可以使该元素不为‘0’,而为j(j为从1至q-1的任何一个整数)。此外,也可以使该元素与包含在多项式m1中的任何一个元素相等。例如,在签名生成时,使多项式s’的第一个元素与多项式m1的第一个元素相等,而在签名验证时,验证多项式s’的第一个元素是否与多项式m1的第一个元素相等就可以。
(2)上述实施方式和变形例的签名生成装置110和签名验证装置120具体地是由微处理器、ROM(Read Only Memory只读存储器)、RAM(Random Access Memory随机存取存储器)、硬盘单元、显示单元、键盘、以及鼠标等构成的计算机系统。在上述RAM或硬盘单元中,存储有计算机程序。通过上述微处理器根据上述计算机程序而动作,签名生成装置110和签名验证装置120实现其功能。这里,计算机程序是为了实现规定的功能,将表示对计算机的指令的命令码多个组合而构成的。
(3)构成上述实施方式和变形例的签名生成装置110及签名验证装置120的结构要素的一部分或全部,也可以由一个系统LSI(LargeScale Integration大规模集成电路)构成。系统LSI是将多个构成部集成在一个芯片上而制造出来的超多功能LSI,具体地说,是包含微处理器、ROM、RAM等所构成的计算机系统。在上述RAM中,存储有计算机程序。通过上述微处理器根据上述计算机程序而动作,系统LSI实现其功能。
(4)构成上述实施方式和变形例的签名生成装置110及签名验证装置120的结构要素的一部分或全部,也可以由在签名生成装置110或签名验证装置120上可拆装的IC(Integrated Circuit集成电路)卡、或单体的模块构成。上述IC卡或者上述模块是由微处理器、ROM、RAM等构成的计算机系统。上述IC卡或上述模块也可以包含上述超多功能LSI。通过微处理器根据计算机程序而动作,上述IC卡或上述模块实现其功能。这种IC卡或这种模块也可以具有防篡改性。
(5)本发明不仅作为上述实施方式和变形例的数字签名系统100中的该系统或装置来实现,也可以作为处理方法来实现。此外,还可以作为使计算机执行这种处理方法的动作的计算机程序来实现,也可以作为上述计算机程序构成的数字信号来实现。
(6)此外,本发明也可以作为将上述计算机程序或上述数字信号记录在计算机可读取的记录媒体、例如软盘、硬盘、CD-ROM(CompactDisk Read Only Memory紧致盘只读存储器)、MO(Magneto-Opticaldisk磁光盘)、DVD(Digital Versatile Disk数字通用盘)、DVD-ROM、DVD-RAM、BD(Blu-ray Disc蓝光光盘)、半导体存储器等中来实现。此外,也可以作为记录于这些记录媒体中的所述数字信号来实现。
(7)此外,本发明也可以作为将上述计算机程序或上述数字信号经由电气通信线路、无线或有线通信线路、以因特网为代表的网络、或数据广播等传送来实现。
(8)此外,本发明也可以作为包括了微处理器和存储器的计算机系统来实现。这种情况下,上述存储器预先存储上述计算机程序,上述微处理器根据上述计算机程序而动作。
(9)此外,本发明也可以通过将上述计算机程序或上述数字信号记录在上述记录媒体中并转送,或将上述计算机程序或上述数字信号经由上述网络等而转送,从而由独立的其他计算机系统来实现。
(10)此外,本发明也可以将上述实施方式和变形例分别组合来实现。
产业上的可利用性本发明的签名生成装置和签名验证装置具有能够防止NTRUSign签名方式等中的范数0矢量伪造攻击的效果,例如能够适用于数字签名系统等。
权利要求
1.一种签名生成装置,使用签名方式来生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名生成装置包括签名生成单元,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名变换单元,变换所述签名数据的形式,以使所述签名数据的范数不改变、而所述签名数据中包含的N个元素中某一个对象元素成为预先确定的值。
2.如权利要求1所述的签名生成装置,其特征在于,所述签名变换单元变换所述签名数据的形式,以使所述对象元素成为从0至q-1的某一个整数。
3.如权利要求1所述的签名生成装置,其特征在于,所述签名变换单元变换所述签名数据的形式,以使所述对象元素成为0。
4.如权利要求1所述的签名生成装置,其特征在于,所述签名生成装置还包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,所述签名变换单元变换所述签名数据形式,以使所述对象元素成为表示所述散列值的两个N维排列中包含的2·N个元素中的某一个的值,其中,“·”表示整数的乘法运算。
5.如权利要求1所述的签名生成装置,其特征在于,所述签名变换单元变换所述签名数据的形式,以使与由所述签名数据表示的多项式的0次项对应的元素为预先确定的值。
6.如权利要求1所述的签名生成装置,其特征在于,所述签名变换单元通过将范数0矢量从所述签名数据中减去,由此变换所述签名数据的形式,其中所述范数0矢量是范数为0的矢量。
7.如权利要求6所述的签名生成装置,其特征在于,所述签名变换单元从所述签名数据中减去作为由全部相同值的元素组成的N维排列而构成的所述范数0矢量。
8.如权利要求1所述的签名生成装置,其特征在于,所述签名生成装置还包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,对所述N维排列的每个,变换所述各N维排列的形式,以使该N维排列的范数不改变、而该N维排列中包含的N个元素中的某一个对象元素成为预先确定的值,所述签名生成单元使用所述组{f,g,F,G}的各个元的形式以该元中包含的N个元素中的某一个对象元素成为预先确定的值的方式被调整的所述私钥、以及通过所述散列值生成单元被变换了形式的散列值,来生成所述签名数据。
9.一种签名验证装置,使用签名方式来验证对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名验证装置包括签名形式判定单元,判定所述签名数据中包含的N个元素中的某一个对象元素是否为预先确定的值,并在判定为不是预先确定的值时,将所述签名数据作为非法数据来处理;以及签名验证单元,使用所述公钥来验证作为所述环R的元的所述签名数据。
10.如权利要求9所述的签名验证装置,其特征在于,所述签名形式判定单元判定所述对象元素是否是从0至q-1的多个整数中预先选择出的一个整数。
11.如权利要求9所述的签名验证装置,其特征在于,所述签名形式判定单元判定所述对象元素是否为0。
12.如权利要求9所述的签名验证装置,其特征在于,所述签名生成装置还包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,所述签名形式判定单元判定所述对象元素的值是否为表示所述散列值的两个N维排列中包含的2·N个元素中的某一个的值,其中,“·”表示整数的乘法运算。
13.如权利要求9所述的签名验证装置,其特征在于,所述签名形式判定单元判定与由所述签名数据表示的多项式的0次项对应的元素是否为预先确定的值。
14.如权利要求9所述的签名验证装置,其特征在于,所述签名验证单元还包括散列值生成单元,生成用于表示对于所述消息数据的散列值的两个N维排列,并对所述N维排列的每个,变换所述各N维排列的形式,以使该N维排列的范数不改变、而该N维排列的元素中的某一个对象元素成为预先确定的值;签名矢量生成单元,将以所述元h中包含的N个元素中的某一个对象元素成为预先确定的值的方式被调整形式的所述公钥和所述签名数据之积,作为所述环R的元t来计算,通过变换所述元t的形式,以使所述元t的范数不变化、而所述元t中包含的N个元素中的某一个对象元素成为预先确定的值,从而生成由形式被变换过的所述元t和签名数据构成的签名矢量;以及距离判定单元,基于所述签名矢量生成单元生成的签名矢量和通过所述散列值生成单元而被变换了形式的散列值之间的距离,验证所述签名数据。
15.一种签名生成方法,使用签名方式来生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名生成方法包括所述签名生成步骤;以及签名变换步骤,变换所述签名数据的形式,以使所述签名数据的范数不改变、而所述签名数据中包含的N个元素中的某一个对象元素成为预先确定的值。
16.一种签名验证方法,使用签名方式来验证对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述签名验证方法包括签名形式判定步骤,判定所述签名数据中包含的N个元素中的某一个对象元素是否为预先确定的值,并在判定为不是预先确定的值时,将所述签名数据作为非法数据来处理;以及所述签名验证步骤。
17.一种程序,用于使用签名方式生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述程序使计算机执行所述签名生成步骤;以及签名变换步骤,变换所述签名数据的形式,以使所述签名数据的范数不改变、而所述签名数据中包含的N个元素中的某一个对象元素成为预先确定的值。
18.一种程序,用于使用签名方式生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述程序使计算机执行签名形式判定步骤,判定所述签名数据中包含的N个元素中的某一个对象元素是否为预先确定的值,并在判定为不是预先确定的值时,将所述签名数据作为非法数据来处理;以及所述签名验证步骤。
19.一种集成电路,使用签名方式来生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述集成电路包括签名生成单元,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名变换单元,变换所述签名数据的形式,以使所述签名数据的范数不改变、而所述签名数据中包含的N个元素中的某一个对象元素成为预先确定的值。
20.一种集成电路,使用签名方式来生成对于消息数据的签名数据,其特征在于,所述签名方式包括密钥生成步骤,对于作为定义了加法、减法、乘法、以及表示元的大小的范数的N维排列的集合的环R、和正整数q,生成所述环R的元f、g以及作为f(mod q)的倒数的元Fq,并生成元h作为公钥,该元h与所述元g和所述元Fq之积在模为q时同余,并生成满足f×G-g×F=q的元F、G,将所述四个元f、g、F、G构成的组{f、g、F、G}作为私钥而生成,其中,f(mod q)表示将f除以q所得的余数,“×”表示环R的乘法运算;签名生成步骤,使用所述私钥生成对于所述消息数据的、作为所述环R的元的所述签名数据;以及签名验证步骤,使用所述公钥验证所述签名数据,所述集成电路包括签名形式判定单元,判定所述签名数据中包含的N个元素中的某一个对象元素是否为预先确定的值,并在判定为不是预先确定的值时,将所述签名数据作为非法数据来处理;以及签名验证单元,使用所述公钥来验证作为所述环R的元的所述签名数据。
全文摘要
提供一种可防止范数0矢量伪造攻击的签名生成装置和签名验证装置。签名生成装置(110)包括签名生成单元(114),使用被存储在私钥存储单元(112)中的私钥生成对于消息(m)的签名数据(S),并变换该签名数据(S)的形式,以不改变该签名数据(S)的范数,使签名数据(S)中包含的N个元素中一个元素为0。签名验证装置(120)包括签名验证单元(124),判定签名数据(S)中包含的N个元素中一个元素是否为0,并在判定为不是0时,将签名数据作为非法数据来处理。
文档编号H04L9/32GK1954547SQ20068000016
公开日2007年4月25日 申请日期2006年3月14日 优先权日2005年4月18日
发明者布田裕一, 长谷川真吾, 矶边秀司, 大森基司, 静谷启树 申请人:松下电器产业株式会社, 国立大学法人东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1