信息安全装置的制作方法

文档序号:2404410阅读:470来源:国知局
专利名称:信息安全装置的制作方法
技术领域
本发明涉及针对通过测量执行加密处理时的功率消耗量来分析嵌入到 加密模块中的秘密信息的攻击,使分析变困难的技术。
背景技术
近年来,提出过各种通过硬件或软件安装的加密模块通过从进行加密 处理时的副信息入手而进行加密密钥的分析的解密法。若非法的第三者分 析加密密钥,并解读私钥,则可以使用解读出的私钥,冒充合法的使用者, 并使用私钥来进行非法行为。
例如,作为进行加密密钥的分析的解密法,有称作定时攻击的分析方 法。在称作定时攻击的分析方法中,利用加密模块进行加密处理所需的时 间因用于加密处理的加密密钥的值的不同而稍有不同的情形,来进行加密 密钥的分析。即,在定时攻击中,利用进行加密处理时的处理时间这样的 副信息,来进行加密密钥的解读。在这种解密法中,将进行加密处理时的 功率消耗量作为副信息进行解密的解密方法提出过单纯功率分析攻击
(Simple Power Analysis )禾口差分功率分析攻击(Differential Power Analysis) 这样的各种方法。这些解密法还报告出近年来在以低价获得高性能的测量 设备的背景下,还可对IC卡这种安装了加密的实际产品进行分析的情况。 在下面的描述中,将从上述这种加密处理时的加密模块的功率消耗量的变 化即功率波形入手来分析加密密钥的解密方法总称为"功率分析攻击"。对 于定时攻击,在非专利文献1中进行了详细描述,对于功率分析攻击,在 非专利文献2进行了详细描述。
下面,说明对RSA加密的单纯功率分析攻击。对于RSA加密,在非 专利文献3中详细描述。
<RSA加密的单纯功率分析攻击>
RSA加密的解密处理中,针对质数p、 q的积n、作为不超过n的正整 数的密文c与作为正整数的私钥d,进行(^dmodn的计算。作为该计算
8方法,已知例如非专利文献4的9页中的二进制(Binary)法。下面说明二 进制法。对d-dO+dlX2+d2X2A2+…+(T (len—1)X2^ (len—1)、 i=0, 1,…,len—l设di二O或l。这里,len表示d的比特数,"X"表示 整数乘法,xAy表示x的y次幂。 (二进制法)
步骤1 — 1: i—len—2, z—c 歩骤1—2: z—z"modn
-歩骤l一3:检査di是否为l。在di二l的情况下,z—zXcmodn。 -步骤1_4: i—i—1。检査i是否为负。在为负的情况下,输出z。 除此之外,进入到步骤1一2。
上述方法中,将步骤1—2、 l一3、 l一4作为循环来重复计算。在该循 环内,对di (i=l, 2,…,len—1),在di二l的情况下,进行z的二次幂 运算与基于c的乘法,在di=0的情况下,仅执行z的二次幂运算。N是较 大的数、例如,1024比特的整数。通常,二次幂运算与乘法相比,可以实 现计算处理的高效化,所以可以进行高速处理。在该情况下,由于二次幂 运算与乘法处理不同,所以功率波形不同。
因此,可以通过测量功率波形,来分析二次幂运算、乘法的运算顺序。 进一步,利用因di而循环内的处理不同的情况,从该顺序求出di的值。若 加以归纳,则可以通过以下的步骤,进行单纯功率分析攻击。 (二进制法的单纯功率分析攻击)
,步骤2—1:对密文c进行解密,来测量该处理中的功率波形。 ,歩骤2—2:根据上述功率波形求出二次幂运算、乘法的运算顺序。 '歩骤2—3:根据上述顺序求出比特di (i=l, 2,…,len—l)。 〈现有技术的RSA加密的单纯功率分析攻击对策〉 上述的单纯功率分析攻击中,在二进制法的步骤l一3中利用仅在di =1时进行乘法的情形来进行私钥的分析。
因此,还提出了下述单纯功率分析攻击的对策方法通过在出=0时 进行l乘以z的乘法,结果并不变化,但是由于在di-O时也进行乘法,使 二次幂运算、乘法的运算顺序不依赖于d的值(参考非专利文献l)。
在上述RSA加密的单纯功率分析攻击对策中,在di=l时进行乘以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二l的情形。分别对这两种情形,例如,通过再次对密文 进行解密,可以明白哪一种对应正确,即可以取得私钥。
因此,专利文献1中,为了使私钥的分析变困难,公开了下述技术 将私钥d分割为由预定的比特数构成的多个块,在二进制法的乘法时,将 每个块不同的随机数乘以值z,而与di值无关,在对所有di的二次幂运算 和乘法的运算结束后,使用该随机数的取消值来取消相乘的随机数。
专利文献1中,在进行对密文c的cTd运算之前,求出值R与S。这 里,RXSmodn二l。
并且,对各di执行二次幂运算和乘法的运算。这时,使用值R来设置 该随机数,使得对每个块用于乘法的运算的随机数不同。例如,通过对第 m块使用随机数R a m来进行乘法,可对每块使用不同随机数。
对于所有块的二次幂运算和乘法运算结束后,使用值S,去除由随机 数R带来的影响,从而得到cTd。
根据该技术,对于每个块,di=0、 l的对应存在2个模式。但是,由 于在所有块中存在2个对应的模式,所以对私钥d整体来说,存在2^ (块 数)个模式。因此,私钥的分析者必须检査全部2A (块数)个模式。因此 私钥的分析变困难。
专利文献1:日本特开2000—165375号公报
非专禾U文献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.
非专禾U文献2: P. Kocher, J. Ja_e, an犯.Jun," Di—erential Power Analysis, " Advances in Cryptology—CRYPTO' 99, LNCS, 1666, Springer一Verlag, 1999, pp. 388—397.
非专利文献3:冈本龙明、山本博资、"現代喑号"、产业图书(1997
年)
非专禾廿文献4: H. Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer—Verlag, 1996, p9
与一专禾!j文献5: C. D. Walter, " Sliding windows succumbs to Big Mac Attack", CHES2001, LNCS2162, Springer—Verlag, 2001, pp. 286—299.
非专利文献6:神永、渡边、远藤、大河内、"RSA喑号O電力解析法 tJ:^)攻撃i:^:(7)対策"、IEICE、 Vol. J88—A、 No.5、 pp.606—615、 2005
但是,专利文献l公开的技术中,由于在对所有di的二次幂运算和乘
法的运算结束后取消相乘的随机数,所以其处理时间变长。这是因为,若
在例如对开头比特d511的乘法运算中出现随机数R,则该随机数R对之后
所有比特的二次幂运算的运算有影响,其值成为ra (2 a (len—l))。即,
在第i比特di中出现随机数R^m,在对之后所有比特的二次幂运算的运算
中,还对该RAm进行二次幂运算。这里,m是di所属的块序号。结果,
其值为(R^m) a (2 a (i—1))。
艮p,为了使用值S来去除随机数R的影响,需要对各di算出在对该 di的乘法中出现的随机数RAm造成的最终二次幂运算结果(RAm) ^ (2
a (i—1))的取消值(S^m) a (_2a (i—d),并对所有这些进行相 乘。
因此,由于使用值S来去除随机数R的影响的处理的处理时间长,所 以乘幂运算整体的处理时间也变长。

发明内容
本发明鉴于上述问题,其目的是提供一种可以比现有技术减小在进行 秘密的通信或认证时算出的乘幂倍值运算处理的时间的信息安全装置、方 法、程序和集成电路。
为了实现上述目的,作为本发明的一实施方式是一种信息安全装置, 在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X 的基本运算重复d次的幂运算d&X,由此安全且可靠地处理预定的信息,
11其特征在于,包括取得单元,取得值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
12次)的乘幂运算后,加以取消的图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。因此,信息安
15全装置可以通过在第二窗口中使用了取消值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+l窗口开始到末尾的窗口为 止的lend/2u个窗口分割为由i个窗口构成的第1到第P组、和第p+l到 第m组;所述取得部进一步针对第1到第P组,在运算对象从运算对象的 组改变为下一组时,取得与运算对象的变更之前刚使用的随机数不同的随 机数;所述窗口运算部针对第1到第P组的每一个,在该组为运算对象期 间,分别对该组中含有的窗口,取得使用了所述取得部取得的随机数的窗 口运算所得到的运算值;所述取得部在将第p+l到第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 a q,并将该乘幂运算R 八q的运算结果再次作为随机数R加以保持;在取消值的取得时,对当前 时刻保持的取消值S进行对于所述预定数q的乘幂运算S a q,而将该乘幂 运算S 、再次作为取消值S加以保持。
根据该结构,信息安全装置可以通过使用所保持的随机数或取消值, 来容易生成不同的随机数或取消值。
这里,也可以是,所述取得部预先存储第一种子值U与作为所述第一 种子值U相对所述值v的幂运算(v&2) &1;的取消值的第二种子值丫; 所述取得部在进行对所述第一组的运算之前,生成随机数r,并在所述第一、 和第二种子值U、 V中,分别将实施了对随机数r的乘幂运算后的值作为 随机数R和取消值S加以保持。
根据该结构,信息安全装置可以通过预先存储第一和第二种子值,来 节约存储容量。另外,信息安全装置在对第一组的运算之前,生成随机数r, 并使用所生成的随机数r、第一和第二种子值,来生成随机数R和取消值S。 由此,信息安全装置可以对多个对象数据的每个,改变在第一组中使用的 随机数和与该随机数对应的取消值。因此,私钥的分析者即使使用多个对 象数据,从对这些对象数据的功率波形中分析私钥,由于对于每个对象数
17据在主运算单元中使用的随机数不同,所以其功率波形不同,值d的分析 变困难。
这里,也可以是,所述各组由l个窗口构成。
根据该结构,信息安全装置按照每个窗口使用不同的随机数来进行运 算。即,由于按照每个窗口功率波形不同,所以值d的分析变困难。 这里,也可以是,所述窗口是l比特长度。
根据该结构,信息安全装置即使在按每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的处理时间。
18这里,也可以是,所述取得部预先保持所述取消值s和s',通过实施
使用了所述取消值S和S'的基本运算来算出并取得值T,由此取得所述取 消值S和S'。
根据该结构,信息安全装置由于预先存储取消值S和S',所以在幂运 算d&X的算出时,不需要算出取消值S和S',所以可以縮短对幂运算d
&乂的处理时间。 1.实施方式l
下面,参考附图来说明本发明的实施方式1中的乘幂运算装置1000。
1. l准备
乘幂运算装置1000在例如RSA加密方式的解密或RSA签名方式的签 名生成中加以使用。下面,说明RSA加密方式和RSA签名方式。
(1) RSA加密方式
(l一l)密钥的生成 如下面所示,计算公钥和私钥。
(顺序1 —1)
随机选择较大的质数p, q,并计算其积n二pXq。 (顺序1一2)
计算(p—l)和(q—1)的最小公倍数L二LCM (p—l, q—l)。 (顺序1一3)
随机选择与L彼此为质且比L小的自然数e。
1^e^L一l、 GCD (e, L) =1
这里,GCD (e, L)表示e与L的最大公约数。
(顺序l一4) 计算满足eXd二lmodL的d。
因GCD (e, L) =1,则这种d必然存在。由此,所得到的整数e和 整数n是公钥。整数d是私钥。这里,xmody表示用y除x后的余数。 (l一2)密文的生成 使用作为公钥的整数e和整数n,对明文m实施加密运算来计算密文
<formula>formula see original document page 19</formula>另外,在该说明书中,运算符a表示乘幂。例如,AAx表示x〉0时 将A进行x次相乘后的值。 (l一3)解密文的生成 使用作为私钥的整数d,对密文c实施解密运算而算出解密文m'。 m' =c a d modn 另外,由于 m' =c a d modn =(m a e) a dmodn =m " (eXdmodL) modn =m a 1 mod n
-mmodn,所以解密文m,与明文m—致。
乘幂运算装置1000在该解密文生成中的根据上述c算出m'的地方加 以使用。这时,乘幂运算装置1000中,将对象数据作为c,并使用私钥d, 来算出m, =cA(imodn。
对于RSA加密,在非专利文献3的110 113页中详细进行了说明。 (2) RSA签名方式 (2—1)密钥的生成 密钥的生成方法与RSA加密方式相同。
(2—2)签名生成 消息数据D如下这样来计算签名数据S。
首先,使用散列函数Hash,来计算消息数据D的散列值h二Hash(D)。 接着,使用作为私钥的整数d,对散列值h进行d次幂,而算出签名
数据S。
S=h八dmodn
(2—3)签名验证 如下这样来验证签名数据S是否是消息数据D的正确签名。 确认Hash (D)与SAemodn是否相等。在相等的情况下,将签名数
据S作为正确的签名来受理。在不相等的情况下,将签名数据S作为不正
确的签名加以拒绝。
乘幂运算装置1000在上述签名生成中的根据h算出S的地方加以使用。这时,乘幂运算装置1000中将对象数据作为h,并使用私钥d,来算 出S=IT dmodn。
对于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。
在下面的说明中,描述的xj表示对x添加了下标y。
(1) 中间值存储部1120
中间值存储部1120具有存储对象数据X和乘幂运算时的中间值Z的 区域。
(2) 输入输出部1010
输入输出部1010在从外部接收对象数据X后,将所接收的对象数据X 存储到中间值存储部1120。
输入输出部1010对中间值Z设置值"1"作为初始值,并存储到中间值 存储部1120中。
输入输出部1010在对象数据X的乘幂运算结束后,从第一计数器判 断部1060取得运算结束的内容。输入输出部IOIO之后将中间值存储部1120 中存储的中间值Z作为乘幂运算结果输出。
(3) 私钥存储部1020 私钥存储部1020存储私钥d。 设私钥d为512比特的整数。
(4) 乘数群存储部1130
乘数群存储部1130存储乘法部1100—0 1100—31中使用的乘数群
21MT一0 MT一31。
具体来说,乘数群存储部1130如图2所示,存储由乘数值X_iO和X_il 构成的乘数群MT—i。这里,i是0以上31以下的整数。
(5) 随机数群存储部1140
随机数群存储部1140存储随机数群RT—0 RT—15。 具体来说,随机数群存储部1140如图3所示,存储由随机数RJ和随 机数去除数S_i构成的随机数群RT_i。这里,i是0以上15以下的整数。 随机数R—i与随机数去除数S—i满足下面的关系。 S—i=R—i a ( —2 a 256 ) mod n
艮P,满足R—厂(2^ 256) XS—i-l的关系。这里,n是RSA加密中 的较大的质数p, q的积。
(6) 计数器存储部1030 计数器存储部1030存储乘幂运算时所用的计数器(count)的值。
(7) 计数器初始化部1040
计数器初始化部1040在乘幂运算的开始时,将计数器count设置为初 始值(lend—l)。
这里,如上所述,lend是私钥d的比特大小,本实施方式中,lend= 512。这里,lend是私钥d的比特大小本身,但是也可以是作为私钥d能够 输入的比特数。例如,作为私钥d的比特大小假定是512比特,但是实际 上,私钥d的比特大小也可以是比512小的比特数、例如,510比特。该情 况下,作为私钥d能够输入的比特数是lend二512。 g卩,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。
23这里,所谓私钥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_iO或乘数值X一il相乘, 并将其乘法结果存储到中间值存储部1120。
具体来说,乘法部llOO—i在基于比特判断部1090判断为第count个 比特是0的情况下,将中间值Z与乘数值X—iO相乘。乘法部1100—i在基 于比特判断部1090判断为第count个比特是1的情况下,将中间值Z与乘 数值Xjl相乘。
这里,乘法部1100—i在将中间值Z和乘数值X一i0相乘的情况下,执 行Z—ZXX—i0modn。乘法部1100—i在将中间值Z与乘数值Xjl相乘的 情况下,执行Z—ZXXJlmodn。这里,一是指将右边的计算结果代入到 左边的变量。
(14) 二次幂运算部1110
二次幂运算部1110对中间值存储部1120中存储的中间值Z进行二次 幂运算,并将二次幂运算后的结果存储到中间值存储部1120中。 具体来说,二次幂运算部1110执行Z—ZA2modn。
(15) 随机数选择信息生成部1170
随机数选择信息生成部1170生成随机数选择信息,该随机数选择信息 是用于选择乘数群设置部1150—1 1150—32中使用的随机数或随机数去 除数的信息。
随机数选择信息生成部1170暂时保持所生成的随机数选择信息。 具体来说,随机数选择信息生成部1170生成依次排列随机数R_k或 S一k的添标k后的数组。这里,配置该数组,使得16个要素包含0到15 的所有值,并具有作为该16个要素的2次重复的32个要素。
例如,随机数选择信息生成部1170生成数组RSI (= U4, 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}) (步骤SIO)。这里,设数组V从第O开始,并将第i要素设作Vj。
随机数选择信息生成部1170将计数器cnt设置为16 (步骤S15)。
随机数选择信息生成部1170将用cnt除Y后的商设作YS,将余数设 作YR (步骤S20)。
随机数选择信息生成部1170将具有数组V的16的值的要素中,第 YR的要素设置为cnt—l (步骤S25)。
随机数选择信息生成部1170将步骤S20中得到的商YS设置为Y (步 骤S30)。 S卩,随机数选择信息生成部1170执行Y—YS。
随机数选择信息生成部1170判断cnt的值是否是2 (步骤S35)。
在判断为cnt的值不是2的情况下,(步骤S35中的"否")、随机数选 择信息生成部1170递减(减去1)计数器cnt,并将运算结果再次设置为计 数器cnt的值(步骤S40),并返回到步骤S20。 g卩,随机数选择信息生成 部1170执行cnt—cnt—l。
在判断为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) —Yj),并暂时保持数组RSI (= {RSI—0、 RSI_1、…、RSI_31})(步骤 S50)。
在上述所示的方法中,随机数选择信息生成部1170随机产生0到16! _1的值中的1个值RSIS,并将RSIS变换为Ti,使其满足以下的关系。
25T_i表示cnt为i时在步骤S20中得到的值YR。
RSIS= (16X15X…X3) XT_2H-----hl6X 15 XTJ4+16XT—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是O以上31以下的整数。
乘数群设置部1150 — i初始化乘数群存储部1130中存储的乘数群 MT_i。
具体来说,乘数群设置部1150—i对对象数据X,根据通过随机数选 择信息生成部1170生成的随机数选择信息RSI的第i要素RSI一i,在计数 器count的值是256以上的情况下,使用随机数群存储部1140中存储的随 机数群RT— (RSI—i)的随机数R— (RSIj),来算出X—iO和X—il。
乘数群设置部1150—i在count比256小的情况下,使用随机数去除数 S— (RSI—i),来算出X—iO和X—il。
乘数群设置部1150—i在XjO和X一il的算出时,执行X_iO—RS mod n、 X—il—XXX_i0modn。这里,RS是R— (RSI—i)或S— (RSI—i)。
(17) 乘数群更新部1160
乘数群更新部1160在从第二计数器判断部1070接收进行乘数群MT—i 的更新的更新指示后,更新乘数群存储部1130中存储的乘数群MTj的乘 数值XjO和X_il 。 MT_i是之前通过乘数群设置部1150—i设置的乘数群。
具体来说,乘数群更新部1160执行Xj0— (X_i0) a 2 mod n, X_il —XXX一iOmodn。
261.3乘幂运算装置1000的动作 (1)整体的动作
这里,使用图5和图6所示的流程图来说明乘幂运算装置1000的动作。 输入输出部1010受理对象数据X的输入,并将所受理的对象数据X
存储到中间值存储部1120 (步骤SIOO)。
输入输出部1010将中间值Z设置为1,并存储到中间值存储部1120
中(步骤S105)。
随机数选择信息生成部1170生成由32个随机数选择信息构成的数组 RSI (= {RSI—0、 RSIJ、、 RSI_31}),并暂时保持所生成的数组RSI (步骤SllO)。
计数器初始化部1040初始化计数器count (步骤S115)。这里,计数 器初始化部1040将计数器count设置为lend— 1 。这里,lend是私钥d的比特数。
乘数群设置部1150_i使用对象数据X、随机数选择信息生成部1170 中存储的随机数选择信息和随机数群存储部1140中存储的随机数群,来初 始化乘数群存储部1130中存储的MT—i, B卩,初始化乘数值X—i0与X_il (步骤S120)。这里,i是(lend—count—1) / 16以下的最大整数。
二次幂运算部lllO对中间值存储部1120中存储的中间值Z进行二次 幂运算,并将其结果作为Z存储在中间值存储部1120中(步骤S125)。
比特判断部1090判断私钥d的比特(步骤S130)。具体来说,比特判 断部1090进行私钥d中的第count比特是0还是1的判断。
在判断为0的情况下(步骤S130中的"0")、乘法部1100—i将中间 值存储部1120中存储的中间值Z与乘数群存储部1130中存储的乘数群 MT—i的乘数值X_iO相乘,并将其结果作为中间值Z存储在中间值存储部 1120中(步骤S135)。在判断为是l的情况下(步骤S130中的"l"),乘 法部1100—i将中间值存储部1120中存储的中间值Z与乘数群存储部1130 中存储的乘数值X—il相乘,并将其结果作为中间值Z存储在中间值存储部 1120中(步骤S140)。这里,i是(lend—count—1) / 16以下的最大整数。
第一计数器判断部1060判断计数器存储部1030中存储的计数器count 的值是否是0 (步骤S145)。
27在判断为计数器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递减(减l)计数器存储部 1030中存储的计数器coimt,并将运算结果再次作为计数器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递减(减l)计数器存储部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,从随机数群RT1 (RSI一i)中取得随机数11_ (RSI—i)(步骤S205)。
乘数群设置部1150—i将所取得的随机数R一 (RSI_i)设置为乘数值 X一i0 (步骤S210)。乘数群设置部1150—i将乘数值XJ0乘以对象数据X 后的结果设置为乘数值XJ1 (步骤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)设置为乘 数值Xj0 (步骤S225)。乘数群设置部1150—i将乘数值XjO乘以对象数 据X后的结果设置为乘数值X—il (步骤S230)。 (3) MT一i的更新处理
这里,使用图8中所示的流程图来说明图6的步骤S160中进行的乘数 群MTj的更新处理。
乘数群更新部1160对乘数群存储部1130中存储的MT—i中含有的X—i0 进行二次幂运算,并将其结果再次设作X一i0 (步骤S300)。
乘数群更新部1160将X—i0乘以对象数据X,并将其结果设作Xjl(步 骤S305)。
这里,i是(lend—count—l) / 16以下的最大整数。 1.4实施方式l的效果
在实施方式1中,乘幂运算装置1000如从图5和图6的步骤S120、 S150和S170可看出的那样,将私钥d的比特串分割为以16比特为1组的 32个块,并对每个块分配乘数群的索引。
进一步,乘幂运算装置1000将由16比特构成的块分割为以8比特为 1组的2个子块,并使用分配给原块的乘数群,来对2个子块分别分配不同 乘法数。
例如,如图9所示,将由512比特构成的私钥d的比特串设作块0、 块l、、块30、块31,并将各块分割成2个子块。这里,对块i分配乘 数群MT—i。图9中,表示将块0分割成子块0—l与子块0—2。 乘幂运算装置1000对子块0—1使用图5所示的步骤S120中初始化后 的MT—0中含有的X—00 (=R—0)、或X—01 (=XXX—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中含有的XJ)O, (= (X—00)八2 (= (R_0)八2))、或XJU, (=XX (X—00) a 2)。具体来说,乘幂运算装置1000在块0—1中含有 的私钥d的比特d—i是O的情况下,将XJ)O'乘以中间值Z,在私钥d的
比特d—i是i的情况下,将x一or乘以中间值z。
这样,在实施方式l中,在乘数群更新部1160中,按照私钥d的每8 比特的块,更新(变更)乘以中间值Z的乘数值XJ)、 X—1。由此,由于 使每个子块乘法数不同,所以可以防止通过分析乘法数是什么,而求出私 钥d的BigMac攻击。
下面,进行详细说明。
图10表示实施方式1的乘幂运算装置1000对私钥d的处理与攻击者 进行的乘数的分类和d的比特推测。子块0 —l中,在dj的比特是O的情 况下,将X—O二XJ)O乘以中间值Z,在是l的情况下,乘以X—1=X—01。 子块O—2中,由于将X—0从X—OO更新(改变)为X—00' (= (X—00) A 2),将X1从X—Ol更新(改变)为x—or (=XXX—00'),所以在dj的
比特是o的情况下,乘以x—o=x_oo',在是i的情况下乘以x_i=x—or。
这里,i是511到504的整数,j是503到496的整数。
这里,攻击者可以从消耗功率波形将波形分类为子块0—1中乘数彼此 不同的组al和bl、子块0—2中乘数彼此不同的组a2和b2。但是,攻击 者不知道组al和bl的哪一个中d—i的比特对应于0、 1,组a2和b2的哪 一个中dj的比特对应于O、 1。因此,攻击者需要假定为各个子块内某个 组对应于比特值O (或1),并确认是否正确。由于al、 bl与比特值O、 1 对应的模式有2种,a2、 b2对应于比特值0、 1的模式有2种,所以各自的 组合有2X2=4种。因此,攻击者需要尝试4种。这里,若设子块的个数为NB,则攻击者需要尝试2 a 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中出现XJ)0(二R—0)。这时出现的R_0在count =510到255之间,通过步骤S125进行二次幂运算。即,R_0进行256次 的二次幂运算,其结果成为RJT (2^ 256)。因此,在count=255时的步 骤S125中,中间值Z中包含乘数RJT (2^ 256)。另外,在count二255 时的步骤S115中,如图7所示,乘数值XJ60和X_161中含有S_(RSI_16) (=S—0)。并且,在步骤S135、或S140中,通过将乘数值XJ60、或X—161 乘以中间值Z,来取消中间值Z中含有的乘数R一(T (2^256),即通过乘 数R_0 a (2 a 256)与S_0的相乘而成为1 。
同样,在count二510时,通过执行图5中的步骤S135或S140,中间 值Z中出现X一OO (=R_0)。这时出现的R一0在count二509到254之间, 通过步骤S125被进行二次幂运算。即,count=255时的步骤S125中,中 间值Z中含有乘数R—(T (2^ 256)。另外,在count二254时的步骤S115 中,如图7所示,由于乘数值X—160和X_161中含有S_0,所以在步骤SI35、 或S140中,通过乘数值X—160、或X一161乘以中间值Z,来取消中间值Z 中含有的乘数RJT (2156)。
之后,依次取消count=509之后出现的X—i0。因此,由于在执行了
31count-0时的步骤S135或S140后,取消了所有XJ0,所以中间值Z的值 成为X^d。
图12表示着眼于Count=i (i是256以上511以下的整数)中出现的 乘数值XJO (=R_q)的情况下的乘法数的迁移。这里,设j是(lend—i —1) /16以下的最大整数,R_q=R— (RSIJ)。
图12中,首先,在count二i时的步骤S135或S140中,XJ0(=R—q) 在中间值Z中出现、g卩,XJO (=R—q)包含在中间值Z中。
在count二i一1时的步骤S125中,对中间值Z进行二次幂运算,二次 幂运算结果为,Z中包含R一q^2。
接着,在count二i—2时的步骤S125中,对中间值Z (包含R一q^2) 进行二次幂运算,二次幂运算结果为,Z中包含(R—qA2) a 2 (=R—qA (2"))。
艮P,在到count二i一255为止的期间,通过重复中间值Z的二次幂运 算,中间值Z中含有R一qA (2 a 255)。
进一步,在count=i—256时的步骤S115中,通过MT_i的初始化处 理,必然对X— (i+16) 0设置了S—q。
描述对X— (i+16) 0设置8_9的理由。由于根据整数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—l) / 16以下的最大整数上加上16后的值、即,为j + 16。由于通过数组RSI的 生成方法,RSIJ与RSI—(j + 16)的值相同,所以为S—(RSIJ) =S—(RSI— (j + 16))、艮口, S— (RSI_ (j + 16)) =S—q。
另外,在count爿一256时的步骤S125中,对中间值Z(包含R一(2 a 255))进行二次幂运算,二次幂运算结果为Z中包含R_q ^ (2 ^ 256)。
并且,在count-i—256时的步骤S135或S140中,由于将乘法数S一q 乘以中间值Z,所以抵消了中间值Z中含有的R—qA (2^ 256)。
这样,count=i时出现的XJO必然通过count=i—256时的乘数运算 (步骤S135、或S140)相抵消。
另外,如图13那样,通过使用随机数来设置乘数群,使得私钥d的高 位比特(d_256 d—511)的块(这里,块0到块15)中的随机数的影响在 低位比特(d一O到d一255)的块(这里,块16到块31)中相抵消,而不需 要取消随机数的影响的取消运算。
下面,详细说明该情形。这里,与上述同样,为了使说明方便,设数 组RSI为{0、 1、 2、 ".14、 15、 0、 1、 2、…、14、 15}。
图13中,直到块0的子块0—1中出现的随机数R—0的影响在之后移 到使用随机数去除数S一O遮蔽(blind)的子块中为止,如图11、和图12 所示那样,重复256次二次幂运算,所以成为将RJT (2^256) mod n 乘以中间值后的状态。由于SJ)满足S—0=R_(T (—2^ 256) mod n,所 以通过乘以这些,而去除了随机数RJ)的影响(R一(T (2^ 256) modn)。
在乘数群更新部1160中更新乘数群设置部1150—i中设置的乘数群的 情况下也相同。例如,考虑在使用R_0遮蔽的子块之后更新了乘数群的情 况,即,使用R—(T 2遮蔽的子块。在该情况下,可在使用S—(T2遮蔽的 子块中去除随机数的影响。这样,在对随机数RJ进行了预定次数(这里, 256次)的二次幂运算后,使随机数RJ出现的子块与包含对应的随机数去 除数SJ的子块成对,以便通过随机数去除数SJ去除随机数R一0的影响 (R—(T (2^256) modn),从而可全部去除随机数的影响,而不需要取消 运算。
进一步,实施方式1中,由于通过随机数选择信息生成部1170随机产 生遮蔽乘数群的随机数的模式,所以对差分功率分析攻击来说,攻击者难 以取得统计信息,所以存在对差分功率分析攻击的耐性。
在专利文献l中,也记载了更新乘数群的结构,但是没有公开使乘数 群的设置模式随机化与不需要取消运算的结构。 (具体例)这里,使用进一步的具体例,使用图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,并执行二次幂运算和乘法。这 里,由于(1_511 = 1,所以如图14所示,二次幂运算和乘法执行后的中间值 Z的值为XXR。
在count-510时、幂运算装置1000对中间值Z (=XXR)实施二次 幂运算,并使用其结果来实施乘法。这里,由于d一510二l,所以图14所示, 乘法执行后的中间值Z的值为(XXR) 〃2XXXR。
幂运算装置1000在将二次幂运算和乘法重复到count=256为止,中 间值Z的值如图15所示,成为(XXR) a (2^ 255) X (XXR) ^ (2 a 254) X…X (XXR) "XXXR。
在co皿t-255时,若乘幂运算装置100执行二次幂运算,则中间值Z 的值如图15所示,成为(XXR) a (2^ 256) X (XXR) ^ (2^ 255) X…X (XXR) 〃4X (XXR)八2。这里,如实施方式1所示,用于乘 法的随机数从值R改变为随机数去除数S (=IT (—2^ 256))。因此,若 乘幂运算装置100执行乘法,则Count=511时出现的随机数R的影响即值 RA (2^ 256)通过随机数去除数S被抵消,结果,如图15所示,中间值 Z的值成为X^ (2^ 256) X (XXR)八(2^ 255) X…X (XXR) X (XXR) "XX。
在count-254时,若乘幂运算装置100执行二次幂运算,则中间值Z 的值如图15所示,成为X^ (2^ 257) X (XXR) ^ (2A 256) X (XX R)八(2^ 255) X…X (XXR) ^4XX八2。接着,乘幂运算装置100 若执行乘法,贝lJco皿t二510时出现的随机数R的影响即值RA (2^ 256) 通过随机数去除数S被抵消,结果如图15所示,中间值Z的值成为XA (2 a 257) XX a (2 a 256) X (XXR) A (2 "55) X…X (XXR) lx X"XX。幂运算装置1000通过将二次幂运算和乘法重复到count-0,可通过对 低位比特(d一255 d—0)的运算(乘数运算)来抵消对私钥d的高位比特 (d—511 d一256)运算时出现的随机数各自的影响。
在count二l中执行了二次幂运算和乘法后,仅count二256时出现的随 机数R的影响(值RA (2^ 255))保留在中间值Z中。
并且,通过在count二l中执行二次幂运算,中间值Z的值如图16所 示,成为X^ (2^511) XX^ (2A510) X…X (XXR) ^ (2^ 256) XX a (2^ 255)…XXA4XX〃2。幂运算装置1000通过将值XX S乘以 该中间值Z,从而抵消了co皿t二256时出现的随机数R的影响(值RA (2 a 256)),结果如图16所示,成为X^ (2"11) (2"10) X…X
(2八256) XX^ (2155) ... XX ^ 4XX ^ 2XX=X ^ d。
因此,幂运算装置1000在算出乘幂运算值X a d时,通过在count= 511到0之间,使乘法中出现随机数或随机数去除数,从而使基于差分功率 分析攻击的私钥的分析变得困难,同时,可以通过对低位比特((L255 dJ)) 的运算(乘数运算)来抵消分别对私钥d的高位比特(d_511 d—256)进 行乘法时出现的随机数的影响。
2.实施方式2
图17是表示乘幂运算装置2000的结构图。
乘幂运算装置2000是与实施方式1的乘幂运算装置1000相同,输入 作为进行乘幂的对象数据的对象数据X,并对对象数据输出以私钥d为幂 值的乘幂运算结果(XA(i)的装置。
乘幂运算装置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、以及随
35机数群设置部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所示,存储由乘数值XjO和 X—il构成的乘数群MTj。这里,i是O、 1。
(3) 乘法部2100—0、 2100—1
由于乘法部2100—0、 2100_1进行同样的动作,所以这里说明乘法部 2100—i。 i是O或l。
乘法部2100—i将中间值存储部2120中存储的中间值Z与乘数群存储 部2130中存储的乘数群MT—i中存储的乘数值X一iO或乘数值X一il相乘,
36并将该相乘结果存储到中间值存储部1120中。
具体来说,乘法部2100—i在比特判断部2090判断为第count比特是 0的情况下,将中间值Z与乘数值X一i0相乘,并将其结果再次作为中间值 Z。乘法部2100—i在比特判断部2090判断为第count比特是1的情况下, 将中间值Z与乘数值X—il相乘,并将其结果再次作为中间值Z。
(4) 随机数群存储部2140 随机数群存储部2140存储随机数群RT。
具体来说,随机数群存储部2140如图19所示,存储由随机数R和随 机数去除数S构成的随机数群RT。
随机数R和随机数去除数S满足以下的关系。
满足S二RA (—2 ^ 256) modn即,(2^256) XS = 1的关系。 随机数R与随机数去除数S由随机数群设置部2190生成。后面描述 随机数群设置部2190。
(5) 乘数群设置部2150—0、 2150—1
由于乘数群设置部2150—0、 2150—1进行同样的动作,所以这里说明 乘数群设置部2150—i。 i是O、 1。
乘数群设置部2150 — i初始化乘数群存储部2130中存储的乘数群 MT—i。
具体来说,乘数群设置部2150—i针对对象数据X,在计数器count 的值是256以上的情况下,使用随机数群存储部2140中存储的随机数群 RT中含有的随机数R,来算出X一i0和X一il。
乘数群设置部2150—i在count比256小的情况下,使用随机数群RT 中含有的随机数去除数S,来算出X—i0和X—il。
乘数群设置部2150—i在算出X—i0和X_il时,执行X—i0—RS modn、 X—il—XXX—i0modn。这里,RS是R或S。
(6) 随机数种子存储部2180
随机数种子存储部2180存储随机数种子U与随机数去除种子V。预 先存储U和V,来满足以下的式子。 V=LT (—2"56) modn
(7) 随机数群设置部2190
37随机数群设置部2190使用随机数种子存储部2180中存储的随机数种 子U与随机数去除种子V,来生成随机数群RT的随机数R与随机数去除 数S,并存储到随机数群存储部2140中。
具体来说,产生随机的正整数值w,来计算下面的式子,求出R、 S。
R=U a w modn
S=V a wmodn
这些乘幂运算简单地使用二进制法或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—iO和X—il (步骤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中的"l")、乘 法部2100—i将中间值存储部2120中存储的中间值Z与乘数群存储部2130 中存储的乘数值Xjl相乘,并将其结果作为中间值Z存储在中间值存储部 2120中(步骤S440)。这里,i是(lend—count—l) / 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递减(减去l)计数器存储 部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—co皿t一l) / 256以下的最大整数。
计数器更新部2050更新计数器存储部2030中存储的计数器count(步 骤S465)。具体来说,计数器更新部2050递减(减l)计数器存储部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 (二LTwmodn)(步骤S505)。
随机数群设置部2190使用随机数种子存储部2180中存储的随机数去 除种子V与正整数w,来算出随机数去除数S( =V a w modn)(步骤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设置为乘数值XjO。
通过如上这样改变图7所示的动作的流程,而可实现图20的步骤S420 中进行的乘数群MTj的初始化的处理。
(4) MT—i的更新处理
图21中的步骤S460中进行的乘数群MTJ的更新处理可以通过与图8
40所示的动作的流程同样的动作流程来实现,所以省略这里的说明。
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、第二计数器判
41断部3070、第三计数器判断部3080、乘数选择部3090、乘法部3100、乘 数群设置部3150—0、 3150—1、和乘数群更新部3160。
(1) 乘数群存储部3130
乘数群存储部3130存储乘法部3100中使用的乘数群MT—0 MT—1 。 具体来说,乘数群存储部3130如图24所示,存储由16个乘数值X—i0、 X—il、…、X一il5构成的乘数群MT—i (i是O或l)。存储XjO到X—i15是 因为sw二4。对于一般的sw,乘数群存储部2130存储乘数值X一 i0,X_il ,, X一 (i (2、w—l))。
(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—co皿t) /64以下的最大整数。
在判断为计数器count的值不能被2整除的情况下,第二计数器判断 部3070将计数器的更新指示通知给计数器更新部3050。(5) 乘数选择部3090
乘数选择部3090以针对计数器存储部1030中存储的计数器count的 分割秘密信息D_count的值为下标j (j=D—count),来选择乘数群存储部 3130中存储的乘数群MT_i的乘数值X—ij。
这里,所谓分割秘密信息D_C0Unt是指按每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—ZXXJjmodn。 这里,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,来算出Xj0、 X—il、 X一i2、…、X_il4、 X_il5。
乘数群设置部3150—i在count比64小的情况下,使用随机数群RT 中含有的随机数去除数S,算出XJ0、 X—il、 X_i2、…、X—i14、 X_il5。
乘数群设置部3150—i在X—i0、 X_il、 X—i2、…、X—i14、 X—i15的算 出时,执行X—i0—RSmodn、 X—il—XXX—i0modn、 X—i2—XXX—i 1 modn、…、X—i15—XXX—i14 mod n (=X A 15XRS mod n)。这里,RS是R 或S。
(8)乘数群更新部3160 乘数群更新部3160更新乘数群存储部3130中存储的乘数群MT_i的 乘数X—i0和X_il。 MT_i是之前通过乘数群设置部3150—i设置的乘数群。 具体来说,乘数群更新部3160执行XJ0—XJ0 a 2 mod n、 XJl—X XX」0modn、 X」2—XXXJ1 modn、、 XJ15—XXX」14modn。 3.2乘幂运算装置3000的动作 (1)整体的动作
这里,使用图20和图21所示的流程图来说明乘幂运算装置3000的动作。
输入输出部3010受理对象数据X的输入,并将所受理的对象数据X 存储到中间值存储部3120中(步骤S600)。
输入输出部3010将中间值Z初始化为值"l",并存储到中间值存储部 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—il (步骤S620)。这里,i是(b—count) / 64以下的 最大整数。
二次幂运算部3110对于中间值存储部3120中存储的中间值Z,实施 二次幂运算处理,并将其结果作为Z存储到中间值存储部3120中(步骤 S625)。
乘数选择部3090从乘数群存储部3130中存储的乘数群MT—i选择乘 数X』(步骤S630)。这里,i是(b—count) /64以下的最大整数,、j = D count。 D count是表示对计数器count的分割秘密信息的值。
44乘法部3100将中间值存储部3120中存储的中间值Z与乘数选择部 3090选出的乘数XJj相乘,并将其结果存储到中间值存储部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递减(减l)计数器存储部 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递减(减l)计数器存储部3030 中存储的计数器count,并将运算结果再次作为计数器count的值存储到计 数器存储部3030中。之后,处理返回到步骤S625。
在判断为计数器count的值不能被2整除的情况下(步骤S650中的 "否"),处理进入到步骤S660,并在步骤S660的执行后,返回到步骤S625。 (2)随机数群RT的设置处理
45由于图26中的步骤S610中进行的随机数群RT的设置处理可以通过 与图22所示的动作的流程同样的动作流程来实现,所以省略这里的说明。
(3) MTJ的初始化处理
这里,使用图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设置为值"l"(步骤S725)。
乘数群设置部3150—i在计数器k的值为1到15之间,重复步骤S730 到S745 (步骤S730)。
乘数群设置部3150—i对乘数值X—ik设置将乘数值X一i (k一l)乘以 对象数据X后的结果(步骤S735)。
乘数群设置部3150—i在计数器k的值上加上值"l",并将相加后的结 果再次作为计数器k的值加以设置(步骤S740)。
(4) 二次幂运算处理
这里,使用图29所示的流程图来说明图26的步骤S625中进行的二次 幂运算处理。
二次幂运算部3110将计数器u设置为值"l"(步骤S800)。 二次幂运算部3110在计数器u的值是l到sw (这里,4)之间,重复
步骤S810到S820 (步骤S805)。
二次幂运算部3110对中间值存储部3120中存储的中间值Z进行二次
幂运算,并将其结果作为Z存储到中间值存储部3120中(步骤S810)。二次幂运算部3110对计数器u的值加上值"l",并将相加后的结果再 次作为计数器u的值加以设置(步骤S815)。
由此,乘幂运算装置3000通过执行1次二次幂运算处理,而算出Z^16。
(5) MT—i的更新处理
这里,使用图30所示的流程图来说明图27的步骤S655中进行的乘数 群MTJ的更新处理。
乘数群更新部3160对乘数群存储部3130中存储的MTj中含有的 X一iO进行二次幂运算,并将其结果再次作为X_iO (步骤S850)。
乘数群更新部3160在计数器m设置值"l"(步骤S855)。
乘数群更新部3160在计数器m的值为1到15之间,重复步骤S865 到S875 (步骤S860)。
乘数群更新部3160对乘数值X—im设置将乘数值X一i (m—1)乘以对 象数据X后的结果(步骤S865)。
乘数群更新部3160在计数器m的值上加上值"l",并将加法后的结果 再次作为计数器m的值加以设置(步骤S870)。
3.3实施方式3的效果
实施方式3中,将d按照每2X4=8比特的±央,在乘数群更新部3160 中更新乘以中间值Z的乘数X一iO, X一il,…,X_il5 (i是O或l)。由此, 与实施方式1和2同样,通过使每个块乘数不同,可以防止通过分析乘数 是什么,来求出私钥d的BigMac攻击。
实施方式3中,在使用了窗口法的乘幂运算中也不需要取消运算。这 里,窗口的宽度是4比特,将512比特的私钥d分割为64个窗口。
下面,描述不需要取消运算的理由。
这是因为,在对随机数R进行了预定次数(这里,64次)的二次幂运 算处理后,使随机数R出现的窗口与包含对应的随机数去除数S的窗口成 对,从而通过随机数去除数S去除随机数r的影响(ra (2 a 256) modn)。
4.变形例
上述说明的实施方式是本发明的实施一例,本发明并不限于该实施方 式,可以在不脱离其宗旨的范围内以各种方式来加以实施。例如,本发明还包含如下这样的情况。
(1) 实施方式1 3中的私钥d的比特大小不限于512。也可以是1024 和2048。另外,乘幂运算装置中计算了 X a d mod n,但是,也可设dp=d mod p—1, dq=dmodq—l,计算X ^ dp modp禾口 X ^ dqmod q,并使用中国的 剩余定理,来计算XA(imodn。这里,计算X A dp mod p禾Q X A dq mod q 时也可使用乘幂运算装置。该情况下,在计算例如X^dpmodp时,将乘 法部等中使用的mod n作为mod p,来实施乘幂运算装置。该情况下,在 乘数群的设置时,也可将X—il—XXX—i0 mod p (i二0或l)中的X进行 modp。可通过对其进行modn,来依赖于输入的X产生Xmodp的运算, 并通过测量这时的功率来防止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的值)进行二次幂运算,但是并不限于此。例如,也可三次幂。 即,更新后的乘数值只要是使用更新前的乘数值XjO变更而来的值即可。
(5) 实施方式l中,随机数群的个数为32,但是并不限于此。例如, 在乘数群的设置的变分、即,数组RSI中含有的随机数选择信息的组合的 种类想要为2^32左右的情况下,可以是26个。 一般对于随机数群的个数 g,变分的数目有g/2的阶乘个。
(6) 实施方式l、 2中,以从幂值的高位比特向低位的方向,判断幂
48值的比特来执行运算,但是也可沿低位比特到高位的方向,判断幂值的比 特来执行运算。
该情况下,二次幂运算部不对中间值执行二次幂运算,而对之前设置 的乘数群执行二次幂运算,来更新乘数群。另外,不需要乘数群更新部,
第一次执行的乘数群设置部设置成使用R来进行遮蔽。即,乘数群MT一0 在幂值的低位一半处,按照每个比特变化为(R, XXR)e (ra2, (XX R) a2)-(ra4, (XXR) 、)e (ra (2 - 255), (XXR) ^ (2
a 255))。这里,(R, XXR)表示X—00=R, X—01=XXR。进一步,第 二次执行的乘数群设置部设置成使用(SXRA (2 a 255))进行遮蔽。这时, 通过将S乘以之前的乘数群MT一O的各个乘数,来设置乘数群MTJ。在 此之前,通过二次幂运算部来对乘数群MT一O的各要素进行二次幂运算。 即,求出MT—0= (2^ 255), (XXR) ^ (2 ^ 255)) =>MT_0= (R
△ (2156), (XXR) a (2 a 256)) =>MT_1= (SXR^ (2 ^ 256), S X (XXR) a (2^ 256)),并将MT—1的乘数分别设作SXIT (2^256), SX (XXR) a (2 a 256)。
进一步,例如,将实施方式2的随机数种子存储部中存储的随机数种 子U、随机数去除种子V设置成V=IT (—2^ 256—1)。通过这样来加 以设置,R和S的关系也为S=IT (—2^256—1)。结果,之前描述的 MT—l的乘数为SXRA (2^ 256) =R^ ( —1), SX (XXR) ^ (2^256) (2^ 256) ( — 1)。结果,通过使用乘数群MT—1来执行乘法,
可以抵消使用作为MT一O的初始值的(R, XXR)来执行乘法时的随机数 R的影响。对此之后的比特,也通过二次幂运算部的二次幂运算,依次变 化为(—2), X〃 (2^ 257) XRA (—2))、 (R^ (—4), X〃 (2
"58) (—4))、…、(R"55,(2H) XR^ (—255)),
从而可通过成对的高位比特的处理来抵消各个低位比特的随机数的影响。
在实施方式1中,也只要将随机数群Rt_i中包含的R_i、 S_i如上所述 设置为s-ra (—2^256—1)即可。
(7) 实施方式1 3中,分别设置了多个乘数群,但是也可用一个乘 数群替换在乘数群设置部中计算出的结果。
(8) 也可将实施方式1中的随机数群存储部中存储的随机数的一部分或全部作为随机数种子,将随机数去除数的一部分或全部作为随机数去除
种子,并分别如实施方式2那样进行乘幂,通过使这些结果相乘来生成随 机数群。同样也可组合实施方式1和3。
(9) 实施方式1 3中,预先存储了随机数与随机数去除数或随机数 种子与随机数去除种子,但是也可在最初进行加密处理时,根据私钥算出 这些来加以存储。通过该结构,在制造装置时,不需要存储随机数与随机 数去除数或随机数种子与随机数去除种子。另外,也可从外部提供私钥。 进一步,也可以每次执行加密处理时,每次根据私钥算出随机数和随机数 去除数来加以利用。
(10) 实施方式1 3的随机数可以是任何值,也可转用私钥或公钥的 值、或乘幂之外的功能中存储的值。另外,在使用中国的剩余定理的情况 下,modp中的随机数Rp与modq中的随机数Rq也可以为相同值。由此, 可以减少存储器大小。另外,可以不使用随机数,而转用随机数去除数。 在任何情况下都需要维持随机数和随机数去除数的关系。
(11) 实施方式1 3中也可通过追加例如指数遮蔽(ExponentBliding) 来实施其他功率差分攻击对策。在使用指数遮蔽的情况下,由于幂值每次 随机变化,所以安全性更高。
(12) 在对实施方式2使用了中国的剩余定理的情况下,可以最先执 行modp的随机数种子和随机数去除种子的w次幂,在modp中使用了乘 数群的乘幂运算结束后,执行mod q的随机数种子和随机数去除种子的w 次幂,从而改写modp的随机数种子和随机数去除种子的存储区域。由此, 可以减少随机数和随机数去除数的存储器大小。
(13) 实施方式2中,w次幂运算使用现有技术的方法,但是也可设 其为实施了功率差分攻击对策。由此,安全性更加提高。
(14) 实施方式1 3中,通过随机数和随机数去除数的组合,抵消了 随机数的影响,但是并不限于此。也可通过3个以上的随机数的组合来抵 消随机数的影响。该情况下,随机数群为这些彼此相抵消的随机数的组。
(14—1)下面,使用图31来说明通过随机数去除数S来抵消随机数 R、 R,的影响的情况。为了使说明简单,而着眼于count二i、 j、 k来加以 说明。
50这里,设count-i时,随机数R首次出现,在count-j时,更新后的 随机数R'首次出现。在count-k时,抵消这些随机数的影响,而成为S =ra (—2、) XR, a (—2、)。
如图31所示,count=i时随机数R出现,count=j时随机数R'出现, 通过在count二k的时刻下的二次幂运算,分别对随机数R和R'实施总共 p次、q次的二次幂运算。
在count=k时刻的乘法运算(例如,图5所示的步骤S135、或140) 中,通过使用随机数去除数S (二RA (—2、) XR, a (—2Aq)),来 抵消对随机数R和R,的运算结果(2、)、和R, a (2、))。
这吋,乘幂运算装置也可预先存储由随机数R、 R'和随机数去除数S 的3个数构成的组。
或者,也可以是,乘幂运算装置预先存储由随机数R、 R'、分别针对 随机数R、 R'的随机数去除数S—1、 3_2构成的4个组,并根据随机数去 除数S一l和S—2算出随机数去除数S。
算出随机数去除数S的定时只要是实施用于抵消对随机数R和R'的 运算结果(2^p)、和R, - (2ap))的运算之前,则可以是任何时候。
(14—2)下面,在由随机数去除数S、 S'抵消随机数R的影响的情 况下,随机数R和随机数去除数S、 S'的关系可以如下这样。设在随机数 R出现后进行基于随机数去除数S的乘法时,对随机数R进行i次二次幂 运算。
设随机数R和随机数去除数S的关系为S二RA (—2D,随机数R 和随机数去除数S'的关系为s' =ir (—(i+l—j))。 j是比i小的 整数。
该情况下,在对随机数R实施了 i次二次幂运算之后,紧接着通过进 行基于随机数去除数S (=RA (—21))的乘法,从而成为取消了值R a (21)中的一部分且值R八(2^ (i—j))保留的状态。通过对该值R a (2^ (i—j))实施二次幂运算,运算结果成为值IT (2^ (i—j + l)), 并且使用随机数去除数S' (二R八(_2^ (i+l—j)))进行相乘,从而取 消了值RA (i—j + l))。
51(15)本发明可以不运算乘幂,而运算椭圆曲线的点的标量(scalar)
倍数点。该情况下,乘幂运算装置1000中实施的乘法是椭圆加法,二次幂
运算是椭圆2倍运算。另外,"幂"对应于"标量"。
具体来说,将实施方式1中所示的乘法"Z—ZXXiO"替换为椭圆加法 Z+Xi0",将乘法"Z—ZXXil (=ZXXXRS)"替换为椭圆加法"Z—Z
+Xil (=Z+X+RS)"。另夕卜,将实施方式1所示的二次幂运算"Z—Z a 2"
替换为椭圆2倍运算"Z—2*Z (=Z+Z)"。
下面使用具体例来表示运算椭圆曲线的点的标量倍数点的情况。 这里,使用图32所示的流程图来说明装置A和装置B之间进行的密
钥共有的一例。
装置A设置私钥xA来加以保持(步骤S901)。装置B设置私钥xB 来加以保持(步骤S931)。
存在保持椭圆曲线的管理中心,管理中心中设置了管理中心装置960。 管理中心上设置的管理中心装置960选择椭圆曲线E: y a 2=x ^ 3+ax+b 的合适参数a和b来加以保持,选择质数p和椭圆曲线E上的合适的元G 来加以保持(步骤S911)。
管理中心装置960公开质数p、椭圆曲线E和元G (步骤S913)。
装置A算出公钥YA=xA*G (步骤S902),并将所算出的公钥YA输 出到装置B (步骤S903)。装置8算出公钥¥6=』*0 (步骤S932),并将 所算出的公钥YB输出到装置A (步骤S933)。
接着,装置A算出共有密钥xA*YB (步骤S904)。这里,共有密钥 xA*YB= (xAXxB) *G。
另一方面,装置8算出共有密钥乂8*¥人(步骤S934)。这里,共有密 钥xB氺YA二 (xBXxA) *G= (xAXxB) *G=xA*YB。
由此,装置A和装置B可以共有相同的会话密钥。
这里,椭圆曲线上的离散对数问题为安全性的基础。
符号*表示多次相加椭圆曲线中包含的元的运算,^G如下式所示,是 指x次相加椭圆曲线中含有的元G。
x*G=G+G+G+ +G
接着,下面简单说明椭圆曲线上的椭圆幂倍数运算。作为一例,计算10(^P。
若表示为100*P=2 (2 (P+2 (2 (2 (P+2P))))),则100*P通过基 于椭圆曲线上的点的6次2倍运算与2次加法来加以计算。
这样,椭圆幂倍数运算归纳为基于2倍运算和加法的运算。
这里,设椭圆曲线的方程式为yA2=XA3+ax+b,椭圆曲线上的任 意点P的坐标为(xl、 yl),任意的点Q的坐标为(x2、 y2)。这里,设由 R二P+Q决定的点R的坐标为(x3、 y3)。
在点P和点Q不相等的情况下,R二P+Q为相加的运算。下面表示加 法的公式。
x3= {(y2—yl) / (x2—xl)}xl—x2 y3= {(y2—yl) / (x2—xl)} (xl_x3) —yl
在点P和点Q相等的情况下,为R=P+Q=P+P=2XP, R=P+Q
为2倍运算。下面表示2倍运算的公式。
x3= {(3Xx「2+a) / (2Xyl)} ^ 2— (2Xxl)
y3= {(3XxlA2+a) / (2Xy)} (xl—x3) —yl
这里,上述运算是在定义了椭圆曲线的有限体上的运算。
椭圆曲线的运算公式在"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具有下面表示的性质GO到G3的情况。 (GO)对于G的任意2个元a, b,定义积ab并属于G。 (Gl)对于G的任意3个元a, b, c,成立(ab) c=a (be)(结合法则)。
(G2)对G的任意元a,存在满足ae=ea的G的元e(单位元的存在)。 (G3)对于G的任意元a,存在满足ab=ba=e的G的元b (存在逆元)。
上述群的定义在剩余域的群中表示了定义,但是在上述定义中,将积
53考虑为和来定义椭圆曲线上的群。
另外,本发明的基本运算和窗口运算相当于实施方式1到3的乘法、 和上述(15)的椭圆加法。
进位运算相当于实施方式1到3的二次幂运算(2 a v)、和上述(15) 的椭圆2倍运算(2*v)。
(17) 本发明可以不是乘幂运算装置,而是利用其的RSA加密的解密 装置或RSA签名的签名生成装置。另外,可以是执行将秘密信息作为幂值 的乘幂运算的信息安全装置。例如,可以是ElGamal加密的解密装置或DSA 签名的签名生成装置。
(18) 上述各实施方式和变形例在如下所示的情况下适用。
(18 — 1)各实施方式和变形例在公钥加密方式中的密文的解密与签名 数据的生成中适用。对于这些,在上述中,作为对象数据X的乘幂运算结 果加以说明。
.(18—2)各实施方式和变形例可在认证中适用。所谓认证是指验证通 过如自称那样的人物来发送消息或没有篡改消息。各实施方式和变形例可 在身份证明中适用。身份的证明是指例如,具有对数据的访问权或对施设 的访问权(进入权)的证明、或自己是如所主张的人物的证明。进一步, 各实施方式和变形例可在防止否认中适用。所谓防止否认是指对抗例如实 际上同意某事但主张为不同意的人。
(18—3)各实施方式和变形例可以在密钥交换中适用。所谓密钥交换 是指例如,2个人共有在使用广播电波的私钥加密方式中使用的私钥。
(18 — 4)各实施方式和变形例也可以在扔硬币(也称作比特委托 (commitment))中适用。所谓扔硬币是指例如,住在不同城市的2个象棋 玩家通过电子邮件来决定谁执白。
(18—5)各实施方式和变形例可以在秘密分散中适用。秘密分散是指 例如,某个秘密的信息可以由共同工作的k个人使用,但是k一l个人不能 使用。
(18—6)各实施方式和变形例可以在零知识证明中适用。零知识证明 是指例如,某个人使他人对成功对解出数论的或组合论的问题的情形进行 认可,但连解是什么这样的一点点信息都不提供。
54(19) 上述实施方式l中,对于相对私钥d的所有比特,在步骤S135 和S140的其中一个中使用了随机数R或随机数去除数S,但是并不限于此。
也可对1个以上的特定比特分别使用随机数R来施加乘法。针对各特 定的比特,对在该特定的比特中出现的随机数R,通过使用与所述随机数R 对应的随机数去除数S来对在重复预定次数的二次幂运算之后的运算对象 的比特施加乘法,从而可以取消对在该特定的比特中出现的随机数R的二 次幂运算的影响。这时,特定的比特为最低位比特之外的比特。
下面,使用特定的比特为1个情况来加以说明。
对第511比特到第256比特中的第i比特,使用随机数R来施加乘法, 之后,对第(i一256)比特、即对实施了 256次二次幂运算之后的运算对 象的比特使用与所述随机数R对应的随机数去除数S来施加乘法。这时, 在其他比特中,与现有技术同样,在比特值为O的情况下,将值l乘以中 间值Z,在比特值是l的情况下,将对象数据X乘以中间值。
另外,在实施方式2中也同样,也可分别对l个以上的特定比特使用 随机数R来实施乘法。这时,特定的比特是最低位比特以外的比特。
在实施方式3中也同样,可以分别对1个以上的特定窗口使用随机数 R来施加乘法。这时,特定的窗口为最低位的窗口之外的窗口。
(20) 上述实施方式1、 2中,乘幂运算装置按每个比特更新用于乘法 的随机数。
在上述实施方式3中也同样,乘幂运算装置也可按每个窗口来更新用 于乘法的随机数。
(21) 上述实施方式l中,在乘幂运算装置的乘法部中使用的运算式 也可以为X—i (=XA (d—0 XRS_ (RSI—i))。这里,RS— (RSI—i)是11_
(RSIj)和S— (RSI—i)的其中之一。
这是因为,在d—i为0的情况下,由于X^ (d—i) =1,所以X—i=R— (RSI—i),与XjO同值。另外,在d—i为l的情况下,由于X^ (d—i)= X,所以成为X—i=XXR— (RSI—i),与X—il同值。
在上述实施方式2中也同样,可以将乘幂运算装置的乘法部中使用的 运算式设作X—i(=X〃 (d—i) XRS)。这里,RS是R和S的其中之一。 在上述实施方式3中也同样,也可将乘幂运算装置的乘法部中使用的
55运算式设作XJ (=XAWXRS)。这里,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 (Field Programmable 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_l,所述乘数群更新部针对所 述乘数X—0、 X_l,将对所述乘数X—0 二次幂运算后的结果作为对所述乘 数X—0的更新乘数X—0',并将所述对象数据与所述更新乘数X一0相乘后的结果作为对所述乘数X—1的更新乘数X_l',将各个所述更新乘数x_o'、 X—1'存储在所述乘数群存储部中(xj表示对x赋予下标y。)。
(11) 上述(1)到(9)的其中一个乘幂运算装置中,其特征在于, 所述乘数群存储部存储2 a k(k是2以上)个所述乘数X—0、 X_l、 X一2、…、 X(2^k),所述乘数群更新部针对所述乘数X—0、 X_l,将对所述乘数X—0 进行二次幂运算后的结果作为对所述乘数X—0的更新乘数X—0',并将所述 对象数据和所述更新乘数X_0相乘后的结果作为对所述乘数X一l的更新乘
数x一r,将各个所述更新乘数x一o'、 x一r存储在所述乘数群存储部中(x
Ay表示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攻击的私钥分析变得困难。
权利要求
1.一种信息安全装置,在由预定的集合和使用其元的基本元定义的群中,通过进行将使用了元X的基本运算重复d次的幂运算d&amp;X,由此安全且可靠地处理预定的信息,其特征在于,包括取得单元,取得值d;以及主运算单元,使用窗口法,按照值d的每个窗口进行进位运算和基于该窗口的窗口值及元X的窗口运算,由此进行幂运算d&amp;X;所述主运算单元在第一窗口的窗口运算中,使用随机数R;在第二窗口的窗口运算中,使用取消值S,该取消值S取消从所述第一窗口到该第二窗口为止对所述随机数R进行的进位运算所累积的累积运算因数。
2. 根据权利要求1所述的信息安全装置,其特征在于, 所述信息安全装置还包括处理单元,该处理单元使用幂运算d&X的运算结果,来解密信息,或对信息实施数字签名。
3. 根据权利要求1所述的信息安全装置,其特征在于,所述第二窗口存在于从所述第一窗口开始距离值V处;所述取消值S是针对幂运算(v&2)的运算结果的所述随机数R的幂运算(V&2) &11的倒数; 所述主运算单元包括取得部,取得所述随机数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是l以上的整数, 所述窗口个数是lend / u个,值lend是所述值d的比特长度以上的2的幂数中的最小值; 所述值v满足lend=2v,所述第一窗口是开头窗口,所述第二窗口是从开头窗口起位于第lend /2u+l的窗口;将从开头窗口开始的lend / 2u个窗口 、和从开头起第lend / 2u+1个 窗口开始到末尾窗口为止的lend/2u个窗口分割为由i个窗口构成的第1 到第P组、以及第p+l到第m组;所述取得部进一步针对第1到第P组,在运算对象从运算对象的组改 变为下一组时,取得与运算对象的变更之前刚使用的随机数不同的随机数;所述窗口运算部针对第1到第P组的每一个,在该组为运算对象期间,分别对该组中含有的窗口,取得使用了所述取得部取得的随机数的窗口运^算所得到的运算值;所述取得部在将第p+l到第m组中含有的第m'组作为运算对象时, 取得与在第(m' —p)组中使用的随机数相对应的取消值;所述窗口运算部在以所述第m'组为运算对象期间,取得使用了所述 取得部取得的取消值的窗口运算所得到的运算值。
6. 根据权利要求5所述的信息安全装置,其特征在于, 所述取得部使p个彼此不同的随机数与分别对应于随机数的取消值相对应地预先 加以存储;针对所述第1到第P组的每一个,通过从该组成为运算对象时在当前 时刻未选择的1个以上的随机数中选择1个随机数,来取得该组中使用的 随机数;针对所述第m,组,通过选择与第(m' —p)组中使用的随机数相对 应的取消值,来取得在该第m'组中使用的取消值。
7. 根据权利要求5所述的信息安全装置,其特征在于, 所述取得部在所述不同随机数的取得时,对当前时刻保持的随机数R进行对于预 定数q的乘幂运算R A q,并将该乘幂运算R ^ q的运算结果再次作为随机 数R加以保持;在取消值的取得时,对当前时刻保持的取消值S进行对于所述预定数 q的乘幂运算S a q,并将该乘幂运算S a q再次作为取消值S加以保持。
8. 根据权利要求7所述的信息安全装置,其特征在于, 所述取得部预先存储第一种子值U和第二种子值V,所述第二种子值V是所述第一种子值U相对所述值v的幂运算(v&2) &11的取消值;所述取得部在进行对所述第一组的运算之前,生成随机数r,并在所述 第一和第二种子值U、 V中,分别将实施了对随机数r的乘幂运算后的值 作为随机数R和取消值S加以保持。
9. 根据权利要求5所述的信息安全装置,其特征在于, 所述各组由l个窗口构成。
10. 根据权利要求5所述的信息安全装置,其特征在于, 所述窗口是l比特长度。
11. 根据权利要求3所述的信息安全装置,其特征在于, 所述取得部还在以所述第一窗口到所述第二窗口之间存在的第三窗口为对象时,将所述随机数R取得与所述随机数R不同的随机数R';所述取得部还取得取消值S,,该取消值S,取消从所述第三窗口到该 第二窗口为止对所述随机数R'进行的进位运算所累积的累积运算因数, 并将该取消值S'与所述取消值S—起加以保持;所述窗口运算部在所述第三窗口中,进行基于对其窗口值w和元X进行的幂运算w& X的运算结果、所述随机数R'和变量Z的窗口运算,并将其运算结果作 为变量Z;在所述第二窗口中,还取得使用了所述取消值S'的窗口运算所得到 的运算值。
12. 根据权利要求ll所述的信息安全装置,其特征在于, 所述取得部通过预先保持对所述取消值S和S'实施了基本运算后的值T,来保持所述取消值S和S';所述取得部在以所述第二窗口作为运算对象时,通过取得所述值T, 来取得所述取消值S和S'。
13. 根据权利要求ll所述的信息安全装置,其特征在于, 所述取得部预先保持所述取消值S和S';通过施加使用了所述取消值S和S'的基本运算来算出并取得值T, 由此取得所述取消值S和S'。
14. 根据权利要求1所述的信息安全装置,其特征在于, 所述群将所述预定的集合设为以值n为模的剩余域,将基本运算设为乘法;所述元X是所述剩余域中含有的值; 所述进位运算是所述剩余域上的乘幂运算; 所述基本运算和所述窗口运算是所述剩余域上的乘法; 所述主运算部使用所述剩余域上的乘幂运算和所述剩余域上的乘法来 算出所述乘幂运算d&X=X a d。
15. 根据权利要求1所述的信息安全装置,其特征在于, 所述群将所述预定的集合设为椭圆曲线上的点的集合,将基本运算设为加法;所述元X是椭圆曲线上的点; 所述进位运算是所述椭圆曲线上的乘幂运算; 所述基本运算和所述窗口运算是所述椭圆曲线上的加法; 所述主运算部使用所述椭圆曲线上的乘幂运算和所述椭圆曲线上的加法,来算出所述乘幂运算d&X二(PX。
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进行的进位运算所累积的累积运 算因数。
全文摘要
本发明的目的在于提供一种信息安全装置,与现有技术相比可以减少进行秘密通信或认证时应运算的幂运算的处理时间。在该信息安全装置中,通过根据对象数据X和秘密的值d使用窗口法算出乘幂值X^d,来进行秘密通信或认证,在算出乘幂值X^d的过程中,在对基于乘法的运算中出现的随机数R重复了预定次数例如256次二次幂运算之后的乘法中,使用随机数去除数S(=R^(-2^256)),来取消对随机数R的二次幂运算所得到的运算结果,从而不需要现有技术的取消处理。
文档编号G09C1/00GK101542557SQ20088000054
公开日2009年9月23日 申请日期2008年5月20日 优先权日2007年5月30日
发明者布田裕一, 松崎枣, 野仲真佐男 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1