CN101351988B - 签名生成装置、签名生成方法 - Google Patents

签名生成装置、签名生成方法 Download PDF

Info

Publication number
CN101351988B
CN101351988B CN200680049826.0A CN200680049826A CN101351988B CN 101351988 B CN101351988 B CN 101351988B CN 200680049826 A CN200680049826 A CN 200680049826A CN 101351988 B CN101351988 B CN 101351988B
Authority
CN
China
Prior art keywords
mentioned
group
unit
signature
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200680049826.0A
Other languages
English (en)
Other versions
CN101351988A (zh
Inventor
布田裕一
大森基司
满保雅浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN101351988A publication Critical patent/CN101351988A/zh
Application granted granted Critical
Publication of CN101351988B publication Critical patent/CN101351988B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种能够使解析签名生成处理中使用的值变得困难的签名生成装置。签名生成装置通过随机数生成模块生成由len比特构成的随机数u,由选择模块将生成的随机数u转换成比特表现,从表存储部取得与各比特值对应的元对。签名生成装置通过随机元生成模块对取得的所有元对实施第一群G和第二群的基本运算,计算第一群G上的元Pk和第二群Ga上的元Pak。签名生成装置使用消息m的散列值h、第一群G上的元Pk和第二群Ga上的元Pak、转换模块、主要运算模块、逆转换模块、乘法运算模块、除法运算模块以及签名数据生成模块,生成对消息m的签名数据S。

Description

签名生成装置、签名生成方法
技术领域
本发明涉及作为信息安全技术的软件混淆方法,尤其涉及数字签名方法的混淆技术。 
背景技术
在安装密码软件时,如果直接安装密钥或密码算法,则在软件被解析后即可轻而易举地非法使用。因此,迫切希望有使软件解析变得困难的防篡改软件技术。作为防篡改软件技术,在专利文献1中记载有如下方式:转换运算和运算区域,使转换前的运算区域很难被推测,从而使软件解析变得困难。 
该方式通过一次转换等来进行转换。例如,在转换密钥和数据的加法运算时,转换密钥和数据,对转换后的数据进行转换后的区域内的加法运算,对其结果执行逆转换,从而得到密钥和数据的加法运算结果。通过将这样被混淆的加法运算方法用于使用公钥密码的加密程序或解密程序,可提高针对解析程序而得到密钥的攻击的安全性。 
以下,说明专利文献1中公开的技术的具体例子。 
在此,说明对输入a、b输出运算结果a+b的程序,即,由主要运算模块、逆转换模块以及输出模块构成的加法运算程序。 
转换模块保持整数k1、k2,在接受输入值a、b时,使用所保持的整数k1、k2,将输入值a、b分别转换成ta=k1×a+k2、tb=k1×b+k2。其中,×表示乘法运算。接着,主要运算模块对值ta、tb计算tab=ta+tb。逆转换模块对tab计算c=(tab-2×k2)/k1。输出模块输出运算结果c。 
在进行上述处理时,由于tab=ta+tb=k1×a+k2+k1×b+k2=k1×(a+b)+2×k2,所以(tab-2×k2)/k1=a+b成立。因此,成为c=a+b,加法运算程序能够由输入值a、b计算出a和b的加法运算结果。 
在此,在实现了解析困难的转换模块和逆转换模块时,第三者(解析者)可解析的仅是ta、tb、tab。由这些值推测a、b是很困难的,因此可将 a、b隐蔽起来。 
在专利文献1中,通过一次转换来转换数据,难以解析数据本身,但运算种类即“加法运算”在转换目标中也执行“加法运算”,无法达到将运算种类隐蔽起来的程度。 
在专利文献2中,根据如果具有某种信息(陷门)则易解的带陷门的离散对数问题,通过将“加法运算”转换成“乘法运算”或者“椭圆曲线上的群的加法运算”,进行运算种类的隐蔽。 
此外,在此说明以往采用的椭圆DSA(Digital Signature Algorithm:数字签名算法)签名方式(以下称作“以往的椭圆DSA签名方式”)。以往的椭圆DSA签名方式记载在非专利文献3的第四页,因此,在此简单进行说明。 
(1)参数 
在以往的椭圆DSA签名方式中,将椭圆曲线E的方程式y^2=x^3+a×x+b的变量a、b、椭圆曲线E的定义域GF(p)、基点P和基点的级数(order)q作为参数进行保持。在此,x^y表示x的y次幂,q和P满足q*P=O。O是椭圆曲线的群的零元,*表示椭圆曲线的纯量倍运算,q*P表示将q个P相加。 
(2)私钥和公钥 
设私钥为ks(0<ks<q),设KP=ks*P为公钥。 
(签名生成) 
在以往的椭圆DSA签名方式的签名生成中,在以下步骤中生成成为签名对象的消息m的数字签名S。 
(步骤S1)计算h=Hash(m)。在此,Hash(m)是m的散列值。由消息求出散列值的散列函数例如是SHA-1。散列函数详细记载在非专利文献1的192~195页。 
(步骤S2)选择随机数k,计算椭圆曲线上的点R=k*P。 
(步骤S3)计算r=x(R)mod q。在此,x(R)表示R的x坐标。 
(步骤S4)计算s=(h+r×ks)/kmod q。 
(步骤S5)输出S=(r,s),结束。 
(4)签名验证 
在以往的椭圆DSA签名方式的签名验证中,通过以下步骤验证数字签名S,输出验证结果(OK或者NG)。 
(步骤S10)计算h=Hash(m)。 
(步骤S11)计算R′=(h/s mod q)*P+(r/s mod q)*KP,得到r′=x(R′)。 
(步骤S12)检查r=r′是否成立。在成立时输出OK,结束;在不成立时输出NG,结束。 
专利文献1:美国专利第6,594,761号说明书 
专利文献2:国际公开第2005/098795号小册子 
专利文献3:日本专利第3,402,441号说明书 
非专利文献1:冈本龙明、山本博资、“現代暗号”、产业图书(1997年) 
非专利文献2:Henri Cohen,“A Course in Computational AlgebraicNumber Theory”,GTM 138,Springer-Verlag,1993,pp.16-19 
非专利文献3:I.Blake,G.Seroussi and N.Smart,“Elliptic Curves inCryptography”,CAMBRIDGE UNIVERSITY PRESS,1999 
非专利文献4:N.Kunihiro and K.Koyama,“Two Discrete LogAlgorithms for Super-Anomalous Elliptic Curves”,SCIS’99,1999,pp.869-874 
在以往的椭圆DSA签名方式的签名生成中,不仅需要使私钥ks保密,还需要使随机数k保密。这是因为当随机数k被第三者知道时,可使用步骤S4的式子逆运算ks。 
但是,在上述现有例的方式中,进行运算(加法运算)的转换,可使解析使用该运算的部分变得困难,但在以往的椭圆DSA签名方式的签名生成中,无法使解析随机数k变得困难。 
发明内容
因此,本发明鉴于上述问题,其目的在于,提供一种能够使签名生成处理中使用的值成为解析困难的签名生成装置、签名生成方法、签名生成程序、记录介质以及集成电路。 
为了达到上述目的,本发明提供一种签名生成装置,以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,上述签名生成装置具有:分解值存储单元,存储多个上述分解组;选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解组;生成单元,对选择出的分解组中包含的2个以上的第一分解值实施上述群G的基本运算,生成第一幂元,对选择出的分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值实施上述群Ga的基本运算,生成第二幂元;以及签名单元,将生成的上述第一幂元和消息分别转换成群Ga上的元,对转换后的第一幂元、转换后的消息以及上述第二幂元实施上述群Ga上的运算,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。 
发明效果 
根据上述所示的结构,签名生成装置不仅能够隐蔽数字签名中使用的值,而且能够隐蔽运算本身。 
在此,也可以是,上述多个数分别是由长度为2以上的预定长度构成的比特串所表现的数,分解对按照上述由预定长度构成的比特串的各比特值对应,上述选择单元将选择出的上述数u转换成由上述预定长度的比特串构成的比特表现,从上述分解值存储单元中选择由与各个比特的值相对应的分解对构成的上述分解组。 
根据该结构,签名生成装置能够容易地选择要使用的被隐蔽的值。 
在此,也可以是,上述生成单元,对由按照每个比特值选择出的分解对构成的上述分解组中包含的2个以上的第一分解值,实施上述群G的基本运算,生成上述第一幂元,对由按照每个比特值选择出的分解对构成的上述分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值,实施上述群Ga的上述基本运算,生成上述第二幂元。 
根据该结构,在群G和群Ga的基本运算中,能够隐蔽要使用的值和运算。 
在此,也可以是,上述第一幂元包括2个以上的值,上述签名单元具 有:转换部,将对上述消息的散列值作为幂,对上述基本元Pa实施群Ga的上述幂运算,由此将上述散列值转换成属于上述群Ga的转换后散列值;第一运算部,使用上述第一幂元中包括的1个值计算第一数据;第二运算部,对上述转换后散列值实施上述群Ga上的基本运算,计算属于上述群Ga的第三幂元;逆转换部,在上述群Ga或者上述群Ga中实际包含的子群Sa中,对上述第二幂元和上述第三幂元分别实施在上述转换部中进行的转换的幂运算的逆运算,由此求出第一离散对数和第二离散对数;第三运算部,使用上述第一离散对数和上述第二离散对数计算第二数据;以及数据生成部,生成由上述第一数据和上述第二数据的组构成的数字签名。 
根据该结构,签名生成装置在签名单元中,能够隐蔽要使用的值和运算。 
在此,也可以是,上述签名生成装置还具有存储有属于上述群Ga的转换后私钥的转换后私钥存储单元,上述转换后私钥是将私钥作为幂而对上述基本元Pa实施由上述群Ga所示的点构成的椭圆曲线上的纯量乘运算后得到的结果,上述第二运算部对下述运算结果和上述转换后散列值,实施上述群Ga上的基本运算,计算上述第三幂元,上述运算结果是针对上述转换后私钥实施将上述第一数据作为幂的上述群Ga的幂运算而得到的上述群Ga上的元。 
根据该结构,签名生成装置在第二运算部中,能够隐蔽要使用的值和运算。 
在此,也可以是,上述群G和上述群Ga是整数剩余环的乘法群,上述群G和上述群Ga各自的基本运算是对各元实施乘法运算的乘法运算,上述群G和上述群Ga各自的幂运算是将正整数作为幂数的幂乘运算。 
根据该结构,在签名生成装置中,第一、第二以及第三幂元的生成中使用的运算是乘法运算,不同于幂乘运算,因此能够隐蔽运算。 
在此,也可以是,上述群G是椭圆曲线的群,上述子群Sa是异常椭圆曲线的群,上述群G和上述群Ga各自的基本运算是对各元实施椭圆曲线上的加法运算的运算,上述群G和上述群Ga各自的幂运算是对椭圆曲线上的基点进行上述正整数的次数的加法运算的纯量倍运算。在此,也可以是,上述群G是椭圆曲线的群,上述群Ga是2个异常椭圆曲线的直积,上述群G和上述群Ga各自的群的基本运算是对各元实施椭圆曲线上的加法运算的运算,上述群G和上述群Ga各自的幂运算是对椭圆曲线上的基点进行上述正整数的次数的加法运算的纯量倍运算。 
根据这些结构,在签名生成装置中,第一、第二以及第三幂元的生成 中使用的运算是椭圆曲线上的加法运算,不同于整数的加法运算,因此能够隐蔽运算。 
此外,本发明提供一种签名生成装置,以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,上述签名生成装置具有:分解值存储单元,存储多个上述分解组;选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解对;以及签名单元,将选择出的分解对中包含的第一分解值和消息分别转换成群Ga上的元,对转换后的第一分解值、转换后的消息以及选择出的分解对中包含的第二分解值实施上述群Ga上的运算,解出离散对数问题,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。 
根据该结构,签名生成装置能够隐蔽数字签名中使用的值。 
图1是表示签名生成系统1的概要的框图。 
图2是表示签名生成装置10的结构的框图。 
图3是表示表存储部102中存储的各表的数据结构的一例的图。 
图4是表示签名生成程序110中包含的各模块的图。 
图5是表示表生成装置20的结构的框图。 
图6是表示签名生成处理的动作的流程图,接图7。 
图7是表示签名生成处理的动作的流程图,上接图6。 
图8是表示表生成装置20的动作的流程图。 
图9是表示在本发明中由值r、h生成值s(=(r×ks+h)/kmod q)时的动作的概要的图。 
图10是表示本发明的DSA椭圆签名方式的特征部分的图。 
符号说明 
1    签名生成系统 
10   签名生成装置 
20  表生成装置 
30  消息接受装置 
40  签名数据发送装置 
50  签名数据接收装置 
60  互联网 
101 处理器 
102 表存储部 
103 秘密参数存储部 
104 公开参数存储部 
105 转换后私钥存储部 
106 程序存储部 
110 签名生成程序 
121 散列值生成模块 
122 随机数生成模块 
123 选择模块 
124 随机元生成模块 
125 转换模块 
126 主要运算模块 
127 逆转换模块 
128 乘法运算模块 
129 除法运算模块 
130 签名数据生成模块 
201 公开参数存储部 
202 随机数生成部 
203 群运算部 
204 存储处理部 
具体实施方式
以下,参照附图说明用于实施发明的优选实施方式。 
1.第一实施方式 
1.1准备 
在此,为了说明本发明涉及的实施方式,先说明必要的“椭圆曲线上的椭圆纯量乘运算”。 
作为一例,说明100*P的计算。 
当表示成100*P=2(2(P+2(2(2(P+2P)))))时,100*P通过基于椭圆曲线上的点的6次2倍运算和2次加法运算来进行计算。 
这样,椭圆纯量乘运算归结于基于椭圆曲线上的2倍运算和加法运算的运算。 
在此,设椭圆曲线E的方程式为y^2=x^3+a×x+b,设椭圆曲线上的任意点P的坐标为(x1,y1),设任意点Q的坐标为(x2,y2)。在此,设由R=P+Q确定的点R的坐标为(x3,y3)。 
在P≠Q时,R=P+Q成为椭圆曲线上的加法运算的运算。以下表示加法运算的公式。 
x3={(y2-y1)/(x2-x1)}^2-x1-x2 
y3={(y2-y1)/(x2-x1)}(x1-x3)-y1 
在P=Q时,R=P+Q=P+P=2×P,R=P+Q成为椭圆曲线上的2倍运算的运算。以下表示2倍运算的公式。 
x3={(3×x1^2+a)/(2×y1)}^2-(2×x1) 
y3={(3×x1^2+a)/(2×y1)}(x1-x3)-y1 
在此,上述运算是定义椭圆曲线的有限域上的运算。 
另外,对于椭圆曲线的运算公式,在“Efficient elliptic curveexponentiation”(Miyaji,Ono,and Cohen著,Advances incryptology-proceedings of ICICS’97,Lecture notes in computer science,1997,Springer-verlag,282-290)中有详细说明。 
1.2签名生成系统1的结构 
说明作为本发明涉及的实施方式的签名生成系统1。 
如图1所示,签名生成系统1包括签名生成装置10、表生成装置20、消息接受装置30、签名数据发送装置40以及签名数据接收装置50。 
消息接受装置30通过用户操作接受消息m,将接受的消息m输出到签名生成装置10。 
表生成装置20生成本发明的椭圆DSA签名方式(以下简称作“椭圆DSA签名方式”)的签名生成中使用的多个元对和转换后私钥,将生成的多个元对和转换后私钥存储到签名生成装置10。在此,元对是指第一椭圆曲线上的群的元和第二椭圆曲线上的群的元的组。此外,转换后私钥是指对私钥实施第二椭圆曲线上的椭圆纯量乘运算后的运算结果。 
另外,元对和转换后私钥的详细情况将在后面说明。 
签名生成装置10从消息接受装置30接受消息m,对接受的消息m通过椭圆DSA签名方式的签名生成来生成签名数据S(=(r,s))。 
签名生成装置10将生成的签名数据S和从消息接受装置30接受的消息m输出到签名数据发送装置40。 
签名数据发送装置40例如通过互联网60与签名数据接收装置50网络连接。签名数据发送装置40若从签名生成装置10接受消息m和针对消息m的签名数据S,则将接受的消息m和签名数据S经由互联网60发送到签名数据接收装置50。 
签名数据接收装置50从签名数据发送装置40经由互联网60接收消息m和针对消息m的签名数据S时,进行签名验证。 
1.3签名生成装置10的结构 
在此,说明签名生成装置10的结构。 
如图2所示,签名生成装置10包括处理器101、表存储部102、秘密参数存储部103、公开参数存储部104、转换后私钥存储部105以及程序存储部106。 
(1)处理器101 
处理器101构成计算机系统,通过读入程序存储部106中存储的签名生成程序110,由读入的签名生成程序110和硬件资源协动来实现功能。 
处理器101从程序存储部106中存储的签名生成程序110,一个一个地读出计算机指令进行解释,根据该解释结果进行动作。 
另外,签名生成程序110的详细情况将在后面说明。 
(2)表存储部102 
表存储部102存储有多个元对,该元对是属于第一群G的元和属于第二群Ga的元的对。另外,元对由表生成装置20生成。 
(2-1)关于第一群G和第二群Ga 
第一群G是椭圆DSA签名方式中使用的以椭圆曲线E的点为元的群。在此,设椭圆曲线E的方程式为y^2=x^3+a×x+b。在设由具有椭圆曲线E的方程式的域GF(p)上的椭圆曲线的点构成的群为E(GF(p))时,第一群G是E(GF(p))。 
第二群Ga相对于n=p1×p2(p1、p2是素数),成为由GF(p1)上的椭圆曲线Ea的点构成的群Ea(GF(p1))、和由GF(p2)上的椭圆曲线Ea的点构成的群Ea(GF(p2))的直积Ea(GF(p1))×Ea(GF(p2))。Z/nZ不是域而是环。虽然在数学上不称作“Z/nZ上的椭圆曲线”,但在此为了方便,将该直积称作Z/nZ上的椭圆曲线的群。另外,Z是整数环,Z/nZ是以数n为模的整数剩余环。 
在此,设椭圆曲线Ea的方程式为y^2=x^3+aa×x+ba。此外,设素数p1和p2是与椭圆曲线E的基点的级数q不同的数,使第三者无法知道地进行生成和管理。 
与Ea(GF(p1))上的点Pa1=(xa1,ya1)mod p1和Ea(GF(p2))上的点Pa2=(xa2,ya2)mod p2对应的Z/nZ上的椭圆曲线Ea(GF(p1))×Ea(GF(p2))的点Pa=(xa,ya)modn按照以下方式定义。设xa为满足xa mod p1=xa1、xa mod p2=xa2的数,设ya为满足ya mod p1=ya1、ya mod p2=ya2的数。 
通过该定义,设与Ea(GF(p1))×Ea(GF(p2))上的点Pa=(xa,ya)mod n对应的Ea(GF(p1))上的点Pa1为Pa1=(xa1,ya1)mod p1,Ea(GF(p2))上的点Pa2为Pa2=(xa2,ya2)modp2,从而将Ea(GF(p1))、Ea(GF(p2))视为Ea(GF(p1))×Ea(GF(p2))的子群。 
在椭圆曲线Ea中,设mod p1下的椭圆曲线的级数、即点的个数为p1。将这样的域GF(p1)上的椭圆曲线称作异常(Anomalous)椭圆曲线。并且,设mod p2下的椭圆曲线的级数为p2,即在域GF(p2)上也是异常椭圆曲线。此时,Z/nZ上的椭圆曲线称作超级异常(Super-Anomalous)椭圆曲线。超级异常椭圆曲线在非专利文献4中有详细记载。此时,由于Z/nZ上的椭圆曲线的群是Ea(GF(p1))×Ea(GF(p2)),因此,椭圆曲线的级数是n(=p1×p2)。 
设素数p1的比特数为2×len+1比特。另外,p1的比特数也可以大于2×len+1。len例如是160。p2例如是n=p1×p2的比特数成为1024那样的较大的素数。 
(2-2)关于表存储部102中存储的元对 
表存储部102存储2×len个元对PP_(i,j)。这里,i是0或者1,j是0到len-1的值的某个,“_”表示下标文字,i,j是PP的索引。PP_(i,j)=(v_(i,j)*P mod p,v_(i,j)*Pa mod n)。*表示对P进行椭圆曲线E上的纯量倍运算、对Pa进行椭圆曲线Ea上的纯量倍运算。v_(i,j)是len比特的值。在此,要注意PP_(i,j)中包含的2点的纯量相等。 
在此,以下表示元对的存储方法的一例。 
表存储部102具有用于存储多个元对的区域。 
如图3所示,表存储部102存储有表T101、T102、...、T103。即,表存储部102具有len个表。 
表T101包括表名称T110(在此是“表0”)、二进制项目T120、T121(在此是“0”、“1”)以及各二进制项目T120、T121中的元对T130、T131。1个表中存储有2个元对,因此,表存储部102通过存储len个表,来存储2×len个元对。 
表名称T110与值j相对应。即,表名称T110(表0)与j=0相对应,表名称T111(在此是表1)与j=1相对应。由此,将表名称与j=0、...、len-1分别对应起来。 
此外,在元对T130中,P_(0,0)是v_(0,0)*P mod p,Pa_(0,0)是v_(0,0)*Pa mod n。在元对T130中,P_(1,0)是v_(1,0)*P mod p,Pa_(1,0)是v_(1,0)*Pa mod n。要注意PP_(i,j)=(P_(i,j),Pa_(i,j))。 
各个元对与二进制数相对应。具体地说,在二进制数的值是0的情况下,与二进制项目“0”中的元对对应;在二进制数的值是1的情况下,与二进制项目“1”中的元对对应。 
(3)秘密参数存储部103 
秘密参数存储部103具有防篡改性,存储有素数p1。 
(4)公开参数存储部104 
公开参数存储部104分别存储有椭圆曲线E的方程式y^2=x^3+a×x+b中的变量a、b、素数p、椭圆曲线E上的基点P及其级数q、椭圆曲线Ea的方程式y^2=x^3+aa×x+ba中的变量aa、ba、合数n(=p1×p2)以及椭圆曲线Ea上的点Pa,来作为参数。在此,存储点是指存储点的坐标。此外,p、q是len比特的素数。 
(5)转换后私钥存储部105 
转换后私钥存储部105存储利用对私钥ks实施第二椭圆曲线Ea上的椭圆纯量乘运算转换私钥ks而成的转换后私钥KST(=ks*Pa)。转换后私钥KST由表生成装置20生成。 
(6)程序存储部106 
程序存储部106存储有签名生成程序110。 
如图4所示,签名生成程序110包括散列值生成模块121、随机数生成模块122、选择模块123、随机元生成模块124、转换模块125、主要运算模块126、逆转换模块127、乘法运算模块128、除法运算模块129以及签名数据生成模块130。 
本程序对作为输入的消息m输出m的签名数据S(=(r,s))。 
各模块是组合机械语言形式的多个指令代码而构成的计算机程序。上述机械语言形式是由处理器101解码执行的形式。 
(6-1)散列值生成模块121 
散列值生成模块121从消息接受装置30接受作为输入的消息m,对接受的消息m实施散列函数,计算消息m的散列值h。散列函数例如是SHA-1。 
散列值生成模块121将散列值h输出到转换模块125。 
(6-2)随机数生成模块122 
随机数生成模块122生成len比特的随机的正整数(随机数)u,将生成的随机数u输出到选择模块123。 
(6-3)选择模块123 
选择模块123从随机数生成模块122接受随机数u,将接受的随机数u转换成比特表现。 
选择模块123针对转换成比特表现的随机数u=u_0+u_1×2+u_2×2^2+...+u_(len-1)×2^(len-1),从表存储部102中选择PP_(u_0,0)、 PP_(u_1,1)、PP_(u_2,2)、...、PP_(u_(len-1),len-1)(在此,相对于i=0、1、2、...、len-1,u_i=0或者1)。 
在此,将u_k中的下标k(k=0、1、...、len-1)的值与表存储部102中存储的表的表名称对应。即,u_0与表0对应,u_1与表1对应,...,u_len-1与表len-1对应。 
选择模块123将选择出的PP_(u_0,0)、PP_(u_1,1)、PP_(u_2,2)、...、PP_(u_(len-1),len-1)输出到随机元生成模块124。 
(6-4)随机元生成模块124 
随机元生成模块124从选择模块123接受len个元对PP_(u_i,i)=(P(u_i,i),Pa(u_i,i)),使用由公开参数存储部104存储的椭圆曲线E的参数a、b、素数p以及椭圆曲线E上的基点P,在椭圆曲线E上对所接受的元对中分别包含的P_(u_i,i)进行加法运算,从而计算出Pk(=(v_(u_0,0)*P+v_(u_1,1)*P+...+v_(u_len-1,len-1)*P)(在此,i=0、1、2、...、len-1)。另外,要注意Pk=(v_(u_0,0)+v(u_1,1)+...+v_(u_(len-1),len-1))*P。 
随机元生成模块124使用由公开参数存储部104存储的椭圆曲线Ea的参数aa、ba、合数n,在椭圆曲线Ea上对Pa_(u_i,i)mod n(i=0、1、2、...、len-1)进行加法运算,Pak mod n(=(v_(u_0,0)*Pa+v_(u_1,1)*Pa+...+v_(u_len-1,len-1)*Pa))。在此,要注意Pak=(v_(u_0,0)+v_(u_1,1)+...+v_(u_(len-1),len-1))*Pa。 
随机元生成模块124将计算出的Pk输出到主要运算模块126,将计算出的Pak输出到逆转换模块127。 
(6-5)转换模块125 
转换模块125若从散列值生成模块121接受散列值h,则使用由公开参数存储部104存储的椭圆曲线Ea的参数aa、ba、合数n、椭圆曲线Ea上的点Pa以及接受的散列值h,计算hPa=h*Pa mod n。 
转换模块125将计算出的hPa输出到主要运算模块126。 
(6-6)主要运算模块126 
主要运算模块126从随机元生成模块124接受Pk,从转换模块125接受hPa。 
主要运算模块126计算r=x(Pk)mod q。在此,x(Pk)表示Pk的x坐标。 
主要运算模块126使用由转换后私钥存储部105存储的转换后私钥KST、由公开参数存储部104存储的椭圆曲线Ea的参数aa、bb、合数n,在椭圆曲线Ea上计算出r*KST,并与hPa进行椭圆曲线Ea上的加法运算,成为Qa=r*KST+hPa。 
主要运算模块126将计算出的r输出到签名数据生成模块130,将计算出的Qa输出到逆转换模块127。 
(6-7)逆转换模块127 
逆转换模块127从随机元生成模块124接受Pak,从主要运算模块126接受Qa。 
逆转换模块127使用由秘密参数存储部103存储的素数p1,计算Qa相对于Pa mod p1的离散对数cQ和Pak相对于Pa mod p1的离散对数ck。 
逆转换模块127将计算出的离散对数cQ、ck输出到乘法运算模块128。 
首先,表示求出Qa的离散对数cQ时的处理。 
(步骤S20)计算Qa1=Qa mod p1,Pa1=Pa mod p1。 
(步骤S21)计算Qa1相对于Pa1的离散对数cQ(即满足Qa1=cQ*Pa1的cQ)。 
接着,表示求出Pak的离散对数ck时的处理。 
(步骤S30)计算ck1=Pak mod p1,Pa1=Pa mod p1。 
(步骤S31)计算ck1相对于Pa1的离散对数ck(即满足ck1=ck*Pa1的ck)。 
在此,在步骤S21和S31中计算出的离散对数cQ和ck是异常椭圆曲线上的离散对数问题的解。 
解异常椭圆曲线上的离散对数问题的方法在非专利文献3的88~91页中有详细记载。由于计算方法记载在该文献中,因此在此省略说明。 
另外,设逆转换模块127是为了使处理内容的解析变得困难而通过硬件对策或软件对策在具有防篡改性的区域执行的模块。 
(6-8)乘法运算模块128 
乘法运算模块128若从逆转换模块127接受离散对数cQ、ck,则生成 随机数β。 
乘法运算模块128使用由公开参数存储部104存储的椭圆曲线E上的基点P的级数q,将生成的β与离散对数cQ和ck相乘,计算cQ′=cQ×βmod q,ck′=ck×βmod q。 
乘法运算模块128将计算出的cQ′、ck′输出到除法运算模块129。 
另外,设乘法运算模块128为了使处理内容的解析变得困难而通过硬件对策或软件对策在具有防篡改性的区域来执行。 
(6-9)除法运算模块129 
除法运算模块129从乘法运算模块128接受cQ′、ck′。 
除法运算模块129计算作为ck′的基于mod q的逆元的cki。在此,满足cki×ck′=1mod q。 
除法运算模块129将cki和cQ′相乘并进行mod q,求出s=cki×cQ′mod q。逆元的计算在非专利文献2中有详细记载。 
除法运算模块129将计算出的s输出到签名数据生成模块130。 
(6-10)签名数据生成模块130 
签名数据生成模块130从主要运算模块126接受r,从除法运算模块129接受s。 
签名数据生成模块130将从主要运算模块126接受的r和从除法运算模块129接受的s作为一对,生成签名数据S=(r,s)。 
签名数据生成模块130将散列值生成模块121接受的消息m和生成的签名数据S输出到签名数据发送装置40。 
1.4表生成装置20的结构 
在此,说明表生成装置20的结构。 
如图5所示,表生成装置20包括公开参数存储部201、随机数生成部202、群运算部203以及存储处理部204。 
(1)公开参数存储部201 
公开参数存储部201分别存储有椭圆曲线E的方程式y^2=x^3+a×x+b的变量a、b、素数p、椭圆曲线E上的基点P及其级数q、椭圆曲线Ea的方程式y^2=x^3+aa×x+ba的aa、ba、合数n以及椭圆曲线Ea上的点Pa,来作为参数。在此,存储点是指存储点的坐标。 
(2)随机数生成部202 
随机数生成部202生成2×len个len比特的随机数v_(i,j)(i=0或者1,j=0、1、...、len-1)。 
随机数生成部202生成1个len比特的随机数ks(其中,0<ks<q)。另外,要注意随机数生成部202生成的随机数ks是私钥。 
(3)群运算部203 
群运算部203使用公开参数存储部201中存储的椭圆曲线E的参数a、b、素数p以及基点P,计算与随机数v_(i,j)(i=0或者1,j=0、1、...、len-1)相对应的纯量倍点v_(i,j)*P。 
群运算部203使用公开参数存储部201中存储的椭圆曲线Ea的参数aa、bb、合数n以及椭圆曲线Ea上的点Pa,计算与随机数v_(i,j)(i=0或者1,j=0、1、...、len-1)相对应的纯量倍点v_(i,j)*Pa。 
群运算部203使用生成的各纯量倍点v_(i,j)*P和纯量倍点v_(i,j)*Pa,生成图3所示的表T101、T102、...、T103。由此,群运算部203生成2×len个元对。 
群运算部203使用公开参数存储部201中存储的椭圆曲线Ea的参数aa、bb、合数n以及椭圆曲线Ea上的点Pa,计算对随机数ks的纯量倍点KST=ks*Pa。 
另外,要注意计算出的纯量倍点KST是转换后私钥。 
(4)存储处理部204 
存储处理部204将由群运算部203生成的表T101、T102、...、T103存储到签名生成装置10的表存储部102。由此,存储处理部204可将元对(v_(i,j)*P,v_(i,j)*Pa)(i=0或者1,j=0、1、...、len-1)存储到签名生成装置10的表存储部102。 
存储处理部204将由群运算部203计算出的KST(=ks*Pa)存储到签名生成装置10的转换后私钥存储部105。 
1.5签名生成装置10的动作 
在此,说明由签名生成装置10进行的签名数据的生成动作。另外,设在表存储部102中预先通过表生成装置20存储len-1个表T101、T102、...、T103,在转换后私钥存储部105中预先通过表生成装置20存储转换后私钥 KST。 
(1)动作概要 
签名生成装置10通过处理器101从存储于程序存储部106的签名生成程序110中一个一个地读出计算机指令进行解释,根据该解释结果,读出表存储部102、秘密参数存储部103、公开参数存储部104以及转换后私钥存储部105,同时生成对消息m的签名数据S。签名数据S的生成处理的具体动作将在后面说明。 
(2)签名生成处理的动作 
在此,使用图6和图7所示的流程图说明生成签名数据S的签名生成处理的动作。 
散列值生成模块121从消息接受装置30接受作为输入的消息m(步骤S100),计算接受的消息m的散列值h(步骤S105)。 
随机数生成模块122生成len比特的正整数(随机数)u(步骤S110)。 
选择模块123根据随机数u的比特表现(u=u_0+u_1×2+u_2×2^2+...+u_(len-1)×2^(len-1)(相对于i=0、1、2、...、len-1,u_i=0或者1),选择表存储部102中存储的元对PP_(u_0,0)、PP_(u_1,1)、PP_(u_2,2)、...、PP_(u_(len-1),len-1)(步骤S115)。 
随机元生成模块124对由选择模块123选择出的PP_(u_i,i)=(P_(u_i,i),Pa_(u_i,i))(i=0、1、2、...、len-1),使用公开参数存储部104中存储的椭圆曲线E的参数a、b、素数p、椭圆曲线E上的基点P,在椭圆曲线E上将P_(u_i,i)(i=0、1、2、...、len-1)相加,从而计算Pk(=(v_(u_0,0)*P+v_(u_1,1)*P+...+v_(u_len-1,len-1)*P)(步骤S120)。 
随机元生成模块124使用公开参数存储部104中存储的椭圆曲线Ea的参数aa、ba、合数n,在椭圆曲线Ea上将Pa_(u_i,i)mod n(i=1、2、...、len-1)相加,从而计算Pak(=(v_(u_0,0)*Pa+v_(u_1,1)*Pa+...+v_(u_len-1,len-1)*Pa)(步骤S125)。 
转换模块125使用公开参数存储部104中存储的椭圆曲线Ea的参数aa、ba、合数n、椭圆曲线Ea上的点Pa以及散列值h,计算hPa=h*Pamodn(步骤S130)。 
主要运算模块126计算r=x(Pk)mod q(步骤S135)。在此,x(Pk)表示Pk的x坐标。 
主要运算模块126使用转换后私钥存储部105中存储的转换后私钥KST、以及公开参数存储部104中存储的椭圆曲线Ea的参数aa、bb、合数n,在椭圆曲线Ea上计算r*KST(步骤S140)。 
主要运算模块126通过与hPa进行椭圆曲线Ea上的加法运算,计算Qa=r*KST+hPa(步骤S145)。 
逆转换模块127使用秘密参数存储部103中存储的素数p1,计算Qa相对于Pa mod p1的离散对数cQ(步骤S150)。 
逆转换模块127使用秘密参数存储部103中存储的素数p1,计算Pak相对于Pa mod p1的离散对数ck(步骤S155)。 
乘法运算模块128生成随机数β(步骤S160)。 
乘法运算模块128使用公开参数存储部104中存储的椭圆曲线E上的基点P的级数q、在步骤S150中计算出的离散对数cQ以及随机数β,计算cQ′=cQ×βmod q(步骤S165)。 
乘法运算模块128使用公开参数存储部104中存储的椭圆曲线E上的基点P的级数q、在步骤S155中计算出的离散对数ck以及随机数β,计算ck′=ck×βmod q(步骤S170)。 
除法运算模块129计算在步骤S170中计算出的ck′基于mod q的逆元即cki(步骤S175)。在此,cki是满足cki×ck′=1mod q的值。 
除法运算模块129使用公开参数存储部104中存储的椭圆曲线E上的基点P的级数q、在步骤S175中计算出的cki以及在步骤S165中计算出的cQ′,计算s=cki×cQ′mod q(步骤S180)。 
签名数据生成模块130生成将在步骤S135中生成的r和在步骤S180中生成的s作为一对的签名数据S=(r,s)(步骤S185)。 
签名数据生成模块130将散列值生成模块121接受的消息m和生成的签名数据S输出到签名数据发送装置40。 
1.6表生成装置20的动作 
在此,使用图8所示的流程图说明由表生成装置20进行的表和转换后私钥的生成动作。 
随机数生成部202生成2×len个len比特的随机数v_(i,j)(i=0、1,j=0、1、...、len-1)(步骤S200)。 
随机数生成部202生成1个len比特的随机数(私钥)ks(步骤S205)。其中,ks是满足0<ks<q的数。 
群运算部203使用公开参数存储部201中存储的椭圆曲线E的参数a、b、素数p、基点P,计算与随机数v_(i,j)(i=0、1,j=0、1、...、len-1)相对应的纯量倍点v_(i,j)*P(步骤S210)。 
群运算部203使用公开参数存储部201中存储的椭圆曲线Ea的参数aa、bb、合数n以及椭圆曲线Ea上的点Pa,计算与随机数v_(i,j)(i=0、1,j=0、1、...、len-1)相对应的纯量倍点v_(i,j)*Pa(步骤S215)。 
群运算部203使用生成的各纯量倍点v_(i,j)*P、纯量倍点v_(i,j)*Pa,生成len个表T101、T102、...、T103(步骤S220)。 
群运算部203使用公开参数存储部201中存储的椭圆曲线Ea的参数aa、bb、合数n以及椭圆曲线Ea上的点Pa,计算对随机数ks的纯量倍点(转换后私钥)KST=ks*Pa(步骤S225)。 
存储处理部204将在步骤S220中生成的表T101、T102、...、T103存储到签名生成装置10的表存储部102,将在步骤S225中计算出的KST(=ks*Pa)存储到签名生成装置10的转换后私钥存储部105(步骤S230)。 
由此,存储处理部204可将元对(v_(i,j)*P,v_(i,j)*Pa)(i=0或者1,j=0、1、...、len-1)存储到签名生成装置10的表存储部102。 
1.7实施方式的动作验证 
在此,以下表示上述实施方式中的签名生成程序110生成与在以往的椭圆DSA签名方式的签名生成中生成的签名相同的签名的情况。 
在签名生成程序110中,随机元生成模块124计算随机的点Pk。并且,在签名生成程序110中,随机元生成模块124计算超级异常椭圆曲线Ea上的Pak。 
在此,表存储部102的元对中包含的椭圆曲线E上的点和超级异常椭圆曲线Ea上的点分别成为对点P、点Pa的离散对数相同的值。即,由选择模块123选择元对,由随机元生成模块124在各自的椭圆曲线E、Ea上将选择出的元对中包含的点相加,因此,Pk相对于P的离散对数和Pak相 对于Pa的离散对数成为相同的值(在此是v_(u_0,0)+v_(u_1,1)+...+v_(u_len-1,len-1))。将该离散对数视为以往的椭圆DSA签名方式的步骤S2中生成的随机数k,从而签名生成程序110生成的S=(r,s)与在以往的椭圆DSA签名方式的签名生成中生成的签名S相同。 
以下表示签名生成程序110生成的S=(r,s)与在以往的椭圆DSA签名方式的签名生成中生成的签名S相同的情况。 
考虑点Qa相对于点Pa的离散对数cQ。如上所述,Qa=r*KST+hPa,KST=ks*Pa,hPa=h*Pa。由此可知,Qa=(r×ks+h)*Pa。因此,点Qa相对于点Pa的离散对数cQ成为:cQ=r×ks+h。此外,点Pak相对于点Pa的离散对数ck成为ck=k。 
以下,表示其理由。 
由上述所示的步骤S30,ck1=Pak mod p1,Pa1=Pa mod p1,由上述所示的步骤S31,ck1=ck*Pa1,因此,ck1=Pak mod p1=ck*Pa mod p1。另一方面,通过Pak的计算方法,Pak=k*Pa mod n。在此,n=p1×p2,因此,成为(Pak mod n)mod p1=Pak mod p1,ck1=Pak mod p1=k*Pa modp1。因此,通过该式,ck1=ck*Pa1=ck*Pa mod p1=k*Pa mod p1。通过该式可知,成为ck=k。 
如上述(6-9)所示,由于形成s=cki×cQ′mod q=cQ′/ck′modq=cQ×β/(ck×β)mod q=(r×ks+h)/kmod q,因此,除法运算模块129计算出在以往的椭圆DSA签名方式的签名生成的步骤S4中求出的值s。 
此外,由签名生成程序110的主要运算模块126计算出的值r与以往的椭圆DSA签名方式的签名生成相同,是点P的k倍点。 
因此,由主要运算模块126计算出的值r和由除法运算模块129计算出的值s的组与在以往的椭圆DSA签名方式的签名生成中生成的签名S相同。 
由以上可知,实施方式的签名生成程序110可正确地进行签名生成。 
1.8实施方式的效果 
当秘密参数存储部103、签名生成程序110的逆转换模块127和乘法运算模块128解析困难的情况下,解析者不知道作为n的因数的p1、p2,因此,无法解开超级异常椭圆曲线中的离散对数问题。解析者虽然可解析 转换后私钥KST和Pak,但无法解开超级异常椭圆曲线中的离散对数问题,因此,无法根据它们求出私钥ks和Pak的离散对数k。 
在此,以下说明设计无法求出Pak的离散对数k那样的系统的理由。如果解析者能够知道k,则r、s、h以及q也能够被解析者知道,因此,解析者能够由s=(r×ks+h)/k mod q求出私钥ks。因此,需要设计无法求出Pak的离散对数k那样的系统。 
此外,在以往的椭圆DSA签名方式的签名生成中,不仅需要使私钥ks秘密,还需要使随机数k秘密。 
这是因为,值h、r、s能够被解析者(攻击者)知道,并且,当被知道随机数k时,可通过步骤S4求出私钥ks。 
因此,本发明在使用随机数k和私钥ks的步骤S2和4中,使解析者的解析变得困难。 
在本发明中,如上所述,为了使步骤S4的解析变得困难,通过利用采用超级异常椭圆的同态型转换,将私钥ks和随机数k转换成超级异常椭圆上的点,使得解析者无法解析。从而解析者无法知道私钥ks,因此,实施方式的签名生成系统是安全的。 
在此,使用图9说明以往的椭圆DSA签名方式和本发明的椭圆DSA签名方式的对应。 
图9表示本发明的椭圆DSA签名方式的动作中与以往的椭圆DSA签名方式的签名生成中的步骤S4相对应的动作部分。 
图9中由虚线包围的处理群310对应于图6所示的步骤S140。在此,处理群310由转换后私钥存储部105和计算r*KST的处理群301构成。 
处理群311对应于步骤S130。在此,处理群311包括公开参数存储部104和计算hPa的处理群302。 
将处理群310和处理群311的结果相加的处理群303对应于步骤S145。 
计算离散对数问题cQ的处理群304对应于步骤S150,计算离散对数ck的处理群305对应于步骤S155。 
将β与处理群304和305的计算结果分别相乘的处理群306对应于步骤S160~S170。 
并且,计算签名数据S=(r,s)中包含的数据s的处理群307对应于 步骤S175、S180。 
处理群320在可解析的区域执行,如上所述,处理群321为了使处理内容的解析变得困难,通过硬件对策或软件对策在具有防篡改性的区域执行。 
在此,如上所述,私钥ks被预先转换成KST(=ks*Pa)并进行存储。私钥ks自身不会在进行签名生成时出现,因此解析者无法知道私钥ks。此外,随机数k不会以原值在可解析的区域出现。随机数k在可解析的区域被转换成超级异常椭圆上的点,因此解析变得困难。 
此外,在利用采用超级异常椭圆的同态型转换时,需要异常椭圆Ea中的k*P以取代随机数k,并且,为了计算k,需要有采用椭圆DSA签名方式进行签名的椭圆E的k*Pk和异常椭圆Ea中的k*Pa。 
因此,本发明使用表存储部102、随机数生成模块122、选择模块123以及随机元生成模块124,不生成并使用k,而计算出k*P和k*Pa。由此,在由以往的椭圆DSA签名方式的步骤S2求出R(=k*P)时,随机数k出现,但在本发明中,不出现随机数k而计算出Pk(=k*P),因此,无法在计算Pk时求出k。此外,根据计算结果求出k也变得困难。 
以往,为了使解析私钥ks和随机数k变得困难,在执行步骤S2和步骤S4时,需要实施硬件对策。但是,在本发明中,解开离散对数问题,对使用解的动作部分(处理群304、305以及306)实施硬件对策以使解析变得困难即可。由此,由于实施硬件对策的部分被限定,因此,签名生成装置的安装比以往更加容易。 
此外,图10表示以往的椭圆DSA签名方式的签名生成的各步骤和本发明的签名生成装置10的构成要素的动作之间的对应。另外,各构成要素间的连接线已在图2和图4中表示,因此在图10中省略。 
通过散列值生成模块121可实现与步骤S1同等的动作。 
在步骤S2中,通过由表存储部102、随机数生成模块122、选择模块123以及随机元生成模块124构成的构成群401,可实现与步骤S2同等的动作。 
通过由主要运算模块126进行的值r的计算,可实现与步骤S3同等的动作。 
通过由转换模块125、主要运算模块126、逆转换模块127、乘法运算模块128以及除法运算模块129构成的构成群402,可实现与步骤S4同等的动作。 
通过签名数据生成模块130可实现与步骤S5同等的动作。 
此外,按照各模块的动作利用秘密参数存储部103、公开参数存储部104以及转换后私钥存储部105。 
此外,由逆转换模块127和乘法运算模块128构成的构成群402,如上所述是为了使解析变得困难而需要实施硬件对策的部分。 
另外,为了使解析变得困难而实施硬件对策,但不限于此。只要是使解析变得困难的对策,也可以是其他对策而不限于硬件对策。 
1.9变形例 
以上说明的实施方式是实施本发明的一例,本发明不限于该实施方式,可在不脱离其要旨的范围内以各种方式来实施。例如,以下的情况也包含在本发明中。 
(1)在实施方式中,将p、q、u的比特数len设为160,但不限于此。也可以设为大于160,例如192、224。此外,将n的比特数设为1024,但不限于此。也可以设为大于1024,例如2048、4096。 
(2)在实施方式中,是签名生成程序的方式,但也可以将其设为加密程序或解密程序。 
(3)在实施方式中,作为第二群使用椭圆曲线Ea上的群,但不限于此。作为第二群也可以利用整数剩余环的乘法群或其他群。 
此外,在实施方式中进行椭圆曲线的纯量倍运算来转换整数,但不限于此。作为转换整数的运算也可以使用群的幂运算。在此,幂运算是指群的基本运算、即求出在整数剩余环中进行了整数次乘法运算以及在椭圆曲线上的群中进行了整数次椭圆曲线加法运算而得到的结果的运算。因此,整数剩余环的乘法群的幂运算是幂乘运算,椭圆曲线上的群的幂运算是椭圆曲线的纯量倍运算。在实施方式中,第二群Ga是Ea(GF(p1))×Ea(GF(p2)),离散对数问题是在该“子群”即Ea(GF(p1))中解开,但在整数剩余环Z/nZ的乘法群或其他群的“子群”中也可以解开离散对数问题。此外,也可以将第二群设为专利文献3中的整数剩余环的乘法群。 
(4)在上述实施方式中,第二群Ga设为相对于合数n(=p1×p2)的Z/nZ上的椭圆曲线上的群,但不限于此。另外,p1、p2是互不相同的素数。 
第二群Ga也可以是相对于合数n(=p1^m×p2)的Z/nZ上的椭圆曲线上的群。其中,m是1以上的整数。在此,p1^m表示p1的m次幂。 
或者,第二群Ga也可以是相对于合数n(=p1^m×p2)的Z/nZ上的乘法群。其中,m是1以上的整数。此时,第二群的子群也可以是Z/p1^mZ上的乘法群。 
(5)在上述实施方式中,签名生成装置10利用随机元生成模块124生成2个随机元(Pk、Pak),但不限于此。 
随机元生成模块124也可以仅生成1个随机元(例如Pk)。在该情况下,签名生成装置10存储2×len个P(i,j)以取代2×len个元对(i=0、1,j=0、1、…、len-1)。签名生成装置10若生成len比特的随机数u,则使用生成的随机数u计算第一群G的元Pk。计算方法与上述实施方式所示的方法相同,因此,在此省略说明。由此,签名生成装置10可计算第一群G的元Pk,以不让第三者知道随机数k。 
或者,随机元生成模块124也可以生成2个以上的随机元(Pk、Pak1、Pak2、…、Pakn)(n是1以上的整数)。 
(6)在上述实施方式中,签名生成装置10中的选择模块123将由随机数生成模块122生成的正整数u转换成比特数由len比特构成的比特表现,选择与各比特对应的元对,但不限于此。 
选择模块123也可以根据由随机数生成模块122生成的正整数u,直接求出元对。 
此时,表存储部102对正整数1、2、3、…,存储元对(v_1*P,v_1*Pa)、(v_2*P,v_2*Pa)、(v_3*P,v_3*Pa)、…。 
选择模块123从表存储部102存储的表中,选择与由随机数生成模块122生成的正整数u对应的元对(v_u*P,v_u*Pa)。 
随机元生成模块124对选择出的元对(v_u*P,v_u*Pa),设为Pk=v_u*P,Pak=v_u*Pa。 
以下的动作与实施方式相同,因此在此省略说明。 
以下说明另一个例子。 
或者,表存储部102存储元对(v_1*P,v_1*Pa)、(v_2*P,v_2*Pa)、(v_3*P,v_3*Pa)、…(v_t*P,v_t*Pa)。t是1以上的整数。 
选择模块123按照以下方式选择1个以上的元对。 
选择模块123在正整数u是t以下的情况下,从表存储部102存储的表中选择元对(v_u*P,v_u*Pa)。 
选择模块123在正整数u大于t的情况下,取得成为u=t1+t2+…+tp的t1、t2、…、tp。在此,p是2以上的整数,t1、t2、…、tp分别是t以下的数。选择模块123从表存储部102存储的表中选择与取得的t1、t2、…、tp分别对应的元对(v_t1*P,v_t1*Pa)、(v_t2*P,v_t2*Pa)、…、(v_tp*P,v_tp*Pa) 
随机元生成模块124在选择出的元对是1个的情况下,对选择出的元对(v_u*P,v_u*Pa),设为Pk=v_u*P,Pak=v_u*Pa。 
随机元生成模块124在选择出的元对是2个以上的情况下,对选择出的元对(v_t1*P,v_t1*Pa)、(v_t2*P,v_t2*Pa)、…、(v_tp*P,v_tp*Pa),在椭圆曲线E上将v_t1*P、v_t2*P、…、v_tp*P相加来计算Pk,在椭圆曲线Ea上将v_t1*Pa、v_t2*Pa、…、v_tp*Pa相加来计算Pak。 
以后的动作与实施方式相同,因此在此省略说明。 
(7)在上述实施方式中,随机元生成模块124使用由选择模块123选择出的全部len个元对计算Pk和Pak,但不限于此。 
随机元生成模块124也可以从选择出的len个元对中选择w个元对,使用选择出的w个元对计算Pk和Pak。在此,w是2以上len以下的数。 
例如,数w预先给出,随机元生成模块124从选择出的len个元对中随机选择w个元对。 
此外,作为其他例子,随机元生成模块124从选择出的len个元对中既可以仅选择与比特值“1”对应的w个元对,也可以仅选择与比特值“0”对应的w个元对。 
或者,随机元生成模块124也可以比较比特值是“1”的比特的个数和比特值是“0”的比特的个数,仅选择与个数较多的比特值对应的w个元对。 
或者,数w预先给出,随机元生成模块124从选择出的len个元对中 选择上位比特w个元对。另外,随机元生成模块124也可以从选择出的len个元对中选择下位比特w个元对。 
在此,w是2以上len以下的数,但w也可以是1以上len以下的数。在w=1的情况下,随机元生成模块124对选择出的元对(v_u*P,v_u*Pa),设为Pk=v_u*P,Pak=v_u*Pa。 
(8)本发明的分解组既可以是上述实施方式所示的表存储部102的存储内容,也可以是对每个正整数u的多个分解对(即元对)、即对正整数u的各比特选择出的分解对的组合。 
(9)在上述实施方式中,签名生成由签名生成程序进行生成,但不限于此。 
签名生成也可以由生成签名的硬件进行生成。 
即,签名生成程序中包含的各模块也可以由实现上述说明的功能的单元构成。 
(10)具体而言,上述各装置是由微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。上述RAM或者硬盘单元中存储有计算机程序。通过上述微处理器按照上述计算机程序进行动作,各装置实现其功能。在此,为了实现预定的功能,计算机程序是组合了多个表示对计算机的指令的指令代码而构成的。 
(11)构成上述各装置的构成要素的一部分或者全部也可以由1个系统LSI(Large Scale Integration:大规模集成电路)构成。系统LSI是在1个芯片上集成多个结构部而制造出来的超多功能LSI,具体而言,是构成为包含微处理器、ROM、RAM等的计算机系统。上述RAM中存储有计算机程序。通过上述微处理器按照上述计算机程序进行动作,系统LSI实现其功能。 
(12)构成上述各装置的构成要素的一部分或者全部也可以由可相对于各装置拆装的IC卡或者单体的模块构成。上述IC卡或者上述模块是由微处理器、ROM、RAM等构成的计算机系统。上述IC卡或者上述模块也可以包含上述超多功能LSI。通过微处理器按照计算机程序进行动作,上述IC卡或者上述模块实现其功能。该IC卡或者该模块也可以具有防篡改性。 
(13)本发明也可以是上述所示的方法。此外,既可以是利用计算机 实现这些方法的计算机程序,也可以是由上述计算机程序构成的数字信号。 
此外,本发明也可以是将上述计算机程序或者上述数字信号记录到计算机可读取的记录介质,例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半导体存储器等。此外,也可以是这些记录介质中记录的上述计算机程序或者上述数字信号。 
此外,本发明也可以是将上述计算机程序或者上述数字信号经由电通信线路、无线或者有线通信通路、以互联网为代表的网络、数据广播等进行传送。 
此外,本发明是具有微处理器和存储器的计算机系统,上述存储器存储有上述计算机程序,上述微处理器也可以按照上述计算机程序进行动作。 
此外,也可以是通过将上述程序或者上述数字信号记录并移送到上述记录介质,或者通过经由上述网络等移送上述程序或者上述数字信号,来由独立的其他计算机系统实施。 
(14)也可以是这些实施方式和变形例的组合。 
2.总结 
本发明的目的在于提供一种源代码混淆方法,使攻击者解析安装有以有限域上或椭圆曲线上的离散对数问题为安全性依据的签名方式(例如DSA签名方式或ECDSA签名方式)的程序变得困难。 
以下表示本发明的特征。 
(1)本发明是使签名生成装置执行的签名生成程序,上述签名生成装置使用私钥生成对消息的数字签名,上述签名生成装置具有:表存储部,存储有多个元对,该元对是属于第一群G的第一元和属于第二群Ga的第二元的对;程序存储部,存储有上述签名生成程序;以及处理器,从上述程序存储部中存储的上述签名生成程序中一个一个地读出计算机指令进行解释,按照该解释结果进行动作,上述签名生成程序包括:整数生成模块,生成第一整数;选择模块,根据上述第一整数从由上述表存储部存储的多个上述元对中选择多个上述元对进行输出;以及群运算模块,使用上述选择模块输出的多个上述对,计算属于上述第一群G的第三元和属于上述第二群Ga的第四元,上述第一元是对属于上述第一群G的预先给出的元即第一基本元P和作为预先给出的正整数的幂数进行以上述幂数为幂的上述 第一基本元P在上述第一群G中的幂运算而得到的元,上述第二元是对属于上述第二群Ga的预先给出的元即第二基本元Pa和作为预先给出的正整数的幂数进行以上述幂数为幂的上述第二基本元Pa在上述第二群Ga中的幂运算而得到的元。 
(2)在上述(1)的签名生成程序中,也可以是,上述选择模块按照上述第一整数的每个比特值选择1个上述对。 
(3)在上述(2)的签名生成程序中,也可以是,上述第三元是对上述选择模块选择出的上述对的每一个中包含的属于上述第一群G的所有元进行上述第一群G的基本运算而作为结果得到的上述第一群G的元,上述第四元是对上述选择模块选择出的上述对中的每一个中包含的属于上述第二群Ga的所有元进行上述第二群Ga的基本运算而作为结果得到的上述第二群Ga的元。 
(4)在上述(1)~(3)的任意一个所述的签名生成程序中,也可以是,上述签名生成程序还包括:转换模块,通过进行上述第二群Ga上的幂运算,将整数转换成属于上述第二群的元;主要运算模块,进行上述第二群Ga上的基本运算;以及逆转换模块,进行上述第二群Ga或者上述第二群Ga真实包含的上述第二群Ga的子群Sa中的上述转换模块进行的转换的逆转换。 
(5)在上述(1)~(4)的任意一个所述的签名生成程序中,也可以是,上述签名生成装置还具有存储有转换后私钥的转换后私钥存储部,上述转换后私钥是根据上述私钥和上述第二基本元生成的属于上述第二群的元,上述签名生成程序还包括:转换后私钥运算模块,使用上述转换后私钥存储部中存储的转换后私钥,进行上述第二群Ga的幂运算。 
(6)在上述(1)~(5)的任意一个所述的签名生成程序中,也可以是,上述第一群G和上述第二群Ga是整数剩余环的乘法群。 
(7)在上述(1)所述的签名生成程序中,也可以是,上述第二群Ga相对于使用2个素数p、q和正整数m表示的n=p^m×q,是Z/nZ的乘法群(其中x^y表示x的y次幂)。 
(8)在上述(7)所述的签名生成程序中,也可以是,上述子群Sa是Z/p^m Z的乘法群。 
(9)在上述(8)所述的签名生成程序中,也可以是,上述正整数m是2。 
(10)在上述(1)~(5)的任意一个所述的签名生成程序中,也可以是,上述第一群G是椭圆曲线的群,上述子群Sa是异常椭圆曲线的群。 
(11)在上述(1)~(5)的任意一个所述的签名生成程序中,也可以是,上述第二群Ga是2个异常椭圆曲线的群的直积。 
(12)在上述(1)~(5)、(11)以及(12)的任意一个所述的签名生成程序中,也可以是,上述逆转换模块具有将属于上述第二群Ga的元还原成属于上述子群Sa的元的还原单元。 
(13)本发明是使进行群运算的运算装置执行的运算程序,上述运算装置具有:表存储部,存储有多个属于第一群G的第一元和属于第二群Ga的第二元的对;程序存储部,存储有上述签名生成程序;以及处理器,从上述程序存储部中存储的上述签名生成程序中一个一个地读出计算机指令进行解释,按照该解释结果进行动作,上述运算程序包括:整数生成模块,生成第一整数;选择模块,根据上述第一整数从由上述表存储部存储的多个上述对中选择多个上述对;以及群运算模块,使用上述选择模块选择出的多个上述对,计算属于上述第一群G的第三元和属于上述第二群Ga的第四元,上述第一元是对预先给出的属于上述第一群G的元即第一基本元P和作为预先给出的正整数的幂数进行以上述幂数为幂的上述第一基本元P在上述第一群G中的幂运算而得到的元,上述第二元是对预先给出的属于上述第二群Ga的元即第二基本元Pa和作为预先给出的正整数的幂数进行以上述幂数为幂的上述第二基本元Pa在上述第二群Ga中的幂运算而得到的元。 
(14)本发明是使用私钥生成对消息的数字签名的签名生成装置,上述签名生成装置具有:表存储部,存储有多个属于第一群G的第一元和属于第二群Ga的第二元的对;整数生成部,生成第一整数;选择部,根据上述第一整数从由上述表存储部存储的多个上述对中选择多个上述对;以及群运算部,使用上述选择部选择出的多个上述对,计算属于上述第一群G的第三元和属于上述第二群Ga的第四元,上述第一元是对预先给出的属于上述第一群G的元即第一基本元P和作为预先给出的正整数的幂数进行以 上述幂数为幂的上述第一基本元P在上述第一群G中的幂运算而得到的元,上述第二元是对预先给出的属于上述第二群Ga的元即第二基本元Pa和作为预先给出的正整数的幂数进行以上述幂数为幂的上述第二基本元Pa在上述第二群Ga中的幂运算而得到的元。 
(15)在上述(14)所述的签名生成装置中,也可以是,上述选择部按照上述第一整数的每个比特值选择1个上述对。 
(16)在上述(14)或者(15)所述的签名生成装置中,也可以是,上述第三元是对上述选择部选择出的上述对的每一个中包含的属于上述第一群G的所有元进行上述第一群G的基本运算而作为结果得到的上述第一群G的元,上述第四元是对上述选择部选择出的上述对的每一个中包含的属于上述第二群Ga的所有元进行上述第二群Ga的基本运算而作为结果得到的上述第二群Ga的元。 
(17)上述所示的签名生成程序中的签名方式以有限域上或椭圆曲线上的离散对数问题为安全性依据,因此,能够使攻击者解析变得困难,其价值很大。 
此外,上述所示的签名生成装置采用以有限域上或椭圆曲线上的离散对数问题为安全性依据的签名方式进行签名生成,因此,能够使攻击者解析变得困难,其价值很大。 
(18)此外,本发明是以群G上的离散对数问题为安全性依据,对群G上的基本元P实施重复多次基本运算的幂运算的运算装置,其特征在于,预先将分解组与多个数分别对应,各分解组包括多个分解值,各分解值是对基本元P实施以任意正整数为幂的幂运算而计算出的群G上的元,上述运算装置具有:分解对存储单元,存储上述多个分解组;选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解组;以及生成单元,对选择出的分解组中包含的所有分解值实施上述群G的基本运算,生成幂元。 
(19)如以上说明那样,根据本发明,不仅能够隐蔽运算中使用的值,还能够隐蔽运算本身。 
工业上的可利用性 
构成本发明的各装置、各方法以及计算机程序在需要安全可靠地处理 信息的所有产业中,能够在经营上或持续反复地使用。此外,构成本发明的各装置、各方法以及各计算机程序在电器设备制造产业中,能够在经营上或持续反复地制造、销售。 

Claims (15)

1.一种签名生成装置,以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,
预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,
上述签名生成装置具有:
分解值存储单元,存储多个上述分解组;
选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解组;
生成单元,对选择出的分解组中包含的2个以上的第一分解值实施上述群G的基本运算,生成第一幂元,对选择出的分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值实施上述群Ga的基本运算,生成第二幂元;以及
签名单元,将生成的上述第一幂元和消息分别转换成群Ga上的元,对转换后的第一幂元、转换后的消息以及上述第二幂元实施上述群Ga上的运算,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。
2.根据权利要求1所述的签名生成装置,其特征在于,
上述多个数分别是由长度为2以上的预定长度构成的比特串所表现的数,
分解对按照由上述预定长度构成的比特串的各比特值对应,
上述选择单元将选择出的上述数u转换成由上述预定长度的比特串构成的比特表现,从上述分解值存储单元中选择由与各个比特的值相对应的分解对构成的上述分解组。
3.根据权利要求2所述的签名生成装置,其特征在于,
上述生成单元,
对按照每个比特值选择出的分解对所构成的上述分解组中包含的2个以上的第一分解值,实施上述群G中的基本运算,生成上述第一幂元,
对按照每个比特值选择出的分解对所构成的上述分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值,实施上述群Ga中的上述基本运算,生成上述第二幂元。
4.根据权利要求1所述的签名生成装置,其特征在于,
上述第一幂元包括2个以上的值,
上述签名单元具有:
转换部,将对上述消息的散列值作为幂,对上述基本元Pa实施群Ga中的上述幂运算,由此将上述散列值转换成属于上述群Ga的转换后散列值;
第一运算部,使用上述第一幂元中包括的1个值计算第一数据;
第二运算部,对上述转换后散列值实施上述群Ga上的基本运算,计算属于上述群Ga的第三幂元;
逆转换部,在上述群Ga或者上述群Ga中真实包含的子群Sa中,对上述第二幂元和上述第三幂元分别实施在上述转换部中进行的转换的幂运算的逆运算,由此求出第一离散对数和第二离散对数;
第三运算部,使用上述第一离散对数和上述第二离散对数计算第二数据;以及
数据生成部,生成由上述第一数据和上述第二数据的组构成的数字签名。
5.根据权利要求4所述的签名生成装置,其特征在于,
上述签名生成装置还具有存储有属于上述群Ga的转换后私钥的转换后私钥存储单元,上述转换后私钥是将私钥作为幂而对上述基本元Pa实施由上述群Ga所示的点构成的椭圆曲线上的纯量乘运算后得到的结果,
上述第二运算部对下述运算结果和上述转换后散列值实施上述群Ga上的基本运算,来计算上述第三幂元,其中该运算结果是针对上述转换后私钥实施将上述第一数据作为幂的上述群Ga的幂运算而得到的上述群Ga上的元。
6.根据权利要求5所述的签名生成装置,其特征在于,
上述群G和上述群Ga是整数剩余环的乘法群,
上述群G和上述群Ga各自的基本运算是对各元实施乘法运算的乘法运算,
上述群G和上述群Ga各自的幂运算是将正整数作为幂数的幂乘运算。
7.根据权利要求6所述的签名生成装置,其特征在于,
上述群Ga相对于使用2个素数p、q和正整数m表现的n=p^m×q,是Z/nZ的乘法群,^是表示幂乘运算的运算符,×是表示乘法运算的运算符,Z是整数环,Z/nZ是整数剩余环。
8.根据权利要求7所述的签名生成装置,其特征在于,
上述子群Sa是Z/p^m Z的乘法群。
9.根据权利要求8所述的签名生成装置,其特征在于,
上述正整数m是2。
10.根据权利要求4所述的签名生成装置,其特征在于,
上述群G是椭圆曲线的群,
上述子群Sa是异常椭圆曲线的群,
上述群G和上述群Ga各自的基本运算是对各元实施椭圆曲线上的加法运算的运算,
上述群G和上述群Ga各自的幂运算是对椭圆曲线上的基点进行上述正整数的次数的加法运算的纯量倍运算。
11.根据权利要求4所述的签名生成装置,其特征在于,
上述群G是椭圆曲线的群,
上述群Ga是2个异常椭圆曲线的直积,
上述群G和上述群Ga各自的群的基本运算是对各元实施椭圆曲线上的加法运算的运算,
上述群G和上述群Ga各自的幂运算是对椭圆曲线上的基点进行上述正整数的次数的加法运算的纯量倍运算。
12.根据权利要求4所述的签名生成装置,其特征在于,
上述逆转换部包括还原部,该还原部将属于上述群Ga的元还原成属于上述子群Sa的元,
上述逆转换部使用上述还原部将上述第二幂元和上述第三幂元分别还原成属于上述子群Sa的元,对还原后的元分别实施上述逆运算,由此求出上述第一离散对数和上述第二离散对数。
13.一种签名生成装置,以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,
预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,
上述签名生成装置具有:
分解值存储单元,存储多个上述分解组;
选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解对;以及
签名单元,将选择出的分解对中包含的第一分解值和消息分别转换成群Ga上的元,对转换后的第一分解值、转换后的消息以及选择出的分解对中包含的第二分解值实施上述群Ga上的运算,解出离散对数问题,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。
14.一种签名生成方法,在签名生成装置中使用,上述签名生成装置以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,
预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,
上述签名生成装置具有:
分解值存储单元,存储多个上述分解组;
上述签名生成方法具有:
选择步骤,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解组;
生成步骤,对选择出的分解组中包含的2个以上的第一分解值实施上述群G的基本运算,生成第一幂元,对选择出的分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值实施上述群Ga的基本运算,生成第二幂元;以及
签名步骤,将生成的上述第一幂元和消息分别转换成群Ga上的元,对转换后的第一幂元、转换后的消息以及上述第二幂元实施上述群Ga上的运算,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。
15.一种签名生成装置的集成电路,上述签名生成装置以群G和群Ga上的离散对数问题为安全性依据,对群G上的基本元P以及群Ga上的基本元Pa实施幂运算,从而生成对消息的数字签名,上述幂运算是指求出进行了整数次群的基本运算后的结果,其特征在于,
预先将分解组与多个数分别对应,各分解组包括多个分解对,各分解对包括第一分解值和第二分解值,各第一分解值是对基本元P实施将任意正整数作为幂的幂运算而计算出的群G上的元,各第二分解值是对基本元Pa实施将与该第二分解值对应的第一分解值中使用的正整数作为幂的幂运算而计算出的群Ga上的元,
上述集成电路具有:
分解值存储单元,存储多个上述分解组;
选择单元,从上述多个数中随机选择数u,从上述分解值存储单元中选择与选择出的数u对应的分解组;
生成单元,对选择出的分解组中包含的2个以上的第一分解值实施上述群G的基本运算,生成第一幂元,对选择出的分解组中包含的、且与上述2个以上的第一分解值分别对应的第二分解值实施上述群Ga的基本运算,生成第二幂元;以及
签名单元,将生成的上述第一幂元和消息分别转换成群Ga上的元,对转换后的第一幂元、转换后的消息以及上述第二幂元实施上述群Ga上的运算,计算第一离散对数和第二离散对数,使用计算出的第一离散对数和第二离散对数,生成对消息的数字签名。
CN200680049826.0A 2005-12-28 2006-12-26 签名生成装置、签名生成方法 Active CN101351988B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP379129/2005 2005-12-28
JP2005379129 2005-12-28
PCT/JP2006/325945 WO2007074836A1 (ja) 2005-12-28 2006-12-26 署名生成装置、署名生成方法及び署名生成プログラム

Publications (2)

Publication Number Publication Date
CN101351988A CN101351988A (zh) 2009-01-21
CN101351988B true CN101351988B (zh) 2011-06-29

Family

ID=38218057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680049826.0A Active CN101351988B (zh) 2005-12-28 2006-12-26 签名生成装置、签名生成方法

Country Status (4)

Country Link
US (1) US8280039B2 (zh)
JP (1) JP5001176B2 (zh)
CN (1) CN101351988B (zh)
WO (1) WO2007074836A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010033081A2 (en) * 2008-09-22 2010-03-25 Embeyond Pte Ltd Secure server system for online transactions
US8189771B2 (en) * 2009-01-12 2012-05-29 King Fahd University Of Petroleum & Minerals Hash functions with elliptic polynomial hopping
JP4802274B2 (ja) * 2009-10-30 2011-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ送信および受信方法
US8386803B2 (en) 2009-11-18 2013-02-26 Apple Inc. System and method for data obfuscation based on discrete logarithm properties
US9009481B2 (en) 2010-03-31 2015-04-14 Irdeto Canada Corporation System and method for protecting cryptographic assets from a white-box attack
IT1401937B1 (it) * 2010-09-16 2013-08-28 St Microelectronics Srl Metodo di generazione di una firma digitale
US8705730B2 (en) * 2010-12-23 2014-04-22 Morega Systems Inc. Elliptic curve cryptography with fragmented key processing and methods for use therewith
JP5606344B2 (ja) * 2011-01-25 2014-10-15 三菱電機株式会社 署名処理システム、鍵生成装置、署名装置、検証装置、署名処理方法及び署名処理プログラム
JP5679344B2 (ja) * 2012-02-17 2015-03-04 日本電信電話株式会社 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
US8667288B2 (en) * 2012-05-29 2014-03-04 Robert Bosch Gmbh System and method for message verification in broadcast and multicast networks
US10068070B2 (en) * 2015-05-05 2018-09-04 Nxp B.V. White-box elliptic curve point multiplication
US20160328539A1 (en) * 2015-05-05 2016-11-10 Nxp B.V. Obscuring Software Code With Split Variables
FR3066845B1 (fr) * 2017-05-24 2019-06-14 Idemia Identity And Security Procede de signature electronique d'un document avec une cle secrete predeterminee
CN107395370B (zh) * 2017-09-05 2020-07-14 深圳奥联信息安全技术有限公司 基于标识的数字签名方法和装置
US11012435B2 (en) * 2017-12-19 2021-05-18 International Business Machines Corporation Multi factor authentication
CN108933650B (zh) * 2018-06-28 2020-02-14 阿里巴巴集团控股有限公司 数据加解密的方法及装置
CN109145644B (zh) * 2018-08-28 2021-03-19 北京云测信息技术有限公司 私钥混淆及数字签名生成方法、装置、智能设备
WO2020065958A1 (ja) * 2018-09-28 2020-04-02 日本電気株式会社 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム
EP3758279A1 (en) * 2019-06-27 2020-12-30 Koninklijke Philips N.V. Selective disclosure of attributes and data entries of a record
CN112468983B (zh) * 2020-12-18 2022-05-10 国网河北省电力有限公司电力科学研究院 一种低功耗的电力物联网智能设备接入认证方法及其辅助装置
US11791988B2 (en) * 2021-11-22 2023-10-17 Theon Technology Llc Use of random entropy in cryptography

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264974A (zh) * 1999-12-01 2000-08-30 陈永川 运用椭圆曲线加密算法的数字签名方法
CN1430175A (zh) * 2001-12-30 2003-07-16 北京兆日科技有限责任公司 一种基于物质特性的加密防伪方法
CN1645789A (zh) * 2005-02-04 2005-07-27 张亚武 一种带智能卡的电子邮件系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999626A (en) * 1996-04-16 1999-12-07 Certicom Corp. Digital signatures on a smartcard
DE69840959D1 (de) 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.
JP3402441B2 (ja) 1997-12-17 2003-05-06 日本電信電話株式会社 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体
US6594761B1 (en) 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
JP4671571B2 (ja) * 1999-09-29 2011-04-20 株式会社日立製作所 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
US7434898B2 (en) 2004-03-31 2008-10-14 Matsushita Electric Industrial Co., Ltd. Computer system, computer program, and addition method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264974A (zh) * 1999-12-01 2000-08-30 陈永川 运用椭圆曲线加密算法的数字签名方法
CN1430175A (zh) * 2001-12-30 2003-07-16 北京兆日科技有限责任公司 一种基于物质特性的加密防伪方法
CN1645789A (zh) * 2005-02-04 2005-07-27 张亚武 一种带智能卡的电子邮件系统

Also Published As

Publication number Publication date
JP5001176B2 (ja) 2012-08-15
US8280039B2 (en) 2012-10-02
US20090094464A1 (en) 2009-04-09
WO2007074836A1 (ja) 2007-07-05
CN101351988A (zh) 2009-01-21
JPWO2007074836A1 (ja) 2009-06-04

Similar Documents

Publication Publication Date Title
CN101351988B (zh) 签名生成装置、签名生成方法
Mallouli et al. A survey on cryptography: comparative study between RSA vs ECC algorithms, and RSA vs El-Gamal algorithms
EP0924895B1 (en) Encryption and decryption devices for public-key cryptosystems and recording medium with their processing programs recorded thereon
US8429408B2 (en) Masking the output of random number generators in key generation protocols
Ullah et al. A review of signcryption schemes based on hyper elliptic curve
CN101079701B (zh) 高安全性的椭圆曲线加解密方法和装置
Kang et al. Identity-based strong designated verifier signature schemes: attacks and new construction
CN115102688B (zh) 数据处理方法、多项式计算方法及电子设备
US20230224157A1 (en) Method and system for cheon resistant static diffie-hellman security
US7248692B2 (en) Method of and apparatus for determining a key pair and for generating RSA keys
CA2742530C (en) Masking the output of random number generators in key generation protocols
KR100431047B1 (ko) Crt에 기초한 rsa 공개키 암호화 방식을 이용한디지털 서명방법 및 그 장치
Zhong An overview of rsa and oaep padding
Lima et al. Security of public-key cryptosystems based on Chebyshev polynomials over prime finite fields
Somsuk et al. MVFactor: A method to decrease processing time for factorization algorithm
Mohapatra Signcryption schemes with forward secrecy based on elliptic curve cryptography
Wu et al. Batch public key cryptosystem with batch multi-exponentiation
Wang Signer‐admissible strong designated verifier signature from bilinear pairings
Nikooghadam et al. A protocol for digital signature based on the elliptic curve discrete logarithm problem
JP4462511B2 (ja) エルガマル・ライクなプロトコルのためのセッション・パラメータ生成方法
Kim et al. Decryption speed up of RSA by pre-calculation
Gueron et al. Applications of the Montgomery exponent
Banerjee et al. Improved Trial Division Technique for Primality Checking in RSA Algorithm
Song et al. A two-public key scheme omitting collision problem in digital signature
WO2021025631A1 (en) A method for generating digital signatures

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant