署名生成装置、署名验证装置、它们的方法及程序的制作方法

文档序号:7940802阅读:214来源:国知局

专利名称::署名生成装置、署名验证装置、它们的方法及程序的制作方法
技术领域
:本发明涉及信息安全性技术的应用技术,特别涉及能够从署名复原消息的消息复原署名。
背景技术
:作为消息复原署名的以往技术,有在非专利文献1中示出的技术。该方式是在随机预言模型(randomOraclemodel)中证明了安全性的方式。以下,示出该方式的概要。在该方式中,设为消息仏{0,1”2函数&:{0,l}k2—{0,l}kl函数卩2:{0,1”1—{0,1”2函数!!⑷“广—⑷“”E在有限域Fq上定义的椭圆曲线P对椭圆曲线E上的点R满足pR=0(0是无限远点)的质数G1椭圆曲线E上的位数p的部分集合的点wGZ/pZ秘密密钥xGZ/pZ公开密钥(Fq,E,Gl,Y)(Y=-xGl(GE))。另外,{0,1}S表示2进5位的比特数据,{0,1}S—{0,1}E表示从2进5位的比特数据到2进£位的比特数据的映射的函数。〈署名生成(signaturegeneration)>如下进行署名生成。其中,Rx表示点ReE的x坐标,⑴表示异或运算符。m,=(m)|(F2(F:(m))(+)m)......(1)Rx=(wGl)xr=R(+)m'......(2)c=H(r)z=w+cxmodp署名o=(r,z)。〈署名验证〉如下进行署名验证。其中,[m’]kl表示m’的开头kl比特,[m’]k2表示m’的余数的k2比特。m,=r(+)(zGl+H(r)Y)xm=[m,]k2(+)F2([m,]kl)若[m,]kl=&(m),则验证合格。非专利文献1:MasayukiAbe,TatsuakiOkamoto,"ASignatureSchemewithMessageRecoveryasSecureasDiscreteLogarithm,,,ASIACRYPT1999,pp.378-3898
发明内容发明要解决的课题但是,在非专利文献1的方式中,式⑴的(FjFiOii))和式⑵的Rx的比特长度为固定长度,消息m的比特长度也必须是固定长度。因此,即使在消息m的长度比固定长度短的情况下,也不能相应地缩短署名0的一部分r的比特长度,没有效率。此外,在消息m的比特长度比固定长度长的情况下,只能将消息m的一部分代入到式(1)中,不能构成将消息m的全部比特设为对象的消息复原署名。用于解决课题的手段本发明的署名生成装置如下进行署名生成。首先,在署名生成装置的存储单元中存储整数的秘密密钥X,进而存储M比特的恢复消息m,e。e{0,1}M。其中,恢复消息m,e。成为署名对象的至少一部分。并且,署名生成装置生成整数的任意值k,并计算将位数q的循环群设为G,将该循环群G的生成源(generator)设为g的情况下的R=gkeG,并输出该运算结果R。另外,“gkgG”意味着对g执行k次构成循环群G的运算(详细的在后面叙述)。接着,署名生成装置将对输入值输出L比特的散列值的散列函数氏{0,1}*—{0,1}1作用于依赖运算结果R和恢复消息的值a,并输出作为其运算结果的L比特的散列值h=Hi(a)G{0,1}1。另外,L是与署名验证装置共享的正整数。此外,“将函数e作用于5”是指“将5或用于确定5的值代入函数e”。接着,署名生成装置将输出比特长度根据恢复消息的比特长度M而决定为M比特的散列函数h2:{O,I;T—{0,1}M作用于依赖运算结果R和散列值h的值0,并输出作为其运算结果的M比特的散列值u=H2(0)G{0,1}m。此外,署名生成装置计算恢复消息和散列值u的异或w=mre。(+)ue{0,1}M((+)是异或运算符),并输出该异或值w。此外,署名生成装置计算依赖将散列值he{0,1}1配置在第1比特位置上,将异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值h|we{0,1}L+M的值r,该值r可复原散列值h和异或值w,并输出该值r。另外,第1比特位置不一定需要连续的L比特的位置,也可以是离散地配置的共L比特的位置。同样地,第2比特位置不一定需要是连续的M比特的位置,也可以是离散地配置的共M比特的位置。其中,在署名生成装置和署名验证装置中预先统一关于“第1比特位置”和“第2比特位置”是哪个比特位置。接着,署名生成装置将对输入值输出整数的散列函数H3{0,1}*—Z(整数)作用于依赖值r的值Y,并输出作为其运算结果的散列值t=H3(y)eZ。之后,署名生成装置计算s=k-txeZ,并输出署名o=(r,s)。本发明的署名验证装置如下进行署名验证。另外,将署名验证装置获取的署名表现为o’=(r’,s’)。此外,在署名验证装置的存储单元中存储有署名生成装置的公开密钥(publickey)y=gxeG。首先,在署名验证装置中输入署名o’=(r’,s’),该署名o’=(r’,s’)存储在存储单元中。此外,对应于署名0,的恢复消息nw/的比特长度M’存储在存储单元中。另外,关于署名验证装置获取比特长度M’的值的方法在后面叙述。然后,署名验证装置将对输入值输出整数的散列函数H3:{0,1}*—Z(整数),作用于依赖署名o,具有的r’的值Y’,并输出作为其运算结果的散列值t’=H3(y')ez。此外,署名验证装置进行R’=gs’*yt’eG的运算,并输出该运算结果R’。另外,“广*<’eG”意味着,对g进行s’次构成循环群G的运算,对y进行t’次该运算,并对它们的各个运算结果进行该运算的运算(详细的在后面叙述)。接着,署名验证装置将输出比特长度根据恢复消息mM。’的比特长度M,而决定的散列函数H2:{0,i;r—{0,1}M’作用于值3,该值3依赖运算结果R’和r’的第1比特位置的L比特的值h’G{0,1}1,并输出作为其运算结果的M’比特的散列值u’=H2(^,)G{0,1}M’。此外,署名验证装置计算依赖值r’的第2比特位置的M’比特的值的值w’G{0,1}M’和散列值u’的异或w’(+)u’,并将其运算结果作为nw’G{0,1}M’而输出。此外,署名验证装置将对输入值输出L比特的散列值的散列函数氏{0,1}*—{0,1}1,作用于依赖运算结果R’和算出的恢复消息mre。’的值a’,并输出作为其运算结果的L比特的散列值氏…’)G{0,1}L。然后,署名验证装置比较L比特的值h’和散列值氏…’),并以h’作为条件,输出验证成功的信息。另外,在“依赖£和8的值”中,除了包括该值仅依赖£和S的情况,还包括依赖£和8以及其他信息的情况。此外,在“依赖£的值”中,除了包括该值仅依赖£的情况,还包括依赖£和其他信息的情况。其中,需要在署名生成装置中使用的值a、0、Y的构成方法与在署名验证装置中使用的值a’、3’、Y’的构成方法分别相同(详细的在后面叙述)。这里,在本发明中,使用输出比特长度根据恢复消息的比特长度而变化的散列函数,并对处理方法下工夫,从而即使恢复消息的比特长度变化,也能够使成为各个异或运算的对象的两个被运算符的比特长度始终相同。由此,在恢复消息的比特长度短的情况下,能够相应地缩短在各个运算过程中的运算比特数和署名o的比特数。此外,即使恢复消息的比特长度变长,也能够生成将恢复消息11^。的全部比特设为对象的消息复原署名。此外,在本发明中,若在署名生成装置中算出的散列值h、u与在署名生成装置中算出的散列值h’、u’不分别具有匹配性,则署名验证不能成功,所以与仅通过散列值h与散列值h’的匹配性来进行署名验证的情况相比,能够保证高的安全性。另外,在本发明中,与以往不同,可以将消息的全部比特设为消息复原署名的对象(m=mrec)。此外,也可以不将消息m的全部比特设为消息复原署名的对象。在不将消息m的全部比特设为消息复原署名的对象的情况下,M比特的恢复消息111_成为消息复原署名的对象,N比特的清零消息成为不是消息复原署名的普通的署名对象。此时,优选地,署名生成装置还将N比特的清零消息!!^G{0,1}N存储在存储单元中,将散列函数H3:{0,1}*-Z作用于依赖值r和清零消息melr的值、来计算t=H3(Y)曰2,计算8=1^£2之后输出署名0=(r,s)和清零消息melr。在署名验证装置中,输入署名0,和清零消息mel/。署名验证装置将散列函数H3:{0,i;r—Z作用于依赖署名o,具有的r’和清零消息的值Y’,并输出作为其运算结果的散列值t’=H3(Y')GZd这样,能够避免直到不需要将消息的全部比特设为消息复原署名的对象的情况为止,将消息的全部比特设为消息复原署名的对象,在各个运算过程中的运算比特数变长的情况。即,能够实现可灵活地应对各种比特长度的消息和各种用途的消息复原署名。发明效果在本发明中,能够实现可灵活地应对各种比特长度的消息的消息复原署名。图1是表示了第1实施方式的署名系统的整体结构的概念图。图2是例示了第1实施方式中的署名生成装置的硬件结构的方框图。图3是例示了第1实施方式中的署名生成装置的功能结构的方框图。图4A是表示了散列运算单元的功能结构的细节的图,图4B是表示了散列运算单元的功能结构的细节的图。图5是例示了第1实施方式的署名验证装置的功能结构的方框图。图6是用于说明第1实施方式的署名生成处理的流程图。图7A是用于说明步骤S15的处理的例子的流程图,图7B是用于说明步骤S17的处理的例子的流程图。图8是用于说明第1实施方式的署名验证处理的流程图。图9A是表示了“第1比特位置”和“第2比特位置”的设定例子的图,图9B是表示了“第1比特位置”和“第2比特位置”的设定例子的图,图9C是表示了“第1比特位置”和“第2比特位置”的设定例子的图。图10是例示了第2实施方式中的署名生成装置的功能结构的方框图。图11是例示了第2实施方式的署名验证装置的功能结构的方框图。图12是用于说明第2实施方式的署名生成处理的流程图。图13是用于说明第2实施方式的署名验证处理的流程图。图14是例示了第3实施方式中的署名生成装置的功能结构的方框图。图15是例示了第3实施方式的署名验证装置的功能结构的方框图。图16是用于说明第3实施方式的署名生成处理的流程图。图17是用于说明第3实施方式的署名验证处理的流程图。图18是例示了第4实施方式中的署名生成装置的功能结构的方框图。图19是例示了第4实施方式的署名验证装置的功能结构的方框图。图20是用于说明第4实施方式的署名生成处理的流程图。图21是用于说明第4实施方式的署名验证处理的流程图。标号说明1署名系统10、110、210、310署名生成装置20、120、220、320署名验证装置具体实施例方式以下,参照用于实施本发明的优选方式。第1实施方式首先,说明本发明的第1实施方式。<整体结构>图1是表示了第1实施方式的署名系统1的整体结构的概念图。如图1所示那样,本方式的署名系统1包括进行署名生成的署名生成装置10、进行署名验证的署名验证装置20及公开署名生成装置10的效果密钥的公开密钥服务器装置30,且相互通过网络40而可通信地连接。另外,署名生成装置10、署名验证装置20及公开密钥服务器装置30是分别在公知的计算机中读入规定的程序而构成的装置。<署名生成装置10的结构>接着,说明署名生成装置10的结构。硬件结构图2是例示了第1实施方式中的署名生成装置10的硬件结构的方框图。如图2所例示那样,该例子中的署名生成装置10包括CPU(CentralPr0CeSSingUnit,中央处理器)11、输入单元12、输出单元13、辅助存储装置14、ROM(ReadOnlyMemory,只读存储器)15、RAM(RandomAccessMemory,随机存取存储器)16、总线17以及通信单元18。该例子中的CPU11包括控制单元11a、运算单元lib以及寄存器11c,根据读入到寄存器11c中的各种程序来执行各种运算处理。此外,在该例子中的输入单元12是输入数据的输入端口、键盘、鼠标等,输出单元13是输出数据的输出端口、至外部记录介质的数据存储装置、印刷装置、显示器等。辅助存储装置14例如是硬盘、M0(Magneto-Opticaldisc,磁光盘)、半导体存储器等,其包括存储了各种程序的程序区域14a和存储有各种数据的数据区域14b。此外,RAM16例如是SRAM(StaticRandomAccessMemory,静态随机存取存储器)、DRAM(DynamicRandomAccessMemory,动态随机存取存储器)灯,其包括写入上述的程序的程序区域16a和写入各种数据的数据区域16b。此外,通信单元18是网卡等。此外,在该例子的总线17连接CPU11、输入单元12、输出单元13、辅助存储装置14、R0M15、PAM16以及通信单元18,使得可进行数据的交换。硬件和程序的协作CPU11(图2)根据读入的OS^peratingSystem,操作系统)程序,将存储在辅助存储装置14的程序区域14a中的程序写入RAM16的程序区域16a中。同样地,CPU11将存储在辅助存储装置14的数据区域14b中的各种数据写入RAM16的数据区域16b中。并且,写入了该程序和数据的RAM16上的地址被存储在CPU11的寄存器11c中。CPU11的控制单元11a依次读出存储在寄存器11c中的这些地址,并从读出的地址所示的RAM16上的区域中读出程序和数据,并使运算单元lib依次执行该程序所示的运算,并将其运算结果存储在寄存器11c中。另外,各程序可以作为单一的程序串来记载,此外,至少一部分程序也可以作为单独的模块而存储在库(library)中。图3是例示了通过在CPU11中读入程序而构成的第1实施方式中的署名生成装置10的功能结构的方框图。另外,在图3中的箭头表示数据的流向,且省略了输入输出到暂时存储器10t和控制单元10s的数据的流向。如图3所示那样,本方式的署名生成装置10包括存储单元10a、秘密密钥生成单元10b、公开密钥生成单元10c、输入单元10d、消息分割单元10e、任意值生成单元10f、群运算单元10g、散列运算单元10h、10i、10j、10p、异或运算单元10h、10n、比特结合单元10m、整数运算单元10q、通信单元10r、控制单元10s、暂时存储器10t。另外,比特结合单元10m和异或运算单元10n构成r值运算单元10z。此外,图4A是表示了散列运算单元10h的功能结构的细节的图,图4B是表示了散列运算单元10j的功能结构的细节的图。如图4所示那样,散列运算单元10h包括散列次数运算单元10ha、部分散列运算单元10hb、比特结合单元10hc、比特删除单元10hd。此外,散列运算单元10j包括散列次数运算单元10ja、部分散列运算单元10jb、比特结合单元10jc、比特删除单元10jd。另外,存储单元10a和暂时存储器10t例如相当于在图2中记载的寄存器11c、辅助存储装置14、RAM16、或者结合了它们的存储器区域。此外,秘密密钥生成单元10b、公开密钥生成单元10c、消息分割单元10e、任意值生成单元10f、群运算单元10g、散列运算单元10h、10i、10j、10p、异或运算单元10h、10n、比特结合单元10m、整数运算单元10q、控制单元10s是用于实现各自的处理的程序被读入到CPU11而构成的单元。此外,输入单元10d是在读入规定的程序的CPU11的控制之下驱动的输入单元12,通信单元10r是读入规定的程序的CPU11的控制之下驱动的通信单元18。此外,署名生成装置10在控制单元10s的控制之下执行各种处理。此外,只要没有特别明示,运算过程的各个数据逐一地读写到暂时存储器10t中。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名生成装置10的功能的程序。<署名验证装置20的结构>接着,说明署名验证装置20的结构。硬件结构与图2所示的署名生成装置10的硬件结构相同。硬件和程序的协作署名验证装置20也通过在图2所示那样的计算机中读入规定的程序而构成。图5是例示了这样构成的第1实施方式的署名验证装置20的功能结构的方框图。另外,在图5中的箭头表示数据的流向,且省略了输入输出到暂时存储器20n和控制单元20p的数据的流向。如图5所示那样,本方式的署名验证装置20包括存储单元20a、通信单元20b、比特长度提取单元20c、散列运算单元20(1、20厂201、2(^、群运算单元20e、异或运算单元20g、比特提取单元20h、异或运算单元20j、比较单元201、输出单元20m、控制单元20n、暂时存储器20p。另外,存储单元20a和暂时存储器20p例如相当于计算机具有的寄存器、辅助存储装置、RAM、或者结合了它们的存储器区域。此外,比特长度提取单元20c、散列运算单元20d、20f、20i、20k、群运算单元20e、异或运算单元20g、比特提取单元20h、异或运算单元20j、比较单元201、控制单元20n是用于实现各自的处理的程序被读入到CPU而构成的单元。此外,输出单元20m和通信单元20b是读入规定的程序的CPU的控制之下驱动的单元。此外,署名验证装置20在控制单元20n的控制之下执行各种处理。此外,只要没有特别明示,运算过程的各个数据逐一地读写到暂时存储器20p中。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名验证装置20的功能的程序。<处理>接着,说明本方式的处理。前处理首先,决定难以对在署名系统1中使用的位数q的离散对数问题进行求解的循环群G与其生成源gGG。作为这样的循环群G,例如可使用由在椭圆曲线上的有理点而成的群或有限域的乘法群等。另外,在使用由在椭圆曲线上的有理点而成的群的情况下,生成源g为椭圆曲线上的点g=(gl,&),在使用有限域的乘法群的情况下,生成源g为2以上的整数。此外,用于在计算机上实现由在椭圆曲线上的有理点而成的群的具体方法中,存在各种方法(例如,"N.Koblitz.EllipticCurveCryptosystems.Math.Comp.,Vol.48,No.17,pp.203-209,1987.”“VictorS.Miller.UseofEllipticCurvesinCryptography.InAdvancesinCryptology-CRYPTO'85,Vol.218ofLectureNotesinComputerScience,pp.417-426.Springer,1986.”),实际上,存在由椭圆曲线上的有理点而成的群所构成,且可安装在计算机上的各种加密方式。此外,从安全性方面考虑,期望位数q是质数,但若难以进行q的质数分解,则q不是质数也没有关系。此外,决定在署名系统1中使用的比特长度参数LeZ>^(大于0的整数)。此外,决定输出比特长度根据后述的恢复消息nw的比特长度M而决定为L+M比特的输出为可变长度的散列函数氏{0,1}*—{0,1}L+M,并决定输出比特长度根据恢复消息mre。的比特长度M而决定为M比特的输出为可变长度的散列函数H2:{0,i;r—{0,1}m。另外,关于这些散列函数的处理方法在后面叙述。此外,决定对输入值输出L比特的散列值的散列函数氏{0,1}*—{0,1}1及对输入值输(以q为模的完全余数系统(acompletesystemofresiduesmoduloq))的元素(element)的散列函数H3:{0,1}*—Zq。散列函数氏可与散列函数HQ和散列函数H2同样地构成,散列函数H3可通过对SHA-1等的散列值进行以q为模的余数运算而构成。用于确定如上决定的循环群G和各个散列函数氏氏的信息,例如写入到构成署名生成装置10和署名验证装置20的各个程序中,署名生成装置10和署名验证装置20可进行通过决定的循环群G的运算、各个散列函数氏H3的运算。此外,比特长度参数LGZ>Q、位数q、生成源gGG存储在署名生成装置10的存储单元10a和署名验证装置20的存储单元20a中。密钥生成处理接着,说明署名生成装置10进行的密钥生成处理。首先,署名生成装置10的秘密密钥生成单元10b生成任意的秘密密钥XGZq。另外,该秘密密钥x的生成可以将拟随机数映射到Zq而进行,也可以由署名生成者任意决定的值为基础而进行。生成的秘密密钥x安全地存储在署名生成装置10的存储单元10a中。即,署名生成装置10的外部的装置不能从存储单元10a取得秘密密钥X。接着,署名生成装置10的公开密钥生成单元10c从存储单元10a读入秘密密钥x和循环群G的生成源gGG,并进行由循环群G所定义的运算y=gxGG......(3)而生成对应于秘密密钥x的公开密钥yGG,并存储在存储单元10a中。另外,例如,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,式(3)的右边意味着将作为椭圆曲线E上的点的生成源g=(gl,g2)在椭圆曲线E上进行χ倍的运算(χ·geE),公开密钥y成为椭圆曲线E上的点。另外,作为在计算机上执行椭圆曲线上的标量倍数运算的具体方法,例如可例示由仿射(affine)坐标或投影坐标来表示椭圆曲线上的点,使用二进展开法或移动窗法等的运算方法(例如,参照参考文献1“47>·F·y,>、力κ-A·七口y〉、于^夕工;·Ρ·ζ—卜=著「楕円曲腺暗号」、出版=匕。了y二夕3>、ISBN4-89471-431-0”等)。此外,例如在循环群G为有限域的乘法群的情况下,式⑶的右边意味着gxmodp(其中,g是2以上的整数且p=2q+l)的运算,公开密钥y成为标量值。生成的公开密钥y通过网络40,从通信单元IOr发送到公开密钥服务器装置30,公开密钥服务器装置30将发送的公开密钥y例如与公开密钥证明书一同公开。另外,公开密钥y等的公开意味着,公开密钥y等存储在公开密钥服务器装置30的存储单元中,且处于可连接到网络40的任意装置可取得在公开密钥服务器装置30的存储单元中存储的公开密钥y等的状态。署名验证装置20通过通信单元20b而从公开密钥服务器装置30接收这样的公开密钥y,并存储在存储单元20a中。署名生成处理接着,说明第1实施方式的署名生成处理。图6是用于说明第1实施方式的署名生成处理的流程图。以下,根据图6说明本方式的署名生成处理。首先,在署名生成装置10(图3)的输入单元IOd中,输入消息me{0,1}Μ和恢复消息的比特长度M彡1(步骤S11)。输入的这些信息分别存储在存储单元IOa中。接着,消息分割单元IOe从存储单元IOa读取消息me{0,1}Μ和恢复消息的比特长度M彡1。消息分割单元IOe使用这些信息,将消息me{0,1}Μ分割为比特长度M的恢复消息mrece{0,1}M和比特长度Ν(Ν>0)的清零消息m。lre{0,1}N(步骤S12)。例如,将消息me{0,1}L+M的上位M比特设为恢复消息mre。e{0,1}M,将下位N比特设为清零消息m&e{0,1}N。另外,分割法并不限定于此,可任意地设定将消息me{0,1}+Μ的哪个比特设定为恢复消息π_,将哪个比特设为清零消息melr。这样分割的比特长度M的恢复消息mrece{0,1}M和比特长度N的清零消息mclr{0,1}N分别存储在存储单元IOa中。接着,任意值生成单元IOf生成任意值keZq,并将生成的任意值k存储在存储单元IOa中(步骤S13)。另外,任意值k的生成,例如通过将拟随机数映射到\而进行。接着,群运算单元IOg从存储单元IOa读入生成源geG和任意值keZq,计算R=gkeG......(4),并将该运算结果geG输出到存储单元IOa而存储(步骤S14)。另外,例如,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,式(4)的右边意味着将作为椭圆曲线E上的点的生成源g=(gl,g2)在椭圆曲线E上进行k倍的运算(k*geE),运算结果R成为椭圆曲线E上的点。另外,作为在计算机上执行椭圆曲线上的标量倍数运算的具体方法,例如可例示由仿射(affine)坐标或投影坐标来表示椭圆曲线上的点,使用二进展开法或移动窗法等的运算方法。此外,例如在循环群G为有限域的乘法群的情况下,式(4)的右边意味着gkmodρ的运算,运算结果R成为标量值。接着,散列运算单元IOh从存储单元IOa读取运算结果ReG和恢复消息的比特长度M和比特长度参数L。散列运算单元IOh将输出比特长度根据恢复消息m,e。的比特长度M而决定为L+M比特的散列函数Htl{0,1}*—{0,1}L+M作用于运算结果R,输出并存储作为其运算结果的L+M比特的散列值Π=H0(R)e{0,1}L+M......(5)(步骤S15)。另外,例如,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,式(5)的右边意味着将散列函数Htl作用于可唯一或限定性地确定作为在椭圆曲线E上的点的运算结果R的值(例如,点R的χ坐标和y坐标的码的组合值,点R的χ坐标或者y坐标,或者点R的χ坐标和y坐标的比特结合值)的运算。即,此时的“将散列函数Htl作用于运算结果R”意味着,将散列函数Htl作用于可唯一地确定或者限定地确定作为在椭圆曲线E上的点的运算结果R的值的情况。此外,例如,在循环群G为有限域的乘法群的情况下,式(5)的右边意味着将散列函数Htl作用于作为标量值的运算结果R的运算。步骤S15的处理例子图7A是用于说明步骤S15的处理的例子的流程图。首先,恢复消息的比特长度M和比特长度参数L读取到散列运算次数计算单元IOha0散列运算次数计算单元IOha进行emax=rounddown{(L+M)/length(H)}......(5-1)的运算,并将emax存储在暂时存储器IOt中(步骤S15a中)。另外,rounddown{*}意味着舍去*的小数点以下的运算,IengthW意味着*的比特长度,H意味着公知的散列函数。另外,作为散列函数H的具体例子,可例示SHA-I(比特长度160比特)或MD5(比特长度128比特)等。例如,L+M=500,若散列函数H为SHA-I[length(H)=160],则emax=3。接着,控制单元IOs对变数e代入0,并将变数e存储在暂时存储器IOt中(步骤S15b)。接着,部分散列运算单元IOhb从暂时存储器IOt读取变数e,并从存储单元IOa中读取运算结果R,计算散列值H(e,R)......(5—2)之后,存储在暂时存储器IOt中(步骤S15c)。另外,例如,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,式(5-2)意味着,将散列函数H作用于可唯一或者限定性地确定作为椭圆曲线E上的点的运算结果R的值(例如,将点R的χ坐标和y坐标的符号组合的值,点R的χ坐标或者y坐标,或者点R的χ坐标和y坐标的比特结合值)和变数e的比特结合值的运算。此外,例如在循环群G为有限域的乘法群的情况下,式(5-2)意味着,将散列函数H作用于作为标量值的运算结果R和变数e的比特结合值的运算。接着,控制单元IOs从暂时存储器IOt读取emax和变数e,并判断是否满足e=efflax......(5-3)(步骤S15d)。这里,若不满足式(5-3),则控制单元IOs将e+1设为新的e,并将新的e存储在暂时存储器IOt之后(步骤S15e),将处理返回到步骤S15c。另一方面,若满足式(5-3),则控制单元IOs对比特结合单元IOhc给予指示,比特结合单元IOhc从暂时存储器IOt读取各个散列值H(0,R)、H(l,R)、H(2,R)........H(emax,R),并计算它们的比特结合值HC(R)=H(0,R)I......H(emax,R)......(5-4)之后,存储在暂时存储器IOt中(步骤S15f)。接着,比特删除单元IOhd从暂时存储器IOt读取比特结合值HC(R)和恢复消息的比特长度M及比特长度参数L,Π=H0(R)=delete{length(HC(R))-(L+M),HC(R)}......(5-5)之后,输出到存储单元IOa(步骤S15g)。另外,delete{S,ε}意味着,将ε的比特从开头起删除S比特的处理。即,式(5-5)意味着,将HC(R)的开头比特删除而将整体的比特长度为L+M的式设为Π=Htl(R)的运算。另外,步骤S15的处理方法并不限定于此。例如,也可以是不使用e,而通过散列链(hashchain)来扩展散列值的比特长度的方法。此时,式(5_4)的HC(R),例如成为HC(R)=H(R)H(H(R))|H(H(H(R)))|......H(H(H......(R)......)(结束“步骤S15的处理的例子”的说明)。在步骤S15之后,散列运算单元IOi从存储单元IOa读取散列值Π和恢复消息m,e。及比特长度参数L。散列运算单元IOi将对输入值输出L比特的散列值的散列函数H1{0,1}*-{0,1广,作用于依赖散列值Π和恢复消息mre。的值α,并将作为其运算结果的L比特的散列值h=H1(α)e{0,1}L......(6)输出到存储单元IOa而存储(步骤S16)。另外,在第1实施方式中,α是仅依赖散列值Π和恢复消息m,e。的值α=(n,m,e。)。另外,本方式的α的构成方法并没有限定,但设为α的构成方法与在后述的署名验证装置20中的α’(后述)的构成方法相同。作为α的构成例子,有如下所示的例子。[α-1]将Π设为上位L+M比特、πιΜ。设为下位M比特而结合的L+2M比特的值设为αο[α-2]将Π设为下位L+M比特、πιΜ。设为上位M比特而结合的L+2M比特的值设为αο[α-3]将设为从上位起第奇数个比特(共计M比特)、Π设为其他的L+M比特而结合的L+2M比特的值设为α。接着,散列运算单元IOj从存储单元IOa读取散列值Π和散列值h及恢复消息的比特长度M。散列运算单元IOj将输出比特长度根据恢复消息的比特长度M而决定为M比特的散列函数H2:{0,1}*—{0,1}M,作用于依赖散列值Π和散列值h的值β,并将作为其运算结果的M比特的散列值u=Η2(β)e{0,1}M......(7)输出到存储单元IOa而存储(步骤S17)。另外,在第1实施方式中,β是仅依赖散列值Π和散列值h的值β=(Π,h)。另外,本方式的β的构成方法并没有限定,但设为β的构成方法与在后述的署名验证装置20中的β’(后述)的构成方法相同。作为β的构成例子,有如下所示的例子。[β-1]将Π设为上位L+M比特、h设为下位L比特而结合的2L+M比特的值设为β。[β-2]将Π设为下位L+M比特、h设为上位L比特而结合的2L+M比特的值设为β。[β-3]将h设为从上位起第奇数个比特(共计L比特)、Π设为其他的L+M比特而结合的2L+M比特的值设为β。步骤S17的处理例子图7Β是用于说明步骤S17的处理的例子的流程图。首先,恢复消息的比特长度M读取到散列运算次数计算单元10ja。散列运算次数计算单元IOja进行emax=rounddown{M/length(H)}......(7-1)的运算,并将emax存储在暂时存储器IOt中(步骤S17a中)。接着,控制单元IOs对变数e代入0,并将变数e存储在暂时存储器IOt中(步骤S17b)。接着,部分散列运算单元IOjb从暂时存储器IOt读取变数e,并从存储单元IOa中读取散列值Π、h,计算散列值H(e,β),β=(TI,h)......(7-2)之后,存储在暂时存储器IOt中(步骤S17c)。接着,控制单元IOs从暂时存储器IOt读取emax和变数e,并判断是否满足e=efflax......(7-3)(步骤S17d)。这里,若不满足式(7-3),则控制单元IOs将e+Ι设为新的e,并将新的e存储在暂时存储器IOt之后(步骤S17e),将处理返回到步骤S17c。另一方面,若满足式(7-3),则控制单元IOs对比特结合单元IOjc给予指示,比特结合单元IOjc从暂时存储器IOt读取各个散列值Η(0,β)、Η(1,β)、Η(2,β)........H(emax,β),并计算它们的比特结合值Η0(β)=Η(0,β)I......|H(emax,β)......(7-4)之后,存储在暂时存储器IOt中(步骤S17f)。接着,比特删除单元IOid从暂时存储器IOt读取比特结合值HC(i3)和恢复消息的比特长度M,并计算u=H2(β)=delete{length(HC(β))-Μ,Η0(β)}......(7-5)之后,输出到存储单元IOa(步骤S17g)。另外,步骤S17的处理方法并不限定于此。例如,也可以是不使用e,而通过散列链(hashchain)来扩展散列值的比特长度的方法(结束“步骤S17的详细处理的例子”的说明)。在步骤S17之后,异或运算单元IOk从存储单元IOa读取恢复消息m,e。和散列值U。异或运算单元IOk计算恢复消息m,e。和散列值u的异或<formula>formulaseeoriginaldocumentpage18</formula>......(8)((+)是异或运算符),并将该异或值w输出到存储单元IOa中存储(步骤S18)。接着,比特结合单元IOm从存储单元IOa读取散列值he{0,1广和异或值《£{0,1}Μο比特结合单元IOm计算将散列值he{0,1广配置在第1比特位置上,将异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值<formula>formulaseeoriginaldocumentpage18</formula>......(9),并将该比特结合值d输出到存储单元IOa而存储(步骤S19)。另外,并没有特别限定将“第1比特位置”和“第2比特位置”设为哪个比特位置。但是,必须在署名生成装置10和署名验证装置20之间,将“第1比特位置”和“第2比特位置”设为哪个比特位置的基准统一。图9中示出“第1比特位置”和“第2比特位置”的设定例子。图9A的例子是将连续的上位L比特设为“第1比特位置”,将连续的下位M比特设为“第2比特位置”的例子。图9B的例子是将连续的上位M比特设为“第2比特位置”,将连续的下位L比特设为“第1比特位置”的例子。此外,图9c的例子是L彡M的情况下的例子,是将从上位起第奇数个比特(共计M比特)的位置设为“第2比特位置”,将其他的比特位置设为“第1比特位置”的例子。接着,异或运算单元IOn从存储单元IOa读取散列值Π和比特结合值d。异或运算单元IOn计算散列值Π和比特结合值d的异或r=Π(+)de{0,1}L+M......(10),并将该异或值r输出到存储单元IOa中存储(步骤S20)。接着,散列运算单元IOp从存储单元IOa读取异或值r和清零消息mel,。散列运算单元IOp将对输入值输出整数的散列函数H3{0,1}*—Zq,作用于依赖异或值r和清零消息m.的值Y,并将作为其运算结果的散列值t=H3(Y)eZq......(11)输出到存储单元IOa中而存储(步骤S21)。另外,在第1实施方式中,、是仅依赖异或值r和清零消息mel,的值γ=(r,mel,)。本方式的、的构成方法并没有限定,但设为Y的构成方法与在署名验证装置20中的Y’(后述)的构成方法相同。作为Y的构成例子,有如下所示的例子。[γ-1]将r设为上位L+M比特、设为下位N比特而结合的L+M+N比特的值设为Y。[γ-2]将r设为下位L+M比特、Hiel,设为上位N比特而结合的L+M+N比特的值设为Y。[γ-3]将设为从上位起第奇数个比特(共计N比特)、r设为其他的L+M比特而结合的L+M+N比特的值设为Y。接着,整数运算单元IOq从存储单元IOa读取任意值k和散列值t及秘密密钥χ和q。整数运算单元IOq计算s=k"t·χeZq......(12),并将该运算结果s输出到存储单元IOa而存储(步骤S22)。接着,在通信单元IOr中读取异或值r和运算结果s及清零消息mel,,通信单元IOr通过网络40,将署名ο=(r,s)和清零消息发送到署名验证装置20(步骤S23)。署名验证处理接着,说明第1实施方式的署名验证处理。图8是用于说明第1实施方式的署名验证处理的流程图。以下,根据图8说明本方式的署名验证处理。首先,署名验证装置20(图5)的通信单元20b接收署名σ’=(r’,s’)和清零消息mel/(相当于“接受输入”),并将它们存储在存储单元20a中(步骤S41)。另外,若署名和清零消息是正规(authorizedones)的署名,则σ,=(r,,s,)=σ=(r,s),mclr,=Π1&,但在这里,将验证对象的署名表现为O’=(r’,S’),将验证对象的清零消息表现为mclrο接着,比特长度提取单元20c从存储单元20a读取比特长度参数L和署名ο,=(r’,S’)的r’。比特长度提取单元20c根据M,=length(r,)_L......(13)计算对应于署名σ,的恢复消息m,e。’的比特长度Μ’,并存储在存储单元20a中(步骤S42)。接着,散列运算单元20d从存储单元20a读取r’和清零消息mel/及q。散列运算单元20d将与署名生成装置10相同的散列函数H3{0,1}*-Zq,作用于依赖r’和mel/的值Y’,并将作为其运算结果的散列值t'=Η3(Υ‘)......(14)输出到存储单元20a中而存储(步骤S43)。另外,、,的构成方法与在上述的署名生成装置10中的γ的构成方法相同(与将r=r’,mclr=mclr'的情况相同)。接着,群运算单元20e从存储单元20a读取生成源geG和署名生成装置10的公开密钥yeG和署名σ’的S’和散列值t’,并进行R,=gs,·yt,eG......(15)的运算,并将其运算结果R’输出到存储单元20a而存储(步骤S44)。另外,例如,在循环群G为由椭圆曲线E上的有理点(rationalpoint)而成的群的情况下,式(15)的右边意味着将作为椭圆曲线E上的点的生成源g=(gl,g2)在椭圆曲线E上进行S’倍,将公开密钥y=(Y1,I2)在椭圆曲线E上进行t’倍,并将这些运算结果在椭圆曲线E上相加的运算(s’*g+t’e幻,运算结果!’成为椭圆曲线E上的点。另外,作为在CPU上执行椭圆曲线上的标量倍数运算的具体方法,例如可例示由仿射(affine)坐标或投影坐标来表示椭圆曲线上的点,使用二进展开法(dyadicexpansion)或移动窗法(slidingwindow)等的运算方法。此外,例如在循环群G为有限域的乘法群(multiplicativegroup)的情况下,式(15)的右边意味着gs’·Yt'modρ的运算,运算结果R’成为标量值。接着,散列运算单元20f从存储单元20a读取运算结果R’eG和恢复消息mel,,的比特长度M’及比特长度参数L。散列运算单元20f将与署名生成装置10相同的散列函数Η。{0,;Τ—{0,1}Μ作用于运算结果R’,并将作为其运算结果的L+M’比特的散列值Π,=Hq(R,)e{0,1}L+M,......(16)输出到存储单元20a而存储(步骤S45)。另外,设为H。(R’)的运算与署名生成装置10的情况相同(与R=R’的情况相同)。接着,异或运算单元20g从存储单元20a读取散列值Π’和署名σ’具有的r’,并计算它们的异或d,=Π,(+)r'e{0,1}L+M,......(17),并将该异或值d’输出到存储单元20a而存储(步骤S46)。接着,比特提取单元20h从存储单元20a读取异或值d’和恢复消息m,e。’的比特长度M’。比特提取单元20h提取异或值d’的第1比特位置的L比特的值h’e{0,1广和异或值d’的第2比特位置的Μ’比特的值w’e{0,1}M’,并将它们存储在存储单元20a中(步骤S47)。另外,“第1比特位置”和“第2比特位置”与在署名生成装置10的处理中的“第1比特位置”和“第2比特位置”相同(与将d=d’的情况相同)。接着,散列运算单元20i从存储单元20a读取散列值Π’和h’及恢复消息m,e。’的比特长度M’。散列运算单元20i将与署名生成装置10相同的散列函数H2:{0,1}*—{0,1}M,作用于依赖散列值Π’和值h’的值β’,并将作为其运算结果的M’比特的散列值u,=Η2(β,)e{0,1}Μ,......(18)输出到存储单元20a而存储(步骤S48)。另外,β,的构成方法与在上述的署名生成装置10中的β的构成方法相同(与将n=n’、h=h’的情况相同)。异或运算单元20j从存储单元20a中读取值w’e{0,1}M’和散列值U’。异或运算单元20j计算值w’和散列值U’的异或mrec'=w,(+)u,e{0,1}M,......(19),并将其运算结果作为恢复消息nw’e{0,1}M’,输出到存储单元20a而存储(步骤S49)。接着,散列运算单元20k从存储单元20a读取散列值Π,和恢复消息m,e。’。散列运算单元20k将与署名生成装置10相同的散列函数H1{0,1}*-{0,1}L,作用于依赖散列值Π’和恢复消息mM。’的值α’,并将作为其运算结果的L比特的散列值H1(α‘)e{0,1}L......(20)输出到存储单元20a而存储(步骤S50)。另外,α,的构成方法与在上述的署名生成装置10中的α的构成方法相同(与将11=11’、111_=mrec'的情况相同)。接着,比较单元201从存储单元20a读取散列值H1(α’)和值h’,并判断是否满足h,=H1(Qj)......(21)(步骤S51)。这里,在不满足式(21)的情况下,比较单元201将0(验证失败)输出到存储单元20a而存储,输出单元20m输出从存储单元20a送出的0(验证失败)(步骤S52)。另一方面,在满足式(21)的情况下,比较单元201将1(验证成功)输出到存储单元20a而存储,输出单元20m输出从存储单元20a送出的1(验证成功)(步骤S53),还输出恢复消息mre。’(步骤S54)。第2实施方式接着,说明本发明的第2实施方式。在第2实施方式中,不使用清零消息。这一点是与第1实施方式的不同点。以下,以与第1实施方式的不同点为中心进行说明,省略与第1实施方式共同的事项的说明。<整体结构>是第1实施方式的署名系统1的署名生成装置10置换为署名生成装置110,署名验证装置20置换为署名验证装置120的结构。<署名生成装置110的结构>接着,说明署名生成装置110的结构。硬件结构与第1实施方式的署名生成装置10相同。硬件和程序的协作署名生成装置110也通过在计算机中读入规定的程序而构成。图10是例示了这样构成的第2实施方式中的署名生成装置110的功能结构的方框图。另外,在署名生成装置110中,对于与署名生成装置10共同的部分赋予与图3相同的符号,并简略说明。如图10所示那样,本方式的署名生成装置110包括存储单元10a、秘密密钥生成单元10b、公开密钥生成单元10c、输入单元110d、比特长度提取单元110e、任意值生成单元10f、群运算单元10g、散列运算单元10h、10i、10j、110p、异或运算单元10k、10n、比特结合单元10m、整数运算单元10q、通信单元110r、控制单元10s及暂时存储器10t。另外,比特长度提取单元110e和散列运算单元110p是用于实现各自的处理的程序被读入到CPU11而构成的单元。此外,输入单元110d在读入规定的程序的CPU的控制之下驱动,通信单元110r在读入规定的程序的CPU的控制之下驱动。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名生成装置110的功能的程序。<署名验证装置120的结构>接着,说明署名验证装置120的结构。硬件结构请求审查时与第1实施方式的署名验证装置20相同。硬件和程序的协作署名验证装置120也通过在计算机中读入规定的程序而构成。图11是例示了这样构成的第2实施方式的署名验证装置120的功能结构的方框图。如图11所示那样,本方式的署名验证装置120包括存储单元20a、通信单元120b、比特长度提取单元20c、散列运算单元120d、20f、20i、20k、群运算单元20e、异或运算单元20g、比特提取单元20h、异或运算单元20j、比较单元201、输出单元20m、控制单元20n、暂时存储器20p。另外,散列运算单元120d是用于实现处理的程序被读入到CPU而构成的单元。此外,通信单元120b在读入规定的程序的CPU的控制之下驱动。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名验证装置120的功能的程序。<处理>接着,说明本方式的处理。前处理/密钥生成处理与第1实施方式相同。署名生成处理接着,说明第2实施方式的署名生成处理。图12是用于说明第2实施方式的署名生成处理的流程图。以下,按照图12说明本方式的署名生成处理。首先,在署名生成装置110(图10)的输入单元110d中,输入恢复消息mre。G{0,1}M(步骤Sill)。输入的恢复消息存储在存储单元10a中。另外,在第2实施方式中,IIIITlrec°接着,比特长度提取单元110e从存储单元10a读取恢复消息nwG{0,1}M,并提取其比特长度M而存储在存储单元10a中(步骤S112)。之后,在署名生成装置110中执行与第1实施方式的步骤S13S20相同的处理(步骤S113S120)之后,散列运算单元110p从存储单元10a读取异或值r。散列运算单元110p将与第1实施方式相同的散列函数H3{0,1}*—Zq作用于依赖异或值r的值Y,并将作为其运算结果的散列值t=H3(y)GZq......(22)输出到存储单元10a而存储(步骤S121)。另外,在第2实施方式中,、是仅依赖异或值r的值Y=r。本方式的、的构成方法并没有限定,但设为、的构成方法与在后述的署名验证装置120中的、’(后述)的构成方法相同。接着,整数运算单元10q从存储单元10a读取任意值k和散列值t及秘密密钥x和q,根据上述的式(12)来计算s,并将该运算结果s输出到存储单元10a而存储(步骤S122)。接着,在通信单元110r中读取异或值r和运算结果s,通信单元10r通过网络40将署名o=(r,s)发送到署名验证装置120(步骤S123)。署名验证处理接着,说明第2实施方式的署名验证处理。图13是用于说明第2实施方式的署名验证处理的流程图。以下,根据图13说明本方式的署名验证处理。首先,署名验证装置120(图11)的通信单元120b接收署名o,=(r’,s’)(相当于“接受输入”),并将这些存储在存储单元20a中(步骤S141)。接着,比特长度提取单元20c从存储单元20a读取比特长度参数L和署名o,=(r’,s’)的r’,并根据上述式(13)来计算对应于署名o’的恢复消息mre。’的比特长度M’,并存储在存储单元20a中(步骤S142)。接着,散列运算单元120d从存储单元20a读取r’和q。散列运算单元120d将与署名生成装置110相同的散列函数H3:{0,i:r—Zq,作用于依赖r’的值Y’,并将作为其运算结果的散列值t'=H3(Y‘)......(23)输出到存储单元20a中而存储(步骤S143)。另外,Y’的构成方法与在上述的署名生成装置110中的Y的构成方法相同(与将r=r'的情况相同)。之后,通过与第1实施方式的步骤S44S54相同的处理进行署名验证(步骤S144S154)。第3实施方式接着,说明本发明的第3实施方式。本方式是第1实施方式的变形例,是简化了构成署名o=(r,s)的r的例子。即,相对于在第1实施方式中,设为r=HQ(R)(+)(^(^(R),mrec)|mrec(+)H2(H0(R),&(H0(R),mrec))),在第3实施方式中,设为r=氏(R,mrec)|mrec(+)HjRjjR,!^。))。这样,能够削减运算量。以下,以与第1实施方式的不同点为中心进行说明,省略对于与第1实施方式共同的事项的说明。<整体结构>是第1实施方式的署名系统1的署名生成装置10置换为署名生成装置210,署名验证装置20置换为署名验证装置220的结构。<署名生成装置210的结构>接着,说明署名生成装置210的结构。硬件结构与第1实施方式的署名生成装置10相同。硬件和程序的协作署名生成装置210也通过在计算机中读入规定的程序而构成。图14是例示了这样构成的第3实施方式中的署名生成装置210的功能结构的方框图。另外,在署名生成装置210中,对于与署名生成装置10共同的部分赋予与图3相同的符号,并简略说明。如图14所示那样,本方式的署名生成装置210包括存储单元10a、秘密密钥生成单元10b、公开密钥生成单元10c、输入单元10d、消息分割单元10e、任意值生成单元10f、群运算单元10g、散列运算单元210i、210j、10p、异或运算单元10k、比特结合单元210m、整数运算单元10q、通信单元10r、控制单元10s及暂时存储器10t。另外,散列运算单元210i、210j、10p和比特结合单元210m是用于实现各自的处理的程序被读入到CPU而构成的单元。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名生成装置210的功能的程序。<署名验证装置220的结构>接着,说明署名验证装置220的结构。硬件结构与第1实施方式的署名验证装置20相同。硬件和程序的协作署名验证装置220也通过在计算机中读入规定的程序而构成。图11是例示了这样构成的第2实施方式的署名验证装置120的功能结构的方框图。如图15所示那样,本方式的署名验证装置220包括存储单元20a、通信单元20b、比特长度提取单元20c、散列运算单元20d、220i、220k、比特提取单元220h、异或运算单元20j、比较单元201、输出单元20m、控制单元20n、暂时存储器20p。另外,散列运算单元220i、220k和比较单元201是用于实现处理的程序被读入到CPU而构成的单元。此外,上述的程序可以是单独实现其功能的程序,也可以是该程序进一步读出其他的库(没有记载)而实现各种功能的程序。即,各个程序的至少一部分相当于用于使计算机执行署名验证装置120的功能的程序。<处理>接着,说明本方式的处理。前处理与第1实施方式的不同点在于没有设定散列函数氏。密钥生成处理与第1实施方式相同。署名生成处理接着,说明第3实施方式的署名生成处理。图16是用于说明第3实施方式的署名生成处理的流程图。以下,以与第1实施方式的不同点作为中心进行说明。首先,署名生成装置210执行与第1实施方式的步骤S11S14相同的处理(步骤S211S214)。接着,散列运算单元10i从存储单元10a读取步骤S114的运算结果R和恢复消息及比特长度参数L。散列运算单元10i将对输入值输出L比特的散列值的散列函数H1:{0,i;r—{0,1}1,作用于依赖运算结果R和恢复消息知。的值a(式(6)),并输出作为其运算结果的L比特的散列值h而存储(步骤S215)。另外,在第3实施方式中,a是仅依赖运算结果REG和恢复消息nire。的值a=(R,mrJ。另外,在循环群G为有限域的乘法群的情况下,本方式的a的结构除了II被置换为R的点之外,与第1实施方式相同。此外,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,本方式的a的结构除了n被置换为可唯一或者限定性地确定作为椭圆曲线E上的点的运算结果R的值(例如,将点R的x坐标和y坐标的符号组合的值,点R的x坐标或者y坐标,或者点R的x坐标和y坐标的比特结合值)的点之外,与第1实施方式相同。接着,散列运算单元210j从存储单元10a读取运算结果R和散列值h和恢复消息的比特长度M。散列运算单元210j将输出比特长度根据恢复消息的比特长度M而决定为M比特的散列函数H2:{O,i;T—{0,1}M,作用于依赖运算结果R和散列值h的值3(式(7)),并输出作为其运算结果的M比特的散列值u而存储在存储单元10a(步骤S216)。另外,在第3实施方式中,0是仅依赖运算结果R和散列值h的值0=(R,h)。另外,在循环群G为有限域的乘法群的情况下,本方式的0的结构除了n被置换为R的点之外,与第1实施方式相同。此外,在循环群G为由椭圆曲线E上的有理点而成的群的情况下,本方式的3的结构除了n被置换为可唯一或者限定性地确定作为椭圆曲线E上的点的运算结果R的值(例如,点R的x坐标或者y坐标,或者点R的x坐标和y坐标的比特结合值)的点之外,与第1实施方式相同。接着,异或运算单元10k从存储单元10a读取恢复消息!11_和散列值u。异或运算单元10k计算恢复消息和散列值u的异或w(式(8)),并将该异或值w输出到存储单元10a而存储(步骤S217)。接着,比特结合单元210m从存储单元10a读取散列值hG{0,1}1和异或值《£{0,1}M。比特结合单元210m计算将散列值he{0,1}1配置在第1比特位置上,将异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值r=h|wG{0,1}L+M......(24),并将该比特结合值r输出到存储单元10a而存储(步骤S218)。关于将“第1比特位置”和“第2比特位置”设为哪个比特位置,与第1实施方式相同。之后,执行与第1实施方式的步骤S21S23相同的处理(步骤S219S221)。署名验证处理接着,说明第3实施方式的署名验证处理。图17是用于说明第1实施方式的署名验证处理的流程图。以下,以与第1实施方式的不同点作为中心进行说明。首先,署名验证装置220执行与第1实施方式的步骤S41S44相同的处理(步骤S241S244)。接着,比特提取单元220h从存储单元20a读取署名o’=(r’,s’)的r’和恢复消息m,e。’的比特长度M’。比特提取单元220h提取r’的第1比特位置的L比特的值h,G{0,1}1和r’的第2比特位置的M比特的值w’G{0,1}M’,并将它们存储在存储单元20a中(步骤S245)。另外,“第1比特位置”和“第2比特位置”与在署名生成装置10的处理中的“第1比特位置”和“第2比特位置”相同(与将d=d’的情况相同)。接着,散列运算单元220i从存储单元20a读取在步骤S244中的运算结果R’和h’及恢复消息m,e。’的比特长度M’。散列运算单元20i将与署名生成装置210相同的散列函数H2{0,1}*—{0,1}M,作用于依赖运算结果R’和h’的值3’(式(18)),并将作为其运算结果的M,比特的散列值u’输出到存储单元20a而存储(步骤S246)。另外,^,的构成方法与在署名生成装置210中的0的构成方法相同(与将n=n’、h=h’的情况相同)。接着,异或运算单元20j从存储单元20a中读取值w’e{0,1}M’和散列值u’。异或运算单元20j计算值w’和散列值u’的异或(式(10)),并将其运算结果作为恢复消息mrec,G{0,1}M,,输出到存储单元20a而存储(步骤S247)。接着,散列运算单元220k从存储单元20a读取运算结果R’和恢复消息m,e。’。散列运算单元220k将与署名生成装置210相同的散列函数氏{0,1}*-{0,1}L,作用于依赖运算结果R’和恢复消息m,e。’的值a’,并将作为其运算结果的L比特的散列值(式(20))输出到存储单元20a而存储(步骤S248)。另外,a,的构成方法与在署名生成装置210中的a的构成方法相同(与将!!二!!’、!^。!!^。’的情况相同)。之后,执行与第1实施方式的步骤S51S54相同的处理(步骤S249S252)。第4实施方式接着,说明本发明的第4实施方式。本方式是第3实施方式的变形例。在第4实施方式中,不使用清零消息。这一点是与第3实施方式的不同点。以下,以与第13实施方式的不同点为中心进行说明,省略与第13实施方式共同的事项的说明。〈整体结构〉是第1实施方式的署名系统1的署名生成装置10置换为署名生成装置310,署名验证装置20置换为署名验证装置320的结构。<署名生成装置310的结构>接着,说明署名生成装置310的结构。硬件结构与第1实施方式的署名生成装置10相同。硬件和程序的协作署名生成装置310也通过在计算机中读入规定的程序而构成。图18是例示了这样构成的第4实施方式中的署名生成装置310的功能结构的方框图。另外,在署名生成装置310中,对于与署名生成装置10、110、210共同的部分赋予与图3、图10、图14相同的符号,并简略说明。如图18所示那样,本方式的署名生成装置310包括存储单元10a、秘密密钥生成单元10b、公开密钥生成单元10c、输入单元110d、比特长度提取单元110e、任意值生成单元10f、群运算单元10g、散列运算单元210i、210j、110p、异或运算单元10k、比特结合单元210m、整数运算单元10q、通信单元110r、控制单元10s及暂时存储器10t。<署名验证装置320的结构>接着,说明署名验证装置320的结构。硬件结构与第1实施方式的署名验证装置20相同。硬件和程序的协作署名验证装置320也通过在计算机中读入规定的程序而构成。图19是例示了这样构成的第2实施方式的署名验证装置120的功能结构的方框图。另外,在署名验证装置320中,对于与署名验证装置20、120、220共同的部分赋予与图5、图11、图15相同的符号,并省略说明。如图19所示那样,本方式的署名验证装置320包括存储单元20a、通信单元120b、比特长度提取单元20c、散列运算单元120d、220i、220k、群运算单元20e、比特提取单元20h、异或运算单元20j、比较单元201、输出单元20m、控制单元20n及暂时存储器20p。<处理>接着,说明本方式的处理。前处理/密钥生成处理与第1实施方式相同。署名生成处理接着,说明第4实施方式的署名生成处理。图20是用于说明第4实施方式的署名生成处理的流程图。以下,按照图20说明本方式的署名生成处理。首先,署名生成装置310执行与第2实施方式的步骤S111S114相同的处理(步骤S311S314),接着,执行与第3实施方式的步骤S215S218相同的处理(步骤S315S318)。接着,署名生成装置310执行与第2实施方式的步骤S121S123相同的处理(步骤S319S321)。署名验证处理接着,说明第4实施方式的署名验证处理。图21是用于说明第4实施方式的署名验证处理的流程图。以下,按照图21说明本方式的署名验证处理。首先,署名验证装置320执行与第2实施方式的步骤S141S144相同的处理(步骤S341S344),接着,执行与第3实施方式的步骤S245252相同的处理(步骤S345S352)。成为署名验证的理由接着,说明署名验证装置20、120、220、320的处理成为署名验证的理由。〈关于第1、2实施方式〉在署名验证装置20、120中,使用署名o,=(r’,s’),对依赖r’的值Y,计算散列值t’=H3(y’)(式(14)(23)),计算R’=gs’’eG(式(15)),计算散列值II’=H0(R,)(式(16))。若署名o,是正规的署名,则由于满足r’=1和s’=s(s=k-txGZ),会满足Y,=Y,满足t,=H3(y‘)=H3(y)=t,所以满足R,=gs,.y”=gs.yt=g^-.yfx=gkGGo因此,成为n,=H0(R')=H0(gk)=n。此外,在署名验证装置20、120中,求异或值d’=11,(+)r’(式(17)),但若署名o,是正规的署名,则由于满足r’(+)d,满足n,=n,所以满足d’=d。此外,在署名验证装置20、120中,求依赖散列值n’和异或值d’的第1比特位置的L比特的值h’G{0,1}L的值e,的散列值u’=H2(0,)(式(18)),但若署名0,是正规的署名,则由于满足d’二山所以满足!!’=11,进而由于满足11,=n,所以满足日,=日,满足u'=Uo财卜,在署名飽Bgg20、120中,计算异或值d,的第2比牛射鍾的M,比特的值w,G{0,1}M,和散列值U’的异或w’(+)u’,并将其运算结果设为恢复消息nw/G{0,1}M’(式(19)),但若署名o,是正规的署名,则满足u’=u、M’=M及d’=d。此时,因还满足w’=w,所以满足mrec,=w,(+)u'=w(+)u=mrec(+)u(+)u=mrec。之后,在署名验证装置20、120中,求出将散列值&作用于依赖散列值II’和恢复消息mrec’的值a,而得的散列值Hja,)G{0,1}1(式(20))。若署名o’是正规的署名,则满足II,=TI、mre。’=mre。、a,=a、h’=h,且在署名生成装置中设为h=(a),所以还满足h’=Hi(a,)。g卩,若署名o,是正规的署名,可以说满足h’=Hi(a,)。另一方面,若假设难以对在循环群G中的离散对数问题进行求解,则不知道秘密密钥x的第三人不能根据公开密钥y=gxeG得知秘密密钥x,不能生成在上述的检验合格的署名o,=(r’,s’)。因此,可以称为在上述的检验合格的署名o,=(r’,s’)是知道秘密密钥x的人正规生成的署名。<关于第3、4实施方式>在署名验证装置220、320中,使用署名o,=(r’,s’),对依赖r’的值Y,计算散列值t’=H3(y,),计算R’=gs’<,GG。若署名o,是正规的署名,则由于满足r’=1~禾口8,=s(s=k-txGZ),会满足Y,=丫,满足卞,=H3(y‘)=H3(y)=t,满足7=#£6,所以成为1,=gs,.yt,=gs.yt=gk-t”.yt”=gkGR。此外,在署名验证装置220、320中,求依赖运算结果R’和署名o,的r’的第1比特位置的L比特的值h’G{0,1}L的值e,的散列值u’=H2(e,),但若署名O,是正规的署名,则由于满足r’=1~,所以满足1!’=11,进而由于满足1’=R,所以满足3’=3,满足U,=U。此外,在署名验证装置220、320中,计算署名o,的r’的第2比特位置的M’比特的值w’e{0,1广和散列值11’的异或《’(+)u’,并将其运算结果设为恢复消息nw’e{0,1}M’,但若署名o,是正规的署名,则满足u’=U、M’=M及r’=r。此时,因还满足w’=w,所以f薛足mrec,=w,(+)u'=w(+)u=mrec(+)u(+)u=mrec。之后,在署名验证装置220、320中,求出将散列值作用于依赖运算结果R’和恢复消息nw/的值a,而得的散列值氏(a,)G{0,1}1。若署名o,是正规的署名,则满足R’=R、mre/=mrec,a,=a、h’=h,且在署名生成装置中设为h=(a),所以还满足h’=氏(0,)。S卩,若署名o,是正规的署名,可以说满足h’=&(")。另一方面,若假设难以对在循环群G中的离散对数问题进行求解,则不知道秘密密钥x的第三人不能根据公开密钥y=gxeG得知秘密密钥x,不能生成在上述的检验合格的署名o,=(r’,s’)。因此,可以称为在上述的检验合格的署名o,=(r’,s’)是知道秘密密钥x的人正规生成的署名。变形例本发明并不限定于上述的各个实施方式。例如,在第1、2实施方式中,将a设为仅依赖n和nve。的值,将a,设为仅依赖n’和nw/的值。但是,也可以将a设为依赖II和及第三信息的值,将a’设为依赖II’和mre。’及第三信息的值。另外,作为第三信息,可例示用于确定清零消息m&、公开密钥y及群G的参数等。关于0和0’及Y和Y’也是相同的。这样,能够进一步提高署名验证精度。尤其是,在作为第三信息而使用用于确定群G的参数的情况下,能够防止使用不正规(unauthorized)的群(例如,容易进行离散对数问题且在群运算单元20e中的运算结果与在正规的循环群G中的运算结果相同的群)而生成的不正规的署名检验合格的情况。同样地,在第3、4实施方式中,将a设为仅依赖R和mre。的值,将a,设为仅依赖R’和nw/的值。但是,也可以将a设为依赖R和mre。及第三信息的值,将a’设为依赖R’和m,e。’及第三信息的值。关于0和0,及Y和Y,也是相同的。此外,在各个实施方式中,由署名生成装置10、110、210、310进行密钥生成,但也可以由其他装置进行密钥生成。此外,在各个实施方式中,公开密钥服务器装置30公开了公开密钥y,但也可以是署名生成装置10、110、210、310对署名验证装置20、120、220、320发送公开密钥y的结构。此外,也可以是将在各个处理中的Zq(以q为模的完全余数系统)置换为Z(整数)的结构。此外,在各个实施方式中,署名验证装置20、120、220、320根据署名o,具有的r’的比特长度和比特长度参数来计算恢复消息的比特长度,但也可以是署名生成装置10、110,210,310对署名验证装置20、120、220、320发送恢复消息的比特长度的结构。此外,在各个实施方式中,至少将恢复消息nw设为署名对象。即,将恢复消息mre。、mrec'的比特长度M、M’分别设为1以上。但是,在实施方式1、3中,也可以将恢复消息m,e。、mrec'分别设为无效(null)值,仅将清零消息m^、!!^/设为署名对象。这相当于将恢复消息m,e。、mrec'的比特长度M、M,分别设为0的情况。此外,也可以是可在M彡0的范围内设定比特长度M、M’的结构。这样,可根据比特长度M、M’的设定,进行消息恢复署名和普通署名的切换。另外,可省略通过将恢复消息1^。、!11_’分别设为无效值,将各自的比特长度M、M,分别设为0而没必要进行的处理。此外,也可以停止用于执行该没必要进行的处理的各个功能单元的处理。此外,在本发明中的“散列(hash)函数”意味着对某一数据计算代表该数据的值的函数。在本发明中,不仅可以使用SHA-1和MD5等,例如还可以将公共密钥代入DES和Camellia等的公共密钥加密函数而得的函数用作散列函数。此外,上述的各种处理不仅可以按照记载而按时序执行,也可以根据执行处理的装置的处理能力或根据需要而并列或单独执行,除此之外,能够在不脱离本发明的意旨的范围内适当变更是理所当然的。此外,在通过计算机实现上述结构的情况下,由程序描述各个装置应具有的功能的处理内容。并且,通过由计算机执行该程序,能够在计算机上实现上述处理功能。描述了该处理内容的程序可预先记录在计算机可读取的记录介质上。作为计算机可读取的记录介质,例如可以是磁记录装置、光盘、光磁记录介质、半导体存储器等,但具体地说,例如,作为磁记录装置,可使用硬盘装置、软盘装置、磁带等,作为光盘,可使用DVD(DigitalVersatileDisc)>DVD-RAM(RandomAccessMemory)>CD-ROM(CompactDiscReadOnlyMemory)、CD-R(Recordable)/RW(Rewritable)等,作为光磁记录介质,可使用MO(Magneto-Opticaldisc),作为半导体存储器,可使用EEP-ROM(ElectricallyErasableandProgrammable-ReadOnlyMemory)等。此外,该程序的流通,例如可通过对记录了该程序的DVD、⑶-ROM等可移动记录介质进行销售、转让、出租等来进行。此外,也可以是将该程序存储在服务器计算机的存储装置中,并通过网络将该程序从服务器计算机传送到其他计算机,从而流通该程序的结构。执行这样的程序的计算机,例如首先将记录在可移动记录介质中的程序或者从服务器计算机传送的计算机暂时存储在自己的存储装置中。然后,在执行处理时,该计算机读取在自己的记录介质中存储的程序,并根据读取的程序来执行处理。此外,作为该程序的其他的实施方式,也可以计算机从可移动记录介质中直接读取程序,并执行对应于该程序的处理,也可以是在每次从服务器计算机对该计算机传送程序时,执行对应于接受的程序的处理。此外,也可以是不进行从服务器计算机至该计算机的程序的传送,而是通过仅根据其执行指示和取得结果来实现处理功能的、所谓的ASP(ApplicationServiceProvider,应用服务提供者)型的服务来执行上述处理的结构。另外,设为在本方式中的程序中,包括提供用于电子计算机的处理的信息且基于程序的数据(虽不是对于计算机的直接的命令,但具有限制计算机的处理的性质的数据等)。此外,在本方式中,设为通过在计算机上执行规定的程序来构成本装置,但也可以通过硬件方式实现这些处理内容的至少一部分。产业上的可利用性本发明可应用于使用电子署名的各种用途。30权利要求一种署名生成装置,包括第1存储单元,存储整数的秘密密钥x;第2存储单元,存储M比特的恢复消息mrec{0,1}M;任意值生成单元,生成整数的任意值k;群运算单元,构成为计算将位数q的循环群设为G,并将该循环群G的生成源设为g的情况下的R=gk∈G,并输出该运算结果R;第1散列运算单元,构成为将对输入值输出L比特的散列值的散列函数H1{0,1}*→{0,1}L,作用于依赖上述运算结果R和恢复消息mrec的值α,并输出作为其运算结果的L比特的散列值h=H1(α)∈{0,1}L,其中,L是与署名验证装置共享的正整数;第2散列运算单元,构成为将输出比特长度根据上述恢复消息mrec的比特长度M而决定为M比特的散列函数H2{0,1}*→{0,1}M,作用于依赖上述运算结果R和上述散列值h的值β,并输出作为其运算结果的M比特的散列值u=H2(β)∈{0,1}M;第1异或运算单元,构成为计算上述恢复消息mrec和上述散列值u的异或w=mrec(+)u∈{0,1}M,并输出该异或值w,其中,(+)是异或运算符;r值运算单元,构成为计算依赖将上述散列值h∈{0,1}L配置在第1比特位置上,将上述异或值w∈{0,1}M配置在第2比特位置上的L+M比特的比特结合值h|w∈{0,1}L+M的值r,该值r可复原上述散列值h和上述异或值w,并输出该值r;第3散列运算单元,构成为将对输入值输出整数的散列函数H3{0,1}*→Z,作用于依赖上述值r的值γ,并输出作为其运算结果的散列值t=H3(γ)∈Z,Z为整数;整数运算单元,计算s=k-t·x∈Z,并输出该运算结果s;以及署名输出单元,构成为输出署名σ=(r,s)。2.如权利要求1所述的署名生成装置,还包括第4散列运算单元,构成为将输出比特长度根据上述恢复消息的比特长度M而决定为L+M比特的散列函数H。{0,1}*—{0,1}L+M,作用于上述运算结果R,并输出作为其运算结果的L+M比特的散列值Π=Htl(R)e{0,1}L+M,依赖上述运算结果R和恢复消息nve。的值α是依赖上述散列值Π和恢复消息的值,依赖上述运算结果R和上述散列值h的值β是依赖上述散列值Π和上述散列值h的值,上述r值运算单元包括比特结合单元,构成为计算将上述散列值he{0,1广配置在第1比特位置上,将上述异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值d=h|we{0,1}L+M,并输出该比特结合值d;以及第2异或运算单元,构成为计算上述散列值Π和上述比特结合值d的异或r=Π(+)de{0,1}Μ,并输出该值r。3.如权利要求1所述的署名生成装置,其中,上述r值运算单元包括比特结合单元,构成为计算将上述散列值he{0,1广配置在第1比特位置上,将上述异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值r=h|we{0,1}L+M,并输出该值r。4.如权利要求1至3的任一项所述的署名生成装置,其中,M彡1。5.如权利要求1至3的任一项所述的署名生成装置,其中,还包括第3存储单元,存储N比特的清零消息m&lO,1}N,上述第3散列运算单元构成为将上述散列函数H3{0,1}*-Z作用于依赖上述值r和上述清零消息的值γ,并输出作为其运算结果的散列值t=Η3(γ)eZ,上述署名输出单元构成为输出上述署名σ=(r,s)和上述清零消息m&。6.如权利要求5所述的署名生成装置,其中,M彡0,在M=0时的上述恢复消息mre。和上述异或值w是无效值,在M=0时,停止在上述第2存储单元中存储上述恢复消息的处理、上述第2散列运算单元的处理、以及上述第1异或运算单元的处理。7.如权利要求1所述的署名生成装置,其中,上述R=gkeG是将椭圆曲线上的点g在该椭圆曲线上进行k倍的运算。8.如权利要求2所述的署名生成装置,其中,上述R=gkeG是将椭圆曲线上的点g在该椭圆曲线上进行k倍的运算,将上述散列函数Η。{0,;Τ—{0,1}Μ作用于上述运算结果R的运算是,将上述散列函数Htl作用于唯一或限定性地确定作为在椭圆曲线上的点的上述运算结果R的值的运算。9.如权利要求1所述的署名生成装置,其中,上述R=gkeG是gkmodρ的运算,其中,g是2以上的整数且ρ=2q+l。10.一种署名验证装置,包括第1存储单元,存储将位数q的循环群设为G,并将该循环群G的生成源设为g的情况下的、与署名生成装置的秘密密钥χeZ对应的公开密钥y=gkeG;署名输入单元,构成为接受署名σ’=(r’,s’)的输入;第2存储单元,存储上述署名σ’=(r’,s’);第3存储单元,存储对应于上述署名ο,的恢复消息πι_’的比特长度Μ’;第1散列运算单元,构成为将对输入值输出整数的散列函数H3{0,1}*—Ζ,作用于依赖上述署名ο,具有的r’的值Y’,并输出作为其运算结果的散列值t’=H3(Y‘)eΖ,Z为整数;群运算单元,构成为进行R’=gs’-Yt'eG的运算,并输出该运算结果R’;第2散列运算单元,构成为将输出比特长度根据上述恢复消息πι_’的比特长度Μ’而决定的散列函数H2:{0,1}*—{0,1}Μ’,作用于值β,该值β依赖上述运算结果R’和r’的第1比特位置的L比特的值h’e{0,1广,并输出作为其运算结果的Μ’比特的散列值u’=Η2(β’)e{0,1}M’,其中,L是与署名验证装置共享的正整数;第1异或运算单元,构成为计算依赖上述值r’的第2比特位置的Μ’比特的值的值w,e{0,1}M’和上述散列值u’的异或w’(+)U’,并将其运算结果作为恢复消息mre。’e{0,1}M’而输出;第3散列运算单元,构成为将对输入值输出L比特的散列值的散列函数H1:{0,ι}*-{0,1}S作用于依赖上述运算结果R’和在上述第1异或运算单元中计算的上述恢复消息πι_’的值α’,并输出作为其运算结果的L比特的散列值H1(a’)e{0,1广;以及比较单元,构成为比较上述L比特的值h’和上述散列值H1(α,),并以h’=H1(α,)作为条件,输出验证成功的信息。11.如权利要求10所述的署名验证装置,还包括第4散列运算单元,构成为将输出比特长度根据上述恢复消息πι_’的比特长度Μ’而决定为L+M’比特的散列函数Htl:{0,1}*—{0,;ΤΜ’,作用于上述运算结果R’,并输出作为其运算结果的L+M,比特的散列值Π,=H0(R')e{0,1}L+M';以及第2异或运算单元,构成为计算上述散列值Π’和上述署名σ,具有的r’的异或d’=Π,(+)r’e{0,1}"1’,并输出该异或值(1’,依赖上述运算结果R’和r’的第1比特位置的L比特的值h’e{0,1广的值β,是,依赖上述散列值Π’和上述异或值d’的第1比特位置的L比特的值h’e{0,1}L的值,依赖上述值r’的第2比特位置的M,比特的值的值w’是上述异或值d’的第2比特位置的M’比特的值,依赖上述运算结果R’和在上述第1异或运算单元中计算的上述恢复消息mre。’的值α’是,依赖上述散列值Π’和在上述第1异或运算单元中计算的上述恢复消息mre。’的值。12.如权利要求10所述的署名验证装置,其中,依赖上述值r’的第2比特位置的M’比特的值的值W’是上述值r’的第2比特位置的M’比特的值。13.如权利要求10至12的任一项所述的署名验证装置,其中,M’彡1。14.如权利要求10至12的任一项所述的署名验证装置,其中,上述署名输入单元构成为接受上述署名σ’和对应于上述署名ο’的清零消息Hid/的输入,该署名验证装置包括第4存储单元,存储上述清零消息mel/,上述第1散列运算单元构成为将上述散列函数H3:{0,:Τ—Ζ,作用于依赖上述署名ο,具有的r’和上述清零消息m.’的值Y’,并输出作为其运算结果的散列值t’=H3(y‘)eΖ。15.如权利要求10所述的署名验证装置,其中,上述署名输入单元构成为接受上述署名σ’和对应于上述署名ο’的清零消息Hid/的输入,该署名验证装置包括第4存储单元,存储上述清零消息mel/,上述第1散列运算单元构成为将上述散列函数H3:{0,:Τ—Ζ,作用于依赖上述署名ο,具有的r’和上述清零消息m.’的值Y’,并输出作为其运算结果的散列值t’=H3(y‘)eΖ,Μ’≥0,在Μ’=0时的恢复消息mre。’是无效值,在M’=0时,停止在上述第2散列运算单元的处理及上述第1异或运算单元,且上述第3散列运算单元将上述散列函数H1作用于依赖上述运算结果R’的值α’,并输出作为其运算结果的散列值H1(α’)。16.如权利要求10所述的署名验证装置,其中,上述公开密钥y=gxeG是将椭圆曲线上的点g在该椭圆曲线上进行χ倍的点,上述R’=€’·<’eG是,将椭圆曲线上的点g在该椭圆曲线上进行s’倍,将上述公开密钥y在该椭圆曲线上进行t’倍,并将这些运算结果在该椭圆曲线上相加的运算。17.如权利要求11所述的署名验证装置,其中,上述公开密钥y=gxeG是将椭圆曲线上的点g在该椭圆曲线上进行χ倍的点,上述R’=€’·<’eG是,将椭圆曲线上的点g在该椭圆曲线上进行s’倍,将上述公开密钥y在该椭圆曲线上进行t’倍,并将这些运算结果在该椭圆曲线上相加的运算,将上述散列函数Η。{0,;Τ—{0,1}+Μ作用于上述运算结果R’的运算是,将上述散列函数Htl作用于唯一或限定性地确定作为在椭圆曲线E上的点的上述运算结果R’的值的运笪弁。18.如权利要求10所述的署名验证装置,其中,上述公开密钥y=gxeG是gxmodρ的运算,其中,g是2以上的整数且ρ=2q+l,上述R,=gs,·y”eG是gs,·y”modρ的运算。19.一种署名生成装置执行的署名生成方法,其中,第1存储单元存储整数的秘密密钥X,第2存储单元存储M比特的恢复消息mre。e{0,1}M,上述方法包括(a)生成整数的任意值k的步骤;(b)计算将位数q的循环群设为G,并将该循环群G的生成源设为g的情况下的R=gkeG,并输出该运算结果R的步骤;(c)将对输入值输出L比特的散列值的散列函数H1{0,1}*-{0,1}L,作用于依赖上述运算结果R和恢复消息mre。的值α,并输出作为其运算结果的L比特的散列值h=H1(Q)e{0,1}L的步骤,其中,L是与署名验证装置共享的正整数;(d)将输出比特长度根据上述恢复消息的比特长度M而决定为M比特的散列函数H2={0,1}*-{0,1}M,作用于依赖上述运算结果R和上述散列值h的值β,并输出作为其运算结果的M比特的散列值U=Η2(β)e{0,1广的步骤;(e)计算上述恢复消息mr。e和上述散列值u的异或w=mre。Mue{0,1}M,并输出该异或值w的步骤,其中,(+)是异或运算符;(f)计算依赖将上述散列值he{0,1}L配置在第1比特位置上,将上述异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值h|we{0,1}_的值1~,该值1~可复原上述散列值h和上述异或值w,并输出该值r的步骤;(g)将对输入值输出整数的散列函数H3:{0,:Τ—Ζ,作用于依赖上述值r的值γ,并输出作为其运算结果的散列值t=H3(γ)eZ的步骤,Z为整数;(h)计算s=k-t·χeZ,并输出该运算结果s的步骤;以及⑴输出署名σ=(r,s)的步骤。20.如权利要求19所述的署名生成方法,其中,还包括将输出比特长度根据上述恢复消息m,e。的比特长度M而决定为L+M比特的散列函数Htl{0,1}*-{0,1}L+M作用于上述运算结果R,并输出作为其运算结果的L+M比特的散列值TI=Htl(R)e{0,;ΤΜ的步骤,依赖上述运算结果R和恢复消息nve。的值α是依赖上述散列值Π和恢复消息的值,依赖上述运算结果R和上述散列值h的值β是依赖上述散列值Π和上述散列值h的值,上述步骤(f)包括(f-1)计算将上述散列值he{0,1广配置在第1比特位置上,将上述异或值we{O,1广配置在第2比特位置上的L+M比特的比特结合值d=h|we{0,1}+Μ,并输出该比特结合值d的步骤;以及(f-2)计算上述散列值Π和上述比特结合值d的异或Γ=Π(+)de{0,1}+Μ,并输出该值r的步骤。21.如权利要求19所述的署名生成装置,其中,上述步骤(f)包括计算将上述散列值he{0,1广配置在第1比特位置上,将上述异或值we{0,1广配置在第2比特位置上的L+M比特的比特结合值r=h|we{0,1}Μ,并输出该值r的步骤。22.一种署名验证方法,由署名验证装置执行,其中,第1存储单元存储将位数q的循环群设为G,并将该循环群G的生成源设为g的情况下的、与署名生成装置的秘密密钥χeZ对应的公开密钥y=gkeG;上述方法包括(a)接受署名σ’=(r’,s’)的输入的步骤;(b)在第2存储单元中存储上述署名σ’=(r’,S’)的步骤;(c)在第3存储单元中存储对应于上述署名σ,的恢复消息πιΜ。’的比特长度Μ’的步骤;(d)将对输入值输出整数的散列函数H3:{0,:Τ—Ζ,作用于依赖上述署名σ,具有的r’的值Y’,并输出作为其运算结果的散列值t’=H3(y')eZ的步骤,Z为整数;(e)进行R’=gs’·广eG的运算,并输出该运算结果R’的步骤;(f)将输出比特长度根据上述恢复消息mM。’的比特长度Μ’而决定的散列函数H2:{0,1}*-{0,1}Μ’,作用于值β’,该值β,依赖上述运算结果R’和r’的第1比特位置的L比特的值h’e{0,1广,并输出作为其运算结果的Μ’比特的散列值u’=Η2(β’)e{0,1}M’的步骤,其中,L是与署名验证装置共享的正整数;(g)计算依赖上述值r’的第2比特位置的Μ’比特的值的值w’e{0,1}M’和上述散列值U’的异或w’(+)u’,并将其运算结果作为恢复消息mre。’e{0,1}M’而输出的步骤;(h)将对输入值输出L比特的散列值的散列函数H1:{0,1}*—{0,1广,作用于依赖上述运算结果R’和在上述第1异或运算单元中计算的上述恢复消息HW/的值α’,并输出作为其运算结果的L比特的散列值HJa’)e{0,1广的步骤;以及(i)比较上述L比特的值h’和上述散列值HJa,),并以h’=Hja')作为条件,输出验证成功的信息的步骤。23.如权利要求22所述的署名验证方法,还包括将输出比特长度根据上述恢复消息m,e。’的比特长度Μ’而决定为L+M’比特的散列函数氏{0,1}*—{0,;ΤΜ’,作用于上述运算结果R’,并输出作为其运算结果的L+M’比特的散列值Π’=Htl(IT)e{0,1}L+M'的步骤,其中,L是与署名生成装置共享的正整数;以及计算上述散列值Π,和上述署名σ,具有的r,的异或d,=Π,(+)r,e{0,1}Μ,,并输出该异或值d’的步骤,依赖上述运算结果R’和r’的第1比特位置的L比特的值h’e{0,1广的值β,是,依赖上述散列值Π’和上述异或值d’的第1比特位置的L比特的值h’e{0,1}L的值,依赖上述值r’的第2比特位置的M,比特的值的值w’是上述异或值d’的第2比特位置的M’比特的值,依赖上述运算结果R’和在上述第1异或运算单元中计算的上述恢复消息mre。’的值α’是,依赖上述散列值Π’和在上述第1异或运算单元中计算的上述恢复消息mre。’的值。24.如权利要求22所述的署名验证方法,其中,依赖上述值r’的第2比特位置的M’比特的值的值W’是上述值r’的第2比特位置的M’比特的值。25.一种程序,用于使计算机作为权利要求1所述的署名生成装置起作用。26.—种程序,用于使计算机作为权利要求10所述的署名验证装置起作用。全文摘要将x设为署名生成装置的秘密密钥,将mrec∈{0,1}M设为恢复消息,将k设为任意值,将g设为位数q的循环群G的生成源,将R设为gk∈G,将H1设为散列函数H1{0,1}*→{0,1}L,将H2设为输出可变长度的散列函数H2{0,1}*→{0,1}M,将H3设为散列函数H3{0,1}*→Zq,并设为r=H1(R,mrec)|mrec(+)H2(R,H1(R,mrec))((+)设为异或运算符),对依赖于r的γ设为t=H3(γ),设为s=k-t·x∈Z,将署名设为σ=(r,s)。文档编号H04L9/32GK101828210SQ200880111550公开日2010年9月8日申请日期2008年4月24日优先权日2007年10月29日发明者冈本龙明,山本刚,藤冈淳,铃木幸太郎,阿部正幸申请人:日本电信电话株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1