CN101542557A - 信息安全装置 - Google Patents

信息安全装置 Download PDF

Info

Publication number
CN101542557A
CN101542557A CN200880000542.1A CN200880000542A CN101542557A CN 101542557 A CN101542557 A CN 101542557A CN 200880000542 A CN200880000542 A CN 200880000542A CN 101542557 A CN101542557 A CN 101542557A
Authority
CN
China
Prior art keywords
window
value
random number
group
computing
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.)
Pending
Application number
CN200880000542.1A
Other languages
English (en)
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 CN101542557A publication Critical patent/CN101542557A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • 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/302Public 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 integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile

Landscapes

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

Abstract

本发明的目的在于提供一种信息安全装置,与现有技术相比可以减少进行秘密通信或认证时应运算的幂运算的处理时间。在该信息安全装置中,通过根据对象数据X和秘密的值d使用窗口法算出乘幂值X^d,来进行秘密通信或认证,在算出乘幂值X^d的过程中,在对基于乘法的运算中出现的随机数R重复了预定次数例如256次二次幂运算之后的乘法中,使用随机数去除数S(=R^(-2^256)),来取消对随机数R的二次幂运算所得到的运算结果,从而不需要现有技术的取消处理。

Description

信息安全装置
技术领域
本发明涉及针对通过测量执行加密处理时的功率消耗量来分析嵌入到加密模块中的秘密信息的攻击,使分析变困难的技术。
背景技术
近年来,提出过各种通过硬件或软件安装的加密模块通过从进行加密处理时的副信息入手而进行加密密钥的分析的解密法。若非法的第三者分析加密密钥,并解读私钥,则可以使用解读出的私钥,冒充合法的使用者,并使用私钥来进行非法行为。
例如,作为进行加密密钥的分析的解密法,有称作定时攻击的分析方法。在称作定时攻击的分析方法中,利用加密模块进行加密处理所需的时间因用于加密处理的加密密钥的值的不同而稍有不同的情形,来进行加密密钥的分析。即,在定时攻击中,利用进行加密处理时的处理时间这样的副信息,来进行加密密钥的解读。在这种解密法中,将进行加密处理时的功率消耗量作为副信息进行解密的解密方法提出过单纯功率分析攻击(Simple Power Analysis)和差分功率分析攻击(Differential Power Analysis)这样的各种方法。这些解密法还报告出近年来在以低价获得高性能的测量设备的背景下,还可对IC卡这种安装了加密的实际产品进行分析的情况。在下面的描述中,将从上述这种加密处理时的加密模块的功率消耗量的变化即功率波形入手来分析加密密钥的解密方法总称为“功率分析攻击”。对于定时攻击,在非专利文献1中进行了详细描述,对于功率分析攻击,在非专利文献2进行了详细描述。
下面,说明对RSA加密的单纯功率分析攻击。对于RSA加密,在非专利文献3中详细描述。
<RSA加密的单纯功率分析攻击>
RSA加密的解密处理中,针对质数p、q的积n、作为不超过n的正整数的密文c与作为正整数的私钥d,进行c^d mod n的计算。作为该计算方法,已知例如非专利文献4的9页中的二进制(Binary)法。下面说明二进制法。对d=d0+d1×2+d2×2^2+…+d^(len-1)×2^(len-1)、i=0,1,…,len-1设di=0或1。这里,len表示d的比特数,“×”表示整数乘法,x^y表示x的y次幂。
(二进制法)
·步骤1-1:i←len-2,z←c
·步骤1-2:z←z^2mod n
·步骤1-3:检查di是否为1。在di=1的情况下,z←z×c mod n。
·步骤1-4:i←i-1。检查i是否为负。在为负的情况下,输出z。除此之外,进入到步骤1-2。
上述方法中,将步骤1-2、1-3、1-4作为循环来重复计算。在该循环内,对di(i=1,2,…,len-1),在di=1的情况下,进行z的二次幂运算与基于c的乘法,在di=0的情况下,仅执行z的二次幂运算。N是较大的数、例如,1024比特的整数。通常,二次幂运算与乘法相比,可以实现计算处理的高效化,所以可以进行高速处理。在该情况下,由于二次幂运算与乘法处理不同,所以功率波形不同。
因此,可以通过测量功率波形,来分析二次幂运算、乘法的运算顺序。进一步,利用因di而循环内的处理不同的情况,从该顺序求出di的值。若加以归纳,则可以通过以下的步骤,进行单纯功率分析攻击。
(二进制法的单纯功率分析攻击)
·步骤2-1:对密文c进行解密,来测量该处理中的功率波形。
·步骤2-2:根据上述功率波形求出二次幂运算、乘法的运算顺序。
·步骤2-3:根据上述顺序求出比特di(i=1,2,…,len-1)。
(现有技术的RSA加密的单纯功率分析攻击对策)
上述的单纯功率分析攻击中,在二进制法的步骤1-3中利用仅在di=1时进行乘法的情形来进行私钥的分析。
因此,还提出了下述单纯功率分析攻击的对策方法:通过在di=0时进行1乘以z的乘法,结果并不变化,但是由于在di=0时也进行乘法,使二次幂运算、乘法的运算顺序不依赖于d的值(参考非专利文献1)。
在上述RSA加密的单纯功率分析攻击对策中,在di=1时进行乘以c的乘法、在di=0时进行乘以1的乘法,乘数不同。提出过利用该情形来分析di是0还是1的攻击(称作BigMac攻击)(参考非专利文献5)。若使用该攻击,则即使进行上述单纯功率分析攻击对策,也可分析出d的值。这是因为,在乘数相同的情况下,存在所得功率波形一致的部分的可能性高,所以可以将通过单纯功率分析得到的乘法的功率波形分类为2种(例如,组A和组B)。这时,组A与组B与di比特值的对应仅为2种情形。是在组A中对应di=1、在组B中对应di=0的情形和在组A中对应di=0、在组B中对应di=1的情形。分别对这两种情形,例如,通过再次对密文进行解密,可以明白哪一种对应正确,即可以取得私钥。
因此,专利文献1中,为了使私钥的分析变困难,公开了下述技术:将私钥d分割为由预定的比特数构成的多个块,在二进制法的乘法时,将每个块不同的随机数乘以值z,而与di值无关,在对所有di的二次幂运算和乘法的运算结束后,使用该随机数的取消值来取消相乘的随机数。
专利文献1中,在进行对密文c的c^d运算之前,求出值R与S。这里,R×S mod n=1。
并且,对各di执行二次幂运算和乘法的运算。这时,使用值R来设置该随机数,使得对每个块用于乘法的运算的随机数不同。例如,通过对第m块使用随机数R^m来进行乘法,可对每块使用不同随机数。
对于所有块的二次幂运算和乘法运算结束后,使用值S,去除由随机数R带来的影响,从而得到c^d。
根据该技术,对于每个块,di=0、1的对应存在2个模式。但是,由于在所有块中存在2个对应的模式,所以对私钥d整体来说,存在2^(块数)个模式。因此,私钥的分析者必须检查全部2^(块数)个模式。因此私钥的分析变困难。
专利文献1:日本特开2000-165375号公报
非专利文献1:Paul Kocher.Timing attacks on implementations of Diffie-Hellman,RSA,DSS,and other systems.In Neal Koblitz,editor,CRYPTO’96,LNCS1109,Springer-Verlag,1996,pp.104-113.
非专利文献2:P.Kocher,J.Ja_e,andB.Jun,”Di_erential PowerAnalysis,”Advances in Cryptology-CRYPTO’99,LNCS,1666,Springer-Verlag,1999,pp.388-397.
非专利文献3:冈本龙明、山本博资、“现代暗号”、产业图书(1997年)
非专利文献4:H.Cohen,”A Course in Computational Algebraic NumberTheory”,GTM 138,Springer-Verlag,1996,p9
非专利文献5:C.D.Walter,”Sliding windows succumbs to Big MacAttack”,CHES2001,LNCS2162,Springer-Verlag,2001,pp.286-299.
非专利文献6:神永、渡边、远藤、大河内、“RSA暗号の電力解析法による攻撃とその对策”、IEICE、Vol.J88-A、No.5、pp.606-615、2005
但是,专利文献1公开的技术中,由于在对所有di的二次幂运算和乘法的运算结束后取消相乘的随机数,所以其处理时间变长。这是因为,若在例如对开头比特d511的乘法运算中出现随机数R,则该随机数R对之后所有比特的二次幂运算的运算有影响,其值成为R^(2^(len-1))。即,在第i比特di中出现随机数R^m,在对之后所有比特的二次幂运算的运算中,还对该R^m进行二次幂运算。这里,m是di所属的块序号。结果,其值为(R^m)^(2^(i-1))。
即,为了使用值S来去除随机数R的影响,需要对各di算出在对该di的乘法中出现的随机数R^m造成的最终二次幂运算结果(R^m)^(2^(i-1))的取消值(S^m)^(-2^(i-1)),并对所有这些进行相乘。
因此,由于使用值S来去除随机数R的影响的处理的处理时间长,所以乘幂运算整体的处理时间也变长。
发明内容
本发明鉴于上述问题,其目的是提供一种可以比现有技术减小在进行秘密的通信或认证时算出的乘幂倍值运算处理的时间的信息安全装置、方法、程序和集成电路。
为了实现上述目的,作为本发明的一实施方式是一种信息安全装置,在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,包括:取得单元,取得值d;以及主运算单元,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&X;所述主运算单元在第一窗口的窗口运算中,使用随机数R;在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
发明效果:
根据上述结构,信息安全装置在使用窗口法来算出对对象数据X的幂运算d&X的过程中,通过在第二窗口的窗口运算中使用取消值S来取消对第一窗口中出现的随机数R的进位运算造成的影响。由此,信息安全装置在对所有窗口的运算结束后,不需要如现有技术那样算出取消由随机数R造成的影响的值的取消处理,所以与现有技术相比幂运算整体的处理时间变少。
附图说明
图1是表示乘幂运算装置1000的结构框图;
图2是表示在乘数群存储部1130中存储的乘数群的图;
图3是表示在随机数群存储部1140中存储的随机数群的图;
图4是表示随机数选择信息生成部1170进行的生成数组RSI的动作的流程图;
图5是表示乘幂运算装置1000的动作的流程图,下接图6;
图6是表示乘幂运算装置1000的动作的流程图,上接图5;
图7是表示MT_i的初始化处理的动作的流程图;
图8是表示MT_i的更新处理的动作的流程图;
图9是表示按每个构成私钥的子块,来使分配的乘数变化的具体例的图;
图10是说明使攻击者进行的私钥d的比特分类、推测变困难的图;
图11是说明对随机数R实施了预定次数(256次)乘幂运算后,加以取消的图;
图12是说明对第count(=i)个出现的随机数R实施了预定次数(256次)的乘幂运算后,加以取消的图;
图13是对随机数R实施了预定次数(256次)乘幂运算后,将取消的情形分为高位比特和低位比特来加以说明的图;
图14是使用具体例来说明对随机数R实施了预定次数(256次)的乘幂运算后,加以取消的图;下接图15;
图15是使用具体例来说明对随机数R实施了预定次数(256次)的乘幂运算后,加以取消的图;上接图14,上接图16;
图16是使用具体例来说明对随机数R实施了预定次数(256次)乘幂运算后,加以取消的图;上接图15;
图17是表示乘幂运算装置2000的结构框图;
图18是表示在乘数群存储部2130中存储的乘数群的图;
图19是表示在随机数群存储部2140中存储的随机数群的图;
图20是表示乘幂运算装置2000的动作的流程图;下接图21;
图21是表示乘幂运算装置2000的动作的流程图;上接图20;
图22是表示随机数群RT的设置处理的动作的图;
图23是表示乘幂运算装置3000的结构框图;
图24是表示在乘数群存储部3130中存储的乘数群的图;
图25是表示构成私钥d的多个分割秘密信息的一例的图;
图26是表示乘幂运算装置3000的动作的流程图;下接图27;
图27是表示乘幂运算装置3000的动作的流程图;上接图26;
图28是表示MT_i的初始化处理动作的流程图;
图29是表示二次幂运算处理的动作的流程图;
图30是表示MT_i的更新处理的动作的流程图;
图31是表示通过2个随机数R、R’与1个随机数去除数S,来消除对随机数R、R’的运算的影响的一例的图;
图32是针对装置A和装置B之间进行的使用了椭圆曲线的密钥共用的一例,表示其动作的流程图。
符号说明
1000,2000、3000    乘幂运算装置
1010,2010、3010    输入输出部
1020,2020、3020    私钥存储部
1030,2030、3030    计数器存储部
1040,2040、3040    计数器初始化部
1050,2050、3050    计数器更新部
1060,2060、3060    第一计数器判断部
1070,2070、3070    第二计数器判断部
1080,2080、3080    第三计数器判断部
1090、2090          比特判断部
1100、2100、3100    乘法部
1110、2110、3110    二次幂运算部
1120、2120、3120    中间值存储部
1130、2130、3130    乘数群存储部
1140、2140、3140    随机数群存储部
1150、2150、3150    乘数群设置部
1160、2160、3160    乘数群更新部
1170                随机数选择信息生成部
2180、3180          随机数种子存储部
2190、3190          随机数群设置部
3090                乘数选择部
具体实施方式
作为本发明的一实施方式是一种信息安全装置,在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,包括:取得单元,取得值d;以及主运算单元,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&X;所述主运算单元在第一窗口的窗口运算中,使用随机数R;在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
根据该结构,信息安全装置在使用窗口法来算出对对象数据X的幂运算d&X的过程中,通过在第二窗口的窗口运算中使用取消值S来取消对第一窗口中出现的随机数R的进位运算造成的影响。由此,信息安全装置在对所有窗口的运算结束后,不需要如现有技术那样算出取消由随机数R造成的影响的值的取消处理,所以与现有技术相比幂运算整体的处理时间变小。
这里,也可以是,所述信息安全装置还具有处理单元,该处理单元使用幂运算d&X的运算结果,来解密信息或对信息实施数字签名。
根据该结构,信息安全装置由于使用幂运算d&X的运算结果,来解密信息或对信息施加数字签名,所以这些处理所需的处理时间比现有技术少。
这里,也可以是,所述第二窗口存在于从所述第一窗口开始距离值v处;所述取消值S是针对幂运算(v&2)的运算结果的所述随机数R的幂运算(v&2)&R的倒数;所述主运算单元包括:取得部,取得所述随机数R与所述取消值S;变量保持部,保持变量Z;初始化部,作为初始值在变量Z中设置单位元;进位运算部,通过所述进位运算使变量Z进位窗口宽度,将其结果作为变量Z;窗口运算部,对运算对象的窗口,取得基于其窗口值w和元X的幂运算值,并至少使用变量Z和取得的幂运算值来实施所述窗口运算,并将运算结果作为变量Z;以及控制部,对所述进位运算部和窗口运算部进行控制,使得对所有窗口重复进位运算和窗口运算;所述窗口运算部在所述第一窗口中,基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述随机数R和变量Z,进行窗口运算,并将其运算结果作为变量Z;在所述第二窗口中,基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述取消值S和变量Z,进行窗口运算,并将其运算结果作为变量Z。
根据该结构,信息安全装置可以使用作为所述随机数R的幂运算(v&2)&R的运算结果的倒数的取消值S来可靠地取消由对所述随机数R的进位运算造成的累积运算因数。这是因为,在随机数R出现后到第二窗口的进位运算期间,进位了值v的进位,所以在第二窗口中进行窗口运算时,对随机数R的进位运算引起的运算结果成为(v&2)&R。因此,信息安全装置可以通过在第二窗口中使用了取消值S的窗口运算,来取消该值(v&2)&R。
这里,也可以是,所述窗口运算部对从所述第一窗口起连续的i个(i是比v小的值)的窗口构成的组,按照该组中含有的每个窗口,来基于对其窗口值w和元X的幂运算值w&X、所述随机数R和变量Z,进行窗口运算;对从所述第二窗口起连续的i个窗口构成的组,按照该组中含有的每个窗口,来基于对该其窗口值w和元X的幂运算值w&X、所述取消值S和变量Z,进行窗口运算。
根据该结构,信息安全装置对从第一窗口起连续的i个窗口,分别进行使用了随机数R的窗口运算,对从第二窗口起连续的i个窗口,分别进行使用了取消值R的窗口运算,从而可以使值d的分析变困难。另外,由于对于从第一窗口起连续的i个窗口的每一个来说,从该窗口开始距离值v的窗口包含在从第二窗口起连续的i个窗口构成的组中,所以可以在距离值v的窗口的窗口运算中可靠地取消从第一窗口起连续的i个窗口的每个中出现的随机数R各自的进位运算造成的影响。
这里,也可以是,所述各窗口中含有的比特数是u(u是1以上的整数),所述窗口的个数是lend/u个,值lend是所述值d的比特长度以上的2的幂数中的最小值;所述值v满足lend=2v,所述第一窗口是开头窗口,所述第二窗口是从开头窗口起位于第lend/2u+1的窗口;将从开头窗口开始的lend/2u个窗口、和从开头起第lend/2u+1窗口开始到末尾的窗口为止的lend/2u个窗口分割为由i个窗口构成的第1到第P组、和第p+1到第m组;所述取得部进一步针对第1到第P组,在运算对象从运算对象的组改变为下一组时,取得与运算对象的变更之前刚使用的随机数不同的随机数;所述窗口运算部针对第1到第P组的每一个,在该组为运算对象期间,分别对该组中含有的窗口,取得使用了所述取得部取得的随机数的窗口运算所得到的运算值;所述取得部在将第p+1到第m组中含有的第m’组作为运算对象时,取得与在第(m’-p)组中使用的随机数相对应的取消值;所述窗口运算部在以所述第m’组为运算对象期间,取得使用在所述取得部取得的取消值的窗口运算所得到的运算值。
根据该结构,信息安全装置分别使第1到第P组与该组开始第p处的组相对应。由此,信息安全装置分别在第1到第P组中,可以通过使用第p处的组中与该随机数对应的取消值来可靠地去除通过窗口运算部的窗口运算进位运算部对所出现的随机数的进位验算所得到的运算结果。
这里,也可以是,所述取得部使p个彼此不同的随机数与分别对应于随机数的取消值相对应地预先存储,针对所述第1到第P组的每一个,通过从该组成为运算对象时在当前时刻未选择的1个以上的随机数中选择1个随机数,来取得该组中使用的随机数;针对所述第m’组,通过选择与第(m’-p)组中使用的随机数相对应的取消值,来取得在该第m’组中使用的取消值。
根据该结构,信息安全装置由于预先存储p个彼此不同的随机数和与随机数分别对应的取消值,所以不需要在每次成为对象的组改变时生成随机数或取消值,所以可以缩短算出幂运算d&X的处理时间。
这里,也可以是,所述取得部在所述不同随机数的取得时,对当前时刻保持的随机数R进行对于预定数q的乘幂运算R^q,并将该乘幂运算R^q的运算结果再次作为随机数R加以保持;在取消值的取得时,对当前时刻保持的取消值S进行对于所述预定数q的乘幂运算S^q,而将该乘幂运算S^q再次作为取消值S加以保持。
根据该结构,信息安全装置可以通过使用所保持的随机数或取消值,来容易生成不同的随机数或取消值。
这里,也可以是,所述取得部预先存储第一种子值U与作为所述第一种子值U相对所述值v的幂运算(v&2)&U的取消值的第二种子值V;所述取得部在进行对所述第一组的运算之前,生成随机数r,并在所述第一、和第二种子值U、V中,分别将实施了对随机数r的乘幂运算后的值作为随机数R和取消值S加以保持。
根据该结构,信息安全装置可以通过预先存储第一和第二种子值,来节约存储容量。另外,信息安全装置在对第一组的运算之前,生成随机数r,并使用所生成的随机数r、第一和第二种子值,来生成随机数R和取消值S。由此,信息安全装置可以对多个对象数据的每个,改变在第一组中使用的随机数和与该随机数对应的取消值。因此,私钥的分析者即使使用多个对象数据,从对这些对象数据的功率波形中分析私钥,由于对于每个对象数据在主运算单元中使用的随机数不同,所以其功率波形不同,值d的分析变困难。
这里,也可以是,所述各组由1个窗口构成。
根据该结构,信息安全装置按照每个窗口使用不同的随机数来进行运算。即,由于按照每个窗口功率波形不同,所以值d的分析变困难。
这里,也可以是,所述窗口是1比特长度。
根据该结构,信息安全装置即使在按每1比特来分割私钥而算出幂运算d&X的二进制法中,在对所有比特的运算结束后也不需要去除随机数R的影响的取消处理。即信息安全装置在使用了二进制法的情况下,也可与现有技术相比,减少了对幂运算d&X的处理时间。
这里,也可以是,所述取得部还在以所述第一窗口到所述第二窗口之间存在的第三窗口为对象时,将所述随机数R取得与所述随机数R不同的随机数R’;所述取得部还取得取消值S’,该取消值S’取消从所述第三窗口到该第二窗口为止对所述随机数R’进行的进位运算所累积的累积运算因数,并将该取消值S’与所述取消值S一起加以保持,所述窗口运算部在所述第三窗口中,进行基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述随机数R’和变量Z的窗口运算,并将其运算结果作为变量Z,在所述第二窗口中,还取得使用了所述取消值S’的窗口运算所得到的运算值。
根据该结构,信息安全装置通过在第三窗口使与随机数R不同的随机数R’出现在窗口运算部的窗口运算中,从而可以使值d的分析进一步变困难。另外,信息安全装置由于在第二窗口中去除了对随机数R和R’进行的进位运算所造成的运算结果,所以与现有技术相比,可以减少对幂运算d&X的处理时间。
这里,也可以是,所述取得部通过预先保持对所述取消值S和S’施加了基本运算后的值T,来保持所述取消值S和S’;所述取得部通过在所述第二窗口作为运算对象时,取得所述值T,来取得所述取消值S和S’。
根据该结构,由于信息安全装置预先存储对取消值S和S’施加了基本运算后的值T,所以在幂运算d&X的算出时不需要算出取消值S和S’,可缩短对幂运算d&X的处理时间。
这里,也可以是,所述取得部预先保持所述取消值S和S’,通过实施使用了所述取消值S和S’的基本运算来算出并取得值T,由此取得所述取消值S和S’。
根据该结构,信息安全装置由于预先存储取消值S和S’,所以在幂运算d&X的算出时,不需要算出取消值S和S’,所以可以缩短对幂运算d&X的处理时间。
1.实施方式1
下面,参考附图来说明本发明的实施方式1中的乘幂运算装置1000。
1.1准备
乘幂运算装置1000在例如RSA加密方式的解密或RSA签名方式的签名生成中加以使用。下面,说明RSA加密方式和RSA签名方式。
(1)RSA加密方式
(1-1)密钥的生成
如下面所示,计算公钥和私钥。
(顺序1-1)
随机选择较大的质数p,q,并计算其积n=p×q。
(顺序1-2)
计算(p-1)和(q-1)的最小公倍数L=LCM(p-1,q-1)。
(顺序1-3)
随机选择与L彼此为质且比L小的自然数e。
1≤e≤L-1、GCD(e,L)=1
这里,GCD(e,L)表示e与L的最大公约数。
(顺序1-4)
计算满足e×d=1mod L的d。
因GCD(e,L)=1,则这种d必然存在。由此,所得到的整数e和整数n是公钥。整数d是私钥。这里,x mod y表示用y除x后的余数。
(1-2)密文的生成
使用作为公钥的整数e和整数n,对明文m实施加密运算来计算密文c。
c=m^e mod n
另外,在该说明书中,运算符^表示乘幂。例如,A^x表示x>0时将A进行x次相乘后的值。
(1-3)解密文的生成
使用作为私钥的整数d,对密文c实施解密运算而算出解密文m’。
m’=c^d mod n
另外,由于
m’=c^d mod n
=(m^e)^d mod n
=m^(e×d mod L)mod n
=m^1 mod n
=m mod n,所以解密文m’与明文m一致。
乘幂运算装置1000在该解密文生成中的根据上述c算出m’的地方加以使用。这时,乘幂运算装置1000中,将对象数据作为c,并使用私钥d,来算出m’=c^d mod n。
对于RSA加密,在非专利文献3的110~113页中详细进行了说明。
(2)RSA签名方式
(2-1)密钥的生成
密钥的生成方法与RSA加密方式相同。
(2-2)签名生成
消息数据D如下这样来计算签名数据S。
首先,使用散列函数Hash,来计算消息数据D的散列值h=Hash(D)。
接着,使用作为私钥的整数d,对散列值h进行d次幂,而算出签名数据S。
S=h^d mod n
(2-3)签名验证
如下这样来验证签名数据S是否是消息数据D的正确签名。
确认Hash(D)与S^e mod n是否相等。在相等的情况下,将签名数据S作为正确的签名来受理。在不相等的情况下,将签名数据S作为不正确的签名加以拒绝。
乘幂运算装置1000在上述签名生成中的根据h算出S的地方加以使用。这时,乘幂运算装置1000中将对象数据作为h,并使用私钥d,来算出S=h^d mod n。
对于RSA签名,在非专利文献3的175~176页中详细加以说明。
1.2乘幂运算装置1000的结构
图1是表示乘幂运算装置1000的结构的图。
乘幂运算装置1000是输入作为进行乘幂的对象数据的对象数据X,并对对象数据输出将私钥d作为幂值的乘幂运算结果(X^d)的装置。
乘幂运算装置1000如图1所示,包括输入输出部1010、私钥存储部1020、计数器存储部1030、计数器初始化部1040、计数器更新部1050、第一计数器判断部1060、第二计数器判断部1070、第三计数器判断部1080、比特判断部1090、乘法部1100-0~1100-31、二次幂运算部1110、中间值存储部1120、乘数群存储部1130、随机数群存储部1140、乘数群设置部1150-0~1150-31、乘数群更新部1160与随机数选择信息生成部1170。在下面的说明中,描述的x_y表示对x添加了下标y。
(1)中间值存储部1120
中间值存储部1120具有存储对象数据X和乘幂运算时的中间值Z的区域。
(2)输入输出部1010
输入输出部1010在从外部接收对象数据X后,将所接收的对象数据X存储到中间值存储部1120。
输入输出部1010对中间值Z设置值″1”作为初始值,并存储到中间值存储部1120中。
输入输出部1010在对象数据X的乘幂运算结束后,从第一计数器判断部1060取得运算结束的内容。输入输出部1010之后将中间值存储部1120中存储的中间值Z作为乘幂运算结果输出。
(3)私钥存储部1020
私钥存储部1020存储私钥d。
设私钥d为512比特的整数。
(4)乘数群存储部1130
乘数群存储部1130存储乘法部1100-0~1100-31中使用的乘数群MT_O~MT_31。
具体来说,乘数群存储部1130如图2所示,存储由乘数值X_i0和X_i1构成的乘数群MT_i。这里,i是0以上31以下的整数。
(5)随机数群存储部1140
随机数群存储部1140存储随机数群RT_0~RT_15。
具体来说,随机数群存储部1140如图3所示,存储由随机数R_i和随机数去除数S_i构成的随机数群RT_i。这里,i是0以上15以下的整数。
随机数R_i与随机数去除数S_i满足下面的关系。
S_i=R_i^(-2^256)mod n
即,满足R_i^(2^256)×S_i=1的关系。这里,n是RSA加密中的较大的质数p,q的积。
(6)计数器存储部1030
计数器存储部1030存储乘幂运算时所用的计数器(count)的值。
(7)计数器初始化部1040
计数器初始化部1040在乘幂运算的开始时,将计数器count设置为初始值(lend-1)。
这里,如上所述,lend是私钥d的比特大小,本实施方式中,lend=512。这里,lend是私钥d的比特大小本身,但是也可以是作为私钥d能够输入的比特数。例如,作为私钥d的比特大小假定是512比特,但是实际上,私钥d的比特大小也可以是比512小的比特数、例如,510比特。该情况下,作为私钥d能够输入的比特数是lend=512。即,lend是作为私钥d的比特大小以上的2的幂数即可,例如,lend是作为私钥d的比特大小以上的2的幂数中的最小数。lend可以是作为私钥d的比特大小以上的2的倍数,例如,lend是作为私钥d的比特大小以上的2的倍数中的最小数。
(8)计数器更新部1050
计数器更新部1050更新计数器存储部1030中存储的计数器count的值。
具体来说,计数器更新部1050在从第二计数器判断部1070、第三计数器判断部1080和乘数群设置部1150-0~1150-31接收进行计数器count值的更新的更新指示后,递减(减去1)计数器存储部1030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部1030中。
(9)第一计数器判断部1060
第一计数器判断部1060判断计数器存储部1030中存储的计数器count的值是否为0。
在判断为是0的情况下,第一计数器判断部1060向输入输出部1010通知运算结束。
在判断为不是0的情况下,第一计数器判断部1060向第三计数器判断部1080通知进行判断的指示。
(10)第三计数器判断部1080
第三计数器判断部1080在从第一计数器判断部1060接收了进行判断的指示后,判断计数器存储部1030中存储的计数器count的值是否可被16整除,即,判断是否是16的倍数。
在判断为可被16整除的情况下,第三计数器判断部1080将计数器的更新指示通知给计数器更新部1050。
在判断为不能被16整除的情况下,第三计数器判断部1080向第二计数器判断部1070通知进行判断的指示。
(11)第二计数器判断部1070
第二计数器判断部1070在从第三计数器判断部1080接收进行判断的指示后,判断计数器存储部1030中存储的计数器count的值是否可被8整除,即,是否是8的倍数。
在判断为计数器count的值可被8整除的情况下,第二计数器判断部1070向乘数群更新部1160通知进行在乘数群存储部1130中存储的乘数群MT_i的更新的更新指示。这里,i是(lend-count-1)/16以下的最大整数。
在判断为计数器count的值不能被8整除的情况下,第二计数器判断部1070向计数器更新部1050通知计数器的更新指示。
(12)比特判断部1090
比特判断部1090使用计数器存储部1030中存储的计数器count,来判断私钥存储部1020中存储的私钥d的第count比特的值是0还是1。
这里,所谓私钥d的第count比特表示从低位比特起依次数时的顺序、即第count个。其中,设最低位比特为第0比特(第0个)。
(13)乘法部1100-0~1100-31
由于乘法部1100-0~1100-31进行同样的动作,所以这里说明乘法部1100-i。另外,i是0以上31以下的整数。
乘法部1100-i将中间值存储部1120中存储的中间值Z与乘数群存储部1130中存储的乘数群MT_i中存储的乘数值X_i0或乘数值X_i1相乘,并将其乘法结果存储到中间值存储部1120。
具体来说,乘法部1100-i在基于比特判断部1090判断为第count个比特是0的情况下,将中间值Z与乘数值X_i0相乘。乘法部1100-i在基于比特判断部1090判断为第count个比特是1的情况下,将中间值Z与乘数值X_i1相乘。
这里,乘法部1100-i在将中间值Z和乘数值X_i0相乘的情况下,执行Z←Z×X_i0 mod n。乘法部1100-i在将中间值Z与乘数值X_i1相乘的情况下,执行Z←Z×X_i1 mod n。这里,←是指将右边的计算结果代入到左边的变量。
(14)二次幂运算部1110
二次幂运算部1110对中间值存储部1120中存储的中间值Z进行二次幂运算,并将二次幂运算后的结果存储到中间值存储部1120中。
具体来说,二次幂运算部1110执行Z←Z^2 mod n。
(15)随机数选择信息生成部1170
随机数选择信息生成部1170生成随机数选择信息,该随机数选择信息是用于选择乘数群设置部1150-1~1150-32中使用的随机数或随机数去除数的信息。
随机数选择信息生成部1170暂时保持所生成的随机数选择信息。
具体来说,随机数选择信息生成部1170生成依次排列随机数R_k或S_k的添标k后的数组。这里,配置该数组,使得16个要素包含0到15的所有值,并具有作为该16个要素的2次重复的32个要素。
例如,随机数选择信息生成部1170生成数组RSI(=(14,12,11,2,4,8,9,0,1,6,10,7,13,3,15,5,14,12,11,2,4,8,9,0,1,6,10,7,13,3,15,5})。这里,设该数组从第0开始,将第i要素设作RSI_i。在该例的情况下,第0要素(RSI_0)是“14”。需要随机产生该数组。
这里,使用图4中所示的流程图来说明随机产生的方法的例子。
随机数选择信息生成部1170随机产生0到16!-1(=20,922,789,887,999)值中的1个值RSIS(步骤S5)。
随机数选择信息生成部1170将所产生的值RSIS设置为Y(Y←RSIS),并设置所有值是16的由16个要素构成的数组V(V←{16,16,…,16})(步骤S10)。这里,设数组V从第0开始,并将第i要素设作V_i。
随机数选择信息生成部1170将计数器cnt设置为16(步骤S15)。
随机数选择信息生成部1170将用cnt除Y后的商设作YS,将余数设作YR(步骤S20)。
随机数选择信息生成部1170将具有数组V的16的值的要素中,第YR的要素设置为cnt-1(步骤S25)。
随机数选择信息生成部1170将步骤S20中得到的商YS设置为Y(步骤S30)。即,随机数选择信息生成部1170执行Y←YS。
随机数选择信息生成部1170判断cnt的值是否是2(步骤S35)。
在判断为cnt的值不是2的情况下,(步骤S35中的“否”)、随机数选择信息生成部1170递减(减去1)计数器cnt,并将运算结果再次设置为计数器cnt的值(步骤S40),并返回到步骤S20。即,随机数选择信息生成部1170执行cnt←cnt-1。
在判断为cnt的值是2的情况下(步骤S35中的“是”),随机数选择信息生成部1170对数组V的各要素中具有值“16”的要素,设置值“0”(步骤S45)。
随机数选择信息生成部1170针对作为0以上15以下的整数的i的每一个,对RSI_i和RSI_(i+16)设置V_i的值(RSI_i←Y_i、RSI_(i+16)←Y_i),并暂时保持数组RSI(={RSI_0、RSI_1、…、RSI_31})(步骤S50)。
在上述所示的方法中,随机数选择信息生成部1170随机产生0到16!-1的值中的1个值RSIS,并将RSIS变换为T_i,使其满足以下的关系。T_i表示cnt为i时在步骤S20中得到的值YR。
RSIS=(16×15×…×3)×T_2+…+16×15×T_14+16×T_15+T_16
这里,T_i是0以上i-1的整数,i是0以上15以下的整数。
该变换一一对应。进一步,使用T_i,将数组V的具有16的值的要素值替换为15到1,并将其余的具有16的值的要素值替换为0,从而生成具有随机的16个要素的数组。可以通过排列2个该数组,生成随机数选择信息。
除了上述所描述的方法之外,只要是可随机产生的方法即可。其中,从安全性的观点来看,最好是上述方法这种具有16!个变分(variation)的产生方法。
(16)乘数群设置部1150-0~1150-31
由于乘数群设置部1150-0~1150-31进行同样的动作,所以这里说明乘数群设置部1150-i。i是0以上31以下的整数。
乘数群设置部1150-i初始化乘数群存储部1130中存储的乘数群MT_i。
具体来说,乘数群设置部1150-i对对象数据X,根据通过随机数选择信息生成部1170生成的随机数选择信息RSI的第i要素RSI_i,在计数器count的值是256以上的情况下,使用随机数群存储部1140中存储的随机数群RT_(RSI_i)的随机数R_(RSI_i),来算出X_i0和X_i1。
乘数群设置部1150-i在count比256小的情况下,使用随机数去除数S_(RSI_i),来算出X_i0和X_i1。
乘数群设置部1150-i在X_i0和X_i1的算出时,执行X_i0←RS modn、X_i1←X×X_i0 mod n。这里,RS是R_(RSI_i)或S_(RSI_i)。
(17)乘数群更新部1160
乘数群更新部1160在从第二计数器判断部1070接收进行乘数群MT_i的更新的更新指示后,更新乘数群存储部1130中存储的乘数群MT_i的乘数值X_i0和X_i1。MT_i是之前通过乘数群设置部1150-i设置的乘数群。
具体来说,乘数群更新部1160执行X_i0←(X_i0)^2mod n,X_i1←X×X_i0 mod n。
1.3乘幂运算装置1000的动作
(1)整体的动作
这里,使用图5和图6所示的流程图来说明乘幂运算装置1000的动作。
输入输出部1010受理对象数据X的输入,并将所受理的对象数据X存储到中间值存储部1120(步骤S100)。
输入输出部1010将中间值Z设置为1,并存储到中间值存储部1120中(步骤S105)。
随机数选择信息生成部1170生成由32个随机数选择信息构成的数组RSI(={RSI_0、RSI_1、…、RSI_31}),并暂时保持所生成的数组RSI(步骤S110)。
计数器初始化部1040初始化计数器count(步骤S115)。这里,计数器初始化部1040将计数器count设置为lend-1。这里,lend是私钥d的比特数。
乘数群设置部1150-i使用对象数据X、随机数选择信息生成部1170中存储的随机数选择信息和随机数群存储部1140中存储的随机数群,来初始化乘数群存储部1130中存储的MT_i,即,初始化乘数值X_i0与X_i1(步骤S120)。这里,i是(lend-count-1)/16以下的最大整数。
二次幂运算部1110对中间值存储部1120中存储的中间值Z进行二次幂运算,并将其结果作为Z存储在中间值存储部1120中(步骤S125)。
比特判断部1090判断私钥d的比特(步骤S130)。具体来说,比特判断部1090进行私钥d中的第count比特是0还是1的判断。
在判断为0的情况下(步骤S130中的“0”)、乘法部1100-i将中间值存储部1120中存储的中间值Z与乘数群存储部1130中存储的乘数群MT_i的乘数值X_i0相乘,并将其结果作为中间值Z存储在中间值存储部1120中(步骤S135)。在判断为是1的情况下(步骤S130中的“1”),乘法部1100-i将中间值存储部1120中存储的中间值Z与乘数群存储部1130中存储的乘数值X_i1相乘,并将其结果作为中间值Z存储在中间值存储部1120中(步骤S140)。这里,i是(lend-count-1)/16以下的最大整数。
第一计数器判断部1060判断计数器存储部1030中存储的计数器count的值是否是0(步骤S145)。
在判断为计数器count是0的情况下(步骤S145中的“是”)、输入输出部1010输出中间值存储部1120中存储的中间值Z(作为乘幂运算结果(步骤S175)。
在判断为计数器count不是0的情况下(步骤S145中的“否”)、第三计数器判断部1080判断是否可用16整除计数器存储部1030中存储的计数器count的值,即判断计数器count的值是否是16的倍数(步骤S150)。
在判断为可用16整除计数器count的值的情况下(步骤S150中的“是”),计数器更新部1050更新计数器存储部1030中存储的计数器count(步骤S170)。具体来说,计数器更新部1050递减(减1)计数器存储部1030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部1030中。之后,处理返回到步骤S120。
在判断为不能用16整除计数器count的值的情况下(步骤S150中的“否”),第二计数器判断部1070判断计数器存储部1030中存储的计数器count的值是否可被8整除,即计数器count的值是否是8的倍数(步骤S155)。
在判断计数器count的值可被8整除的情况下(步骤S155中的“是”),乘数群更新部1160更新乘数群存储部1130中存储的乘数群MT_i(步骤S160)。这里,i是(lend-count-1)/16以下的最大整数。
计数器更新部1050更新计数器存储部1030中存储的计数器count(步骤S165)。具体来说,计数器更新部1050递减(减1)计数器存储部1030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部1030中。之后,处理返回到步骤S125。
在判断为计数器count的值不能被8整除的情况下(步骤S155中的“否”),处理进入到步骤S165,在步骤S165的执行后,返回到步骤S125。
(2)MT_i的初始化处理
这里,使用图7所示的流程图来说明图5的步骤S120中进行的乘数群MT_i的初始化处理。
乘数群设置部1150-i判断计数器count的值是否是256以上(步骤S200)。这里,i是(lend-count-1)/16以下的最大整数。
在判断为计数器count的值是256以上的情况下(步骤S200中的“是”),乘数群设置部1150-i从数组RSI取得第i要素RSI_i,并根据所取得的RSI_i,从随机数群RT_(RSI_i)中取得随机数R_(RSI_i)(步骤S205)。
乘数群设置部1150-i将所取得的随机数R_(RSI_i)设置为乘数值X_i0(步骤S210)。乘数群设置部1150-i将乘数值X_i0乘以对象数据X后的结果设置为乘数值X_i1(步骤S215)。
在判断为计数器count的值不是256以上,即比256小的情况下(步骤S200中的“否”),乘数群设置部1150-i从数组RSI中取得第i要素RSI_i,并根据所取得的RSI_i,从随机数群RT_(RSI_i)中取得随机数去除数S(RSI_i)(步骤S220)。
乘数群设置部1150-i将所取得的随机数去除数S(RSI_i)设置为乘数值X_i0(步骤S225)。乘数群设置部1150-i将乘数值X_i0乘以对象数据X后的结果设置为乘数值X_i1(步骤S230)。
(3)MT_i的更新处理
这里,使用图8中所示的流程图来说明图6的步骤S160中进行的乘数群MT_i的更新处理。
乘数群更新部1160对乘数群存储部1130中存储的MT_i中含有的X_i0进行二次幂运算,并将其结果再次设作X_i0(步骤S300)。
乘数群更新部1160将X_i0乘以对象数据X,并将其结果设作X_i1(步骤S305)。
这里,i是(lend-count-1)/16以下的最大整数。
1.4实施方式1的效果
在实施方式1中,乘幂运算装置1000如从图5和图6的步骤S120、S150和S170可看出的那样,将私钥d的比特串分割为以16比特为1组的32个块,并对每个块分配乘数群的索引。
进一步,乘幂运算装置1000将由16比特构成的块分割为以8比特为1组的2个子块,并使用分配给原块的乘数群,来对2个子块分别分配不同乘法数。
例如,如图9所示,将由512比特构成的私钥d的比特串设作块0、块1、…、块30、块31,并将各块分割成2个子块。这里,对块i分配乘数群MT_i。
图9中,表示将块0分割成子块0-1与子块0-2。
乘幂运算装置1000对子块0-1使用图5所示的步骤S120中初始化后的MT_0中含有的X_00(=R_0)、或X_01(=X×X_00)。具体来说,乘幂运算装置1000在子块0-1中含有的私钥d的比特d_i是0的情况下,将X_00乘以中间值Z,并在私钥d的比特d_i是1的情况下,将X_01乘以中间值Z。
乘幂运算装置1000对子块0-2使用图6中表示的步骤S160中更新后的MT_0中含有的X_00’(=(X_00)^2(=(R_0)^2))、或X_01’(=X×(X_00)^2)。具体来说,乘幂运算装置1000在块0-1中含有的私钥d的比特d_i是0的情况下,将X_00’乘以中间值Z,在私钥d的比特d_i是1的情况下,将X_01’乘以中间值Z。
这样,在实施方式1中,在乘数群更新部1160中,按照私钥d的每8比特的块,更新(变更)乘以中间值Z的乘数值X_0、X_1。由此,由于使每个子块乘法数不同,所以可以防止通过分析乘法数是什么,而求出私钥d的BigMac攻击。
下面,进行详细说明。
图10表示实施方式1的乘幂运算装置1000对私钥d的处理与攻击者进行的乘数的分类和d的比特推测。子块0-1中,在d_i的比特是0的情况下,将X_0=X_00乘以中间值Z,在是1的情况下,乘以X_1=X_01。子块0-2中,由于将X_0从X_00更新(改变)为X_00’(=(X_00)^2),将X1从X_01更新(改变)为X_01’(=X×X_00’),所以在d_j的比特是0的情况下,乘以X_0=X_00’,在是1的情况下乘以X_1=X_01’。这里,i是511到504的整数,j是503到496的整数。
这里,攻击者可以从消耗功率波形将波形分类为子块0-1中乘数彼此不同的组a1和b1、子块0-2中乘数彼此不同的组a2和b2。但是,攻击者不知道组a1和b1的哪一个中d_i的比特对应于0、1,组a2和b2的哪一个中d_j的比特对应于0、1。因此,攻击者需要假定为各个子块内某个组对应于比特值0(或1),并确认是否正确。由于a1、b1与比特值0、1对应的模式有2种,a2、b2对应于比特值0、1的模式有2种,所以各自的组合有2×2=4种。因此,攻击者需要尝试4种。这里,若设子块的个数为NB,则攻击者需要尝试2^NB种。若NB变大,则要花费攻击者尝试的相应的时间,对BigMac攻击的安全性提高。例如,在设私钥d为512比特的整数时,8比特的块存在512/8=64个。因此,攻击者需要尝试2^64种,由于花费了攻击者尝试的时间,所以对BigMac攻击的安全性提高。这样,可以防止BigMac攻击。
另外,实施方式1的乘幂运算装置1000通过对低位比特(d_255~d_0)的运算(乘数运算),来抵消对私钥d的高位比特(d_511~d_256)的运算时出现的随机数R_0到R_15各自的影响。
下面,进行该说明。
这里,为说明上的方便,将数组RSI设为{0、1、2、…14、15、0、1、2、…、14、15}、即从0到15的整数排列而成的数组排列了2个后形成的数组。
换而言之,设RT_i对应于(lend-count-1)/16以下的最大整数i。
如图11所示,在count=511时,即,i=0时,通过执行图5中的步骤S135或S140,中间值Z中出现X_00(=R_0)。这时出现的R_0在count=510到255之间,通过步骤S125进行二次幂运算。即,R_0进行256次的二次幂运算,其结果成为R_0^(2^256)。因此,在count=255时的步骤S125中,中间值Z中包含乘数R_0^(2^256)。另外,在count=255时的步骤S115中,如图7所示,乘数值X_160和X_161中含有S_(RSI_16)(=S_0)。并且,在步骤S135、或S140中,通过将乘数值X_160、或X_161乘以中间值Z,来取消中间值Z中含有的乘数R_0^(2^256),即通过乘数R_0^(2^256)与S_0的相乘而成为1。
同样,在count=510时,通过执行图5中的步骤S135或S140,中间值Z中出现X_00(=R_0)。这时出现的R_0在count=509到254之间,通过步骤S125被进行二次幂运算。即,count=255时的步骤S125中,中间值Z中含有乘数R_0^(2^256)。另外,在count=254时的步骤S115中,如图7所示,由于乘数值X_160和X_161中含有S_0,所以在步骤S135、或S140中,通过乘数值X_160、或X_161乘以中间值Z,来取消中间值Z中含有的乘数R_0^(2^256)。
之后,依次取消count=509之后出现的X_i0。因此,由于在执行了count=0时的步骤S135或S140后,取消了所有X_i0,所以中间值Z的值成为X^d。
图12表示着眼于count=i(i是256以上511以下的整数)中出现的乘数值X_j0(=R_q)的情况下的乘法数的迁移。这里,设j是(lend-i-1)/16以下的最大整数,R_q=R_(RSI_j)。
图12中,首先,在count=i时的步骤S135或S140中,X_j0(=R_q)在中间值Z中出现、即,X_j0(=R_q)包含在中间值Z中。
在count=i-1时的步骤S125中,对中间值Z进行二次幂运算,二次幂运算结果为,Z中包含R_q^2。
接着,在count=i-2时的步骤S125中,对中间值Z(包含R_q^2)进行二次幂运算,二次幂运算结果为,Z中包含(R_q^2)^2(=R_q^(2^2))。
即,在到count=i-255为止的期间,通过重复中间值Z的二次幂运算,中间值Z中含有R_q^(2^255)。
进一步,在count=i-256时的步骤S115中,通过MT_i的初始化处理,必然对X_(i+16)0设置了S_q。
描述对X_(i+16)0设置S_q的理由。由于根据整数i可取的范围,count=i-256的值必然为255以下的值,所以对X_(i+16)0设置S_0到s_15的其中之一。另外,求出这时的(lend-count-1)/16以下的最大整数。
(lend-count-1)/16
=(lend-(i-256)-1)/16
=(lend-i+256-1)/16
=(lend-i-1)/16+256/16
=(lend-i-1)/16+16
因此,(lend-count-1)/16以下的最大整数是在(lend-i-1)/16以下的最大整数上加上16后的值、即,为j+16。由于通过数组RSI的生成方法,RSI_j与RSI_(j+16)的值相同,所以为S_(RSI_j)=S_(RSI_(j+16))、即,S_(RSI_(j+16))=S_q。
另外,在count=i-256时的步骤S125中,对中间值Z(包含R_q^(2^255))进行二次幂运算,二次幂运算结果为Z中包含R_q^(2^256)。
并且,在count=i-256时的步骤S135或S140中,由于将乘法数S_q乘以中间值Z,所以抵消了中间值Z中含有的R_q^(2^256)。
这样,count=i时出现的X_j0必然通过count=i-256时的乘数运算(步骤S135、或S140)相抵消。
另外,如图13那样,通过使用随机数来设置乘数群,使得私钥d的高位比特(d_256~d_511)的块(这里,块0到块15)中的随机数的影响在低位比特(d_0到d_255)的块(这里,块16到块31)中相抵消,而不需要取消随机数的影响的取消运算。
下面,详细说明该情形。这里,与上述同样,为了使说明方便,设数组RSI为{0、1、2、…14、15、0、1、2、…、14、15}。
图13中,直到块0的子块0-1中出现的随机数R_0的影响在之后移到使用随机数去除数S_0遮蔽(blind)的子块中为止,如图11、和图12所示那样,重复256次二次幂运算,所以成为将R_0^(2^256)mod n乘以中间值后的状态。由于S_0满足S_0=R_0^(-2^256)mod n,所以通过乘以这些,而去除了随机数R_0的影响(R_0^(2^256)mod n)。
在乘数群更新部1160中更新乘数群设置部1150-i中设置的乘数群的情况下也相同。例如,考虑在使用R_0遮蔽的子块之后更新了乘数群的情况,即,使用R_0^2遮蔽的子块。在该情况下,可在使用S_0^2遮蔽的子块中去除随机数的影响。这样,在对随机数R_j进行了预定次数(这里,256次)的二次幂运算后,使随机数R_j出现的子块与包含对应的随机数去除数S_j的子块成对,以便通过随机数去除数S_j去除随机数R_0的影响(R_0^(2^256)mod n),从而可全部去除随机数的影响,而不需要取消运算。
进一步,实施方式1中,由于通过随机数选择信息生成部1170随机产生遮蔽乘数群的随机数的模式,所以对差分功率分析攻击来说,攻击者难以取得统计信息,所以存在对差分功率分析攻击的耐性。
在专利文献1中,也记载了更新乘数群的结构,但是没有公开使乘数群的设置模式随机化与不需要取消运算的结构。
(具体例)
这里,使用进一步的具体例,使用图14到图16来说明通过对低位比特(d_255~d_0)的运算(乘数运算)来抵消对私钥d的高位比特(d_511~d_256)运算时出现的随机数各自的影响。
为使说明方便,设私钥d的所有比特为值1,对高位比特(d_511~d_256)运算时出现的随机数全部为相同值R。
在开头比特d_511为运算对象、即count=511时,幂运算装置1000初始化中间值Z,即将中间值Z设置为值1,并执行二次幂运算和乘法。这里,由于d_511=1,所以如图14所示,二次幂运算和乘法执行后的中间值Z的值为X×R。
在count=510时、幂运算装置1000对中间值Z(=X×R)实施二次幂运算,并使用其结果来实施乘法。这里,由于d_510=1,所以图14所示,乘法执行后的中间值Z的值为(X×R)^2×X×R。
幂运算装置1000在将二次幂运算和乘法重复到count=256为止,中间值Z的值如图15所示,成为(X×R)^(2^255)×(X×R)^(2^254)×…×(X×R)^2×X×R。
在count=255时,若乘幂运算装置100执行二次幂运算,则中间值Z的值如图15所示,成为(X×R)^(2^256)×(X×R)^(2^255)×…×(X×R)^4×(X×R)^2。这里,如实施方式1所示,用于乘法的随机数从值R改变为随机数去除数S(=R^(-2^256))。因此,若乘幂运算装置100执行乘法,则count=511时出现的随机数R的影响即值R^(2^256)通过随机数去除数S被抵消,结果,如图15所示,中间值Z的值成为X^(2^256)×(X×R)^(2^255)×…×(X×R)^4×(X×R)^2×X。
在count=254时,若乘幂运算装置100执行二次幂运算,则中间值Z的值如图15所示,成为X^(2^257)×(X×R)^(2^256)×(X×R)^(2^255)×…×(X×R)^4×X^2。接着,乘幂运算装置100若执行乘法,则count=510时出现的随机数R的影响即值R^(2^256)通过随机数去除数S被抵消,结果如图15所示,中间值Z的值成为X^(2^257)×X^(2^256)×(X×R)^(2^255)×…×(X×R)^4×X^2×X。
幂运算装置1000通过将二次幂运算和乘法重复到count=0,可通过对低位比特(d_255~d_0)的运算(乘数运算)来抵消对私钥d的高位比特(d_511~d_256)运算时出现的随机数各自的影响。
在count=1中执行了二次幂运算和乘法后,仅count=256时出现的随机数R的影响(值R^(2^255))保留在中间值Z中。
并且,通过在count=1中执行二次幂运算,中间值Z的值如图16所示,成为X^(2^511)×X^(2^510)×…×(X×R)^(2^256)×X^(2^255)…×X^4×X^2。幂运算装置1000通过将值X×S乘以该中间值Z,从而抵消了count=256时出现的随机数R的影响(值R^(2^256)),结果如图16所示,成为X^(2^511)×X^(2^510)×…×X^(2^256)×X^(2^255)…×X^4×X^2×X=X^d。
因此,幂运算装置1000在算出乘幂运算值X^d时,通过在count=511到0之间,使乘法中出现随机数或随机数去除数,从而使基于差分功率分析攻击的私钥的分析变得困难,同时,可以通过对低位比特(d_255~d_0)的运算(乘数运算)来抵消分别对私钥d的高位比特(d_511~d_256)进行乘法时出现的随机数的影响。
2.实施方式2
图17是表示乘幂运算装置2000的结构图。
乘幂运算装置2000是与实施方式1的乘幂运算装置1000相同,输入作为进行乘幂的对象数据的对象数据X,并对对象数据输出以私钥d为幂值的乘幂运算结果(X^d)的装置。
乘幂运算装置2000与实施方式1的乘幂运算装置1000同样,在例如RSA加密方式的解密或RSA签名方式的签名生成中加以使用。
2.1乘幂运算装置2000的结构
乘幂运算装置2000如图17所示,包括输入输出部2010、私钥存储部2020、计数器存储部2030、计数器初始化部2040、计数器更新部2050、第一计数器判断部2060、第二计数器判断部2070、第三计数器判断部2080、比特判断部2090、乘法部2100-0、2100-1、二次幂运算部2110、中间值存储部2120、乘数群存储部2130、随机数群存储部2140、乘数群设置部2150-0、2150-1、乘数群更新部2160、随机数种子存储部2180、以及随机数群设置部2190。
输入输出部2010、私钥存储部2020、计数器存储部2030、计数器初始化部2040、计数器更新部2050、第一计数器判断部2060、第二计数器判断部2070、比特判断部2090、二次幂运算部2110、中间值存储部2120、和乘数群更新部2160分别与实施方式1中表示的输入输出部1010、私钥存储部1020、计数器存储部1030、计数器初始化部1040、计数器更新部1050、第一计数器判断部1060、第二计数器判断部1070、比特判断部1090、二次幂运算部1110、中间值存储部1120、和乘数群更新部1160相同,所以省略这里的说明。
下面,分别说明第三计数器判断部2080、乘数群存储部2130、乘法部2100-0、2100-1、随机数群存储部2140、乘数群设置部2150-0、2150-1、随机数种子存储部2180、随机数群设置部2190。
(1)第三计数器判断部2080
第三计数器判断部2080在从第一计数器判断部2060接收到进行判断的指示后,判断计数器存储部2030中存储的计数器count的值是否可被256整除,即,是否是256的倍数。
在判断为可被256整除的情况下,第三计数器判断部2080将更新指示通知给计数器更新部2050。
在判断为不能被256整除的情况下,第三计数器判断部2080向第二计数器判断部2070通知进行判断的指示。
(2)乘数群存储部2130
乘数群存储部2130存储乘法部2100-0~2100-1中使用的乘数群MT_0~MT_1。
具体来说,乘数群存储部2130如图18所示,存储由乘数值X_i0和X_i1构成的乘数群MT_i。这里,i是0、1。
(3)乘法部2100-0、2100-1
由于乘法部2100-0、2100-1进行同样的动作,所以这里说明乘法部2100-i。i是0或1。
乘法部2100-i将中间值存储部2120中存储的中间值Z与乘数群存储部2130中存储的乘数群MT_i中存储的乘数值X_i0或乘数值X_i1相乘,并将该相乘结果存储到中间值存储部1120中。
具体来说,乘法部2100-i在比特判断部2090判断为第count比特是0的情况下,将中间值Z与乘数值X_i0相乘,并将其结果再次作为中间值Z。乘法部2100-i在比特判断部2090判断为第count比特是1的情况下,将中间值Z与乘数值X_i1相乘,并将其结果再次作为中间值Z。
(4)随机数群存储部2140
随机数群存储部2140存储随机数群RT。
具体来说,随机数群存储部2140如图19所示,存储由随机数R和随机数去除数S构成的随机数群RT。
随机数R和随机数去除数S满足以下的关系。
满足S=R^(-2^256)mod n即,R^(2^256)×S=1的关系。
随机数R与随机数去除数S由随机数群设置部2190生成。后面描述随机数群设置部2190。
(5)乘数群设置部2150-0、2150-1
由于乘数群设置部2150-0、2150-1进行同样的动作,所以这里说明乘数群设置部2150-i。i是0、1。
乘数群设置部2150-i初始化乘数群存储部2130中存储的乘数群MT_i。
具体来说,乘数群设置部2150-i针对对象数据X,在计数器count的值是256以上的情况下,使用随机数群存储部2140中存储的随机数群RT中含有的随机数R,来算出X_i0和X_i1。
乘数群设置部2150-i在count比256小的情况下,使用随机数群RT中含有的随机数去除数S,来算出X_i0和X_i1。
乘数群设置部2150-i在算出X_i0和X_i1时,执行X_i0←RS mod n、X_i1←X×X_i0 mod n。这里,RS是R或S。
(6)随机数种子存储部2180
随机数种子存储部2180存储随机数种子U与随机数去除种子V。预先存储U和V,来满足以下的式子。
V=U^(-2^256)mod n
(7)随机数群设置部2190
随机数群设置部2190使用随机数种子存储部2180中存储的随机数种子U与随机数去除种子V,来生成随机数群RT的随机数R与随机数去除数S,并存储到随机数群存储部2140中。
具体来说,产生随机的正整数值w,来计算下面的式子,求出R、S。
R=U^w mod n
S=V^w mod n
这些乘幂运算简单地使用二进制法或Window法等现有的方法来计算。w是例如32比特的随机数,但是并不限于此。
2.2乘幂运算装置2000的动作
(1)整体动作
这里,使用图20和图21所示的流程图来说明乘幂运算装置2000的动作。
输入输出部2010受理对象数据X的输入,并将所受理的对象数据X存储到中间值存储部2120中(步骤S400)。
输入输出部2010将中间值Z设置为1,并存储到中间值存储部2120中(步骤S405)。
随机数群设置部2190生成随机数群RT,并将所生成的随机数群RT存储到随机数群存储部2140中(步骤S410)。
计数器初始化部2040初始化计数器count(步骤S415)。这里,计数器初始化部2040将计数器count设置为lend-1。这里,lend是私钥d的比特数。
乘数群设置部2150-i使用对象数据X、随机数群存储部2140中存储的随机数群RT,来初始化乘数群存储部2130中存储的MT_i,即初始化乘数值X_i0和X_i1(步骤S420)。这里,i是(lend-count-1)/256以下的最大整数。
二次幂运算部2110对中间值存储部2120中存储的中间值Z进行二次幂运算,并将其结果作为Z存储到中间值存储部2120中(步骤S425)。
比特判断部2090判断私钥d的比特(步骤S430)。具体来说,比特判断部2090判断私钥d中的第count比特是0还是1。
在判断为0的情况下(步骤S430中的“0”)、乘法部2100-i将中间值存储部2120中存储的中间值Z与乘数群存储部2130中存储的乘数群MT_i的乘数值X_i0相乘,并将其结果作为中间值Z存储在中间值存储部2120中(步骤S435)。在判断为是1的情况下(步骤S430中的“1”)、乘法部2100-i将中间值存储部2120中存储的中间值Z与乘数群存储部2130中存储的乘数值X_i1相乘,并将其结果作为中间值Z存储在中间值存储部2120中(步骤S440)。这里,i是(lend-count-1)/256以下的最大整数。
第一计数器判断部2060判断计数器存储部2030中存储的计数器count的值是否是0(步骤S445)。
在判断为计数器count是0的情况下(步骤S445中的“是”),输入输出部2010输出中间值存储部2120中存储的中间值Z(将其作为乘幂运算结果)(步骤S475)。
在判断为计数器count不是0的情况下(步骤S445中的“否”),第三计数器判断部2080判断计数器存储部2030中存储的计数器count的值是否可被256整除,即计数器count的值是否是256的倍数(步骤S450)。
在判断为计数器count的值可被256整除的情况下(步骤S450中的“是”),计数器更新部2050更新计数器存储部2030中存储的计数器count(步骤S470)。具体来说,计数器更新部2050递减(减去1)计数器存储部2030中存储的计数器count,并将运算结果再次作为计数器count的值存储在计数器存储部2030中。之后,处理返回到步骤S420。
在判断为计数器count的值不能被256整除的情况下(步骤S450中的“否”),第二计数器判断部2070判断计数器存储部2030中存储的计数器count的值是否可被8整除,即计数器count的值是否是8的倍数(步骤S455)。
在判断为计数器count的值可被8整除的情况下(步骤S455中的“是”),乘数群更新部2160更新乘数群存储部2130中存储的乘数群MT_i(步骤S460)。这里,i是(lend-count-1)/256以下的最大整数。
计数器更新部2050更新计数器存储部2030中存储的计数器count(步骤S465)。具体来说,计数器更新部2050递减(减1)计数器存储部2030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部2030中。之后,处理返回到步骤S425。
在判断为计数器count的值不能被8整除的情况下(步骤S455中的“否”),处理进入到步骤S465,并在执行步骤S465后,返回到步骤S425。
(2)随机数群RT的设置处理
这里,使用图22所示的流程图来说明图20的步骤S410中进行的随机数群RT的设置处理。
随机数群设置部2190产生随机的正整数w(步骤S500)。
随机数群设置部2190使用随机数种子存储部2180中存储的随机数种子U与正整数w,来算出随机数R(=U^w mod n)(步骤S505)。
随机数群设置部2190使用随机数种子存储部2180中存储的随机数去除种子V与正整数w,来算出随机数去除数S(=V^w mod n)(步骤S510)。
随机数群设置部2190将由算出的随机数R与随机数去除数S构成的随机数群RT(=[R、S])存储到随机数群存储部2140中(步骤S515)。
(3)MT_i的初始化处理
图20的步骤S420中进行乘数群MT_i的初始化的处理由于可通过改变一部分图7所示的流程图来实现,所以这里仅说明该改变点。
首先,将步骤S205改变为,在判断为计数器count的值是256以上的情况下(步骤S200中的“是”),乘数群设置部2150-i取得随机数群存储部2140中存储的随机数群RT的随机数R。
接着,将步骤S210改变为,乘数群设置部1150-i将所取得的随机数R_(RSI_i)设置为乘数值X_i0。
将步骤S220改变为,在判断为计数器count的值不是256以上的情况下(步骤S200中的“否”),乘数群设置部2150-i取得随机数群存储部2140中存储的随机数群RT中包含的随机数去除数S。
最后,将步骤S225改变为,乘数群设置部2150-i将所取得的随机数去除数S设置为乘数值X_i0。
通过如上这样改变图7所示的动作的流程,而可实现图20的步骤S420中进行的乘数群MT_i的初始化的处理。
(4)MT_i的更新处理
图21中的步骤S460中进行的乘数群MT_i的更新处理可以通过与图8所示的动作的流程同样的动作流程来实现,所以省略这里的说明。
2.3实施方式2的效果
实施方式2与实施方式1相比,仅基于随机数群的乘数群的设置方法不同,所以与实施方式1有同样的效果。
对于差分功率分析攻击来说,由于对随机数种子进行基于随机值的乘幂来计算随机数群,所以可以随机化遮蔽乘数群的随机数的模式,由于攻击者难以取得统计信息,所以存在对差分功率分析攻击的耐性。
3.实施方式3
图23是表示乘幂运算装置3000的结构图。
乘幂运算装置3000与实施方式1、2的乘幂运算装置1000、2000同样,是输入作为进行乘幂的对象数据的对象数据X,并对于对象数据输出以私钥d为幂值的乘幂运算结果(X^d)的装置。
乘幂运算装置3000与实施方式1、2的乘幂运算装置1000、2000同样,在例如RSA加密方式的解密或RSA签名方式的签名生成中加以使用。
3.1乘幂运算装置3000的结构
乘幂运算装置3000如图23所示,包括输入输出部3010、私钥存储部3020、计数器存储部3030、计数器初始化部3040、计数器更新部3050、第一计数器判断部3060、第二计数器判断部3070、第三计数器判断部3080、乘数选择部3090、乘法部3100、二次幂运算部3110、中间值存储部3120、乘数群存储部3130、随机数群存储部3140、乘数群设置部3150-0、3150-1、乘数群更新部3160、随机数种子存储部3180与随机数群设置部3190。
由于输入输出部3010、私钥存储部3020、计数器存储部3030、计数器更新部3050、第一计数器判断部3060、二次幂运算部3110、和中间值存储部3120分别与实施方式1所示的输入输出部1010、私钥存储部1020、计数器存储部1030、计数器更新部1050、第一计数器判断部1060、二次幂运算部1110和中间值存储部1120相同,所以省略这里的说明。
另外,由于随机数群存储部3140、随机数种子存储部3180、和随机数群设置部3190分别与实施方式2所示的随机数群存储部2140、随机数种子存储部2180、和随机数群设置部2190相同,所以省略这里的说明。
下面,说明乘数群存储部3130、计数器初始化部3040、第二计数器判断部3070、第三计数器判断部3080、乘数选择部3090、乘法部3100、乘数群设置部3150-0、3150-1、和乘数群更新部3160。
(1)乘数群存储部3130
乘数群存储部3130存储乘法部3100中使用的乘数群MT_0~MT_1。
具体来说,乘数群存储部3130如图24所示,存储由16个乘数值X_i0、X_i1、…、X_i15构成的乘数群MT_i(i是0或1)。存储X_i0到X_i15是因为sw=4。对于一般的sw,乘数群存储部2130存储乘数值X_i0,X_i1,…,X_(i(2^sw-1))。
(2)计数器初始化部3040
计数器初始化部3040将计数器count设置为值b。
这里,值b=(lend/sw以上的最小整数)-1。lend是私钥d的比特数,例如是lend=512。sw是正整数,例如,sw=4。另外,sw可以是2、3或5以上。
(3)第三计数器判断部3080
第三计数器判断部3080在从第一计数器判断部2060接收到进行判断的指示后,判断计数器存储部3030中存储的计数器count的值是否可被64整除,即,是否是64的倍数。
在判断为可被64整除的情况下,第三计数器判断部3080将更新指示通知给计数器更新部3050。
在判断为不能被64整除的情况下,第三计数器判断部3080向第二计数器判断部3070通知进行判断的指示。
(4)第二计数器判断部3070
第二计数器判断部3070在从第三计数器判断部3080接收到进行判断的指示后,判断计数器存储部3030中存储的计数器count的值是否能被2整除,即,是否是2的倍数。
在判断为计数器count的值能被2整除的情况下,第二计数器判断部3070向乘数群更新部3160通知进行在乘数群存储部3130中存储的乘数群MT_i的更新的更新指示。这里,i是(b-count)/64以下的最大整数。
在判断为计数器count的值不能被2整除的情况下,第二计数器判断部3070将计数器的更新指示通知给计数器更新部3050。
(5)乘数选择部3090
乘数选择部3090以针对计数器存储部1030中存储的计数器count的分割秘密信息D_count的值为下标j(j=D_count),来选择乘数群存储部3130中存储的乘数群MT_i的乘数值X_ij。
这里,所谓分割秘密信息D_count是指按每sw比特来分割针对私钥d的比特串后得到的信息。例如,如图25所示,在sw=4的情况下,将私钥d的比特串分割为由4比特构成的分割秘密信息D_127、D_126、…、D_1、D_0。另外,由于分割秘密信息D_127、D_126、…、D_1、D_0分别由4比特构成,所以各分割秘密信息可取值的范围在10进制数表现中是″0”到″15”。即,由于分割秘密信息D_count的值是0到15的其中之一,所以乘数群存储部3130中必然存在对应的乘数值X_ij。
(6)乘法部3100
乘法部3100将中间值存储部3120中存储的中间值Z与乘数选择部3090中选择的乘数值X_ij相乘,并将其乘法结果存储到中间值存储部3120中。
具体来说,乘法部3100执行Z←Z×X_ij mod n。
这里,i是(b-count)/64以下的最大整数,count是计数器存储部1030中存储的计数器。
(7)乘数群设置部3150-0、3150-1
由于乘数群设置部3150-0、3150-1进行相同的动作,所以这里,作为乘数群设置部3150-i来加以说明。i是0、1。
乘数群设置部3150-i初始化乘数群存储部2130中存储的乘数群MT_i。
具体来说,乘数群设置部3150-i针对对象数据X,在计数器count的值为64以上的情况下,使用随机数群存储部3140中存储的随机数群RT中含有的随机数R,来算出X_i0、X_i1、X_i2、…、X_i14、X_i15。
乘数群设置部3150-i在count比64小的情况下,使用随机数群RT中含有的随机数去除数S,算出X_i0、X_i1、X_i2、…、X_i14、X_i15。
乘数群设置部3150-i在X_i0、X_i1、X_i2、…、X_i14、X_i15的算出时,执行X_i0←RS mod n、X_i1←X×X_i0 mod n、X_i2←X×X_i1 modn、…、X_i15←X×X_i14 mod n(=X^15×RS mod n)。这里,RS是R或S。
(8)乘数群更新部3160
乘数群更新部3160更新乘数群存储部3130中存储的乘数群MT_i的乘数X_i0和X_i1。MT_i是之前通过乘数群设置部3150-i设置的乘数群。
具体来说,乘数群更新部3160执行X_j0←X_j0^2 mod n、X_j1←X×X_j0 mod n、X_j2←X×X_j1 mod n、…、X_j15←X×X_j14 mod n。
3.2乘幂运算装置3000的动作
(1)整体的动作
这里,使用图20和图21所示的流程图来说明乘幂运算装置3000的动作。
输入输出部3010受理对象数据X的输入,并将所受理的对象数据X存储到中间值存储部3120中(步骤S600)。
输入输出部3010将中间值Z初始化为值″1”,并存储到中间值存储部3120中(步骤S605)。
随机数群设置部3190生成随机数群RT,并将所生成的随机数群RT存储到随机数群存储部3140中(步骤S610)。
计数器初始化部3040初始化计数器count(步骤S615)。这里,计数器初始化部3040将计数器count设置为值b(=(lend/sw以上的最小整数)-1)。这里,lend是私钥d的比特数,sw=4。
乘数群设置部3150-i使用对象数据X、以及随机数群存储部3140中存储的随机数群RT,来初始化乘数群存储部3130中存储的MT_i,即初始化乘数值X_i0和X_i1(步骤S620)。这里,i是(b-count)/64以下的最大整数。
二次幂运算部3110对于中间值存储部3120中存储的中间值Z,实施二次幂运算处理,并将其结果作为Z存储到中间值存储部3120中(步骤S625)。
乘数选择部3090从乘数群存储部3130中存储的乘数群MT_i选择乘数X_ij(步骤S630)。这里,i是(b-count)/64以下的最大整数,、j=D_count。D_count是表示对计数器count的分割秘密信息的值。
乘法部3100将中间值存储部3120中存储的中间值Z与乘数选择部3090选出的乘数X_ij相乘,并将其结果存储到中间值存储部1120中(步骤S635)。
第一计数器判断部3060判断计数器存储部3030中存储的计数器count的值是否是0(步骤S640)。
在判断为计数器count是0的情况下(步骤S640中的“是”),输入输出部3010输出中间值存储部3120中存储的中间值Z(将其作为乘幂运算结果)(步骤S670)。
在判断为计数器count不是0的情况下(步骤S640中的“否”),第三计数器判断部3080判断计数器存储部3030中存储的计数器count的值是否可被64整除、即计数器count的值是否是64的倍数(步骤S645)。
在判断为计数器count的值可被64整除的情况下(步骤S645中的“是”),计数器更新部3050更新计数器存储部3030中存储的计数器count(步骤S665)。具体来说,计数器更新部3050递减(减1)计数器存储部3030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部3030中。之后,处理返回到步骤S620。
在判断为计数器count的值不能被64整除的情况下(步骤S645中的“否”),第二计数器判断部3070判断计数器存储部3030中存储的计数器count的值是否可被2整除、即计数器count的值是否是2的倍数(步骤S650)。
在判断为计数器count的值可被2整除的情况下(步骤S650中的“是”),乘数群更新部3160更新乘数群存储部3130中存储的乘数群MT_i(步骤S655)。这里,i是(b-count)/64以下的最大整数。
计数器更新部3050更新计数器存储部3030中存储的计数器count(步骤S660)。具体来说,计数器更新部3050递减(减1)计数器存储部3030中存储的计数器count,并将运算结果再次作为计数器count的值存储到计数器存储部3030中。之后,处理返回到步骤S625。
在判断为计数器count的值不能被2整除的情况下(步骤S650中的“否”),处理进入到步骤S660,并在步骤S660的执行后,返回到步骤S625。
(2)随机数群RT的设置处理
由于图26中的步骤S610中进行的随机数群RT的设置处理可以通过与图22所示的动作的流程同样的动作流程来实现,所以省略这里的说明。
(3)MT_i的初始化处理
这里,使用图28所示的流程图来说明图26的步骤S620中进行的乘数群MT_i的初始化的处理。
乘数群设置部3150-i判断计数器count的值是否是64以上(步骤S700)。这里,i是(b-count)/64以下的最大整数。
在判断为计数器count的值是64以上的情况下(步骤S700中的“是”),乘数群设置部3150-i取得随机数群存储部3140中存储的随机数群RT中含有的随机数R(步骤S705)。乘数群设置部3150-i将所取得的随机数R设置为乘数值X_i0(步骤S710)。
在判断为计数器count的值不是64以上的情况下(步骤S700中的“否”),乘数群设置部3150-i取得随机数群存储部3140中存储的随机数群RT中含有的随机数去除数S(步骤S715)。乘数群设置部3150-i将所取得的随机数S设置为乘数值X_i0(步骤S720)。
乘数群设置部3150-i将计数器k设置为值″1”(步骤S725)。
乘数群设置部3150-i在计数器k的值为1到15之间,重复步骤S730到S745(步骤S730)。
乘数群设置部3150-i对乘数值X_ik设置将乘数值X_i(k-1)乘以对象数据X后的结果(步骤S735)。
乘数群设置部3150-i在计数器k的值上加上值″1”,并将相加后的结果再次作为计数器k的值加以设置(步骤S740)。
(4)二次幂运算处理
这里,使用图29所示的流程图来说明图26的步骤S625中进行的二次幂运算处理。
二次幂运算部3110将计数器u设置为值″1”(步骤S800)。
二次幂运算部3110在计数器u的值是1到sw(这里,4)之间,重复步骤S810到S820(步骤S805)。
二次幂运算部3110对中间值存储部3120中存储的中间值Z进行二次幂运算,并将其结果作为Z存储到中间值存储部3120中(步骤S810)。
二次幂运算部3110对计数器u的值加上值″1”,并将相加后的结果再次作为计数器u的值加以设置(步骤S815)。
由此,乘幂运算装置3000通过执行1次二次幂运算处理,而算出Z^16。
(5)MT_i的更新处理
这里,使用图30所示的流程图来说明图27的步骤S655中进行的乘数群MT_i的更新处理。
乘数群更新部3160对乘数群存储部3130中存储的MT_i中含有的X_i0进行二次幂运算,并将其结果再次作为X_i0(步骤S850)。
乘数群更新部3160在计数器m设置值″1”(步骤S855)。
乘数群更新部3160在计数器m的值为1到15之间,重复步骤S865到S875(步骤S860)。
乘数群更新部3160对乘数值X_im设置将乘数值X_i(m-1)乘以对象数据X后的结果(步骤S865)。
乘数群更新部3160在计数器m的值上加上值″1”,并将加法后的结果再次作为计数器m的值加以设置(步骤S870)。
3.3实施方式3的效果
实施方式3中,将d按照每2×4=8比特的块,在乘数群更新部3160中更新乘以中间值Z的乘数X_i0,X_i1,…,X_i15(i是0或1)。由此,与实施方式1和2同样,通过使每个块乘数不同,可以防止通过分析乘数是什么,来求出私钥d的BigMac攻击。
实施方式3中,在使用了窗口法的乘幂运算中也不需要取消运算。这里,窗口的宽度是4比特,将512比特的私钥d分割为64个窗口。
下面,描述不需要取消运算的理由。
这是因为,在对随机数R进行了预定次数(这里,64次)的二次幂运算处理后,使随机数R出现的窗口与包含对应的随机数去除数S的窗口成对,从而通过随机数去除数S去除随机数R的影响(R^(2^256)mod n)。
4.变形例
上述说明的实施方式是本发明的实施一例,本发明并不限于该实施方式,可以在不脱离其宗旨的范围内以各种方式来加以实施。例如,本发明还包含如下这样的情况。
(1)实施方式1~3中的私钥d的比特大小不限于512。也可以是1024和2048。另外,乘幂运算装置中计算了X^d mod n,但是,也可设dp=d modp-1,dq=d mod q-1,计算X^dp mod p和X^dq mod q,并使用中国的剩余定理,来计算X^d mod n。这里,计算X^dp mod p和X^dq mod q时也可使用乘幂运算装置。该情况下,在计算例如X^dp mod p时,将乘法部等中使用的mod n作为mod p,来实施乘幂运算装置。该情况下,在乘数群的设置时,也可将X_i1←X×X_i0mod p(i=0或1)中的X进行mod p。可通过对其进行mod n,来依赖于输入的X产生X mod p的运算,并通过测量这时的功率来防止p的信息被泄漏。另外,对于q也同样。
(2)实施方式1、2的第二计数器判断部判断计数器是否可被8整除,但是并不限于此。也可判断是否可被8以外的值、例如4整除。另外,也可保持包含多个正整数的表格,来判断是否是该表格中存储的正整数。另外,该表格中包含正整数可以不仅是8的倍数等具有规律性的正整数,也可以是没有规律性的正整数。在这些情况下,根据该正整数的值,u变化。
实施方式3中也同样,第二计数器判断部也可判断是否可被2以外的值、例如4整除。另外,也可保持包含多个正整数的表格,并判断是否是该表格中存储的正整数。
(3)实施方式1的第三计数器判断部判断计数器是否可被16整除,并根据其判断结果来设置乘数群,但并不限于此。例如,也可以是可被32或64这样的2的幂数整除。另外,不仅是如16、32或64这样的2的幂数,也可以是奇数。
(4)实施方式1~3的乘数群更新部中,对乘数群的乘数值X_i0(i是0到31的值)进行二次幂运算,但是并不限于此。例如,也可三次幂。即,更新后的乘数值只要是使用更新前的乘数值X_i0变更而来的值即可。
(5)实施方式1中,随机数群的个数为32,但是并不限于此。例如,在乘数群的设置的变分、即,数组RSI中含有的随机数选择信息的组合的种类想要为2^32左右的情况下,可以是26个。一般对于随机数群的个数g,变分的数目有g/2的阶乘个。
(6)实施方式1、2中,以从幂值的高位比特向低位的方向,判断幂值的比特来执行运算,但是也可沿低位比特到高位的方向,判断幂值的比特来执行运算。
该情况下,二次幂运算部不对中间值执行二次幂运算,而对之前设置的乘数群执行二次幂运算,来更新乘数群。另外,不需要乘数群更新部,第一次执行的乘数群设置部设置成使用R来进行遮蔽。即,乘数群MT_0在幂值的低位一半处,按照每个比特变化为
Figure A20088000054200491
Figure A20088000054200492
Figure A20088000054200493
这里,(R,X×R)表示X_00=R,X_01=X×R。进一步,第二次执行的乘数群设置部设置成使用(S×R^(2^255))进行遮蔽。这时,通过将S乘以之前的乘数群MT_0的各个乘数,来设置乘数群MT_1。在此之前,通过二次幂运算部来对乘数群MT_0的各要素进行二次幂运算。即,求出
Figure A20088000054200495
Figure A20088000054200496
并将MT_1的乘数分别设作S×R^(2^256),S×(X×R)^(2^256)。
进一步,例如,将实施方式2的随机数种子存储部中存储的随机数种子U、随机数去除种子V设置成V=U^(-2^256-1)。通过这样来加以设置,R和S的关系也为S=R^(-2^256-1)。结果,之前描述的MT_1的乘数为S×R^(2^256)=R^(-1),S×(X×R)^(2^256)=X^(2^256)×R^(-1)。结果,通过使用乘数群MT_1来执行乘法,可以抵消使用作为MT_0的初始值的(R,X×R)来执行乘法时的随机数R的影响。对此之后的比特,也通过二次幂运算部的二次幂运算,依次变化为(R^(-2),X^(2^257)×R^(-2))、(R^(-4),X^(2^258)×R^(-4))、…、(R^255,X^(2^511)×R^(-255)),从而可通过成对的高位比特的处理来抵消各个低位比特的随机数的影响。
在实施方式1中,也只要将随机数群Rt_i中包含的R_i、S_i如上所述设置为s=R^(-2^256-1)即可。
(7)实施方式1~3中,分别设置了多个乘数群,但是也可用一个乘数群替换在乘数群设置部中计算出的结果。
(8)也可将实施方式1中的随机数群存储部中存储的随机数的一部分或全部作为随机数种子,将随机数去除数的一部分或全部作为随机数去除种子,并分别如实施方式2那样进行乘幂,通过使这些结果相乘来生成随机数群。同样也可组合实施方式1和3。
(9)实施方式1~3中,预先存储了随机数与随机数去除数或随机数种子与随机数去除种子,但是也可在最初进行加密处理时,根据私钥算出这些来加以存储。通过该结构,在制造装置时,不需要存储随机数与随机数去除数或随机数种子与随机数去除种子。另外,也可从外部提供私钥。进一步,也可以每次执行加密处理时,每次根据私钥算出随机数和随机数去除数来加以利用。
(10)实施方式1~3的随机数可以是任何值,也可转用私钥或公钥的值、或乘幂之外的功能中存储的值。另外,在使用中国的剩余定理的情况下,mod p中的随机数Rp与mod q中的随机数Rq也可以为相同值。由此,可以减少存储器大小。另外,可以不使用随机数,而转用随机数去除数。在任何情况下都需要维持随机数和随机数去除数的关系。
(11)实施方式1~3中也可通过追加例如指数遮蔽(Exponent Bliding)来实施其他功率差分攻击对策。在使用指数遮蔽的情况下,由于幂值每次随机变化,所以安全性更高。
(12)在对实施方式2使用了中国的剩余定理的情况下,可以最先执行mod p的随机数种子和随机数去除种子的w次幂,在mod p中使用了乘数群的乘幂运算结束后,执行mod q的随机数种子和随机数去除种子的w次幂,从而改写mod p的随机数种子和随机数去除种子的存储区域。由此,可以减少随机数和随机数去除数的存储器大小。
(13)实施方式2中,w次幂运算使用现有技术的方法,但是也可设其为实施了功率差分攻击对策。由此,安全性更加提高。
(14)实施方式1~3中,通过随机数和随机数去除数的组合,抵消了随机数的影响,但是并不限于此。也可通过3个以上的随机数的组合来抵消随机数的影响。该情况下,随机数群为这些彼此相抵消的随机数的组。
(14-1)下面,使用图31来说明通过随机数去除数S来抵消随机数R、R’的影响的情况。为了使说明简单,而着眼于count=i、j、k来加以说明。
这里,设count=i时,随机数R首次出现,在count=j时,更新后的随机数R’首次出现。在count=k时,抵消这些随机数的影响,而成为S=R^(-2^p)×R’^(-2^q)。
如图31所示,count=i时随机数R出现,count=j时随机数R’出现,通过在count=k的时刻下的二次幂运算,分别对随机数R和R’实施总共p次、q次的二次幂运算。
在count=k时刻的乘法运算(例如,图5所示的步骤S135、或140)中,通过使用随机数去除数S(=R^(-2^p)×R’^(-2^q)),来抵消对随机数R和R’的运算结果(R^(2^p)、和R’^(2^p))。
这时,乘幂运算装置也可预先存储由随机数R、R’和随机数去除数S的3个数构成的组。
或者,也可以是,乘幂运算装置预先存储由随机数R、R’、分别针对随机数R、R’的随机数去除数S_1、S_2构成的4个组,并根据随机数去除数S_1和S_2算出随机数去除数S。
算出随机数去除数S的定时只要是实施用于抵消对随机数R和R’的运算结果(R^(2^p)、和R’^(2^p))的运算之前,则可以是任何时候。
(14-2)下面,在由随机数去除数S、S’抵消随机数R的影响的情况下,随机数R和随机数去除数S、S’的关系可以如下这样。设在随机数R出现后进行基于随机数去除数S的乘法时,对随机数R进行i次二次幂运算。
设随机数R和随机数去除数S的关系为S=R^(-2^i),随机数R和随机数去除数S’的关系为s’=R^(-2^(i+1-j))。j是比i小的整数。
该情况下,在对随机数R实施了i次二次幂运算之后,紧接着通过进行基于随机数去除数S(=R^(-2^i))的乘法,从而成为取消了值R^(2^i)中的一部分且值R^(2^(i-j))保留的状态。通过对该值R^(2^(i-j))实施二次幂运算,运算结果成为值R^(2^(i-j+1)),并且使用随机数去除数S’(=R^(-2^(i+1-j)))进行相乘,从而取消了值R^(2^(i-j+1))。
(15)本发明可以不运算乘幂,而运算椭圆曲线的点的标量(scalar)倍数点。该情况下,乘幂运算装置1000中实施的乘法是椭圆加法,二次幂运算是椭圆2倍运算。另外,“幂”对应于“标量”。
具体来说,将实施方式1中所示的乘法″Z←Z×Xi0”替换为椭圆加法″Z←Z+Xi0”,将乘法″Z←Z×Xi1(=Z×X×RS)”替换为椭圆加法″Z←Z+Xi1(=Z+X+RS)”。另外,将实施方式1所示的二次幂运算″Z←Z^2”替换为椭圆2倍运算″Z←2*Z(=Z+Z)”。
下面使用具体例来表示运算椭圆曲线的点的标量倍数点的情况。
这里,使用图32所示的流程图来说明装置A和装置B之间进行的密钥共有的一例。
装置A设置私钥xA来加以保持(步骤S901)。装置B设置私钥xB来加以保持(步骤S931)。
存在保持椭圆曲线的管理中心,管理中心中设置了管理中心装置960。管理中心上设置的管理中心装置960选择椭圆曲线E:y^2=x^3+ax+b的合适参数a和b来加以保持,选择质数p和椭圆曲线E上的合适的元G来加以保持(步骤S911)。
管理中心装置960公开质数p、椭圆曲线E和元G(步骤S913)。
装置A算出公钥YA=xA*G(步骤S902),并将所算出的公钥YA输出到装置B(步骤S903)。装置B算出公钥YB=xB*G(步骤S932),并将所算出的公钥YB输出到装置A(步骤S933)。
接着,装置A算出共有密钥xA*YB(步骤S904)。这里,共有密钥xA*YB=(xA×xB)*G。
另一方面,装置B算出共有密钥xB*YA(步骤S934)。这里,共有密钥xB*YA=(xB×xA)*G=(xA×xB)*G=xA*YB。
由此,装置A和装置B可以共有相同的会话密钥。
这里,椭圆曲线上的离散对数问题为安全性的基础。
符号*表示多次相加椭圆曲线中包含的元的运算,x*G如下式所示,是指x次相加椭圆曲线中含有的元G。
x*G=G+G+G+…+G
接着,下面简单说明椭圆曲线上的椭圆幂倍数运算。
作为一例,计算100*P。
若表示为100*P=2(2(P+2(2(2(P+2P))))),则100*P通过基于椭圆曲线上的点的6次2倍运算与2次加法来加以计算。
这样,椭圆幂倍数运算归纳为基于2倍运算和加法的运算。
这里,设椭圆曲线的方程式为y^2=x^3+ax+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×y)}(x1-x3)-y1
这里,上述运算是在定义了椭圆曲线的有限体上的运算。
椭圆曲线的运算公式在″Efficient elliptic curve exponentiation”(Miyaji,Ono,and Cohen著、Advances in cryptology-proceedings of ICICS’97,Lecture notes in computer science,1997,Springer-verlag,282-290.)中详细说明。
(16)本发明中的群相当于实施方式1到3中的作为基于″mod n”的集合的剩余域、和上述(15)的椭圆曲线。
这里,所谓群是指集合G具有下面表示的性质G0到G3的情况。
(G0)对于G的任意2个元a,b,定义积ab并属于G。
(G1)对于G的任意3个元a,b,c,成立(ab)c=a(bc)(结合法则)。
(G2)对G的任意元a,存在满足ae=ea的G的元e(单位元的存在)。
(G3)对于G的任意元a,存在满足ab=ba=e的G的元b(存在逆元)。
上述群的定义在剩余域的群中表示了定义,但是在上述定义中,将积考虑为和来定义椭圆曲线上的群。
另外,本发明的基本运算和窗口运算相当于实施方式1到3的乘法、和上述(15)的椭圆加法。
进位运算相当于实施方式1到3的二次幂运算(2^v)、和上述(15)的椭圆2倍运算(2*v)。
(17)本发明可以不是乘幂运算装置,而是利用其的RSA加密的解密装置或RSA签名的签名生成装置。另外,可以是执行将秘密信息作为幂值的乘幂运算的信息安全装置。例如,可以是E1Gamal加密的解密装置或DSA签名的签名生成装置。
(18)上述各实施方式和变形例在如下所示的情况下适用。
(18-1)各实施方式和变形例在公钥加密方式中的密文的解密与签名数据的生成中适用。对于这些,在上述中,作为对象数据X的乘幂运算结果加以说明。
(18-2)各实施方式和变形例可在认证中适用。所谓认证是指验证通过如自称那样的人物来发送消息或没有篡改消息。各实施方式和变形例可在身份证明中适用。身份的证明是指例如,具有对数据的访问权或对施设的访问权(进入权)的证明、或自己是如所主张的人物的证明。进一步,各实施方式和变形例可在防止否认中适用。所谓防止否认是指对抗例如实际上同意某事但主张为不同意的人。
(18-3)各实施方式和变形例可以在密钥交换中适用。所谓密钥交换是指例如,2个人共有在使用广播电波的私钥加密方式中使用的私钥。
(18-4)各实施方式和变形例也可以在扔硬币(也称作比特委托(commitment))中适用。所谓扔硬币是指例如,住在不同城市的2个象棋玩家通过电子邮件来决定谁执白。
(18-5)各实施方式和变形例可以在秘密分散中适用。秘密分散是指例如,某个秘密的信息可以由共同工作的k个人使用,但是k-1个人不能使用。
(18-6)各实施方式和变形例可以在零知识证明中适用。零知识证明是指例如,某个人使他人对成功对解出数论的或组合论的问题的情形进行认可,但连解是什么这样的一点点信息都不提供。
(19)上述实施方式1中,对于相对私钥d的所有比特,在步骤S135和S140的其中一个中使用了随机数R或随机数去除数S,但是并不限于此。
也可对1个以上的特定比特分别使用随机数R来施加乘法。针对各特定的比特,对在该特定的比特中出现的随机数R,通过使用与所述随机数R对应的随机数去除数S来对在重复预定次数的二次幂运算之后的运算对象的比特施加乘法,从而可以取消对在该特定的比特中出现的随机数R的二次幂运算的影响。这时,特定的比特为最低位比特之外的比特。
下面,使用特定的比特为1个情况来加以说明。
对第511比特到第256比特中的第i比特,使用随机数R来施加乘法,之后,对第(i-256)比特、即对实施了256次二次幂运算之后的运算对象的比特使用与所述随机数R对应的随机数去除数S来施加乘法。这时,在其他比特中,与现有技术同样,在比特值为0的情况下,将值1乘以中间值Z,在比特值是1的情况下,将对象数据X乘以中间值。
另外,在实施方式2中也同样,也可分别对1个以上的特定比特使用随机数R来实施乘法。这时,特定的比特是最低位比特以外的比特。
在实施方式3中也同样,可以分别对1个以上的特定窗口使用随机数R来施加乘法。这时,特定的窗口为最低位的窗口之外的窗口。
(20)上述实施方式1、2中,乘幂运算装置按每个比特更新用于乘法的随机数。
在上述实施方式3中也同样,乘幂运算装置也可按每个窗口来更新用于乘法的随机数。
(21)上述实施方式1中,在乘幂运算装置的乘法部中使用的运算式也可以为X_i(=X^(d_i)×RS_(RSI_i))。这里,RS_(RSI_i)是R_(RSI_i)和S_(RSI_i)的其中之一。
这是因为,在d_i为0的情况下,由于X^(d_i)=1,所以X_i=R_(RSI_i),与X_i0同值。另外,在d_i为1的情况下,由于X^(d_i)=X,所以成为X_i=X×R_(RSI_i),与X_i1同值。
在上述实施方式2中也同样,可以将乘幂运算装置的乘法部中使用的运算式设作X_i(=X^(d_i)×RS)。这里,RS是R和S的其中之一。
在上述实施方式3中也同样,也可将乘幂运算装置的乘法部中使用的运算式设作X_i(=X^w ×RS)。这里,RS是R和S的其中之一,w是表示窗口的值。
(22)上述的各装置具体来说是由微处理器、ROM、RAM、硬盘单元、显示单元、键盘、鼠标等构成的计算机系统。所述RAM或硬盘单元中存储了计算机程序。所述微处理器根据所述计算机程序来动作,从而各装置实现其功能。这里,计算机程序为了实现预定的功能,而组合多个表示对计算机的指令的命令代码来构成。
(23)构成上述的各装置的构成要素的一部分或全部可以由1个系统LSI(Large Scale Integration:大规模集成电路)构成。系统LSI是在1个芯片上集成多个结构部后加以制造的超多功能LSI,具体来说,是包含微处理器、ROM、RAM等构成的计算机系统。在所述RAM中存储计算机程序。所述微处理器通过根据所述计算机程序来动作,从而系统LSI实现其功能。
构成上述的各装置的构成要素的各部分可以分别单芯片化,也可包含一部分或全部地单芯片化。
这里,为系统LSI,但是根据集成度的不同,还称作IC、LSI、超级LSI、顶级LSI。集成电路化的方法并不限于LSI,还可由专用电路或通用处理器来实现。在LSI制造后,也可利用可进行编程的FPGA(FieldProgrammable Gate Array:现场可编程门阵列)或可重构LSI内部的电路单元的连接和设置的可重构处理器。
进一步,若因半导体技术的进步或派生的其他技术而替换LSI的集成电路化的技术出现,当然,也可使用该技术来进行功能块的集成化。还有适用生物技术等的可能。
(24)构成上述各装置的构成要素的一部分或全部可以由可在各装置上拆装的IC卡或单个模块构成。所述IC卡或所述模块是由微处理器、ROM、RAM等构成的计算机系统。所述IC卡或所述模块也可包含上述超多功能LSI。微处理器通过根据计算机程序来动作,而使所述IC卡或所述模块实现其功能。该IC卡或该模块也可具有防篡改性。
(25)本发明可以是上述所示的方法。也可以是通过计算机来实现这些方法的计算机程序,也可以是由所述计算机程序构成的数字信号。
本发明可以是将所述计算机程序或所述数字信号记录在计算机可读取的记录媒体例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半导体存储器等中后的产品。也可以是在这些记录媒体上记录的所述数字信号。
本发明也可将所述计算机程序或所述数字信号经电气通信线路、无线或有线通信线路、以互联网为代表的网络、数据广播等来传送。
本发明也开始是具有微处理器和存储器的计算机系统,所述存储器存储上述计算机程序,所述微处理器根据所述计算机程序来动作。
通过将所述程序或所述数字信号记录在所述记录媒体上来移送,或将所述程序或所述数字信号经所述网络等来移送,可通过独立的其他计算机系统来实施。
(26)也可以分别组合上述实施方式和上述变形例。
总结
(1)本发明是乘幂运算装置,输入对象数据,并输出将作为秘密数的秘密信息作为幂值的所述对象数据的乘幂运算结果,其特征在于,包括输入输出部,受理所述对象数据的输入,并输出所述对象数据的乘幂运算结果;秘密信息存储部,存储所述秘密信息;中间值存储部,存储中间值;秘密信息判断部,对所述秘密信息进行判断;乘数群存储部,存储由多个乘数构成的2个以上的乘数群;随机数群存储部,存储由多个随机数构成的随机数群;2个以上的乘数群设置部,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群并将其存储在所述乘数群存储部中;乘法部,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数之间的相乘,并将乘法结果存储在所述中间值存储部中;二次幂运算部,执行所述中间值的二次幂运算,并将二次幂运算结果存储在所述中间值存储部;以及乘数群更新部,根据所述乘数群中含有的所述乘数,更新所述乘数群并将其存储在所述乘数群存储部中;所述乘法部中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数存储部中存储的多个所述乘数中选择出的,所有所述乘数群设置部通过组合所述乘数群设置部、所述乘数群设置部之外的1个以上的乘数群设置部、使用所述2个以上的乘数群设置部中设置的所述乘数群来进行乘法的所述乘法部、所述二次幂运算部和所述乘数群更新部的处理,来抵消在所述2个以上的乘数群设置部中设置的所述随机数的影响。
(2)上述(1)的乘幂运算装置中,所述各个组合也可包含正好2个所述乘数群设置部。
(3)上述(2)的乘幂运算装置也可包含2个所述乘数群设置部,所述乘数群设置部集合是1个。
(4)上述(3)的乘幂运算装置也可进一步包含存储计数器的计数器存储部、更新计数器的值的计数器更新部与判断计数器的值的计数器判断部,所述秘密信息判断部根据所述计数器的值来加以判断,所述乘数群更新部根据所述计数器判断部的判断结果来更新所述乘数。
(5)上述(4)的乘幂运算装置中,也可以是,作为在2个以上的所述乘数群设置部中第一次进行处理的所述乘数群设置部的第一乘数群设置部在所述乘法部和所述二次幂运算部之前执行,作为在2个以上的所述乘数群设置部中第二次进行处理的所述乘数群设置部的第二乘数群设置部在所述计数器判断部中所述计数器的值表示所述幂值比特串的正中的情况下执行。
(6)上述(2)到(5)的其中之一的乘幂运算装置也可以进一步具有根据预先提供的1个以上的随机数种子来设置所述随机数群的随机数群设置部。
(7)上述(2)到(6)的其中一个的乘幂运算装置中,也可以是,所述乘数群设置部随机选择所述随机数群中含有的所述随机数。
(8)上述(2)或(6)的乘幂运算装置中,也可以是,所述随机数群设置部将1个以上的所述随机数种子本身作为所述随机数群加以设置。
(9)上述(2)或(6)的乘幂运算装置中,也可以是,所述随机数群设置部生成作为随机的幂值的随机幂值,并将所述随机幂值作为幂值来对所述随机数种子进行乘幂,求出所述随机数来设置所述随机数群。
(10)上述(1)到(9)的其中一个乘幂运算装置中,其特征在于,所述乘数群存储部存储2个所述乘数X_0、X_1,所述乘数群更新部针对所述乘数X_0、X_1,将对所述乘数X_0二次幂运算后的结果作为对所述乘数X_0的更新乘数X_0’,并将所述对象数据与所述更新乘数X_0相乘后的结果作为对所述乘数X_1的更新乘数X_1’,将各个所述更新乘数X_0’、X_1’存储在所述乘数群存储部中(x_y表示对x赋予下标y。)。
(11)上述(1)到(9)的其中一个乘幂运算装置中,其特征在于,所述乘数群存储部存储2^k(k是2以上)个所述乘数X_0、X_1、X_2、…、X(2^k),所述乘数群更新部针对所述乘数X_0、X_1,将对所述乘数X_0进行二次幂运算后的结果作为对所述乘数X_0的更新乘数X_0’,并将所述对象数据和所述更新乘数X_0相乘后的结果作为对所述乘数X_1的更新乘数X_1’,将各个所述更新乘数X_0’、X_1’存储在所述乘数群存储部中(x^y表示x的y次幂。)。
(12)本发明是解密装置,输入密文,将以作为秘密数的秘密信息为幂值的所述密文的乘幂运算结果作为解密文进行输出,其特征在于,具有:输入输出部,受理所述密文的输入,并输出所述解密文;秘密信息存储部,存储所述秘密信息;中间值存储部,存储中间值;秘密信息判断部,对所述秘密信息加以判断;乘数群存储部,存储由多个乘数构成的2个以上的乘数群;随机数群存储部,存储由多个随机数构成的随机数群;2个以上的乘数群设置部,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群并将其存储在所述乘数群存储部中;乘法部,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数之间的乘法,并将乘法结果存储在所述中间值存储部;二次幂运算部,执行所述中间值的二次幂运算,并将二次幂运算结果存储到所述中间值存储部中;以及乘数群更新部,根据所述乘数群中含有的所述乘数,来更新所述乘数群并将其存储在所述乘数群存储部中,所述乘法部中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数存储部中存储的多个所述乘数中选择出的,所有所述乘数群设置部通过组合所述乘数群设置部、所述乘数群设置部之外的1个以上的乘数群设置部、使用所述2个以上的乘数群设置部中设置的所述乘数群来进行相乘的所述乘法部、所述二次幂运算部和所述乘数群更新部的处理,来抵消在所述2个以上的乘数群设置部中设置的所述随机数的影响。
(13)本发明是签名生成装置,以签名对象数据为输入,将以作为秘密数的秘密信息为幂值的所述签名对象数据的乘幂运算结果作为签名数据输出,其特征在于,具有:输入输出部,受理所述签名对象数据的输入,并输出所述签名数据;秘密信息存储部,存储所述秘密信息;中间值存储部,存储中间值;秘密信息判断部,对所述秘密信息加以判断;乘数群存储部,存储由多个乘数构成的2个以上的乘数群;随机数群存储部,存储由多个随机数构成的随机数群;2个以上的乘数群设置部,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群并将其存储在所述乘数群存储部中;乘法部,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数的乘法,并将乘法结果存储在所述中间值存储部;二次幂运算部,执行所述中间值的二次幂运算,并将二次幂运算结果存储到所述中间值存储部中;以及乘数群更新部,根据所述乘数群中含有的所述乘数,来更新所述乘数群并将其存储在所述乘数群存储部中,所述乘法部中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数存储部中存储的多个所述乘数中选择出的,所有所述乘数群设置部通过组合在所述乘数群设置部、所述乘数群设置部之外的1个以上的乘数群设置部、使用所述2个以上的乘数群设置部中设置的所述乘数群来进行相乘的所述乘法部、所述二次幂运算部和所述乘数群更新部的处理,来抵消在所述2个以上的乘数群设置部中设置的所述随机数的影响。
(14)本发明是乘幂运算方法,输入对象数据,输出以作为秘密数的秘密信息为幂值的所述对象数据的乘幂运算结果,其特征在于,包括:输入输出步骤,受理所述对象数据的输入,并输出所述对象数据的乘幂运算结果;秘密信息存储步骤,存储所述秘密信息;中间值存储步骤,存储中间值;秘密信息判断步骤,对所述秘密信息加以判断;乘数群存储步骤,存储由多个乘数构成的2个以上的乘数群;随机数群存储步骤,存储由多个随机数构成的随机数群;2个以上的乘数群设置步骤,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群;乘法步骤,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数之间的乘法;二次幂运算步骤,执行所述中间值的二次幂运算;以及乘数群更新步骤,根据所述乘数群中含有的所述乘数,来更新所述乘数群,所述乘法步骤中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数群中含有的多个所述乘数中选择出的,所有所述乘数群设置步骤通过组合在所述乘数群设置步骤、所述乘数群设置步骤之外的1个以上的乘数群设置步骤、使用所述2个以上的乘数群设置步骤中设置的所述乘数群来进行相乘的所述乘法步骤、所述二次幂运算步骤和所述乘数群更新步骤的处理,来抵消在所述2个以上的乘数群设置步骤中设置的所述随机数的影响。
(15)本发明是由乘幂运算装置执行的程序,该乘幂运算装置输入对象数据,并输出以作为秘密数的秘密信息为幂值的所述对象数据的乘幂运算结果,其特征在于,所述程序使乘幂运算装置执行下述步骤:输入输出步骤,受理所述对象数据的输入,并输出所述对象数据的乘幂运算结果;秘密信息存储步骤,存储所述秘密信息;中间值存储步骤,存储中间值;秘密信息判断步骤,对所述秘密信息加以判断;乘数群存储步骤,存储由多个乘数构成的2个以上的乘数群;随机数群存储步骤,存储由多个随机数构成的随机数群;2个以上乘数群设置步骤,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群;乘法步骤,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数的乘法;二次幂运算步骤,执行所述中间值的二次幂运算;以及乘数群更新步骤,根据所述乘数群中含有的所述乘数,更新所述乘数群;所述乘法步骤中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数群中含有的多个所述乘数中选择出的,所有所述乘数群设置步骤通过组合在所述乘数群设置步骤、所述乘数群设置步骤之外的1个以上的乘数群设置步骤、使用所述2个以上的乘数群设置步骤中设置的所述乘数群来进行相乘的所述乘法步骤、所述二次幂运算步骤和所述乘数群更新步骤的处理,来抵消在所述2个以上的乘数群设置步骤中设置的所述随机数的影响。
(16)本发明的特征在于是记录了上述(15)记载的程序的媒体。
(17)本发明是乘幂运算装置的集成电路,该乘幂运算装置输入对象数据,并输出以作为秘密数的秘密信息为幂值的所述对象数据的乘幂运算结果,其特征在于,所述集成电路具有:输入输出部,受理所述对象数据的输入,并输出所述对象数据的乘幂运算结果;秘密信息存储部,存储所述秘密信息;中间值存储部,存储中间值;秘密信息判断部,对所述秘密信息加以判断;乘数群存储部,存储由多个乘数构成的2个以上的乘数群;随机数群存储部,存储由多个随机数构成的随机数群;2个以上的乘数群设置部,根据所述随机数群中含有的所述随机数,分别对2个以上的所述乘数群设置所述乘数群并将其存储在所述乘数群存储部中;乘法部,根据所述秘密信息判断部的判断结果,对2个以上的所述乘数群执行所述中间值与属于所述乘数群的所述乘数之间的乘法,并将乘法结果存储在所述中间值存储部;二次幂运算部,执行所述中间值的二次幂运算,并将二次幂运算结果存储到所述中间值存储部中;以及乘数群更新部,根据所述乘数群中含有的所述乘数,来更新所述乘数群并将其存储在所述乘数群存储部中,所述乘法部中使用的所述乘数是根据所述秘密信息判断部的判断结果从所述乘数存储部中存储的多个所述乘数中选择出的,所有所述乘数群设置部通过组合在所述乘数群设置部、所述乘数群设置部之外的1个以上的乘数群设置部、使用所述2个以上的乘数群设置部中设置的所述乘数群来进行相乘的所述乘法部、所述二次幂运算部和所述乘数群更新部的处理,来抵消在所述2个以上的乘数群设置部中设置的所述随机数的影响。
(18)根据本发明,可以防止因BigMac攻击而降低了安全性,同时,在进行对象数据的乘幂运算的过程中,由于取消了随机数R的影响,所以不需要如现有技术那样另外进行取消处理。因此,其价值很大。
产业上的可用性
本发明在上述表示的乘幂运算装置、解密基于公钥加密的密文的装置和生成基于公钥加密的签名数据的装置的制造和销售产业中,可以经营性地、持续地、反复地利用。
通过使用基于本发明的乘幂运算装置,可以使基于BigMac攻击的私钥分析变得困难。

Claims (18)

1.一种信息安全装置,在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,包括:
取得单元,取得值d;以及
主运算单元,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&X;
所述主运算单元
在第一窗口的窗口运算中,使用随机数R;
在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
2.根据权利要求1所述的信息安全装置,其特征在于,
所述信息安全装置还包括处理单元,该处理单元使用幂运算d&X的运算结果,来解密信息,或对信息实施数字签名。
3.根据权利要求1所述的信息安全装置,其特征在于,
所述第二窗口存在于从所述第一窗口开始距离值v处;
所述取消值S是针对幂运算(v&2)的运算结果的所述随机数R的幂运算(v&2)&R的倒数;
所述主运算单元包括:
取得部,取得所述随机数R与所述取消值S;
变量保持部,保持变量Z;
初始化部,作为初始值在变量Z中设置单位元;
进位运算部,通过所述进位运算使变量Z进位窗口宽度,并将其结果作为变量Z;
窗口运算部,对运算对象的窗口,取得基于其窗口值w和元X的幂运算值,并至少使用变量Z和取得的幂运算值来实施所述窗口运算,将运算结果作为变量Z;以及
控制部,对所述进位运算部和窗口运算部进行控制,使得对所有窗口重复进位运算和窗口运算;
所述窗口运算部
在所述第一窗口中,基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述随机数R和变量Z,进行窗口运算,并将其运算结果作为变量Z;
在所述第二窗口中,基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述取消值S和变量Z,进行窗口运算,并将其运算结果作为变量Z。
4.根据权利要求3所述的信息安全装置,其特征在于,
所述窗口运算部对从所述第一窗口起连续的i个窗口构成的组,按照该组中含有的每个窗口,来基于对其窗口值w和元X的幂运算值w&X、所述随机数R和变量Z进行窗口运算,其中,i是比v小的值,
对从所述第二窗口起连续的i个窗口构成的组,按照该组中含有的每个窗口,来基于对其窗口值w和元X的幂运算值w&X、所述取消值S和变量Z,进行窗口运算。
5.根据权利要求4所述的信息安全装置,其特征在于,
所述各窗口中含有的比特数是u,u是1以上的整数,
所述窗口个数是lend/u个,
值lend是所述值d的比特长度以上的2的幂数中的最小值;
所述值v满足lend=2v,
所述第一窗口是开头窗口,所述第二窗口是从开头窗口起位于第lend/2u+1的窗口;
将从开头窗口开始的lend/2u个窗口、和从开头起第lend/2u+1个窗口开始到末尾窗口为止的lend/2u个窗口分割为由i个窗口构成的第1到第P组、以及第p+1到第m组;
所述取得部进一步针对第1到第P组,在运算对象从运算对象的组改变为下一组时,取得与运算对象的变更之前刚使用的随机数不同的随机数;
所述窗口运算部针对第1到第P组的每一个,在该组为运算对象期间,分别对该组中含有的窗口,取得使用了所述取得部取得的随机数的窗口运算所得到的运算值;
所述取得部在将第p+1到第m组中含有的第m’组作为运算对象时,取得与在第(m’-p)组中使用的随机数相对应的取消值;
所述窗口运算部在以所述第m’组为运算对象期间,取得使用了所述取得部取得的取消值的窗口运算所得到的运算值。
6.根据权利要求5所述的信息安全装置,其特征在于,
所述取得部
使p个彼此不同的随机数与分别对应于随机数的取消值相对应地预先加以存储;
针对所述第1到第P组的每一个,通过从该组成为运算对象时在当前时刻未选择的1个以上的随机数中选择1个随机数,来取得该组中使用的随机数;
针对所述第m’组,通过选择与第(m’-p)组中使用的随机数相对应的取消值,来取得在该第m’组中使用的取消值。
7.根据权利要求5所述的信息安全装置,其特征在于,
所述取得部
在所述不同随机数的取得时,对当前时刻保持的随机数R进行对于预定数q的乘幂运算R^q,并将该乘幂运算R^q的运算结果再次作为随机数R加以保持;
在取消值的取得时,对当前时刻保持的取消值S进行对于所述预定数q的乘幂运算S^q,并将该乘幂运算S^q再次作为取消值S加以保持。
8.根据权利要求7所述的信息安全装置,其特征在于,
所述取得部预先存储第一种子值U和第二种子值V,所述第二种子值V是所述第一种子值U相对所述值v的幂运算(v&2)&U的取消值;
所述取得部在进行对所述第一组的运算之前,生成随机数r,并在所述第一和第二种子值U、V中,分别将实施了对随机数r的乘幂运算后的值作为随机数R和取消值S加以保持。
9.根据权利要求5所述的信息安全装置,其特征在于,
所述各组由1个窗口构成。
10.根据权利要求5所述的信息安全装置,其特征在于,
所述窗口是1比特长度。
11.根据权利要求3所述的信息安全装置,其特征在于,
所述取得部还在以所述第一窗口到所述第二窗口之间存在的第三窗口为对象时,将所述随机数R取得与所述随机数R不同的随机数R’;
所述取得部还取得取消值S’,该取消值S’取消从所述第三窗口到该第二窗口为止对所述随机数R’进行的进位运算所累积的累积运算因数,并将该取消值S’与所述取消值S一起加以保持;
所述窗口运算部
在所述第三窗口中,进行基于对其窗口值w和元X进行的幂运算w&X的运算结果、所述随机数R’和变量Z的窗口运算,并将其运算结果作为变量Z;
在所述第二窗口中,还取得使用了所述取消值S’的窗口运算所得到的运算值。
12.根据权利要求11所述的信息安全装置,其特征在于,
所述取得部通过预先保持对所述取消值S和S’实施了基本运算后的值T,来保持所述取消值S和S’;
所述取得部在以所述第二窗口作为运算对象时,通过取得所述值T,来取得所述取消值S和S’。
13.根据权利要求11所述的信息安全装置,其特征在于,
所述取得部
预先保持所述取消值S和S’;
通过施加使用了所述取消值S和S’的基本运算来算出并取得值T,由此取得所述取消值S和S’。
14.根据权利要求1所述的信息安全装置,其特征在于,
所述群将所述预定的集合设为以值n为模的剩余域,将基本运算设为乘法;
所述元X是所述剩余域中含有的值;
所述进位运算是所述剩余域上的乘幂运算;
所述基本运算和所述窗口运算是所述剩余域上的乘法;
所述主运算部使用所述剩余域上的乘幂运算和所述剩余域上的乘法来算出所述乘幂运算d&X=X^d。
15.根据权利要求1所述的信息安全装置,其特征在于,
所述群将所述预定的集合设为椭圆曲线上的点的集合,将基本运算设为加法;
所述元X是椭圆曲线上的点;
所述进位运算是所述椭圆曲线上的乘幂运算;
所述基本运算和所述窗口运算是所述椭圆曲线上的加法;
所述主运算部使用所述椭圆曲线上的乘幂运算和所述椭圆曲线上的加法,来算出所述乘幂运算d&X=d*X。
16.一种在信息安全装置中使用的方法,该信息安全装置在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,上述方法包括:
取得步骤,取得值d;以及
主运算步骤,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&X;
所述主运算步骤中,
在第一窗口的窗口运算中,使用随机数R;
在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
17.一种计算机可读取的记录媒体,记录了在信息安全装置中使用的计算机程序,所述信息安全装置由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,
所述记录媒体记录使计算机执行下述步骤的计算机程序:
取得步骤,取得值d;以及
主运算步骤,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&X;
所述主运算步骤中,
在第一窗口的窗口运算中,使用随机数R;
在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
18.一种集成电路,在信息安全装置中使用,该信息安全装置在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,其特征在于,包括:
取得单元,取得值d;
主运算单元,使用窗口法,按照值d的每个窗口进行进位运算与基于该窗口的窗口值和元X的窗口运算,由此进行幂运算d&X;
所述主运算单元
在第一窗口的窗口运算中,使用随机数R;
在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
CN200880000542.1A 2007-05-30 2008-05-20 信息安全装置 Pending CN101542557A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP143243/2007 2007-05-30
JP2007143243 2007-05-30

Publications (1)

Publication Number Publication Date
CN101542557A true CN101542557A (zh) 2009-09-23

Family

ID=40093330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880000542.1A Pending CN101542557A (zh) 2007-05-30 2008-05-20 信息安全装置

Country Status (4)

Country Link
US (1) US8265267B2 (zh)
JP (1) JPWO2008149496A1 (zh)
CN (1) CN101542557A (zh)
WO (1) WO2008149496A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8102998B2 (en) * 2007-05-02 2012-01-24 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication using parameterized projective coordinates
US8726010B2 (en) * 2010-10-21 2014-05-13 Qumu Corporation Secure content distribution
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
CN103746804B (zh) * 2014-01-17 2017-01-18 哈尔滨工业大学 基于多参数分数傅里叶变换和星座图加扰的保密通信方法
JP2015136390A (ja) * 2014-01-20 2015-07-30 キヤノン株式会社 制御装置、断層撮影装置
US9264221B2 (en) * 2014-01-31 2016-02-16 Google Inc. Systems and methods for faster public key encryption using the associated private key portion
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US9813232B2 (en) * 2015-03-17 2017-11-07 Cypress Semiconductor Corporation Device and method for resisting non-invasive attacks
CN108242994B (zh) * 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
DE112018002723B4 (de) * 2017-05-26 2023-12-14 Microchip Technology Incorporated System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
JP6973677B1 (ja) * 2021-03-22 2021-12-01 富士電機株式会社 逆数算出方法、装置、およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408075B1 (en) * 1998-11-30 2002-06-18 Hitachi, Ltd. Information processing equipment and IC card
JP2000165375A (ja) 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
WO2004055756A1 (ja) * 2002-12-18 2004-07-01 Fujitsu Limited 秘密鍵を用いた耐タンパ楕円曲線暗号処理
WO2006077651A1 (ja) * 2005-01-24 2006-07-27 Fujitsu Limited 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置

Also Published As

Publication number Publication date
WO2008149496A1 (ja) 2008-12-11
JPWO2008149496A1 (ja) 2010-08-19
US8265267B2 (en) 2012-09-11
US20100177886A1 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
CN101542557A (zh) 信息安全装置
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
KR101269737B1 (ko) 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
CN101198998A (zh) 信息安全装置及椭圆曲线运算装置
Walter Precise bounds for Montgomery modular multiplication and some potentially insecure RSA moduli
JP5365624B2 (ja) 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置
US20130279692A1 (en) Protecting modular exponentiation in cryptographic operations
US20100177887A1 (en) Montgomery-based modular exponentiation secured against hidden channel attacks
Chen et al. Improving timing attack on RSA-CRT via error detection and correction strategy
Courtois et al. Speed optimizations in Bitcoin key recovery attacks
US20080201398A1 (en) Determination of a Modular Inverse
CN101911009A (zh) 用于以签名方案进行非对称加密的对策方法和设备
US8014520B2 (en) Exponentiation ladder for cryptography
KR20050106416A (ko) 암호화 시스템 내의 모듈러 멱승 결과 결정 장치 및 방법
US20140177824A1 (en) System and method for securing scalar multiplication against differential power attacks
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
Yen et al. Improvement on Ha-Moon randomized exponentiation algorithm
US11973866B2 (en) Cryptographic processing method, related electronic device and computer program
CN107533454A (zh) 用于固定执行流乘数再译码和标量乘法的方法和装置
Liu et al. A novel elliptic curve scalar multiplication algorithm against power analysis
Le et al. Memory-Efficient Random Order Exponentiation Algorithm
Schindler et al. Optimal recovery of secret keys from weak side channel traces
WO2006103851A1 (ja) 冪値生成装置
JP6354376B2 (ja) べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム
JP2007316491A (ja) べき乗演算装置、復号化装置及び署名生成装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20090923

C20 Patent right or utility model deemed to be abandoned or is abandoned