欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

信息安全裝置的制作方法

文檔序號:2404410閱讀:521來源:國知局
專利名稱:信息安全裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及針對通過測量執(zhí)行加密處理時的功率消耗量來分析嵌入到 加密模塊中的秘密信息的攻擊,使分析變困難的技術(shù)。
背景技術(shù)
近年來,提出過各種通過硬件或軟件安裝的加密模塊通過從進(jìn)行加密 處理時的副信息入手而進(jìn)行加密密鑰的分析的解密法。若非法的第三者分 析加密密鑰,并解讀私鑰,則可以使用解讀出的私鑰,冒充合法的使用者, 并使用私鑰來進(jìn)行非法行為。
例如,作為進(jìn)行加密密鑰的分析的解密法,有稱作定時攻擊的分析方 法。在稱作定時攻擊的分析方法中,利用加密模塊進(jìn)行加密處理所需的時 間因用于加密處理的加密密鑰的值的不同而稍有不同的情形,來進(jìn)行加密 密鑰的分析。即,在定時攻擊中,利用進(jìn)行加密處理時的處理時間這樣的 副信息,來進(jìn)行加密密鑰的解讀。在這種解密法中,將進(jìn)行加密處理時的 功率消耗量作為副信息進(jìn)行解密的解密方法提出過單純功率分析攻擊
(Simple Power Analysis )禾口差分功率分析攻擊(Differential Power Analysis) 這樣的各種方法。這些解密法還報告出近年來在以低價獲得高性能的測量 設(shè)備的背景下,還可對IC卡這種安裝了加密的實(shí)際產(chǎn)品進(jìn)行分析的情況。 在下面的描述中,將從上述這種加密處理時的加密模塊的功率消耗量的變 化即功率波形入手來分析加密密鑰的解密方法總稱為"功率分析攻擊"。對 于定時攻擊,在非專利文獻(xiàn)1中進(jìn)行了詳細(xì)描述,對于功率分析攻擊,在 非專利文獻(xiàn)2進(jìn)行了詳細(xì)描述。
下面,說明對RSA加密的單純功率分析攻擊。對于RSA加密,在非 專利文獻(xiàn)3中詳細(xì)描述。
<RSA加密的單純功率分析攻擊>
RSA加密的解密處理中,針對質(zhì)數(shù)p、 q的積n、作為不超過n的正整 數(shù)的密文c與作為正整數(shù)的私鑰d,進(jìn)行(^dmodn的計算。作為該計算
8方法,已知例如非專利文獻(xiàn)4的9頁中的二進(jìn)制(Binary)法。下面說明二 進(jìn)制法。對d-dO+dlX2+d2X2A2+…+(T (len—1)X2^ (len—1)、 i=0, 1,…,len—l設(shè)di二O或l。這里,len表示d的比特數(shù),"X"表示 整數(shù)乘法,xAy表示x的y次冪。 (二進(jìn)制法)
步驟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是否為負(fù)。在為負(fù)的情況下,輸出z。 除此之外,進(jìn)入到步驟1一2。
上述方法中,將步驟1—2、 l一3、 l一4作為循環(huán)來重復(fù)計算。在該循 環(huán)內(nèi),對di (i=l, 2,…,len—1),在di二l的情況下,進(jìn)行z的二次冪 運(yùn)算與基于c的乘法,在di=0的情況下,僅執(zhí)行z的二次冪運(yùn)算。N是較 大的數(shù)、例如,1024比特的整數(shù)。通常,二次冪運(yùn)算與乘法相比,可以實(shí) 現(xiàn)計算處理的高效化,所以可以進(jìn)行高速處理。在該情況下,由于二次冪 運(yùn)算與乘法處理不同,所以功率波形不同。
因此,可以通過測量功率波形,來分析二次冪運(yùn)算、乘法的運(yùn)算順序。 進(jìn)一步,利用因di而循環(huán)內(nèi)的處理不同的情況,從該順序求出di的值。若 加以歸納,則可以通過以下的步驟,進(jìn)行單純功率分析攻擊。 (二進(jìn)制法的單純功率分析攻擊)
,步驟2—1:對密文c進(jìn)行解密,來測量該處理中的功率波形。 ,歩驟2—2:根據(jù)上述功率波形求出二次冪運(yùn)算、乘法的運(yùn)算順序。 '歩驟2—3:根據(jù)上述順序求出比特di (i=l, 2,…,len—l)。 〈現(xiàn)有技術(shù)的RSA加密的單純功率分析攻擊對策〉 上述的單純功率分析攻擊中,在二進(jìn)制法的步驟l一3中利用僅在di =1時進(jìn)行乘法的情形來進(jìn)行私鑰的分析。
因此,還提出了下述單純功率分析攻擊的對策方法通過在出=0時 進(jìn)行l(wèi)乘以z的乘法,結(jié)果并不變化,但是由于在di-O時也進(jìn)行乘法,使 二次冪運(yùn)算、乘法的運(yùn)算順序不依賴于d的值(參考非專利文獻(xiàn)l)。
在上述RSA加密的單純功率分析攻擊對策中,在di=l時進(jìn)行乘以c的乘法、在di=0時進(jìn)行乘以1的乘法,乘數(shù)不同。提出過利用該情形來 分析di是0還是1的攻擊(稱作BigMac攻擊)(參考非專利文獻(xiàn)5)。若使 用該攻擊,則即使進(jìn)行上述單純功率分析攻擊對策,也可分析出d的值。 這是因?yàn)?,在乘?shù)相同的情況下,存在所得功率波形一致的部分的可能性 高,所以可以將通過單純功率分析得到的乘法的功率波形分類為2種(例 如,組A和組B)。這時,組A與組B與di比特值的對應(yīng)僅為2種情形。 是在組A中對應(yīng)di= 1 、在組B中對應(yīng)di=0的情形和在組A中對應(yīng)di=0、 在組B中對應(yīng)di二l的情形。分別對這兩種情形,例如,通過再次對密文 進(jìn)行解密,可以明白哪一種對應(yīng)正確,即可以取得私鑰。
因此,專利文獻(xiàn)1中,為了使私鑰的分析變困難,公開了下述技術(shù) 將私鑰d分割為由預(yù)定的比特數(shù)構(gòu)成的多個塊,在二進(jìn)制法的乘法時,將 每個塊不同的隨機(jī)數(shù)乘以值z,而與di值無關(guān),在對所有di的二次冪運(yùn)算 和乘法的運(yùn)算結(jié)束后,使用該隨機(jī)數(shù)的取消值來取消相乘的隨機(jī)數(shù)。
專利文獻(xiàn)1中,在進(jìn)行對密文c的cTd運(yùn)算之前,求出值R與S。這 里,RXSmodn二l。
并且,對各di執(zhí)行二次冪運(yùn)算和乘法的運(yùn)算。這時,使用值R來設(shè)置 該隨機(jī)數(shù),使得對每個塊用于乘法的運(yùn)算的隨機(jī)數(shù)不同。例如,通過對第 m塊使用隨機(jī)數(shù)R a m來進(jìn)行乘法,可對每塊使用不同隨機(jī)數(shù)。
對于所有塊的二次冪運(yùn)算和乘法運(yùn)算結(jié)束后,使用值S,去除由隨機(jī) 數(shù)R帶來的影響,從而得到cTd。
根據(jù)該技術(shù),對于每個塊,di=0、 l的對應(yīng)存在2個模式。但是,由 于在所有塊中存在2個對應(yīng)的模式,所以對私鑰d整體來說,存在2^ (塊 數(shù))個模式。因此,私鑰的分析者必須檢査全部2A (塊數(shù))個模式。因此 私鑰的分析變困難。
專利文獻(xiàn)1:日本特開2000—165375號公報
非專禾U文獻(xiàn)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文獻(xiàn)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.
非專利文獻(xiàn)3:岡本龍明、山本博資、"現(xiàn)代喑號"、產(chǎn)業(yè)圖書(1997
年)
非專禾廿文獻(xiàn)4: H. Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer—Verlag, 1996, p9
與一專禾!j文獻(xiàn)5: C. D. Walter, " Sliding windows succumbs to Big Mac Attack", CHES2001, LNCS2162, Springer—Verlag, 2001, pp. 286—299.
非專利文獻(xiàn)6:神永、渡邊、遠(yuǎn)藤、大河內(nèi)、"RSA喑號O電力解析法 tJ:^)攻撃i:^:(7)対策"、IEICE、 Vol. J88—A、 No.5、 pp.606—615、 2005
但是,專利文獻(xiàn)l公開的技術(shù)中,由于在對所有di的二次冪運(yùn)算和乘
法的運(yùn)算結(jié)束后取消相乘的隨機(jī)數(shù),所以其處理時間變長。這是因?yàn)?,?br> 在例如對開頭比特d511的乘法運(yùn)算中出現(xiàn)隨機(jī)數(shù)R,則該隨機(jī)數(shù)R對之后
所有比特的二次冪運(yùn)算的運(yùn)算有影響,其值成為ra (2 a (len—l))。即,
在第i比特di中出現(xiàn)隨機(jī)數(shù)R^m,在對之后所有比特的二次冪運(yùn)算的運(yùn)算
中,還對該RAm進(jìn)行二次冪運(yùn)算。這里,m是di所屬的塊序號。結(jié)果,
其值為(R^m) a (2 a (i—1))。
艮p,為了使用值S來去除隨機(jī)數(shù)R的影響,需要對各di算出在對該 di的乘法中出現(xiàn)的隨機(jī)數(shù)RAm造成的最終二次冪運(yùn)算結(jié)果(RAm) ^ (2
a (i—1))的取消值(S^m) a (_2a (i—d),并對所有這些進(jìn)行相 乘。
因此,由于使用值S來去除隨機(jī)數(shù)R的影響的處理的處理時間長,所 以乘冪運(yùn)算整體的處理時間也變長。

發(fā)明內(nèi)容
本發(fā)明鑒于上述問題,其目的是提供一種可以比現(xiàn)有技術(shù)減小在進(jìn)行 秘密的通信或認(rèn)證時算出的乘冪倍值運(yùn)算處理的時間的信息安全裝置、方 法、程序和集成電路。
為了實(shí)現(xiàn)上述目的,作為本發(fā)明的一實(shí)施方式是一種信息安全裝置, 在由預(yù)定的集合和使用其元的基本元定義的群中,通過進(jìn)行將使用了元X 的基本運(yùn)算重復(fù)d次的冪運(yùn)算d&X,由此安全且可靠地處理預(yù)定的信息,
11其特征在于,包括取得單元,取得值d;以及主運(yùn)算單元,使用窗口法, 按照值d的每個窗口進(jìn)行進(jìn)位運(yùn)算和基于該窗口的窗口值及元X的窗口運(yùn) 算,由此進(jìn)行冪運(yùn)算d&X;所述主運(yùn)算單元在第一窗口的窗口運(yùn)算中,使 用隨機(jī)數(shù)R;在第二窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消 從所述第一窗口到該第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積 的累積運(yùn)算因數(shù)。 發(fā)明效果
根據(jù)上述結(jié)構(gòu),信息安全裝置在使用窗口法來算出對對象數(shù)據(jù)X的冪 運(yùn)算d&X的過程中,通過在第二窗口的窗口運(yùn)算中使用取消值S來取消 對第一窗口中出現(xiàn)的隨機(jī)數(shù)R的進(jìn)位運(yùn)算造成的影響。由此,信息安全裝 置在對所有窗口的運(yùn)算結(jié)束后,不需要如現(xiàn)有技術(shù)那樣算出取消由隨機(jī)數(shù)
R造成的影響的值的取消處理,所以與現(xiàn)有技術(shù)相比冪運(yùn)算整體的處理時
間變少。


圖1是表示乘冪運(yùn)算裝置1000的結(jié)構(gòu)框圖; 圖2是表示在乘數(shù)群存儲部1130中存儲的乘數(shù)群的圖; 圖3是表示在隨機(jī)數(shù)群存儲部1140中存儲的隨機(jī)數(shù)群的圖; 圖4是表示隨機(jī)數(shù)選擇信息生成部1170進(jìn)行的生成數(shù)組RSI的動作的 流程圖5是表示乘冪運(yùn)算裝置1000的動作的流程圖,下接圖6; 圖6是表示乘冪運(yùn)算裝置1000的動作的流程圖,上接圖5; 圖7是表示MT—i的初始化處理的動作的流程圖; 圖8是表示MT—i的更新處理的動作的流程圖9是表示按每個構(gòu)成私鑰的子塊,來使分配的乘數(shù)變化的具體例的
圖10是說明使攻擊者進(jìn)行的私鑰d的比特分類、推測變困難的圖; 圖11是說明對隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256次)乘冪運(yùn)算后,加以 取消的圖12是說明對第count (=i)個出現(xiàn)的隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256
12次)的乘冪運(yùn)算后,加以取消的圖13是對隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256次)乘冪運(yùn)算后,將取消的 情形分為高位比特和低位比特來加以說明的圖14是使用具體例來說明對隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256次)的乘 冪運(yùn)算后,加以取消的圖;下接圖15;
圖15是使用具體例來說明對隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256次)的乘 冪運(yùn)算后,加以取消的圖;上接圖14,上接圖16;
圖16是使用具體例來說明對隨機(jī)數(shù)R實(shí)施了預(yù)定次數(shù)(256次)乘冪 運(yùn)算后,加以取消的圖;上接圖15;
圖17是表示乘冪運(yùn)算裝置2000的結(jié)構(gòu)框圖18是表示在乘數(shù)群存儲部2130中存儲的乘數(shù)群的圖19是表示在隨機(jī)數(shù)群存儲部2140中存儲的隨機(jī)數(shù)群的圖20是表示乘冪運(yùn)算裝置2000的動作的流程圖;下接圖21;
圖21是表示乘冪運(yùn)算裝置2000的動作的流程圖;上接圖20;
圖22是表示隨機(jī)數(shù)群RT的設(shè)置處理的動作的圖;
圖23是表示乘冪運(yùn)算裝置3000的結(jié)構(gòu)框圖24是表示在乘數(shù)群存儲部3130中存儲的乘數(shù)群的圖25是表示構(gòu)成私鑰d的多個分割秘密信息的一例的圖26是表示乘冪運(yùn)算裝置3000的動作的流程圖;下接圖27;
圖27是表示乘冪運(yùn)算裝置3000的動作的流程圖;上接圖26;
圖28是表示MT_i的初始化處理動作的流程圖29是表示二次冪運(yùn)算處理的動作的流程圖30是表示MT—i的更新處理的動作的流程圖31是表示通過2個隨機(jī)數(shù)R、 R'與1個隨機(jī)數(shù)去除數(shù)S,來消除 對隨機(jī)數(shù)R、 R'的運(yùn)算的影響的一例的圖32是針對裝置A和裝置B之間進(jìn)行的使用了橢圓曲線的密鑰共用 的一例,表示其動作的流程圖。
符號說明
1000, 2000、 3000 乘冪運(yùn)算裝置1010,2010、3010輸入輸出部
1020,2020、3020私鑰存儲部
1030,2030、3030計數(shù)器存儲部
1040,2040、3040計數(shù)器初始化部
1050,2050、3050計數(shù)器更新部
1060,2060、3060第一計數(shù)器判斷部
1070,2070、3070第二計數(shù)器判斷部
1080,2080、3080第三計數(shù)器判斷部
1090、2090比特判斷部
1100、2100、3100乘法部
1110、2110、3110二次冪運(yùn)算部
1120、2120、3120中間值存儲部
1130、2130、3130乘數(shù)群存儲部
1140、2140、3140隨機(jī)數(shù)群存儲部
1150、2150、3150乘數(shù)群設(shè)置部
1160、2160、3160乘數(shù)群更新部
1170隨機(jī)數(shù)選擇信息生成部
2180、3180隨機(jī)數(shù)種子存儲部
2190、3190隨機(jī)數(shù)群設(shè)置部
3090乘數(shù)選擇部
具體實(shí)施例方式
作為本發(fā)明的一實(shí)施方式是一種信息安全裝置,在由預(yù)定的集合和使
用其元的基本元定義的群中,通過進(jìn)行將使用了元X的基本運(yùn)算重復(fù)d次
的冪運(yùn)算d&X,由此安全且可靠地處理預(yù)定的信息,其特征在于,包括 取得單元,取得值d;以及主運(yùn)算單元,使用窗口法,按照值d的每個窗口 進(jìn)行進(jìn)位運(yùn)算和基于該窗口的窗口值及元X的窗口運(yùn)算,由此進(jìn)行冪運(yùn)算 d&X;所述主運(yùn)算單元在第一窗口的窗口運(yùn)算中,使用隨機(jī)數(shù)R;在第二 窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消從所述第一窗口到該 第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn)算因數(shù)。根據(jù)該結(jié)構(gòu),信息安全裝置在使用窗口法來算出對對象數(shù)據(jù)x的冪運(yùn) 算d&X的過程中,通過在第二窗口的窗口運(yùn)算中使用取消值s來取消對
第一窗口中出現(xiàn)的隨機(jī)數(shù)R的進(jìn)位運(yùn)算造成的影響。由此,信息安全裝置 在對所有窗口的運(yùn)算結(jié)束后,不需要如現(xiàn)有技術(shù)那樣算出取消由隨機(jī)數(shù)R 造成的影響的值的取消處理,所以與現(xiàn)有技術(shù)相比冪運(yùn)算整體的處理時間 變小。
這里,也可以是,所述信息安全裝置還具有處理單元,該處理單元使 用冪運(yùn)算d&X的運(yùn)算結(jié)果,來解密信息或?qū)π畔?shí)施數(shù)字簽名。
根據(jù)該結(jié)構(gòu),信息安全裝置由于使用冪運(yùn)算d&X的運(yùn)算結(jié)果,來解 密信息或?qū)π畔⑹┘訑?shù)字簽名,所以這些處理所需的處理時間比現(xiàn)有技術(shù) 少。
這里,也可以是,所述第二窗口存在于從所述第一窗口開始距離值v 處;所述取消值S是針對冪運(yùn)算(v&2)的運(yùn)算結(jié)果的所述隨機(jī)數(shù)R的冪 運(yùn)算(v&2) &R的倒數(shù);所述主運(yùn)算單元包括取得部,取得所述隨機(jī)
數(shù)R與所述取消值S;變量保持部,保持變量Z;初始化部,作為初始值 在變量Z中設(shè)置單位元;進(jìn)位運(yùn)算部,通過所述進(jìn)位運(yùn)算使變量Z進(jìn)位窗 口寬度,將其結(jié)果作為變量Z;窗口運(yùn)算部,對運(yùn)算對象的窗口,取得基
于其窗口值w和元X的冪運(yùn)算值,并至少使用變量Z和取得的冪運(yùn)算值來
實(shí)施所述窗口運(yùn)算,并將運(yùn)算結(jié)果作為變量Z;以及控制部,對所述進(jìn)位 運(yùn)算部和窗口運(yùn)算部進(jìn)行控制,使得對所有窗口重復(fù)進(jìn)位運(yùn)算和窗口運(yùn)算; 所述窗口運(yùn)算部在所述第一窗口中,基于對其窗口值w和元X進(jìn)行的冪運(yùn) 算w&X的運(yùn)算結(jié)果、所述隨機(jī)數(shù)R和變量Z,進(jìn)行窗口運(yùn)算,并將其運(yùn)
算結(jié)果作為變量Z;在所述第二窗口中,基于對其窗口值W和元X進(jìn)行的
冪運(yùn)算w&X的運(yùn)算結(jié)果、所述取消值S和變量Z,進(jìn)行窗口運(yùn)算,并將 其運(yùn)算結(jié)果作為變量Z。
根據(jù)該結(jié)構(gòu),信息安全裝置可以使用作為所述隨機(jī)數(shù)R的冪運(yùn)算(v &2) &R的運(yùn)算結(jié)果的倒數(shù)的取消值S來可靠地取消由對所述隨機(jī)數(shù)R的 進(jìn)位運(yùn)算造成的累積運(yùn)算因數(shù)。這是因?yàn)?,在隨機(jī)數(shù)R出現(xiàn)后到第二窗口 的進(jìn)位運(yùn)算期間,進(jìn)位了值v的進(jìn)位,所以在第二窗口中進(jìn)行窗口運(yùn)算時, 對隨機(jī)數(shù)R的進(jìn)位運(yùn)算引起的運(yùn)算結(jié)果成為(v&2) &R。因此,信息安
15全裝置可以通過在第二窗口中使用了取消值S的窗口運(yùn)算,來取消該值(v &2) &R。
這里,也可以是,所述窗口運(yùn)算部對從所述第一窗口起連續(xù)的i個(i 是比v小的值)的窗口構(gòu)成的組,按照該組中含有的每個窗口,來基于對 其窗口值w和元X的冪運(yùn)算值w&X、所述隨機(jī)數(shù)R和變量Z,進(jìn)行窗口 運(yùn)算;對從所述第二窗口起連續(xù)的i個窗口構(gòu)成的組,按照該組中含有的 每個窗口,來基于對該其窗口值w和元X的冪運(yùn)算值w&X、所述取消值 S和變量Z,進(jìn)行窗口運(yùn)算。
根據(jù)該結(jié)構(gòu),信息安全裝置對從第一窗口起連續(xù)的i個窗口,分別進(jìn) 行使用了隨機(jī)數(shù)R的窗口運(yùn)算,對從第二窗口起連續(xù)的i個窗口,分別進(jìn) 行使用了取消值R的窗口運(yùn)算,從而可以使值d的分析變困難。另外,由 于對于從第一窗口起連續(xù)的i個窗口的每一個來說,從該窗口開始距離值v 的窗口包含在從第二窗口起連續(xù)的i個窗口構(gòu)成的組中,所以可以在距離 值v的窗口的窗口運(yùn)算中可靠地取消從第一窗口起連續(xù)的i個窗口的每個 中出現(xiàn)的隨機(jī)數(shù)R各自的進(jìn)位運(yùn)算造成的影響。
這里,也可以是,所述各窗口中含有的比特數(shù)是u(u是1以上的整數(shù)), 所述窗口的個數(shù)是lend / u個,值lend是所述值d的比特長度以上的2的 冪數(shù)中的最小值;所述值v滿足lend=2v,所述第一窗口是開頭窗口,所 述第二窗口是從開頭窗口起位于第lend / 2u+1的窗口 ;將從開頭窗口開始 的lend/2u個窗口、和從開頭起第lend/2u+l窗口開始到末尾的窗口為 止的lend/2u個窗口分割為由i個窗口構(gòu)成的第1到第P組、和第p+l到 第m組;所述取得部進(jìn)一步針對第1到第P組,在運(yùn)算對象從運(yùn)算對象的 組改變?yōu)橄乱唤M時,取得與運(yùn)算對象的變更之前剛使用的隨機(jī)數(shù)不同的隨 機(jī)數(shù);所述窗口運(yùn)算部針對第1到第P組的每一個,在該組為運(yùn)算對象期 間,分別對該組中含有的窗口,取得使用了所述取得部取得的隨機(jī)數(shù)的窗 口運(yùn)算所得到的運(yùn)算值;所述取得部在將第p+l到第m組中含有的第m' 組作為運(yùn)算對象時,取得與在第(m' —p)組中使用的隨機(jī)數(shù)相對應(yīng)的取 消值;所述窗口運(yùn)算部在以所述第m'組為運(yùn)算對象期間,取得使用在所 述取得部取得的取消值的窗口運(yùn)算所得到的運(yùn)算值。
根據(jù)該結(jié)構(gòu),信息安全裝置分別使第1到第P組與該組開始第p處的組相對應(yīng)。由此,信息安全裝置分別在第1到第P組中,可以通過使用第 P處的組中與該隨機(jī)數(shù)對應(yīng)的取消值來可靠地去除通過窗口運(yùn)算部的窗口 運(yùn)算進(jìn)位運(yùn)算部對所出現(xiàn)的隨機(jī)數(shù)的進(jìn)位驗(yàn)算所得到的運(yùn)算結(jié)果。
這里,也可以是,所述取得部使P個彼此不同的隨機(jī)數(shù)與分別對應(yīng)于 隨機(jī)數(shù)的取消值相對應(yīng)地預(yù)先存儲,針對所述第1到第P組的每一個,通 過從該組成為運(yùn)算對象時在當(dāng)前時刻未選擇的1個以上的隨機(jī)數(shù)中選擇1
個隨機(jī)數(shù),來取得該組中使用的隨機(jī)數(shù);針對所述第m'組,通過選擇與 第(m, 一p)組中使用的隨機(jī)數(shù)相對應(yīng)的取消值,來取得在該第m,組中 使用的取消值。
根據(jù)該結(jié)構(gòu),信息安全裝置由于預(yù)先存儲p個彼此不同的隨機(jī)數(shù)和與 隨機(jī)數(shù)分別對應(yīng)的取消值,所以不需要在每次成為對象的組改變時生成隨 機(jī)數(shù)或取消值,所以可以縮短算出冪運(yùn)算d&X的處理時間。
這里,也可以是,所述取得部在所述不同隨機(jī)數(shù)的取得時,對當(dāng)前時 刻保持的隨機(jī)數(shù)R進(jìn)行對于預(yù)定數(shù)q的乘冪運(yùn)算R a q,并將該乘冪運(yùn)算R 八q的運(yùn)算結(jié)果再次作為隨機(jī)數(shù)R加以保持;在取消值的取得時,對當(dāng)前 時刻保持的取消值S進(jìn)行對于所述預(yù)定數(shù)q的乘冪運(yùn)算S a q,而將該乘冪 運(yùn)算S 、再次作為取消值S加以保持。
根據(jù)該結(jié)構(gòu),信息安全裝置可以通過使用所保持的隨機(jī)數(shù)或取消值, 來容易生成不同的隨機(jī)數(shù)或取消值。
這里,也可以是,所述取得部預(yù)先存儲第一種子值U與作為所述第一 種子值U相對所述值v的冪運(yùn)算(v&2) &1;的取消值的第二種子值丫; 所述取得部在進(jìn)行對所述第一組的運(yùn)算之前,生成隨機(jī)數(shù)r,并在所述第一、 和第二種子值U、 V中,分別將實(shí)施了對隨機(jī)數(shù)r的乘冪運(yùn)算后的值作為 隨機(jī)數(shù)R和取消值S加以保持。
根據(jù)該結(jié)構(gòu),信息安全裝置可以通過預(yù)先存儲第一和第二種子值,來 節(jié)約存儲容量。另外,信息安全裝置在對第一組的運(yùn)算之前,生成隨機(jī)數(shù)r, 并使用所生成的隨機(jī)數(shù)r、第一和第二種子值,來生成隨機(jī)數(shù)R和取消值S。 由此,信息安全裝置可以對多個對象數(shù)據(jù)的每個,改變在第一組中使用的 隨機(jī)數(shù)和與該隨機(jī)數(shù)對應(yīng)的取消值。因此,私鑰的分析者即使使用多個對 象數(shù)據(jù),從對這些對象數(shù)據(jù)的功率波形中分析私鑰,由于對于每個對象數(shù)
17據(jù)在主運(yùn)算單元中使用的隨機(jī)數(shù)不同,所以其功率波形不同,值d的分析 變困難。
這里,也可以是,所述各組由l個窗口構(gòu)成。
根據(jù)該結(jié)構(gòu),信息安全裝置按照每個窗口使用不同的隨機(jī)數(shù)來進(jìn)行運(yùn) 算。即,由于按照每個窗口功率波形不同,所以值d的分析變困難。 這里,也可以是,所述窗口是l比特長度。
根據(jù)該結(jié)構(gòu),信息安全裝置即使在按每1比特來分割私鑰而算出冪運(yùn)
算d&X的二進(jìn)制法中,在對所有比特的運(yùn)算結(jié)束后也不需要去除隨機(jī)數(shù)R 的影響的取消處理。即信息安全裝置在使用了二進(jìn)制法的情況下,也可與 現(xiàn)有技術(shù)相比,減少了對冪運(yùn)算d&X的處理時間。
這里,也可以是,所述取得部還在以所述第一窗口到所述第二窗口之 間存在的第三窗口為對象時,將所述隨機(jī)數(shù)R取得與所述隨機(jī)數(shù)R不同的 隨機(jī)數(shù)R';所述取得部還取得取消值S',該取消值S'取消從所述第三窗 口到該第二窗口為止對所述隨機(jī)數(shù)R'進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn)算 因數(shù),并將該取消值S'與所述取消值S—起加以保持,所述窗口運(yùn)算部 在所述第三窗口中,進(jìn)行基于對其窗口值w和元X進(jìn)行的冪運(yùn)算w&X的 運(yùn)算結(jié)果、所述隨機(jī)數(shù)R'和變量Z的窗口運(yùn)算,并將其運(yùn)算結(jié)果作為變 量Z,在所述第二窗口中,還取得使用了所述取消值S'的窗口運(yùn)算所得到 的運(yùn)算值。
根據(jù)該結(jié)構(gòu),信息安全裝置通過在第三窗口使與隨機(jī)數(shù)R不同的隨機(jī) 數(shù)R,出現(xiàn)在窗口運(yùn)算部的窗口運(yùn)算中,從而可以使值d的分析進(jìn)一步變 困難。另外,信息安全裝置由于在第二窗口中去除了對隨機(jī)數(shù)R和R'進(jìn) 行的進(jìn)位運(yùn)算所造成的運(yùn)算結(jié)果,所以與現(xiàn)有技術(shù)相比,可以減少對冪運(yùn) 算d&X的處理時間。
這里,也可以是,所述取得部通過預(yù)先保持對所述取消值S和S'施 加了基本運(yùn)算后的值T,來保持所述取消值S和S';所述取得部通過在所 述第二窗口作為運(yùn)算對象時,取得所述值T,來取得所述取消值S和S'。
根據(jù)該結(jié)構(gòu),由于信息安全裝置預(yù)先存儲對取消值S和S'施加了基 本運(yùn)算后的值T,所以在冪運(yùn)算d&X的算出時不需要算出取消值S和S', 可縮短對冪運(yùn)算d&X的處理時間。
18這里,也可以是,所述取得部預(yù)先保持所述取消值s和s',通過實(shí)施
使用了所述取消值S和S'的基本運(yùn)算來算出并取得值T,由此取得所述取 消值S和S'。
根據(jù)該結(jié)構(gòu),信息安全裝置由于預(yù)先存儲取消值S和S',所以在冪運(yùn) 算d&X的算出時,不需要算出取消值S和S',所以可以縮短對冪運(yùn)算d
&乂的處理時間。 1.實(shí)施方式l
下面,參考附圖來說明本發(fā)明的實(shí)施方式1中的乘冪運(yùn)算裝置1000。
1. l準(zhǔn)備
乘冪運(yùn)算裝置1000在例如RSA加密方式的解密或RSA簽名方式的簽 名生成中加以使用。下面,說明RSA加密方式和RSA簽名方式。
(1) RSA加密方式
(l一l)密鑰的生成 如下面所示,計算公鑰和私鑰。
(順序1 —1)
隨機(jī)選擇較大的質(zhì)數(shù)p, q,并計算其積n二pXq。 (順序1一2)
計算(p—l)和(q—1)的最小公倍數(shù)L二LCM (p—l, q—l)。 (順序1一3)
隨機(jī)選擇與L彼此為質(zhì)且比L小的自然數(shù)e。
1^e^L一l、 GCD (e, L) =1
這里,GCD (e, L)表示e與L的最大公約數(shù)。
(順序l一4) 計算滿足eXd二lmodL的d。
因GCD (e, L) =1,則這種d必然存在。由此,所得到的整數(shù)e和 整數(shù)n是公鑰。整數(shù)d是私鑰。這里,xmody表示用y除x后的余數(shù)。 (l一2)密文的生成 使用作為公鑰的整數(shù)e和整數(shù)n,對明文m實(shí)施加密運(yùn)算來計算密文
<formula>formula see original document page 19</formula>另外,在該說明書中,運(yùn)算符a表示乘冪。例如,AAx表示x〉0時 將A進(jìn)行x次相乘后的值。 (l一3)解密文的生成 使用作為私鑰的整數(shù)d,對密文c實(shí)施解密運(yùn)算而算出解密文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—致。
乘冪運(yùn)算裝置1000在該解密文生成中的根據(jù)上述c算出m'的地方加 以使用。這時,乘冪運(yùn)算裝置1000中,將對象數(shù)據(jù)作為c,并使用私鑰d, 來算出m, =cA(imodn。
對于RSA加密,在非專利文獻(xiàn)3的110 113頁中詳細(xì)進(jìn)行了說明。 (2) RSA簽名方式 (2—1)密鑰的生成 密鑰的生成方法與RSA加密方式相同。
(2—2)簽名生成 消息數(shù)據(jù)D如下這樣來計算簽名數(shù)據(jù)S。
首先,使用散列函數(shù)Hash,來計算消息數(shù)據(jù)D的散列值h二Hash(D)。 接著,使用作為私鑰的整數(shù)d,對散列值h進(jìn)行d次冪,而算出簽名
數(shù)據(jù)S。
S=h八dmodn
(2—3)簽名驗(yàn)證 如下這樣來驗(yàn)證簽名數(shù)據(jù)S是否是消息數(shù)據(jù)D的正確簽名。 確認(rèn)Hash (D)與SAemodn是否相等。在相等的情況下,將簽名數(shù)
據(jù)S作為正確的簽名來受理。在不相等的情況下,將簽名數(shù)據(jù)S作為不正
確的簽名加以拒絕。
乘冪運(yùn)算裝置1000在上述簽名生成中的根據(jù)h算出S的地方加以使用。這時,乘冪運(yùn)算裝置1000中將對象數(shù)據(jù)作為h,并使用私鑰d,來算 出S=IT dmodn。
對于RSA簽名,在非專利文獻(xiàn)3的175 176頁中詳細(xì)加以說明。
1.2乘冪運(yùn)算裝置1000的結(jié)構(gòu)
圖1是表示乘冪運(yùn)算裝置1000的結(jié)構(gòu)的圖。
乘冪運(yùn)算裝置1000是輸入作為進(jìn)行乘冪的對象數(shù)據(jù)的對象數(shù)據(jù)X,并 對對象數(shù)據(jù)輸出將私鑰d作為冪值的乘冪運(yùn)算結(jié)果(X^d)的裝置。
乘冪運(yùn)算裝置1000如圖1所示,包括輸入輸出部1010、私鑰存儲部 1020、計數(shù)器存儲部1030、計數(shù)器初始化部1040、計數(shù)器更新部1050、第 一計數(shù)器判斷部1060、第二計數(shù)器判斷部1070、第三計數(shù)器判斷部1080、 比特判斷部1090、乘法部1100—0 1100—31、 二次冪運(yùn)算部1110、中間 值存儲部1120、乘數(shù)群存儲部1130、隨機(jī)數(shù)群存儲部1140、乘數(shù)群設(shè)置部 1150—0 1150—31、乘數(shù)群更新部1160與隨機(jī)數(shù)選擇信息生成部1170。
在下面的說明中,描述的xj表示對x添加了下標(biāo)y。
(1) 中間值存儲部1120
中間值存儲部1120具有存儲對象數(shù)據(jù)X和乘冪運(yùn)算時的中間值Z的 區(qū)域。
(2) 輸入輸出部1010
輸入輸出部1010在從外部接收對象數(shù)據(jù)X后,將所接收的對象數(shù)據(jù)X 存儲到中間值存儲部1120。
輸入輸出部1010對中間值Z設(shè)置值"1"作為初始值,并存儲到中間值 存儲部1120中。
輸入輸出部1010在對象數(shù)據(jù)X的乘冪運(yùn)算結(jié)束后,從第一計數(shù)器判 斷部1060取得運(yùn)算結(jié)束的內(nèi)容。輸入輸出部IOIO之后將中間值存儲部1120 中存儲的中間值Z作為乘冪運(yùn)算結(jié)果輸出。
(3) 私鑰存儲部1020 私鑰存儲部1020存儲私鑰d。 設(shè)私鑰d為512比特的整數(shù)。
(4) 乘數(shù)群存儲部1130
乘數(shù)群存儲部1130存儲乘法部1100—0 1100—31中使用的乘數(shù)群
21MT一0 MT一31。
具體來說,乘數(shù)群存儲部1130如圖2所示,存儲由乘數(shù)值X_iO和X_il 構(gòu)成的乘數(shù)群MT—i。這里,i是0以上31以下的整數(shù)。
(5) 隨機(jī)數(shù)群存儲部1140
隨機(jī)數(shù)群存儲部1140存儲隨機(jī)數(shù)群RT—0 RT—15。 具體來說,隨機(jī)數(shù)群存儲部1140如圖3所示,存儲由隨機(jī)數(shù)RJ和隨 機(jī)數(shù)去除數(shù)S_i構(gòu)成的隨機(jī)數(shù)群RT_i。這里,i是0以上15以下的整數(shù)。 隨機(jī)數(shù)R—i與隨機(jī)數(shù)去除數(shù)S—i滿足下面的關(guān)系。 S—i=R—i a ( —2 a 256 ) mod n
艮P,滿足R—廠(2^ 256) XS—i-l的關(guān)系。這里,n是RSA加密中 的較大的質(zhì)數(shù)p, q的積。
(6) 計數(shù)器存儲部1030 計數(shù)器存儲部1030存儲乘冪運(yùn)算時所用的計數(shù)器(count)的值。
(7) 計數(shù)器初始化部1040
計數(shù)器初始化部1040在乘冪運(yùn)算的開始時,將計數(shù)器count設(shè)置為初 始值(lend—l)。
這里,如上所述,lend是私鑰d的比特大小,本實(shí)施方式中,lend= 512。這里,lend是私鑰d的比特大小本身,但是也可以是作為私鑰d能夠 輸入的比特數(shù)。例如,作為私鑰d的比特大小假定是512比特,但是實(shí)際 上,私鑰d的比特大小也可以是比512小的比特數(shù)、例如,510比特。該情 況下,作為私鑰d能夠輸入的比特數(shù)是lend二512。 g卩,lend是作為私鑰d 的比特大小以上的2的冪數(shù)即可,例如,lend是作為私鑰d的比特大小以 上的2的冪數(shù)中的最小數(shù)。lend可以是作為私鑰d的比特大小以上的2的 倍數(shù),例如,lend是作為私鑰d的比特大小以上的2的倍數(shù)中的最小數(shù)。
(8) 計數(shù)器更新部1050
計數(shù)器更新部1050更新計數(shù)器存儲部1030中存儲的計數(shù)器count的值。
具體來說,計數(shù)器更新部1050在從第二計數(shù)器判斷部1070、第三計 數(shù)器判斷部1080和乘數(shù)群設(shè)置部1150 — 0 1150 — 31接收進(jìn)行計數(shù)器 count值的更新的更新指示后,遞減(減去1)計數(shù)器存儲部1030中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲到計數(shù)器存儲 部1030中。
(9) 第一計數(shù)器判斷部1060
第一計數(shù)器判斷部1060判斷計數(shù)器存儲部1030中存儲的計數(shù)器count 的值是否為0。
在判斷為是0的情況下,第一計數(shù)器判斷部1060向輸入輸出部1010 通知運(yùn)算結(jié)束。
在判斷為不是0的情況下,第一計數(shù)器判斷部1060向第三計數(shù)器判斷 部1080通知進(jìn)行判斷的指示。
(10) 第三計數(shù)器判斷部1080
第三計數(shù)器判斷部1080在從第一計數(shù)器判斷部1060接收了進(jìn)行判斷 的指示后,判斷計數(shù)器存儲部1030中存儲的計數(shù)器count的值是否可被16 整除,即,判斷是否是16的倍數(shù)。
在判斷為可被16整除的情況下,第三計數(shù)器判斷部1080將計數(shù)器的 更新指示通知給計數(shù)器更新部1050。
在判斷為不能被16整除的情況下,第三計數(shù)器判斷部1080向第二計 數(shù)器判斷部1070通知進(jìn)行判斷的指示。
(11) 第二計數(shù)器判斷部1070
第二計數(shù)器判斷部1070在從第三計數(shù)器判斷部1080接收進(jìn)行判斷的 指示后,判斷計數(shù)器存儲部1030中存儲的計數(shù)器count的值是否可被8整 除,即,是否是8的倍數(shù)。
在判斷為計數(shù)器count的值可被8整除的情況下,第二計數(shù)器判斷部 1070向乘數(shù)群更新部1160通知進(jìn)行在乘數(shù)群存儲部1130中存儲的乘數(shù)群 MT_i的更新的更新指示。這里,i是(lend—count—1) / 16以下的最大整數(shù)。
在判斷為計數(shù)器count的值不能被8整除的情況下,第二計數(shù)器判斷 部1070向計數(shù)器更新部1050通知計數(shù)器的更新指示。
(12) 比特判斷部1090
比特判斷部1090使用計數(shù)器存儲部1030中存儲的計數(shù)器count,來判 斷私鑰存儲部1020中存儲的私鑰d的第count比特的值是0還是1。
23這里,所謂私鑰d的第count比特表示從低位比特起依次數(shù)時的順序、 即第count個。其中,設(shè)最低位比特為第0比特(第0個)。
(13) 乘法部1100—0 1100—31
由于乘法部1100—0 1100—31進(jìn)行同樣的動作,所以這里說明乘法 部1100—i。另外,i是0以上31以下的整數(shù)。
乘法部1100—i將中間值存儲部1120中存儲的中間值Z與乘數(shù)群存儲 部1130中存儲的乘數(shù)群MT一i中存儲的乘數(shù)值X_iO或乘數(shù)值X一il相乘, 并將其乘法結(jié)果存儲到中間值存儲部1120。
具體來說,乘法部llOO—i在基于比特判斷部1090判斷為第count個 比特是0的情況下,將中間值Z與乘數(shù)值X—iO相乘。乘法部1100—i在基 于比特判斷部1090判斷為第count個比特是1的情況下,將中間值Z與乘 數(shù)值Xjl相乘。
這里,乘法部1100—i在將中間值Z和乘數(shù)值X一i0相乘的情況下,執(zhí) 行Z—ZXX—i0modn。乘法部1100—i在將中間值Z與乘數(shù)值Xjl相乘的 情況下,執(zhí)行Z—ZXXJlmodn。這里,一是指將右邊的計算結(jié)果代入到 左邊的變量。
(14) 二次冪運(yùn)算部1110
二次冪運(yùn)算部1110對中間值存儲部1120中存儲的中間值Z進(jìn)行二次 冪運(yùn)算,并將二次冪運(yùn)算后的結(jié)果存儲到中間值存儲部1120中。 具體來說,二次冪運(yùn)算部1110執(zhí)行Z—ZA2modn。
(15) 隨機(jī)數(shù)選擇信息生成部1170
隨機(jī)數(shù)選擇信息生成部1170生成隨機(jī)數(shù)選擇信息,該隨機(jī)數(shù)選擇信息 是用于選擇乘數(shù)群設(shè)置部1150—1 1150—32中使用的隨機(jī)數(shù)或隨機(jī)數(shù)去 除數(shù)的信息。
隨機(jī)數(shù)選擇信息生成部1170暫時保持所生成的隨機(jī)數(shù)選擇信息。 具體來說,隨機(jī)數(shù)選擇信息生成部1170生成依次排列隨機(jī)數(shù)R_k或 S一k的添標(biāo)k后的數(shù)組。這里,配置該數(shù)組,使得16個要素包含0到15 的所有值,并具有作為該16個要素的2次重復(fù)的32個要素。
例如,隨機(jī)數(shù)選擇信息生成部1170生成數(shù)組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})。這里,設(shè)該數(shù)組從第0開始,將第i 要素設(shè)作RSI—i。在該例的情況下,第0要素(RSI—0)是"14"。需要隨機(jī) 產(chǎn)生該數(shù)組。
這里,使用圖4中所示的流程圖來說明隨機(jī)產(chǎn)生的方法的例子。
隨機(jī)數(shù)選擇信息生成部1170隨機(jī)產(chǎn)生0到16! _1 (=20, 922, 789, 887, 999)值中的1個值RSIS (步驟S5)。
隨機(jī)數(shù)選擇信息生成部1170將所產(chǎn)生的值RSIS設(shè)置為Y(Y—RSIS), 并設(shè)置所有值是16的由16個要素構(gòu)成的數(shù)組V (V—{16, 16,, 16}) (步驟SIO)。這里,設(shè)數(shù)組V從第O開始,并將第i要素設(shè)作Vj。
隨機(jī)數(shù)選擇信息生成部1170將計數(shù)器cnt設(shè)置為16 (步驟S15)。
隨機(jī)數(shù)選擇信息生成部1170將用cnt除Y后的商設(shè)作YS,將余數(shù)設(shè) 作YR (步驟S20)。
隨機(jī)數(shù)選擇信息生成部1170將具有數(shù)組V的16的值的要素中,第 YR的要素設(shè)置為cnt—l (步驟S25)。
隨機(jī)數(shù)選擇信息生成部1170將步驟S20中得到的商YS設(shè)置為Y (步 驟S30)。 S卩,隨機(jī)數(shù)選擇信息生成部1170執(zhí)行Y—YS。
隨機(jī)數(shù)選擇信息生成部1170判斷cnt的值是否是2 (步驟S35)。
在判斷為cnt的值不是2的情況下,(步驟S35中的"否")、隨機(jī)數(shù)選 擇信息生成部1170遞減(減去1)計數(shù)器cnt,并將運(yùn)算結(jié)果再次設(shè)置為計 數(shù)器cnt的值(步驟S40),并返回到步驟S20。 g卩,隨機(jī)數(shù)選擇信息生成 部1170執(zhí)行cnt—cnt—l。
在判斷為cnt的值是2的情況下(步驟S35中的"是"),隨機(jī)數(shù)選擇 信息生成部1170對數(shù)組V的各要素中具有值"16"的要素,設(shè)置值"0" (步驟S45)。
隨機(jī)數(shù)選擇信息生成部1170針對作為0以上15以下的整數(shù)的i的每 一個,對RSI—i和RSI— (i+16)設(shè)置V—i的值(RSI_i—Y—i、 RSI— (i+16) —Yj),并暫時保持?jǐn)?shù)組RSI (= {RSI—0、 RSI_1、…、RSI_31})(步驟 S50)。
在上述所示的方法中,隨機(jī)數(shù)選擇信息生成部1170隨機(jī)產(chǎn)生0到16! _1的值中的1個值RSIS,并將RSIS變換為Ti,使其滿足以下的關(guān)系。
25T_i表示cnt為i時在步驟S20中得到的值YR。
RSIS= (16X15X…X3) XT_2H-----hl6X 15 XTJ4+16XT—15 +
T一16
這里,T—i是0以上i—1的整數(shù),i是0以上15以下的整數(shù)。 該變換一一對應(yīng)。進(jìn)一步,使用T一i,將數(shù)組V的具有16的值的要素 值替換為15到1,并將其余的具有16的值的要素值替換為0,從而生成具 有隨機(jī)的16個要素的數(shù)組。可以通過排列2個該數(shù)組,生成隨機(jī)數(shù)選擇信 息。
除了上述所描述的方法之外,只要是可隨機(jī)產(chǎn)生的方法即可。其中, 從安全性的觀點(diǎn)來看,最好是上述方法這種具有16!個變分(variation) 的產(chǎn)生方法。
(16) 乘數(shù)群設(shè)置部1150—0 1150—31
由于乘數(shù)群設(shè)置部1150—0 1150—31進(jìn)行同樣的動作,所以這里說 明乘數(shù)群設(shè)置部1150—i。 i是O以上31以下的整數(shù)。
乘數(shù)群設(shè)置部1150 — i初始化乘數(shù)群存儲部1130中存儲的乘數(shù)群 MT_i。
具體來說,乘數(shù)群設(shè)置部1150—i對對象數(shù)據(jù)X,根據(jù)通過隨機(jī)數(shù)選 擇信息生成部1170生成的隨機(jī)數(shù)選擇信息RSI的第i要素RSI一i,在計數(shù) 器count的值是256以上的情況下,使用隨機(jī)數(shù)群存儲部1140中存儲的隨 機(jī)數(shù)群RT— (RSI—i)的隨機(jī)數(shù)R— (RSIj),來算出X—iO和X—il。
乘數(shù)群設(shè)置部1150—i在count比256小的情況下,使用隨機(jī)數(shù)去除數(shù) S— (RSI—i),來算出X—iO和X—il。
乘數(shù)群設(shè)置部1150—i在XjO和X一il的算出時,執(zhí)行X_iO—RS mod n、 X—il—XXX_i0modn。這里,RS是R— (RSI—i)或S— (RSI—i)。
(17) 乘數(shù)群更新部1160
乘數(shù)群更新部1160在從第二計數(shù)器判斷部1070接收進(jìn)行乘數(shù)群MT—i 的更新的更新指示后,更新乘數(shù)群存儲部1130中存儲的乘數(shù)群MTj的乘 數(shù)值XjO和X_il 。 MT_i是之前通過乘數(shù)群設(shè)置部1150—i設(shè)置的乘數(shù)群。
具體來說,乘數(shù)群更新部1160執(zhí)行Xj0— (X_i0) a 2 mod n, X_il —XXX一iOmodn。
261.3乘冪運(yùn)算裝置1000的動作 (1)整體的動作
這里,使用圖5和圖6所示的流程圖來說明乘冪運(yùn)算裝置1000的動作。 輸入輸出部1010受理對象數(shù)據(jù)X的輸入,并將所受理的對象數(shù)據(jù)X
存儲到中間值存儲部1120 (步驟SIOO)。
輸入輸出部1010將中間值Z設(shè)置為1,并存儲到中間值存儲部1120
中(步驟S105)。
隨機(jī)數(shù)選擇信息生成部1170生成由32個隨機(jī)數(shù)選擇信息構(gòu)成的數(shù)組 RSI (= {RSI—0、 RSIJ、、 RSI_31}),并暫時保持所生成的數(shù)組RSI (步驟SllO)。
計數(shù)器初始化部1040初始化計數(shù)器count (步驟S115)。這里,計數(shù) 器初始化部1040將計數(shù)器count設(shè)置為lend— 1 。這里,lend是私鑰d的比特數(shù)。
乘數(shù)群設(shè)置部1150_i使用對象數(shù)據(jù)X、隨機(jī)數(shù)選擇信息生成部1170 中存儲的隨機(jī)數(shù)選擇信息和隨機(jī)數(shù)群存儲部1140中存儲的隨機(jī)數(shù)群,來初 始化乘數(shù)群存儲部1130中存儲的MT—i, B卩,初始化乘數(shù)值X—i0與X_il (步驟S120)。這里,i是(lend—count—1) / 16以下的最大整數(shù)。
二次冪運(yùn)算部lllO對中間值存儲部1120中存儲的中間值Z進(jìn)行二次 冪運(yùn)算,并將其結(jié)果作為Z存儲在中間值存儲部1120中(步驟S125)。
比特判斷部1090判斷私鑰d的比特(步驟S130)。具體來說,比特判 斷部1090進(jìn)行私鑰d中的第count比特是0還是1的判斷。
在判斷為0的情況下(步驟S130中的"0")、乘法部1100—i將中間 值存儲部1120中存儲的中間值Z與乘數(shù)群存儲部1130中存儲的乘數(shù)群 MT—i的乘數(shù)值X_iO相乘,并將其結(jié)果作為中間值Z存儲在中間值存儲部 1120中(步驟S135)。在判斷為是l的情況下(步驟S130中的"l"),乘 法部1100—i將中間值存儲部1120中存儲的中間值Z與乘數(shù)群存儲部1130 中存儲的乘數(shù)值X—il相乘,并將其結(jié)果作為中間值Z存儲在中間值存儲部 1120中(步驟S140)。這里,i是(lend—count—1) / 16以下的最大整數(shù)。
第一計數(shù)器判斷部1060判斷計數(shù)器存儲部1030中存儲的計數(shù)器count 的值是否是0 (步驟S145)。
27在判斷為計數(shù)器count是0的情況下(步驟S145中的"是")、輸入輸 出部1010輸出中間值存儲部1120中存儲的中間值Z (作為乘冪運(yùn)算結(jié)果 (步驟S175)。
在判斷為計數(shù)器count不是0的情況下(步驟S145中的"否")、第三 計數(shù)器判斷部1080判斷是否可用16整除計數(shù)器存儲部1030中存儲的計數(shù) 器count的值,即判斷計數(shù)器count的值是否是16的倍數(shù)(步驟S150)。
在判斷為可用16整除計數(shù)器count的值的情況下(步驟S150中的 "是"),計數(shù)器更新部1050更新計數(shù)器存儲部1030中存儲的計數(shù)器count (步驟S170)。具體來說,計數(shù)器更新部1050遞減(減l)計數(shù)器存儲部 1030中存儲的計數(shù)器coimt,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲 到計數(shù)器存儲部1030中。之后,處理返回到步驟S120。
在判斷為不能用16整除計數(shù)器count的值的情況下(步驟S150中的 "否"),第二計數(shù)器判斷部1070判斷計數(shù)器存儲部1030中存儲的計數(shù)器 count的值是否可被8整除,即計數(shù)器count的值是否是8的倍數(shù)(步驟 S155)。
在判斷計數(shù)器count的值可被8整除的情況下(步驟S155中的"是"), 乘數(shù)群更新部1160更新乘數(shù)群存儲部1130中存儲的乘數(shù)群MT_i (步驟 S160)。這里,i是(lend—count—1) / 16以下的最大整數(shù)。
計數(shù)器更新部1050更新計數(shù)器存儲部1030中存儲的計數(shù)器count(步 驟S165)。具體來說,計數(shù)器更新部1050遞減(減l)計數(shù)器存儲部1030 中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲到計 數(shù)器存儲部1030中。之后,處理返回到步驟S125。
在判斷為計數(shù)器count的值不能被8整除的情況下(步驟S155中的 "否"),處理進(jìn)入到步驟S165,在歩驟S165的執(zhí)行后,返回到步驟S125。 (2) MT一i的初始化處理
這里,使用圖7所示的流程圖來說明圖5的步驟S120中進(jìn)行的乘數(shù)群 MT_i的初始化處理。
乘數(shù)群設(shè)置部1150—i判斷計數(shù)器count的值是否是256以上(步驟 S200)。這里,i是(lend—count—1) / 16以下的最大整數(shù)。
在判斷為計數(shù)器count的值是256以上的情況下(步驟S200中的"是"),乘數(shù)群設(shè)置部1150—i從數(shù)組RSI取得第i要素RSI一i,并根據(jù)所取得的 RSI_i,從隨機(jī)數(shù)群RT1 (RSI一i)中取得隨機(jī)數(shù)11_ (RSI—i)(步驟S205)。
乘數(shù)群設(shè)置部1150—i將所取得的隨機(jī)數(shù)R一 (RSI_i)設(shè)置為乘數(shù)值 X一i0 (步驟S210)。乘數(shù)群設(shè)置部1150—i將乘數(shù)值XJ0乘以對象數(shù)據(jù)X 后的結(jié)果設(shè)置為乘數(shù)值XJ1 (步驟S215)。
在判斷為計數(shù)器count的值不是256以上,即比256小的情況下(步 驟S200中的"否"),乘數(shù)群設(shè)置部1150 _i從數(shù)組RSI中取得第i要素RSI—i, 并根據(jù)所取得的RSI—i,從隨機(jī)數(shù)群RT一 (RSI—i)中取得隨機(jī)數(shù)去除數(shù)S (RSI—i)(步驟S220)。
乘數(shù)群設(shè)置部1150—i將所取得的隨機(jī)數(shù)去除數(shù)S (RSI一i)設(shè)置為乘 數(shù)值Xj0 (步驟S225)。乘數(shù)群設(shè)置部1150—i將乘數(shù)值XjO乘以對象數(shù) 據(jù)X后的結(jié)果設(shè)置為乘數(shù)值X—il (步驟S230)。 (3) MT一i的更新處理
這里,使用圖8中所示的流程圖來說明圖6的步驟S160中進(jìn)行的乘數(shù) 群MTj的更新處理。
乘數(shù)群更新部1160對乘數(shù)群存儲部1130中存儲的MT—i中含有的X—i0 進(jìn)行二次冪運(yùn)算,并將其結(jié)果再次設(shè)作X一i0 (步驟S300)。
乘數(shù)群更新部1160將X—i0乘以對象數(shù)據(jù)X,并將其結(jié)果設(shè)作Xjl(步 驟S305)。
這里,i是(lend—count—l) / 16以下的最大整數(shù)。 1.4實(shí)施方式l的效果
在實(shí)施方式1中,乘冪運(yùn)算裝置1000如從圖5和圖6的步驟S120、 S150和S170可看出的那樣,將私鑰d的比特串分割為以16比特為1組的 32個塊,并對每個塊分配乘數(shù)群的索引。
進(jìn)一步,乘冪運(yùn)算裝置1000將由16比特構(gòu)成的塊分割為以8比特為 1組的2個子塊,并使用分配給原塊的乘數(shù)群,來對2個子塊分別分配不同 乘法數(shù)。
例如,如圖9所示,將由512比特構(gòu)成的私鑰d的比特串設(shè)作塊0、 塊l、、塊30、塊31,并將各塊分割成2個子塊。這里,對塊i分配乘 數(shù)群MT—i。圖9中,表示將塊0分割成子塊0—l與子塊0—2。 乘冪運(yùn)算裝置1000對子塊0—1使用圖5所示的步驟S120中初始化后 的MT—0中含有的X—00 (=R—0)、或X—01 (=XXX—00)。具體來說,乘 冪運(yùn)算裝置1000在子塊0_1中含有的私鑰d的比特d一i是0的情況下, 將X—00乘以中間值Z,并在私鑰d的比特d—i是1的情況下,將X_01乘
以中間值z。
乘冪運(yùn)算裝置1000對子塊0_2使用圖6中表示的步驟S160中更新后 的MT—0中含有的XJ)O, (= (X—00)八2 (= (R_0)八2))、或XJU, (=XX (X—00) a 2)。具體來說,乘冪運(yùn)算裝置1000在塊0—1中含有 的私鑰d的比特d—i是O的情況下,將XJ)O'乘以中間值Z,在私鑰d的
比特d—i是i的情況下,將x一or乘以中間值z。
這樣,在實(shí)施方式l中,在乘數(shù)群更新部1160中,按照私鑰d的每8 比特的塊,更新(變更)乘以中間值Z的乘數(shù)值XJ)、 X—1。由此,由于 使每個子塊乘法數(shù)不同,所以可以防止通過分析乘法數(shù)是什么,而求出私 鑰d的BigMac攻擊。
下面,進(jìn)行詳細(xì)說明。
圖10表示實(shí)施方式1的乘冪運(yùn)算裝置1000對私鑰d的處理與攻擊者 進(jìn)行的乘數(shù)的分類和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的整數(shù),j是503到496的整數(shù)。
這里,攻擊者可以從消耗功率波形將波形分類為子塊0—1中乘數(shù)彼此 不同的組al和bl、子塊0—2中乘數(shù)彼此不同的組a2和b2。但是,攻擊 者不知道組al和bl的哪一個中d—i的比特對應(yīng)于0、 1,組a2和b2的哪 一個中dj的比特對應(yīng)于O、 1。因此,攻擊者需要假定為各個子塊內(nèi)某個 組對應(yīng)于比特值O (或1),并確認(rèn)是否正確。由于al、 bl與比特值O、 1 對應(yīng)的模式有2種,a2、 b2對應(yīng)于比特值0、 1的模式有2種,所以各自的 組合有2X2=4種。因此,攻擊者需要嘗試4種。這里,若設(shè)子塊的個數(shù)為NB,則攻擊者需要嘗試2 a NB種。若NB變大,則要花費(fèi)攻擊者嘗試 的相應(yīng)的時間,對BigMac攻擊的安全性提高。例如,在設(shè)私鑰d為512 比特的整數(shù)時,8比特的塊存在512/8=64個。因此,攻擊者需要嘗試2 ^64種,由于花費(fèi)了攻擊者嘗試的時間,所以對BigMac攻擊的安全性提 高。這樣,可以防止BigMac攻擊。
另外,實(shí)施方式1的乘冪運(yùn)算裝置1000通過對低位比特(d—255 d—0) 的運(yùn)算(乘數(shù)運(yùn)算),來抵消對私鑰d的高位比特(d_511 d_256)的運(yùn)算 時出現(xiàn)的隨機(jī)數(shù)R—0到R—15各自的影響。
下面,進(jìn)行該說明。
這里,為說明上的方便,將數(shù)組RSI設(shè)為{0、 1、 2、…14、 15、 0、 1、 2、…、14、 15}、即從0到15的整數(shù)排列而成的數(shù)組排列了2個后形成的 數(shù)組。
換而言之,設(shè)RT一i對應(yīng)于(lend—count—1) /16以下的最大整數(shù)i。
如圖11所示,在count=511時,即,i=0時,通過執(zhí)行圖5中的步 驟S135或S140,中間值Z中出現(xiàn)XJ)0(二R—0)。這時出現(xiàn)的R_0在count =510到255之間,通過步驟S125進(jìn)行二次冪運(yùn)算。即,R_0進(jìn)行256次 的二次冪運(yùn)算,其結(jié)果成為RJT (2^ 256)。因此,在count=255時的步 驟S125中,中間值Z中包含乘數(shù)RJT (2^ 256)。另外,在count二255 時的步驟S115中,如圖7所示,乘數(shù)值XJ60和X_161中含有S_(RSI_16) (=S—0)。并且,在步驟S135、或S140中,通過將乘數(shù)值XJ60、或X—161 乘以中間值Z,來取消中間值Z中含有的乘數(shù)R一(T (2^256),即通過乘 數(shù)R_0 a (2 a 256)與S_0的相乘而成為1 。
同樣,在count二510時,通過執(zhí)行圖5中的步驟S135或S140,中間 值Z中出現(xiàn)X一OO (=R_0)。這時出現(xiàn)的R一0在count二509到254之間, 通過步驟S125被進(jìn)行二次冪運(yùn)算。即,count=255時的步驟S125中,中 間值Z中含有乘數(shù)R—(T (2^ 256)。另外,在count二254時的步驟S115 中,如圖7所示,由于乘數(shù)值X—160和X_161中含有S_0,所以在步驟SI35、 或S140中,通過乘數(shù)值X—160、或X一161乘以中間值Z,來取消中間值Z 中含有的乘數(shù)RJT (2156)。
之后,依次取消count=509之后出現(xiàn)的X—i0。因此,由于在執(zhí)行了
31count-0時的步驟S135或S140后,取消了所有XJ0,所以中間值Z的值 成為X^d。
圖12表示著眼于Count=i (i是256以上511以下的整數(shù))中出現(xiàn)的 乘數(shù)值XJO (=R_q)的情況下的乘法數(shù)的遷移。這里,設(shè)j是(lend—i —1) /16以下的最大整數(shù),R_q=R— (RSIJ)。
圖12中,首先,在count二i時的步驟S135或S140中,XJ0(=R—q) 在中間值Z中出現(xiàn)、g卩,XJO (=R—q)包含在中間值Z中。
在count二i一1時的步驟S125中,對中間值Z進(jìn)行二次冪運(yùn)算,二次 冪運(yùn)算結(jié)果為,Z中包含R一q^2。
接著,在count二i—2時的步驟S125中,對中間值Z (包含R一q^2) 進(jìn)行二次冪運(yùn)算,二次冪運(yùn)算結(jié)果為,Z中包含(R—qA2) a 2 (=R—qA (2"))。
艮P,在到count二i一255為止的期間,通過重復(fù)中間值Z的二次冪運(yùn) 算,中間值Z中含有R一qA (2 a 255)。
進(jìn)一步,在count=i—256時的步驟S115中,通過MT_i的初始化處 理,必然對X— (i+16) 0設(shè)置了S—q。
描述對X— (i+16) 0設(shè)置8_9的理由。由于根據(jù)整數(shù)i可取的范圍, count=i—256的值必然為255以下的值,所以對X_ (i+16) 0設(shè)置S_0 到s—15的其中之一。另外,求出這時的(lend—count—1) / 16以下的最 大整數(shù)。
(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以下的最大整數(shù)是在(lend—i—l) / 16以下的最大整數(shù)上加上16后的值、即,為j + 16。由于通過數(shù)組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))進(jìn)行二次冪運(yùn)算,二次冪運(yùn)算結(jié)果為Z中包含R_q ^ (2 ^ 256)。
并且,在count-i—256時的步驟S135或S140中,由于將乘法數(shù)S一q 乘以中間值Z,所以抵消了中間值Z中含有的R—qA (2^ 256)。
這樣,count=i時出現(xiàn)的XJO必然通過count=i—256時的乘數(shù)運(yùn)算 (步驟S135、或S140)相抵消。
另外,如圖13那樣,通過使用隨機(jī)數(shù)來設(shè)置乘數(shù)群,使得私鑰d的高 位比特(d_256 d—511)的塊(這里,塊0到塊15)中的隨機(jī)數(shù)的影響在 低位比特(d一O到d一255)的塊(這里,塊16到塊31)中相抵消,而不需 要取消隨機(jī)數(shù)的影響的取消運(yùn)算。
下面,詳細(xì)說明該情形。這里,與上述同樣,為了使說明方便,設(shè)數(shù) 組RSI為{0、 1、 2、 ".14、 15、 0、 1、 2、…、14、 15}。
圖13中,直到塊0的子塊0—1中出現(xiàn)的隨機(jī)數(shù)R—0的影響在之后移 到使用隨機(jī)數(shù)去除數(shù)S一O遮蔽(blind)的子塊中為止,如圖11、和圖12 所示那樣,重復(fù)256次二次冪運(yùn)算,所以成為將RJT (2^256) mod n 乘以中間值后的狀態(tài)。由于SJ)滿足S—0=R_(T (—2^ 256) mod n,所 以通過乘以這些,而去除了隨機(jī)數(shù)RJ)的影響(R一(T (2^ 256) modn)。
在乘數(shù)群更新部1160中更新乘數(shù)群設(shè)置部1150—i中設(shè)置的乘數(shù)群的 情況下也相同。例如,考慮在使用R_0遮蔽的子塊之后更新了乘數(shù)群的情 況,即,使用R—(T 2遮蔽的子塊。在該情況下,可在使用S—(T2遮蔽的 子塊中去除隨機(jī)數(shù)的影響。這樣,在對隨機(jī)數(shù)RJ進(jìn)行了預(yù)定次數(shù)(這里, 256次)的二次冪運(yùn)算后,使隨機(jī)數(shù)RJ出現(xiàn)的子塊與包含對應(yīng)的隨機(jī)數(shù)去 除數(shù)SJ的子塊成對,以便通過隨機(jī)數(shù)去除數(shù)SJ去除隨機(jī)數(shù)R一0的影響 (R—(T (2^256) modn),從而可全部去除隨機(jī)數(shù)的影響,而不需要取消 運(yùn)算。
進(jìn)一步,實(shí)施方式1中,由于通過隨機(jī)數(shù)選擇信息生成部1170隨機(jī)產(chǎn) 生遮蔽乘數(shù)群的隨機(jī)數(shù)的模式,所以對差分功率分析攻擊來說,攻擊者難 以取得統(tǒng)計信息,所以存在對差分功率分析攻擊的耐性。
在專利文獻(xiàn)l中,也記載了更新乘數(shù)群的結(jié)構(gòu),但是沒有公開使乘數(shù) 群的設(shè)置模式隨機(jī)化與不需要取消運(yùn)算的結(jié)構(gòu)。 (具體例)這里,使用進(jìn)一步的具體例,使用圖14到圖16來說明通過對低位比 特(d_255 d_0)的運(yùn)算(乘數(shù)運(yùn)算)來抵消對私鑰d的高位比特(d—511 d_256)運(yùn)算時出現(xiàn)的隨機(jī)數(shù)各自的影響。
為使說明方便,設(shè)私鑰d的所有比特為值1,對高位比特(d_511 d—256)運(yùn)算時出現(xiàn)的隨機(jī)數(shù)全部為相同值R。
在開頭比特d_511為運(yùn)算對象、即count=511時,冪運(yùn)算裝置1000 初始化中間值Z,即將中間值Z設(shè)置為值1,并執(zhí)行二次冪運(yùn)算和乘法。這 里,由于(1_511 = 1,所以如圖14所示,二次冪運(yùn)算和乘法執(zhí)行后的中間值 Z的值為XXR。
在count-510時、冪運(yùn)算裝置1000對中間值Z (=XXR)實(shí)施二次 冪運(yùn)算,并使用其結(jié)果來實(shí)施乘法。這里,由于d一510二l,所以圖14所示, 乘法執(zhí)行后的中間值Z的值為(XXR) 〃2XXXR。
冪運(yùn)算裝置1000在將二次冪運(yùn)算和乘法重復(fù)到count=256為止,中 間值Z的值如圖15所示,成為(XXR) a (2^ 255) X (XXR) ^ (2 a 254) X…X (XXR) "XXXR。
在co皿t-255時,若乘冪運(yùn)算裝置100執(zhí)行二次冪運(yùn)算,則中間值Z 的值如圖15所示,成為(XXR) a (2^ 256) X (XXR) ^ (2^ 255) X…X (XXR) 〃4X (XXR)八2。這里,如實(shí)施方式1所示,用于乘 法的隨機(jī)數(shù)從值R改變?yōu)殡S機(jī)數(shù)去除數(shù)S (=IT (—2^ 256))。因此,若 乘冪運(yùn)算裝置100執(zhí)行乘法,則Count=511時出現(xiàn)的隨機(jī)數(shù)R的影響即值 RA (2^ 256)通過隨機(jī)數(shù)去除數(shù)S被抵消,結(jié)果,如圖15所示,中間值 Z的值成為X^ (2^ 256) X (XXR)八(2^ 255) X…X (XXR) X (XXR) "XX。
在count-254時,若乘冪運(yùn)算裝置100執(zhí)行二次冪運(yùn)算,則中間值Z 的值如圖15所示,成為X^ (2^ 257) X (XXR) ^ (2A 256) X (XX R)八(2^ 255) X…X (XXR) ^4XX八2。接著,乘冪運(yùn)算裝置100 若執(zhí)行乘法,貝lJco皿t二510時出現(xiàn)的隨機(jī)數(shù)R的影響即值RA (2^ 256) 通過隨機(jī)數(shù)去除數(shù)S被抵消,結(jié)果如圖15所示,中間值Z的值成為XA (2 a 257) XX a (2 a 256) X (XXR) A (2 "55) X…X (XXR) lx X"XX。冪運(yùn)算裝置1000通過將二次冪運(yùn)算和乘法重復(fù)到count-0,可通過對 低位比特(d一255 d—0)的運(yùn)算(乘數(shù)運(yùn)算)來抵消對私鑰d的高位比特 (d—511 d一256)運(yùn)算時出現(xiàn)的隨機(jī)數(shù)各自的影響。
在count二l中執(zhí)行了二次冪運(yùn)算和乘法后,僅count二256時出現(xiàn)的隨 機(jī)數(shù)R的影響(值RA (2^ 255))保留在中間值Z中。
并且,通過在count二l中執(zhí)行二次冪運(yùn)算,中間值Z的值如圖16所 示,成為X^ (2^511) XX^ (2A510) X…X (XXR) ^ (2^ 256) XX a (2^ 255)…XXA4XX〃2。冪運(yùn)算裝置1000通過將值XX S乘以 該中間值Z,從而抵消了co皿t二256時出現(xiàn)的隨機(jī)數(shù)R的影響(值RA (2 a 256)),結(jié)果如圖16所示,成為X^ (2"11) (2"10) X…X
(2八256) XX^ (2155) ... XX ^ 4XX ^ 2XX=X ^ d。
因此,冪運(yùn)算裝置1000在算出乘冪運(yùn)算值X a d時,通過在count= 511到0之間,使乘法中出現(xiàn)隨機(jī)數(shù)或隨機(jī)數(shù)去除數(shù),從而使基于差分功率 分析攻擊的私鑰的分析變得困難,同時,可以通過對低位比特((L255 dJ)) 的運(yùn)算(乘數(shù)運(yùn)算)來抵消分別對私鑰d的高位比特(d_511 d—256)進(jìn) 行乘法時出現(xiàn)的隨機(jī)數(shù)的影響。
2.實(shí)施方式2
圖17是表示乘冪運(yùn)算裝置2000的結(jié)構(gòu)圖。
乘冪運(yùn)算裝置2000是與實(shí)施方式1的乘冪運(yùn)算裝置1000相同,輸入 作為進(jìn)行乘冪的對象數(shù)據(jù)的對象數(shù)據(jù)X,并對對象數(shù)據(jù)輸出以私鑰d為冪 值的乘冪運(yùn)算結(jié)果(XA(i)的裝置。
乘冪運(yùn)算裝置2000與實(shí)施方式1的乘冪運(yùn)算裝置1000同樣,在例如 RSA加密方式的解密或RSA簽名方式的簽名生成中加以使用。
2.1乘冪運(yùn)算裝置2000的結(jié)構(gòu)
乘冪運(yùn)算裝置2000如圖17所示,包括輸入輸出部2010、私鑰存儲部 2020、計數(shù)器存儲部2030、計數(shù)器初始化部2040、計數(shù)器更新部2050、第 一計數(shù)器判斷部2060、第二計數(shù)器判斷部2070、第三計數(shù)器判斷部2080、 比特判斷部2090、乘法部2100—0、 2100—1 、 二次冪運(yùn)算部2110、中間值 存儲部2120、乘數(shù)群存儲部2130、隨機(jī)數(shù)群存儲部2140、乘數(shù)群設(shè)置部 2150—0、 2150—1、乘數(shù)群更新部2160、隨機(jī)數(shù)種子存儲部2180、以及隨
35機(jī)數(shù)群設(shè)置部2190。
輸入輸出部2010、私鑰存儲部2020、計數(shù)器存儲部2030、計數(shù)器初 始化部2040、計數(shù)器更新部2050、第一計數(shù)器判斷部2060、第二計數(shù)器判 斷部2070、比特判斷部2090、 二次冪運(yùn)算部2110、中間值存儲部2120、 和乘數(shù)群更新部2160分別與實(shí)施方式1中表示的輸入輸出部1010、私鑰存 儲部1020、計數(shù)器存儲部1030、計數(shù)器初始化部1040、計數(shù)器更新部1050、 第一計數(shù)器判斷部1060、第二計數(shù)器判斷部1070、比特判斷部1090、 二次 冪運(yùn)算部1110、中間值存儲部1120、和乘數(shù)群更新部1160相同,所以省 略這里的說明。
下面,分別說明第三計數(shù)器判斷部2080、乘數(shù)群存儲部2130、乘法部 2100—0、 2100—1、隨機(jī)數(shù)群存儲部2140、乘數(shù)群設(shè)置部2150_0、 2150 —1、隨機(jī)數(shù)種子存儲部2180、隨機(jī)數(shù)群設(shè)置部2190。
(1) 第三計數(shù)器判斷部2080
第三計數(shù)器判斷部2080在從第一計數(shù)器判斷部2060接收到進(jìn)行判斷 的指示后,判斷計數(shù)器存儲部2030中存儲的計數(shù)器count的值是否可被256 整除,即,是否是256的倍數(shù)。
在判斷為可被256整除的情況下,第三計數(shù)器判斷部2080將更新指示 通知給計數(shù)器更新部2050。
在判斷為不能被256整除的情況下,第三計數(shù)器判斷部2080向第二計 數(shù)器判斷部2070通知進(jìn)行判斷的指示。
(2) 乘數(shù)群存儲部2130
乘數(shù)群存儲部2130存儲乘法部2100—0 2100—1中使用的乘數(shù)群 MT—0 MT—1 。
具體來說,乘數(shù)群存儲部2130如圖18所示,存儲由乘數(shù)值XjO和 X—il構(gòu)成的乘數(shù)群MTj。這里,i是O、 1。
(3) 乘法部2100—0、 2100—1
由于乘法部2100—0、 2100_1進(jìn)行同樣的動作,所以這里說明乘法部 2100—i。 i是O或l。
乘法部2100—i將中間值存儲部2120中存儲的中間值Z與乘數(shù)群存儲 部2130中存儲的乘數(shù)群MT—i中存儲的乘數(shù)值X一iO或乘數(shù)值X一il相乘,
36并將該相乘結(jié)果存儲到中間值存儲部1120中。
具體來說,乘法部2100—i在比特判斷部2090判斷為第count比特是 0的情況下,將中間值Z與乘數(shù)值X一i0相乘,并將其結(jié)果再次作為中間值 Z。乘法部2100—i在比特判斷部2090判斷為第count比特是1的情況下, 將中間值Z與乘數(shù)值X—il相乘,并將其結(jié)果再次作為中間值Z。
(4) 隨機(jī)數(shù)群存儲部2140 隨機(jī)數(shù)群存儲部2140存儲隨機(jī)數(shù)群RT。
具體來說,隨機(jī)數(shù)群存儲部2140如圖19所示,存儲由隨機(jī)數(shù)R和隨 機(jī)數(shù)去除數(shù)S構(gòu)成的隨機(jī)數(shù)群RT。
隨機(jī)數(shù)R和隨機(jī)數(shù)去除數(shù)S滿足以下的關(guān)系。
滿足S二RA (—2 ^ 256) modn即,(2^256) XS = 1的關(guān)系。 隨機(jī)數(shù)R與隨機(jī)數(shù)去除數(shù)S由隨機(jī)數(shù)群設(shè)置部2190生成。后面描述 隨機(jī)數(shù)群設(shè)置部2190。
(5) 乘數(shù)群設(shè)置部2150—0、 2150—1
由于乘數(shù)群設(shè)置部2150—0、 2150—1進(jìn)行同樣的動作,所以這里說明 乘數(shù)群設(shè)置部2150—i。 i是O、 1。
乘數(shù)群設(shè)置部2150 — i初始化乘數(shù)群存儲部2130中存儲的乘數(shù)群 MT—i。
具體來說,乘數(shù)群設(shè)置部2150—i針對對象數(shù)據(jù)X,在計數(shù)器count 的值是256以上的情況下,使用隨機(jī)數(shù)群存儲部2140中存儲的隨機(jī)數(shù)群 RT中含有的隨機(jī)數(shù)R,來算出X一i0和X一il。
乘數(shù)群設(shè)置部2150—i在count比256小的情況下,使用隨機(jī)數(shù)群RT 中含有的隨機(jī)數(shù)去除數(shù)S,來算出X—i0和X—il。
乘數(shù)群設(shè)置部2150—i在算出X—i0和X_il時,執(zhí)行X—i0—RS modn、 X—il—XXX—i0modn。這里,RS是R或S。
(6) 隨機(jī)數(shù)種子存儲部2180
隨機(jī)數(shù)種子存儲部2180存儲隨機(jī)數(shù)種子U與隨機(jī)數(shù)去除種子V。預(yù) 先存儲U和V,來滿足以下的式子。 V=LT (—2"56) modn
(7) 隨機(jī)數(shù)群設(shè)置部2190
37隨機(jī)數(shù)群設(shè)置部2190使用隨機(jī)數(shù)種子存儲部2180中存儲的隨機(jī)數(shù)種 子U與隨機(jī)數(shù)去除種子V,來生成隨機(jī)數(shù)群RT的隨機(jī)數(shù)R與隨機(jī)數(shù)去除 數(shù)S,并存儲到隨機(jī)數(shù)群存儲部2140中。
具體來說,產(chǎn)生隨機(jī)的正整數(shù)值w,來計算下面的式子,求出R、 S。
R=U a w modn
S=V a wmodn
這些乘冪運(yùn)算簡單地使用二進(jìn)制法或Window法等現(xiàn)有的方法來計 算。w是例如32比特的隨機(jī)數(shù),但是并不限于此。 2.2乘冪運(yùn)算裝置2000的動作 (1)整體動作
這里,使用圖20和圖21所示的流程圖來說明乘冪運(yùn)算裝置2000的動作。
輸入輸出部2010受理對象數(shù)據(jù)X的輸入,并將所受理的對象數(shù)據(jù)X 存儲到中間值存儲部2120中(步驟S400)。
輸入輸出部2010將中間值Z設(shè)置為1,并存儲到中間值存儲部2120 中(步驟S405)。
隨機(jī)數(shù)群設(shè)置部2190生成隨機(jī)數(shù)群RT,并將所生成的隨機(jī)數(shù)群RT 存儲到隨機(jī)數(shù)群存儲部2140中(步驟S410)。
計數(shù)器初始化部2040初始化計數(shù)器count (步驟S415)。這里,計數(shù) 器初始化部2040將計數(shù)器count設(shè)置為lend— 1 。這里,lend是私鑰d的比特數(shù)。
乘數(shù)群設(shè)置部2150—i使用對象數(shù)據(jù)X、隨機(jī)數(shù)群存儲部2140中存儲 的隨機(jī)數(shù)群RT,來初始化乘數(shù)群存儲部2130中存儲的MT—i,即初始化乘 數(shù)值X—iO和X—il (步驟S420)。這里,i是(lend—count—1) / 256以下
的最大整數(shù)。
二次冪運(yùn)算部2110對中間值存儲部2120中存儲的中間值Z進(jìn)行二次 冪運(yùn)算,并將其結(jié)果作為Z存儲到中間值存儲部2120中(步驟S425)。
比特判斷部2090判斷私鑰d的比特(步驟S430)。具體來說,比特判 斷部2090判斷私鑰d中的第count比特是0還是1 。
在判斷為0的情況下(步驟S430中的"0")、乘法部2100—i將中間值存儲部2120中存儲的中間值Z與乘數(shù)群存儲部2130中存儲的乘數(shù)群 MT_i的乘數(shù)值X_i0相乘,并將其結(jié)果作為中間值Z存儲在中間值存儲部 2120中(步驟S435)。在判斷為是1的情況下(步驟S430中的"l")、乘 法部2100—i將中間值存儲部2120中存儲的中間值Z與乘數(shù)群存儲部2130 中存儲的乘數(shù)值Xjl相乘,并將其結(jié)果作為中間值Z存儲在中間值存儲部 2120中(步驟S440)。這里,i是(lend—count—l) / 256以下的最大整 數(shù)。
第一計數(shù)器判斷部2060判斷計數(shù)器存儲部2030中存儲的計數(shù)器count 的值是否是0 (步驟S445)。
在判斷為計數(shù)器count是0的情況下(步驟S445中的"是"),輸入輸 出部2010輸出中間值存儲部2120中存儲的中間值Z (將其作為乘冪運(yùn)算 結(jié)果)(步驟S475)。
在判斷為計數(shù)器count不是0的情況下(步驟S445中的"否"),第三 計數(shù)器判斷部2080判斷計數(shù)器存儲部2030中存儲的計數(shù)器count的值是否 可被256整除,即計數(shù)器count的值是否是256的倍數(shù)(步驟S450)。
在判斷為計數(shù)器count的值可被256整除的情況下(步驟S450中的 "是"),計數(shù)器更新部2050更新計數(shù)器存儲部2030中存儲的計數(shù)器count (步驟S470)。具體來說,計數(shù)器更新部2050遞減(減去l)計數(shù)器存儲 部2030中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存 儲在計數(shù)器存儲部2030中。之后,處理返回到步驟S420。
在判斷為計數(shù)器count的值不能被256整除的情況下(步驟S450中的 "否"),第二計數(shù)器判斷部2070判斷計數(shù)器存儲部2030中存儲的計數(shù)器 count的值是否可被8整除,即計數(shù)器count的值是否是8的倍數(shù)(步驟 S455)。
在判斷為計數(shù)器count的值可被8整除的情況下(步驟S455中的"是"), 乘數(shù)群更新部2160更新乘數(shù)群存儲部2130中存儲的乘數(shù)群MT一i (步驟 S460)。這里,i是(lend—co皿t一l) / 256以下的最大整數(shù)。
計數(shù)器更新部2050更新計數(shù)器存儲部2030中存儲的計數(shù)器count(步 驟S465)。具體來說,計數(shù)器更新部2050遞減(減l)計數(shù)器存儲部2030 中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲到計數(shù)器存儲部2030中。之后,處理返回到步驟S425。
在判斷為計數(shù)器count的值不能被8整除的情況下(步驟S455中的 "否"),處理進(jìn)入到步驟S465,并在執(zhí)行步驟S465后,返回到步驟S425。
(2) 隨機(jī)數(shù)群RT的設(shè)置處理
這里,使用圖22所示的流程圖來說明圖20的步驟S410中進(jìn)行的隨機(jī) 數(shù)群RT的設(shè)置處理。
隨機(jī)數(shù)群設(shè)置部2190產(chǎn)生隨機(jī)的正整數(shù)w (步驟S500)。
隨機(jī)數(shù)群設(shè)置部2190使用隨機(jī)數(shù)種子存儲部2180中存儲的隨機(jī)數(shù)種 子U與正整數(shù)w,來算出隨機(jī)數(shù)R (二LTwmodn)(步驟S505)。
隨機(jī)數(shù)群設(shè)置部2190使用隨機(jī)數(shù)種子存儲部2180中存儲的隨機(jī)數(shù)去 除種子V與正整數(shù)w,來算出隨機(jī)數(shù)去除數(shù)S( =V a w modn)(步驟S510)。
隨機(jī)數(shù)群設(shè)置部2190將由算出的隨機(jī)數(shù)R與隨機(jī)數(shù)去除數(shù)S構(gòu)成的 隨機(jī)數(shù)群RT (= [R、 S])存儲到隨機(jī)數(shù)群存儲部2140中(步驟S515)。
(3) MT一i的初始化處理
圖20的步驟S420中進(jìn)行乘數(shù)群MT_i的初始化的處理由于可通過改 變一部分圖7所示的流程圖來實(shí)現(xiàn),所以這里僅說明該改變點(diǎn)。
首先,將步驟S205改變?yōu)?,在判斷為計?shù)器count的值是256以上的 情況下(步驟S200中的"是"),乘數(shù)群設(shè)置部2150—i取得隨機(jī)數(shù)群存儲 部2140中存儲的隨機(jī)數(shù)群RT的隨機(jī)數(shù)R。
接著,將步驟S210改變?yōu)?,乘?shù)群設(shè)置部1150—i將所取得的隨機(jī)數(shù) R— (RSI_i)設(shè)置為乘數(shù)值X—i0。
將歩驟S220改變?yōu)?,在判斷為計?shù)器count的值不是256以上的情況 下(步驟S200中的"否"),乘數(shù)群設(shè)置部2150—i取得隨機(jī)數(shù)群存儲部2140 中存儲的隨機(jī)數(shù)群RT中包含的隨機(jī)數(shù)去除數(shù)S。
最后,將步驟S225改變?yōu)?,乘?shù)群設(shè)置部2150—i將所取得的隨機(jī)數(shù) 去除數(shù)S設(shè)置為乘數(shù)值XjO。
通過如上這樣改變圖7所示的動作的流程,而可實(shí)現(xiàn)圖20的步驟S420 中進(jìn)行的乘數(shù)群MTj的初始化的處理。
(4) MT—i的更新處理
圖21中的步驟S460中進(jìn)行的乘數(shù)群MTJ的更新處理可以通過與圖8
40所示的動作的流程同樣的動作流程來實(shí)現(xiàn),所以省略這里的說明。
2.3實(shí)施方式2的效果
實(shí)施方式2與實(shí)施方式1相比,僅基于隨機(jī)數(shù)群的乘數(shù)群的設(shè)置方法 不同,所以與實(shí)施方式1有同樣的效果。
對于差分功率分析攻擊來說,由于對隨機(jī)數(shù)種子進(jìn)行基于隨機(jī)值的乘 冪來計算隨機(jī)數(shù)群,所以可以隨機(jī)化遮蔽乘數(shù)群的隨機(jī)數(shù)的模式,由于攻 擊者難以取得統(tǒng)計信息,所以存在對差分功率分析攻擊的耐性。
3.實(shí)施方式3
圖23是表示乘冪運(yùn)算裝置3000的結(jié)構(gòu)圖。
乘冪運(yùn)算裝置3000與實(shí)施方式1、2的乘冪運(yùn)算裝置1000、2000同樣, 是輸入作為進(jìn)行乘冪的對象數(shù)據(jù)的對象數(shù)據(jù)X,并對于對象數(shù)據(jù)輸出以私 鑰d為冪值的乘冪運(yùn)算結(jié)果(X^d)的裝置。
乘冪運(yùn)算裝置3000與實(shí)施方式1、2的乘冪運(yùn)算裝置1000、2000同樣, 在例如RSA加密方式的解密或RSA簽名方式的簽名生成中加以使用。
3. 1乘冪運(yùn)算裝置3000的結(jié)構(gòu)
乘冪運(yùn)算裝置3000如圖23所示,包括輸入輸出部3010、私鑰存儲部 3020、計數(shù)器存儲部3030、計數(shù)器初始化部3040、計數(shù)器更新部3050、第 一計數(shù)器判斷部3060、第二計數(shù)器判斷部3070、第三計數(shù)器判斷部3080、 乘數(shù)選擇部3090、乘法部3100、 二次冪運(yùn)算部3110、中間值存儲部3120、 乘數(shù)群存儲部3130、隨機(jī)數(shù)群存儲部3140、乘數(shù)群設(shè)置部3150—0、 3150 _1、乘數(shù)群更新部3160、隨機(jī)數(shù)種子存儲部3180與隨機(jī)數(shù)群設(shè)置部3190。
由于輸入輸出部3010、私鑰存儲部3020、計數(shù)器存儲部3030、計數(shù) 器更新部3050、第一計數(shù)器判斷部3060、 二次冪運(yùn)算部3110、和中間值存 儲部3120分別與實(shí)施方式1所示的輸入輸出部1010、私鑰存儲部1020、 計數(shù)器存儲部1030、計數(shù)器更新部1050、第一計數(shù)器判斷部1060、 二次冪 運(yùn)算部1110和中間值存儲部1120相同,所以省略這里的說明。
另外,由于隨機(jī)數(shù)群存儲部3140、隨機(jī)數(shù)種子存儲部3180、和隨機(jī)數(shù) 群設(shè)置部3190分別與實(shí)施方式2所示的隨機(jī)數(shù)群存儲部2140、隨機(jī)數(shù)種子 存儲部2180、和隨機(jī)數(shù)群設(shè)置部2190相同,所以省略這里的說明。
下面,說明乘數(shù)群存儲部3130、計數(shù)器初始化部3040、第二計數(shù)器判
41斷部3070、第三計數(shù)器判斷部3080、乘數(shù)選擇部3090、乘法部3100、乘 數(shù)群設(shè)置部3150—0、 3150—1、和乘數(shù)群更新部3160。
(1) 乘數(shù)群存儲部3130
乘數(shù)群存儲部3130存儲乘法部3100中使用的乘數(shù)群MT—0 MT—1 。 具體來說,乘數(shù)群存儲部3130如圖24所示,存儲由16個乘數(shù)值X—i0、 X—il、…、X一il5構(gòu)成的乘數(shù)群MT—i (i是O或l)。存儲XjO到X—i15是 因?yàn)閟w二4。對于一般的sw,乘數(shù)群存儲部2130存儲乘數(shù)值X一 i0,X_il ,, X一 (i (2、w—l))。
(2) 計數(shù)器初始化部3040 計數(shù)器初始化部3040將計數(shù)器count設(shè)置為值b。
這里,值b二 (lend/sw以上的最小整數(shù))一1。 lend是私鑰d的比特 數(shù),例如是lend-512。 sw是正整數(shù),例如,sw=4。另外,sw可以是2、 3或5以上。
(3) 第三計數(shù)器判斷部3080
第三計數(shù)器判斷部3080在從第一計數(shù)器判斷部2060接收到進(jìn)行判斷 的指示后,判斷計數(shù)器存儲部3030中存儲的計數(shù)器count的值是否可被64 整除,即,是否是64的倍數(shù)。
在判斷為可被64整除的情況下,第三計數(shù)器判斷部3080將更新指示 通知給計數(shù)器更新部3050。
在判斷為不能被64整除的情況下,第三計數(shù)器判斷部3080向第二計 數(shù)器判斷部3070通知進(jìn)行判斷的指示。
(4) 第二計數(shù)器判斷部3070
第二計數(shù)器判斷部3070在從第三計數(shù)器判斷部3080接收到進(jìn)行判斷 的指示后,判斷計數(shù)器存儲部3030中存儲的計數(shù)器count的值是否能被2 整除,即,是否是2的倍數(shù)。
在判斷為計數(shù)器count的值能被2整除的情況下,第二計數(shù)器判斷部 3070向乘數(shù)群更新部3160通知進(jìn)行在乘數(shù)群存儲部3130中存儲的乘數(shù)群 MT—i的更新的更新指示。這里,i是(b—co皿t) /64以下的最大整數(shù)。
在判斷為計數(shù)器count的值不能被2整除的情況下,第二計數(shù)器判斷 部3070將計數(shù)器的更新指示通知給計數(shù)器更新部3050。(5) 乘數(shù)選擇部3090
乘數(shù)選擇部3090以針對計數(shù)器存儲部1030中存儲的計數(shù)器count的 分割秘密信息D_count的值為下標(biāo)j (j=D—count),來選擇乘數(shù)群存儲部 3130中存儲的乘數(shù)群MT_i的乘數(shù)值X—ij。
這里,所謂分割秘密信息D_C0Unt是指按每sw比特來分割針對私鑰d 的比特串后得到的信息。例如,如圖25所示,在sw:4的情況下,將私鑰 d的比特串分割為由4比特構(gòu)成的分割秘密信息D—127、 D_126、、 D—1、 D_0。另外,由于分割秘密信息D_127、 D_126、、 D—1、 D_0分別由4 比特構(gòu)成,所以各分割秘密信息可取值的范圍在10進(jìn)制數(shù)表現(xiàn)中是"0"到 "15"。即,由于分割秘密信息D一count的值是0到15的其中之一,所以乘 數(shù)群存儲部3130中必然存在對應(yīng)的乘數(shù)值X—ij。
(6) 乘法部3100
乘法部3100將中間值存儲部3120中存儲的中間值Z與乘數(shù)選擇部 3090中選擇的乘數(shù)值X_ij相乘,并將其乘法結(jié)果存儲到中間值存儲部3120 中。
具體來說,乘法部3100執(zhí)行Z—ZXXJjmodn。 這里,i是(b—count) /64以下的最大整數(shù),count是計數(shù)器存儲部 1030中存儲的計數(shù)器。
(7) 乘數(shù)群設(shè)置部3150—0、 3150—1
由于乘數(shù)群設(shè)置部3150—0、 3150—1進(jìn)行相同的動作,所以這里,作 為乘數(shù)群設(shè)置部3150—i來加以說明。i是0、 1。
乘數(shù)群設(shè)置部3150 — i初始化乘數(shù)群存儲部2130中存儲的乘數(shù)群 MT一i。
具體來說,乘數(shù)群設(shè)置部3150—i針對對象數(shù)據(jù)X,在計數(shù)器count 的值為64以上的情況下,使用隨機(jī)數(shù)群存儲部3140中存儲的隨機(jī)數(shù)群RT 中含有的隨機(jī)數(shù)R,來算出Xj0、 X—il、 X一i2、…、X_il4、 X_il5。
乘數(shù)群設(shè)置部3150—i在count比64小的情況下,使用隨機(jī)數(shù)群RT 中含有的隨機(jī)數(shù)去除數(shù)S,算出XJ0、 X—il、 X_i2、…、X—i14、 X_il5。
乘數(shù)群設(shè)置部3150—i在X—i0、 X_il、 X—i2、…、X—i14、 X—i15的算 出時,執(zhí)行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)乘數(shù)群更新部3160 乘數(shù)群更新部3160更新乘數(shù)群存儲部3130中存儲的乘數(shù)群MT_i的 乘數(shù)X—i0和X_il。 MT_i是之前通過乘數(shù)群設(shè)置部3150—i設(shè)置的乘數(shù)群。 具體來說,乘數(shù)群更新部3160執(zhí)行XJ0—XJ0 a 2 mod n、 XJl—X XX」0modn、 X」2—XXXJ1 modn、、 XJ15—XXX」14modn。 3.2乘冪運(yùn)算裝置3000的動作 (1)整體的動作
這里,使用圖20和圖21所示的流程圖來說明乘冪運(yùn)算裝置3000的動作。
輸入輸出部3010受理對象數(shù)據(jù)X的輸入,并將所受理的對象數(shù)據(jù)X 存儲到中間值存儲部3120中(步驟S600)。
輸入輸出部3010將中間值Z初始化為值"l",并存儲到中間值存儲部 3120中(步驟S605)。
隨機(jī)數(shù)群設(shè)置部3190生成隨機(jī)數(shù)群RT,并將所生成的隨機(jī)數(shù)群RT 存儲到隨機(jī)數(shù)群存儲部3140中(步驟S610)。
計數(shù)器初始化部3040初始化計數(shù)器count (步驟S615)。這里,計數(shù) 器初始化部3040將計數(shù)器count設(shè)置為值b ( = (lend / sw以上的最小整 數(shù))一1)。這里,lend是私鑰d的比特數(shù),sw=4。
乘數(shù)群設(shè)置部3150—i使用對象數(shù)據(jù)X、以及隨機(jī)數(shù)群存儲部3140中 存儲的隨機(jī)數(shù)群RT,來初始化乘數(shù)群存儲部3130中存儲的MT一i,即初始 化乘數(shù)值X—i0和X—il (步驟S620)。這里,i是(b—count) / 64以下的 最大整數(shù)。
二次冪運(yùn)算部3110對于中間值存儲部3120中存儲的中間值Z,實(shí)施 二次冪運(yùn)算處理,并將其結(jié)果作為Z存儲到中間值存儲部3120中(步驟 S625)。
乘數(shù)選擇部3090從乘數(shù)群存儲部3130中存儲的乘數(shù)群MT—i選擇乘 數(shù)X』(步驟S630)。這里,i是(b—count) /64以下的最大整數(shù),、j = D count。 D count是表示對計數(shù)器count的分割秘密信息的值。
44乘法部3100將中間值存儲部3120中存儲的中間值Z與乘數(shù)選擇部 3090選出的乘數(shù)XJj相乘,并將其結(jié)果存儲到中間值存儲部1120中(步 驟S635)。
第一計數(shù)器判斷部3060判斷計數(shù)器存儲部3030中存儲的計數(shù)器count 的值是否是0 (步驟S640)。
在判斷為計數(shù)器count是0的情況下(步驟S640中的"是"),輸入輸 出部3010輸出中間值存儲部3120中存儲的中間值Z (將其作為乘冪運(yùn)算 結(jié)果)(步驟S670)。
在判斷為計數(shù)器count不是0的情況下(步驟S640中的"否"),第三 計數(shù)器判斷部3080判斷計數(shù)器存儲部3030中存儲的計數(shù)器count的值是否 可被64整除、即計數(shù)器count的值是否是64的倍數(shù)(步驟S645)。
在判斷為計數(shù)器count的值可被64整除的情況下(步驟S645中的 "是"),計數(shù)器更新部3050更新計數(shù)器存儲部3030中存儲的計數(shù)器count (步驟S665)。具體來說,計數(shù)器更新部3050遞減(減l)計數(shù)器存儲部 3030中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲 到計數(shù)器存儲部3030中。之后,處理返回到步驟S620。
在判斷為計數(shù)器count的值不能被64整除的情況下(步驟S645中的 "否"),第二計數(shù)器判斷部3070判斷計數(shù)器存儲部3030中存儲的計數(shù)器 count的值是否可被2整除、即計數(shù)器count的值是否是2的倍數(shù)(步驟 S650)。
在判斷為計數(shù)器count的值可被2整除的情況下(步驟S650中的"是"), 乘數(shù)群更新部3160更新乘數(shù)群存儲部3130中存儲的乘數(shù)群MT_i (步驟 S655)。這里,i是(b—count) /64以下的最大整數(shù)。
計數(shù)器更新部3050更新計數(shù)器存儲部3030中存儲的計數(shù)器count(步 驟S660)。具體來說,計數(shù)器更新部3050遞減(減l)計數(shù)器存儲部3030 中存儲的計數(shù)器count,并將運(yùn)算結(jié)果再次作為計數(shù)器count的值存儲到計 數(shù)器存儲部3030中。之后,處理返回到步驟S625。
在判斷為計數(shù)器count的值不能被2整除的情況下(步驟S650中的 "否"),處理進(jìn)入到步驟S660,并在步驟S660的執(zhí)行后,返回到步驟S625。 (2)隨機(jī)數(shù)群RT的設(shè)置處理
45由于圖26中的步驟S610中進(jìn)行的隨機(jī)數(shù)群RT的設(shè)置處理可以通過 與圖22所示的動作的流程同樣的動作流程來實(shí)現(xiàn),所以省略這里的說明。
(3) MTJ的初始化處理
這里,使用圖28所示的流程圖來說明圖26的步驟S620中進(jìn)行的乘數(shù) 群MT一i的初始化的處理。
乘數(shù)群設(shè)置部3150—i判斷計數(shù)器count的值是否是64以上(步驟 S700)。這里,i是(b—count) /64以下的最大整數(shù)。
在判斷為計數(shù)器count的值是64以上的情況下(步驟S700中的"是"), 乘數(shù)群設(shè)置部3150—i取得隨機(jī)數(shù)群存儲部3140中存儲的隨機(jī)數(shù)群RT中 含有的隨機(jī)數(shù)R (步驟S705)。乘數(shù)群設(shè)置部3150—i將所取得的隨機(jī)數(shù)R 設(shè)置為乘數(shù)值X一i0 (步驟S710)。
在判斷為計數(shù)器count的值不是64以上的情況下(步驟S700中的 "否"),乘數(shù)群設(shè)置部3150—i取得隨機(jī)數(shù)群存儲部3140中存儲的隨機(jī)數(shù) 群RT中含有的隨機(jī)數(shù)去除數(shù)S (步驟S715)。乘數(shù)群設(shè)置部3150—i將所 取得的隨機(jī)數(shù)S設(shè)置為乘數(shù)值X—i0 (步驟S720)。
乘數(shù)群設(shè)置部3150_i將計數(shù)器k設(shè)置為值"l"(步驟S725)。
乘數(shù)群設(shè)置部3150—i在計數(shù)器k的值為1到15之間,重復(fù)步驟S730 到S745 (步驟S730)。
乘數(shù)群設(shè)置部3150—i對乘數(shù)值X—ik設(shè)置將乘數(shù)值X一i (k一l)乘以 對象數(shù)據(jù)X后的結(jié)果(步驟S735)。
乘數(shù)群設(shè)置部3150—i在計數(shù)器k的值上加上值"l",并將相加后的結(jié) 果再次作為計數(shù)器k的值加以設(shè)置(步驟S740)。
(4) 二次冪運(yùn)算處理
這里,使用圖29所示的流程圖來說明圖26的步驟S625中進(jìn)行的二次 冪運(yùn)算處理。
二次冪運(yùn)算部3110將計數(shù)器u設(shè)置為值"l"(步驟S800)。 二次冪運(yùn)算部3110在計數(shù)器u的值是l到sw (這里,4)之間,重復(fù)
步驟S810到S820 (步驟S805)。
二次冪運(yùn)算部3110對中間值存儲部3120中存儲的中間值Z進(jìn)行二次
冪運(yùn)算,并將其結(jié)果作為Z存儲到中間值存儲部3120中(步驟S810)。二次冪運(yùn)算部3110對計數(shù)器u的值加上值"l",并將相加后的結(jié)果再 次作為計數(shù)器u的值加以設(shè)置(步驟S815)。
由此,乘冪運(yùn)算裝置3000通過執(zhí)行1次二次冪運(yùn)算處理,而算出Z^16。
(5) MT—i的更新處理
這里,使用圖30所示的流程圖來說明圖27的步驟S655中進(jìn)行的乘數(shù) 群MTJ的更新處理。
乘數(shù)群更新部3160對乘數(shù)群存儲部3130中存儲的MTj中含有的 X一iO進(jìn)行二次冪運(yùn)算,并將其結(jié)果再次作為X_iO (步驟S850)。
乘數(shù)群更新部3160在計數(shù)器m設(shè)置值"l"(步驟S855)。
乘數(shù)群更新部3160在計數(shù)器m的值為1到15之間,重復(fù)步驟S865 到S875 (步驟S860)。
乘數(shù)群更新部3160對乘數(shù)值X—im設(shè)置將乘數(shù)值X一i (m—1)乘以對 象數(shù)據(jù)X后的結(jié)果(步驟S865)。
乘數(shù)群更新部3160在計數(shù)器m的值上加上值"l",并將加法后的結(jié)果 再次作為計數(shù)器m的值加以設(shè)置(步驟S870)。
3.3實(shí)施方式3的效果
實(shí)施方式3中,將d按照每2X4=8比特的±央,在乘數(shù)群更新部3160 中更新乘以中間值Z的乘數(shù)X一iO, X一il,…,X_il5 (i是O或l)。由此, 與實(shí)施方式1和2同樣,通過使每個塊乘數(shù)不同,可以防止通過分析乘數(shù) 是什么,來求出私鑰d的BigMac攻擊。
實(shí)施方式3中,在使用了窗口法的乘冪運(yùn)算中也不需要取消運(yùn)算。這 里,窗口的寬度是4比特,將512比特的私鑰d分割為64個窗口。
下面,描述不需要取消運(yùn)算的理由。
這是因?yàn)?,在對隨機(jī)數(shù)R進(jìn)行了預(yù)定次數(shù)(這里,64次)的二次冪運(yùn) 算處理后,使隨機(jī)數(shù)R出現(xiàn)的窗口與包含對應(yīng)的隨機(jī)數(shù)去除數(shù)S的窗口成 對,從而通過隨機(jī)數(shù)去除數(shù)S去除隨機(jī)數(shù)r的影響(ra (2 a 256) modn)。
4.變形例
上述說明的實(shí)施方式是本發(fā)明的實(shí)施一例,本發(fā)明并不限于該實(shí)施方 式,可以在不脫離其宗旨的范圍內(nèi)以各種方式來加以實(shí)施。例如,本發(fā)明還包含如下這樣的情況。
(1) 實(shí)施方式1 3中的私鑰d的比特大小不限于512。也可以是1024 和2048。另外,乘冪運(yùn)算裝置中計算了 X a d mod n,但是,也可設(shè)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 時也可使用乘冪運(yùn)算裝置。該情況下,在計算例如X^dpmodp時,將乘 法部等中使用的mod n作為mod p,來實(shí)施乘冪運(yùn)算裝置。該情況下,在 乘數(shù)群的設(shè)置時,也可將X—il—XXX—i0 mod p (i二0或l)中的X進(jìn)行 modp。可通過對其進(jìn)行modn,來依賴于輸入的X產(chǎn)生Xmodp的運(yùn)算, 并通過測量這時的功率來防止p的信息被泄漏。另外,對于q也同樣。
(2) 實(shí)施方式1、 2的第二計數(shù)器判斷部判斷計數(shù)器是否可被8整除, 但是并不限于此。也可判斷是否可被8以外的值、例如4整除。另外,也 可保持包含多個正整數(shù)的表格,來判斷是否是該表格中存儲的正整數(shù)。另 外,該表格中包含正整數(shù)可以不僅是8的倍數(shù)等具有規(guī)律性的正整數(shù),也 可以是沒有規(guī)律性的正整數(shù)。在這些情況下,根據(jù)該正整數(shù)的值,u變化。
實(shí)施方式3中也同樣,第二計數(shù)器判斷部也可判斷是否可被2以外的 值、例如4整除。另外,也可保持包含多個正整數(shù)的表格,并判斷是否是 該表格中存儲的正整數(shù)。
(3) 實(shí)施方式1的第三計數(shù)器判斷部判斷計數(shù)器是否可被16整除, 并根據(jù)其判斷結(jié)果來設(shè)置乘數(shù)群,但并不限于此。例如,也可以是可被32 或64這樣的2的冪數(shù)整除。另夕卜,不僅是如16、 32或64這樣的2的冪數(shù), 也可以是奇數(shù)。
(4) 實(shí)施方式1 3的乘數(shù)群更新部中,對乘數(shù)群的乘數(shù)值X一i0 (i 是0到31的值)進(jìn)行二次冪運(yùn)算,但是并不限于此。例如,也可三次冪。 即,更新后的乘數(shù)值只要是使用更新前的乘數(shù)值XjO變更而來的值即可。
(5) 實(shí)施方式l中,隨機(jī)數(shù)群的個數(shù)為32,但是并不限于此。例如, 在乘數(shù)群的設(shè)置的變分、即,數(shù)組RSI中含有的隨機(jī)數(shù)選擇信息的組合的 種類想要為2^32左右的情況下,可以是26個。 一般對于隨機(jī)數(shù)群的個數(shù) g,變分的數(shù)目有g(shù)/2的階乘個。
(6) 實(shí)施方式l、 2中,以從冪值的高位比特向低位的方向,判斷冪
48值的比特來執(zhí)行運(yùn)算,但是也可沿低位比特到高位的方向,判斷冪值的比 特來執(zhí)行運(yùn)算。
該情況下,二次冪運(yùn)算部不對中間值執(zhí)行二次冪運(yùn)算,而對之前設(shè)置 的乘數(shù)群執(zhí)行二次冪運(yùn)算,來更新乘數(shù)群。另外,不需要乘數(shù)群更新部,
第一次執(zhí)行的乘數(shù)群設(shè)置部設(shè)置成使用R來進(jìn)行遮蔽。即,乘數(shù)群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。進(jìn)一步,第 二次執(zhí)行的乘數(shù)群設(shè)置部設(shè)置成使用(SXRA (2 a 255))進(jìn)行遮蔽。這時, 通過將S乘以之前的乘數(shù)群MT一O的各個乘數(shù),來設(shè)置乘數(shù)群MTJ。在 此之前,通過二次冪運(yùn)算部來對乘數(shù)群MT一O的各要素進(jìn)行二次冪運(yùn)算。 即,求出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的乘數(shù)分別設(shè)作SXIT (2^256), SX (XXR) a (2 a 256)。
進(jìn)一步,例如,將實(shí)施方式2的隨機(jī)數(shù)種子存儲部中存儲的隨機(jī)數(shù)種 子U、隨機(jī)數(shù)去除種子V設(shè)置成V=IT (—2^ 256—1)。通過這樣來加 以設(shè)置,R和S的關(guān)系也為S=IT (—2^256—1)。結(jié)果,之前描述的 MT—l的乘數(shù)為SXRA (2^ 256) =R^ ( —1), SX (XXR) ^ (2^256) (2^ 256) ( — 1)。結(jié)果,通過使用乘數(shù)群MT—1來執(zhí)行乘法,
可以抵消使用作為MT一O的初始值的(R, XXR)來執(zhí)行乘法時的隨機(jī)數(shù) R的影響。對此之后的比特,也通過二次冪運(yùn)算部的二次冪運(yùn)算,依次變 化為(—2), X〃 (2^ 257) XRA (—2))、 (R^ (—4), X〃 (2
"58) (—4))、…、(R"55,(2H) XR^ (—255)),
從而可通過成對的高位比特的處理來抵消各個低位比特的隨機(jī)數(shù)的影響。
在實(shí)施方式1中,也只要將隨機(jī)數(shù)群Rt_i中包含的R_i、 S_i如上所述 設(shè)置為s-ra (—2^256—1)即可。
(7) 實(shí)施方式1 3中,分別設(shè)置了多個乘數(shù)群,但是也可用一個乘 數(shù)群替換在乘數(shù)群設(shè)置部中計算出的結(jié)果。
(8) 也可將實(shí)施方式1中的隨機(jī)數(shù)群存儲部中存儲的隨機(jī)數(shù)的一部分或全部作為隨機(jī)數(shù)種子,將隨機(jī)數(shù)去除數(shù)的一部分或全部作為隨機(jī)數(shù)去除
種子,并分別如實(shí)施方式2那樣進(jìn)行乘冪,通過使這些結(jié)果相乘來生成隨 機(jī)數(shù)群。同樣也可組合實(shí)施方式1和3。
(9) 實(shí)施方式1 3中,預(yù)先存儲了隨機(jī)數(shù)與隨機(jī)數(shù)去除數(shù)或隨機(jī)數(shù) 種子與隨機(jī)數(shù)去除種子,但是也可在最初進(jìn)行加密處理時,根據(jù)私鑰算出 這些來加以存儲。通過該結(jié)構(gòu),在制造裝置時,不需要存儲隨機(jī)數(shù)與隨機(jī) 數(shù)去除數(shù)或隨機(jī)數(shù)種子與隨機(jī)數(shù)去除種子。另外,也可從外部提供私鑰。 進(jìn)一步,也可以每次執(zhí)行加密處理時,每次根據(jù)私鑰算出隨機(jī)數(shù)和隨機(jī)數(shù) 去除數(shù)來加以利用。
(10) 實(shí)施方式1 3的隨機(jī)數(shù)可以是任何值,也可轉(zhuǎn)用私鑰或公鑰的 值、或乘冪之外的功能中存儲的值。另外,在使用中國的剩余定理的情況 下,modp中的隨機(jī)數(shù)Rp與modq中的隨機(jī)數(shù)Rq也可以為相同值。由此, 可以減少存儲器大小。另外,可以不使用隨機(jī)數(shù),而轉(zhuǎn)用隨機(jī)數(shù)去除數(shù)。 在任何情況下都需要維持隨機(jī)數(shù)和隨機(jī)數(shù)去除數(shù)的關(guān)系。
(11) 實(shí)施方式1 3中也可通過追加例如指數(shù)遮蔽(ExponentBliding) 來實(shí)施其他功率差分攻擊對策。在使用指數(shù)遮蔽的情況下,由于冪值每次 隨機(jī)變化,所以安全性更高。
(12) 在對實(shí)施方式2使用了中國的剩余定理的情況下,可以最先執(zhí) 行modp的隨機(jī)數(shù)種子和隨機(jī)數(shù)去除種子的w次冪,在modp中使用了乘 數(shù)群的乘冪運(yùn)算結(jié)束后,執(zhí)行mod q的隨機(jī)數(shù)種子和隨機(jī)數(shù)去除種子的w 次冪,從而改寫modp的隨機(jī)數(shù)種子和隨機(jī)數(shù)去除種子的存儲區(qū)域。由此, 可以減少隨機(jī)數(shù)和隨機(jī)數(shù)去除數(shù)的存儲器大小。
(13) 實(shí)施方式2中,w次冪運(yùn)算使用現(xiàn)有技術(shù)的方法,但是也可設(shè) 其為實(shí)施了功率差分攻擊對策。由此,安全性更加提高。
(14) 實(shí)施方式1 3中,通過隨機(jī)數(shù)和隨機(jī)數(shù)去除數(shù)的組合,抵消了 隨機(jī)數(shù)的影響,但是并不限于此。也可通過3個以上的隨機(jī)數(shù)的組合來抵 消隨機(jī)數(shù)的影響。該情況下,隨機(jī)數(shù)群為這些彼此相抵消的隨機(jī)數(shù)的組。
(14—1)下面,使用圖31來說明通過隨機(jī)數(shù)去除數(shù)S來抵消隨機(jī)數(shù) R、 R,的影響的情況。為了使說明簡單,而著眼于count二i、 j、 k來加以 說明。
50這里,設(shè)count-i時,隨機(jī)數(shù)R首次出現(xiàn),在count-j時,更新后的 隨機(jī)數(shù)R'首次出現(xiàn)。在count-k時,抵消這些隨機(jī)數(shù)的影響,而成為S =ra (—2、) XR, a (—2、)。
如圖31所示,count=i時隨機(jī)數(shù)R出現(xiàn),count=j時隨機(jī)數(shù)R'出現(xiàn), 通過在count二k的時刻下的二次冪運(yùn)算,分別對隨機(jī)數(shù)R和R'實(shí)施總共 p次、q次的二次冪運(yùn)算。
在count=k時刻的乘法運(yùn)算(例如,圖5所示的步驟S135、或140) 中,通過使用隨機(jī)數(shù)去除數(shù)S (二RA (—2、) XR, a (—2Aq)),來 抵消對隨機(jī)數(shù)R和R,的運(yùn)算結(jié)果(2、)、和R, a (2、))。
這吋,乘冪運(yùn)算裝置也可預(yù)先存儲由隨機(jī)數(shù)R、 R'和隨機(jī)數(shù)去除數(shù)S 的3個數(shù)構(gòu)成的組。
或者,也可以是,乘冪運(yùn)算裝置預(yù)先存儲由隨機(jī)數(shù)R、 R'、分別針對 隨機(jī)數(shù)R、 R'的隨機(jī)數(shù)去除數(shù)S—1、 3_2構(gòu)成的4個組,并根據(jù)隨機(jī)數(shù)去 除數(shù)S一l和S—2算出隨機(jī)數(shù)去除數(shù)S。
算出隨機(jī)數(shù)去除數(shù)S的定時只要是實(shí)施用于抵消對隨機(jī)數(shù)R和R'的 運(yùn)算結(jié)果(2^p)、和R, - (2ap))的運(yùn)算之前,則可以是任何時候。
(14—2)下面,在由隨機(jī)數(shù)去除數(shù)S、 S'抵消隨機(jī)數(shù)R的影響的情 況下,隨機(jī)數(shù)R和隨機(jī)數(shù)去除數(shù)S、 S'的關(guān)系可以如下這樣。設(shè)在隨機(jī)數(shù) R出現(xiàn)后進(jìn)行基于隨機(jī)數(shù)去除數(shù)S的乘法時,對隨機(jī)數(shù)R進(jìn)行i次二次冪 運(yùn)算。
設(shè)隨機(jī)數(shù)R和隨機(jī)數(shù)去除數(shù)S的關(guān)系為S二RA (—2D,隨機(jī)數(shù)R 和隨機(jī)數(shù)去除數(shù)S'的關(guān)系為s' =ir (—(i+l—j))。 j是比i小的 整數(shù)。
該情況下,在對隨機(jī)數(shù)R實(shí)施了 i次二次冪運(yùn)算之后,緊接著通過進(jìn) 行基于隨機(jī)數(shù)去除數(shù)S (=RA (—21))的乘法,從而成為取消了值R a (21)中的一部分且值R八(2^ (i—j))保留的狀態(tài)。通過對該值R a (2^ (i—j))實(shí)施二次冪運(yùn)算,運(yùn)算結(jié)果成為值IT (2^ (i—j + l)), 并且使用隨機(jī)數(shù)去除數(shù)S' (二R八(_2^ (i+l—j)))進(jìn)行相乘,從而取 消了值RA (i—j + l))。
51(15)本發(fā)明可以不運(yùn)算乘冪,而運(yùn)算橢圓曲線的點(diǎn)的標(biāo)量(scalar)
倍數(shù)點(diǎn)。該情況下,乘冪運(yùn)算裝置1000中實(shí)施的乘法是橢圓加法,二次冪
運(yùn)算是橢圓2倍運(yùn)算。另外,"冪"對應(yīng)于"標(biāo)量"。
具體來說,將實(shí)施方式1中所示的乘法"Z—ZXXiO"替換為橢圓加法 Z+Xi0",將乘法"Z—ZXXil (=ZXXXRS)"替換為橢圓加法"Z—Z
+Xil (=Z+X+RS)"。另夕卜,將實(shí)施方式1所示的二次冪運(yùn)算"Z—Z a 2"
替換為橢圓2倍運(yùn)算"Z—2*Z (=Z+Z)"。
下面使用具體例來表示運(yùn)算橢圓曲線的點(diǎn)的標(biāo)量倍數(shù)點(diǎn)的情況。 這里,使用圖32所示的流程圖來說明裝置A和裝置B之間進(jìn)行的密
鑰共有的一例。
裝置A設(shè)置私鑰xA來加以保持(步驟S901)。裝置B設(shè)置私鑰xB 來加以保持(步驟S931)。
存在保持橢圓曲線的管理中心,管理中心中設(shè)置了管理中心裝置960。 管理中心上設(shè)置的管理中心裝置960選擇橢圓曲線E: y a 2=x ^ 3+ax+b 的合適參數(shù)a和b來加以保持,選擇質(zhì)數(shù)p和橢圓曲線E上的合適的元G 來加以保持(步驟S911)。
管理中心裝置960公開質(zhì)數(shù)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可以共有相同的會話密鑰。
這里,橢圓曲線上的離散對數(shù)問題為安全性的基礎(chǔ)。
符號*表示多次相加橢圓曲線中包含的元的運(yùn)算,^G如下式所示,是 指x次相加橢圓曲線中含有的元G。
x*G=G+G+G+ +G
接著,下面簡單說明橢圓曲線上的橢圓冪倍數(shù)運(yùn)算。作為一例,計算10(^P。
若表示為100*P=2 (2 (P+2 (2 (2 (P+2P))))),則100*P通過基 于橢圓曲線上的點(diǎn)的6次2倍運(yùn)算與2次加法來加以計算。
這樣,橢圓冪倍數(shù)運(yùn)算歸納為基于2倍運(yùn)算和加法的運(yùn)算。
這里,設(shè)橢圓曲線的方程式為yA2=XA3+ax+b,橢圓曲線上的任 意點(diǎn)P的坐標(biāo)為(xl、 yl),任意的點(diǎn)Q的坐標(biāo)為(x2、 y2)。這里,設(shè)由 R二P+Q決定的點(diǎn)R的坐標(biāo)為(x3、 y3)。
在點(diǎn)P和點(diǎn)Q不相等的情況下,R二P+Q為相加的運(yùn)算。下面表示加 法的公式。
x3= {(y2—yl) / (x2—xl)}xl—x2 y3= {(y2—yl) / (x2—xl)} (xl_x3) —yl
在點(diǎn)P和點(diǎn)Q相等的情況下,為R=P+Q=P+P=2XP, R=P+Q
為2倍運(yùn)算。下面表示2倍運(yùn)算的公式。
x3= {(3Xx「2+a) / (2Xyl)} ^ 2— (2Xxl)
y3= {(3XxlA2+a) / (2Xy)} (xl—x3) —yl
這里,上述運(yùn)算是在定義了橢圓曲線的有限體上的運(yùn)算。
橢圓曲線的運(yùn)算公式在"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.)中
詳細(xì)說明。
(16)本發(fā)明中的群相當(dāng)于實(shí)施方式1到3中的作為基于"mod n"的 集合的剩余域、和上述(15)的橢圓曲線。
這里,所謂群是指集合G具有下面表示的性質(zhì)GO到G3的情況。 (GO)對于G的任意2個元a, b,定義積ab并屬于G。 (Gl)對于G的任意3個元a, b, c,成立(ab) c=a (be)(結(jié)合法則)。
(G2)對G的任意元a,存在滿足ae=ea的G的元e(單位元的存在)。 (G3)對于G的任意元a,存在滿足ab=ba=e的G的元b (存在逆元)。
上述群的定義在剩余域的群中表示了定義,但是在上述定義中,將積
53考慮為和來定義橢圓曲線上的群。
另外,本發(fā)明的基本運(yùn)算和窗口運(yùn)算相當(dāng)于實(shí)施方式1到3的乘法、 和上述(15)的橢圓加法。
進(jìn)位運(yùn)算相當(dāng)于實(shí)施方式1到3的二次冪運(yùn)算(2 a v)、和上述(15) 的橢圓2倍運(yùn)算(2*v)。
(17) 本發(fā)明可以不是乘冪運(yùn)算裝置,而是利用其的RSA加密的解密 裝置或RSA簽名的簽名生成裝置。另外,可以是執(zhí)行將秘密信息作為冪值 的乘冪運(yùn)算的信息安全裝置。例如,可以是ElGamal加密的解密裝置或DSA 簽名的簽名生成裝置。
(18) 上述各實(shí)施方式和變形例在如下所示的情況下適用。
(18 — 1)各實(shí)施方式和變形例在公鑰加密方式中的密文的解密與簽名 數(shù)據(jù)的生成中適用。對于這些,在上述中,作為對象數(shù)據(jù)X的乘冪運(yùn)算結(jié) 果加以說明。
.(18—2)各實(shí)施方式和變形例可在認(rèn)證中適用。所謂認(rèn)證是指驗(yàn)證通 過如自稱那樣的人物來發(fā)送消息或沒有篡改消息。各實(shí)施方式和變形例可 在身份證明中適用。身份的證明是指例如,具有對數(shù)據(jù)的訪問權(quán)或?qū)κ┰O(shè) 的訪問權(quán)(進(jìn)入權(quán))的證明、或自己是如所主張的人物的證明。進(jìn)一步, 各實(shí)施方式和變形例可在防止否認(rèn)中適用。所謂防止否認(rèn)是指對抗例如實(shí) 際上同意某事但主張為不同意的人。
(18—3)各實(shí)施方式和變形例可以在密鑰交換中適用。所謂密鑰交換 是指例如,2個人共有在使用廣播電波的私鑰加密方式中使用的私鑰。
(18 — 4)各實(shí)施方式和變形例也可以在扔硬幣(也稱作比特委托 (commitment))中適用。所謂扔硬幣是指例如,住在不同城市的2個象棋 玩家通過電子郵件來決定誰執(zhí)白。
(18—5)各實(shí)施方式和變形例可以在秘密分散中適用。秘密分散是指 例如,某個秘密的信息可以由共同工作的k個人使用,但是k一l個人不能 使用。
(18—6)各實(shí)施方式和變形例可以在零知識證明中適用。零知識證明 是指例如,某個人使他人對成功對解出數(shù)論的或組合論的問題的情形進(jìn)行 認(rèn)可,但連解是什么這樣的一點(diǎn)點(diǎn)信息都不提供。
54(19) 上述實(shí)施方式l中,對于相對私鑰d的所有比特,在步驟S135 和S140的其中一個中使用了隨機(jī)數(shù)R或隨機(jī)數(shù)去除數(shù)S,但是并不限于此。
也可對1個以上的特定比特分別使用隨機(jī)數(shù)R來施加乘法。針對各特 定的比特,對在該特定的比特中出現(xiàn)的隨機(jī)數(shù)R,通過使用與所述隨機(jī)數(shù)R 對應(yīng)的隨機(jī)數(shù)去除數(shù)S來對在重復(fù)預(yù)定次數(shù)的二次冪運(yùn)算之后的運(yùn)算對象 的比特施加乘法,從而可以取消對在該特定的比特中出現(xiàn)的隨機(jī)數(shù)R的二 次冪運(yùn)算的影響。這時,特定的比特為最低位比特之外的比特。
下面,使用特定的比特為1個情況來加以說明。
對第511比特到第256比特中的第i比特,使用隨機(jī)數(shù)R來施加乘法, 之后,對第(i一256)比特、即對實(shí)施了 256次二次冪運(yùn)算之后的運(yùn)算對 象的比特使用與所述隨機(jī)數(shù)R對應(yīng)的隨機(jī)數(shù)去除數(shù)S來施加乘法。這時, 在其他比特中,與現(xiàn)有技術(shù)同樣,在比特值為O的情況下,將值l乘以中 間值Z,在比特值是l的情況下,將對象數(shù)據(jù)X乘以中間值。
另外,在實(shí)施方式2中也同樣,也可分別對l個以上的特定比特使用 隨機(jī)數(shù)R來實(shí)施乘法。這時,特定的比特是最低位比特以外的比特。
在實(shí)施方式3中也同樣,可以分別對1個以上的特定窗口使用隨機(jī)數(shù) R來施加乘法。這時,特定的窗口為最低位的窗口之外的窗口。
(20) 上述實(shí)施方式1、 2中,乘冪運(yùn)算裝置按每個比特更新用于乘法 的隨機(jī)數(shù)。
在上述實(shí)施方式3中也同樣,乘冪運(yùn)算裝置也可按每個窗口來更新用 于乘法的隨機(jī)數(shù)。
(21) 上述實(shí)施方式l中,在乘冪運(yùn)算裝置的乘法部中使用的運(yùn)算式 也可以為X—i (=XA (d—0 XRS_ (RSI—i))。這里,RS— (RSI—i)是11_
(RSIj)和S— (RSI—i)的其中之一。
這是因?yàn)?,在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同值。
在上述實(shí)施方式2中也同樣,可以將乘冪運(yùn)算裝置的乘法部中使用的 運(yùn)算式設(shè)作X—i(=X〃 (d—i) XRS)。這里,RS是R和S的其中之一。 在上述實(shí)施方式3中也同樣,也可將乘冪運(yùn)算裝置的乘法部中使用的
55運(yùn)算式設(shè)作XJ (=XAWXRS)。這里,RS是R和S的其中之一,w是表 示窗口的值。
(22) 上述的各裝置具體來說是由微處理器、ROM、 RAM、硬盤單元、 顯示單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機(jī)系統(tǒng)。所述RAM或硬盤單元中存 儲了計算機(jī)程序。所述微處理器根據(jù)所述計算機(jī)程序來動作,從而各裝置 實(shí)現(xiàn)其功能。這里,計算機(jī)程序?yàn)榱藢?shí)現(xiàn)預(yù)定的功能,而組合多個表示對 計算機(jī)的指令的命令代碼來構(gòu)成。
(23) 構(gòu)成上述的各裝置的構(gòu)成要素的一部分或全部可以由1個系統(tǒng) LSI (Large Scale Integration:大規(guī)模集成電路)構(gòu)成。系統(tǒng)LSI是在1個 芯片上集成多個結(jié)構(gòu)部后加以制造的超多功能LSI,具體來說,是包含微處 理器、ROM、 RAM等構(gòu)成的計算機(jī)系統(tǒng)。在所述RAM中存儲計算機(jī)程序。 所述微處理器通過根據(jù)所述計算機(jī)程序來動作,從而系統(tǒng)LSI實(shí)現(xiàn)其功能。
構(gòu)成上述的各裝置的構(gòu)成要素的各部分可以分別單芯片化,也可包含 一部分或全部地單芯片化。
這里,為系統(tǒng)LSI,但是根據(jù)集成度的不同,還稱作IC、 LSI、超級 LSI、頂級LSI。集成電路化的方法并不限于LSI,還可由專用電路或通用 處理器來實(shí)現(xiàn)。在LSI制造后,也可利用可進(jìn)行編程的FPGA (Field Programmable Gate Array:現(xiàn)場可編程門陣列)或可重構(gòu)LSI內(nèi)部的電路單 元的連接和設(shè)置的可重構(gòu)處理器。
進(jìn)一步,若因半導(dǎo)體技術(shù)的進(jìn)步或派生的其他技術(shù)而替換LSI的集成 電路化的技術(shù)出現(xiàn),當(dāng)然,也可使用該技術(shù)來進(jìn)行功能塊的集成化。還有 適用生物技術(shù)等的可能。
(24) 構(gòu)成上述各裝置的構(gòu)成要素的一部分或全部可以由可在各裝置 上拆裝的IC卡或單個模塊構(gòu)成。所述IC卡或所述模塊是由微處理器、 ROM、 RAM等構(gòu)成的計算機(jī)系統(tǒng)。所述IC卡或所述模塊也可包含上述超 多功能LSI。微處理器通過根據(jù)計算機(jī)程序來動作,而使所述IC卡或所述 模塊實(shí)現(xiàn)其功能。該IC卡或該模塊也可具有防篡改性。
(25) 本發(fā)明可以是上述所示的方法。也可以是通過計算機(jī)來實(shí)現(xiàn)這 些方法的計算機(jī)程序,也可以是由所述計算機(jī)程序構(gòu)成的數(shù)字信號。
本發(fā)明可以是將所述計算機(jī)程序或所述數(shù)字信號記錄在計算機(jī)可讀取的記錄媒體例如軟盤、硬盤、CD—ROM、 MO、 DVD、 DVD—ROM、 DVD 一RAM、 BD (Blu—ray Disc)、半導(dǎo)體存儲器等中后的產(chǎn)品。也可以是在 這些記錄媒體上記錄的所述數(shù)字信號。
本發(fā)明也可將所述計算機(jī)程序或所述數(shù)字信號經(jīng)電氣通信線路、無線 或有線通信線路、以互聯(lián)網(wǎng)為代表的網(wǎng)絡(luò)、數(shù)據(jù)廣播等來傳送。
本發(fā)明也開始是具有微處理器和存儲器的計算機(jī)系統(tǒng),所述存儲器存 儲上述計算機(jī)程序,所述微處理器根據(jù)所述計算機(jī)程序來動作。
通過將所述程序或所述數(shù)字信號記錄在所述記錄媒體上來移送,或?qū)?所述程序或所述數(shù)字信號經(jīng)所述網(wǎng)絡(luò)等來移送,可通過獨(dú)立的其他計算機(jī) 系統(tǒng)來實(shí)施。
(26)也可以分別組合上述實(shí)施方式和上述變形例。
總結(jié)
(1)本發(fā)明是乘冪運(yùn)算裝置,輸入對象數(shù)據(jù),并輸出將作為秘密數(shù)的 秘密信息作為冪值的所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果,其特征在于,包括輸 入輸出部,受理所述對象數(shù)據(jù)的輸入,并輸出所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié) 果;秘密信息存儲部,存儲所述秘密信息;中間值存儲部,存儲中間值; 秘密信息判斷部,對所述秘密信息進(jìn)行判斷;乘數(shù)群存儲部,存儲由多個 乘數(shù)構(gòu)成的2個以上的乘數(shù)群;隨機(jī)數(shù)群存儲部,存儲由多個隨機(jī)數(shù)構(gòu)成 的隨機(jī)數(shù)群;2個以上的乘數(shù)群設(shè)置部,根據(jù)所述隨機(jī)數(shù)群中含有的所述隨 機(jī)數(shù),分別對2個以上的所述乘數(shù)群設(shè)置所述乘數(shù)群并將其存儲在所述乘 數(shù)群存儲部中;乘法部,根據(jù)所述秘密信息判斷部的判斷結(jié)果,對2個以 上的所述乘數(shù)群執(zhí)行所述中間值與屬于所述乘數(shù)群的所述乘數(shù)之間的相 乘,并將乘法結(jié)果存儲在所述中間值存儲部中;二次冪運(yùn)算部,執(zhí)行所述 中間值的二次冪運(yùn)算,并將二次冪運(yùn)算結(jié)果存儲在所述中間值存儲部;以 及乘數(shù)群更新部,根據(jù)所述乘數(shù)群中含有的所述乘數(shù),更新所述乘數(shù)群并 將其存儲在所述乘數(shù)群存儲部中;所述乘法部中使用的所述乘數(shù)是根據(jù)所 述秘密信息判斷部的判斷結(jié)果從所述乘數(shù)存儲部中存儲的多個所述乘數(shù)中 選擇出的,所有所述乘數(shù)群設(shè)置部通過組合所述乘數(shù)群設(shè)置部、所述乘數(shù) 群設(shè)置部之外的1個以上的乘數(shù)群設(shè)置部、使用所述2個以上的乘數(shù)群設(shè) 置部中設(shè)置的所述乘數(shù)群來進(jìn)行乘法的所述乘法部、所述二次冪運(yùn)算部和所述乘數(shù)群更新部的處理,來抵消在所述2個以上的乘數(shù)群設(shè)置部中設(shè)置 的所述隨機(jī)數(shù)的影響。
(2) 上述(1)的乘冪運(yùn)算裝置中,所述各個組合也可包含正好2個
所述乘數(shù)群設(shè)置部。
(3) 上述(2)的乘冪運(yùn)算裝置也可包含2個所述乘數(shù)群設(shè)置部,所
述乘數(shù)群設(shè)置部集合是1個。
(4) 上述(3)的乘冪運(yùn)算裝置也可進(jìn)一步包含存儲計數(shù)器的計數(shù)器 存儲部、更新計數(shù)器的值的計數(shù)器更新部與判斷計數(shù)器的值的計數(shù)器判斷 部,所述秘密信息判斷部根據(jù)所述計數(shù)器的值來加以判斷,所述乘數(shù)群更 新部根據(jù)所述計數(shù)器判斷部的判斷結(jié)果來更新所述乘數(shù)。
(5) 上述(4)的乘冪運(yùn)算裝置中,也可以是,作為在2個以上的所 述乘數(shù)群設(shè)置部中第一次進(jìn)行處理的所述乘數(shù)群設(shè)置部的第一乘數(shù)群設(shè)置 部在所述乘法部和所述二次冪運(yùn)算部之前執(zhí)行,作為在2個以上的所述乘 數(shù)群設(shè)置部中第二次進(jìn)行處理的所述乘數(shù)群設(shè)置部的第二乘數(shù)群設(shè)置部在 所述計數(shù)器判斷部中所述計數(shù)器的值表示所述冪值比特串的正中的情況下 執(zhí)行。
(6) 上述(2)到(5)的其中之一的乘冪運(yùn)算裝置也可以進(jìn)一步具有 根據(jù)預(yù)先提供的1個以上的隨機(jī)數(shù)種子來設(shè)置所述隨機(jī)數(shù)群的隨機(jī)數(shù)群設(shè) 置部。
(7) 上述(2)到(6)的其中一個的乘冪運(yùn)算裝置中,也可以是,所 述乘數(shù)群設(shè)置部隨機(jī)選擇所述隨機(jī)數(shù)群中含有的所述隨機(jī)數(shù)。
(8) 上述(2)或(6)的乘冪運(yùn)算裝置中,也可以是,所述隨機(jī)數(shù)群 設(shè)置部將1個以上的所述隨機(jī)數(shù)種子本身作為所述隨機(jī)數(shù)群加以設(shè)置。
(9) 上述(2)或(6)的乘冪運(yùn)算裝置中,也可以是,所述隨機(jī)數(shù)群 設(shè)置部生成作為隨機(jī)的冪值的隨機(jī)冪值,并將所述隨機(jī)冪值作為冪值來對 所述隨機(jī)數(shù)種子進(jìn)行乘冪,求出所述隨機(jī)數(shù)來設(shè)置所述隨機(jī)數(shù)群。
(10) 上述(1)到(9)的其中一個乘冪運(yùn)算裝置中,其特征在于, 所述乘數(shù)群存儲部存儲2個所述乘數(shù)X一0、 X_l,所述乘數(shù)群更新部針對所 述乘數(shù)X—0、 X_l,將對所述乘數(shù)X—0 二次冪運(yùn)算后的結(jié)果作為對所述乘 數(shù)X—0的更新乘數(shù)X—0',并將所述對象數(shù)據(jù)與所述更新乘數(shù)X一0相乘后的結(jié)果作為對所述乘數(shù)X—1的更新乘數(shù)X_l',將各個所述更新乘數(shù)x_o'、 X—1'存儲在所述乘數(shù)群存儲部中(xj表示對x賦予下標(biāo)y。)。
(11) 上述(1)到(9)的其中一個乘冪運(yùn)算裝置中,其特征在于, 所述乘數(shù)群存儲部存儲2 a k(k是2以上)個所述乘數(shù)X—0、 X_l、 X一2、…、 X(2^k),所述乘數(shù)群更新部針對所述乘數(shù)X—0、 X_l,將對所述乘數(shù)X—0 進(jìn)行二次冪運(yùn)算后的結(jié)果作為對所述乘數(shù)X—0的更新乘數(shù)X—0',并將所述 對象數(shù)據(jù)和所述更新乘數(shù)X_0相乘后的結(jié)果作為對所述乘數(shù)X一l的更新乘
數(shù)x一r,將各個所述更新乘數(shù)x一o'、 x一r存儲在所述乘數(shù)群存儲部中(x
Ay表示x的y次冪。)。
(12) 本發(fā)明是解密裝置,輸入密文,將以作為秘密數(shù)的秘密信息為 冪值的所述密文的乘冪運(yùn)算結(jié)果作為解密文進(jìn)行輸出,其特征在于,具有: 輸入輸出部,受理所述密文的輸入,并輸出所述解密文;秘密信息存儲部, 存儲所述秘密信息;中間值存儲部,存儲中間值;秘密信息判斷部,對所 述秘密信息加以判斷;乘數(shù)群存儲部,存儲由多個乘數(shù)構(gòu)成的2個以上的 乘數(shù)群;隨機(jī)數(shù)群存儲部,存儲由多個隨機(jī)數(shù)構(gòu)成的隨機(jī)數(shù)群;2個以上的 乘數(shù)群設(shè)置部,根據(jù)所述隨機(jī)數(shù)群中含有的所述隨機(jī)數(shù),分別對2個以上 的所述乘數(shù)群設(shè)置所述乘數(shù)群并將其存儲在所述乘數(shù)群存儲部中;乘法部, 根據(jù)所述秘密信息判斷部的判斷結(jié)果,對2個以上的所述乘數(shù)群執(zhí)行所述 中間值與屬于所述乘數(shù)群的所述乘數(shù)之間的乘法,并將乘法結(jié)果存儲在所 述中間值存儲部;二次冪運(yùn)算部,執(zhí)行所述中間值的二次冪運(yùn)算,并將二 次冪運(yùn)算結(jié)果存儲到所述中間值存儲部中;以及乘數(shù)群更新部,根據(jù)所述 乘數(shù)群中含有的所述乘數(shù),來更新所述乘數(shù)群并將其存儲在所述乘數(shù)群存 儲部中,所述乘法部中使用的所述乘數(shù)是根據(jù)所述秘密信息判斷部的判斷 結(jié)果從所述乘數(shù)存儲部中存儲的多個所述乘數(shù)中選擇出的,所有所述乘數(shù) 群設(shè)置部通過組合所述乘數(shù)群設(shè)置部、所述乘數(shù)群設(shè)置部之外的1個以上 的乘數(shù)群設(shè)置部、使用所述2個以上的乘數(shù)群設(shè)置部中設(shè)置的所述乘數(shù)群 來進(jìn)行相乘的所述乘法部、所述二次冪運(yùn)算部和所述乘數(shù)群更新部的處理, 來抵消在所述2個以上的乘數(shù)群設(shè)置部中設(shè)置的所述隨機(jī)數(shù)的影響。
(13) 本發(fā)明是簽名生成裝置,以簽名對象數(shù)據(jù)為輸入,將以作為秘 密數(shù)的秘密信息為冪值的所述簽名對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果作為簽名數(shù)據(jù)輸出,其特征在于,具有輸入輸出部,受理所述簽名對象數(shù)據(jù)的輸入, 并輸出所述簽名數(shù)據(jù);秘密信息存儲部,存儲所述秘密信息;中間值存儲 部,存儲中間值;秘密信息判斷部,對所述秘密信息加以判斷;乘數(shù)群存 儲部,存儲由多個乘數(shù)構(gòu)成的2個以上的乘數(shù)群;隨機(jī)數(shù)群存儲部,存儲 由多個隨機(jī)數(shù)構(gòu)成的隨機(jī)數(shù)群;2個以上的乘數(shù)群設(shè)置部,根據(jù)所述隨機(jī)數(shù) 群中含有的所述隨機(jī)數(shù),分別對2個以上的所述乘數(shù)群設(shè)置所述乘數(shù)群并 將其存儲在所述乘數(shù)群存儲部中;乘法部,根據(jù)所述秘密信息判斷部的判 斷結(jié)果,對2個以上的所述乘數(shù)群執(zhí)行所述中間值與屬于所述乘數(shù)群的所 述乘數(shù)的乘法,并將乘法結(jié)果存儲在所述中間值存儲部;二次冪運(yùn)算部, 執(zhí)行所述中間值的二次冪運(yùn)算,并將二次冪運(yùn)算結(jié)果存儲到所述中間值存 儲部中;以及乘數(shù)群更新部,根據(jù)所述乘數(shù)群中含有的所述乘數(shù),來更新 所述乘數(shù)群并將其存儲在所述乘數(shù)群存儲部中,所述乘法部中使用的所述 乘數(shù)是根據(jù)所述秘密信息判斷部的判斷結(jié)果從所述乘數(shù)存儲部中存儲的多 個所述乘數(shù)中選擇出的,所有所述乘數(shù)群設(shè)置部通過組合在所述乘數(shù)群設(shè) 置部、所述乘數(shù)群設(shè)置部之外的1個以上的乘數(shù)群設(shè)置部、使用所述2個 以上的乘數(shù)群設(shè)置部中設(shè)置的所述乘數(shù)群來進(jìn)行相乘的所述乘法部、所述 二次冪運(yùn)算部和所述乘數(shù)群更新部的處理,來抵消在所述2個以上的乘數(shù) 群設(shè)置部中設(shè)置的所述隨機(jī)數(shù)的影響。
(14)本發(fā)明是乘冪運(yùn)算方法,輸入對象數(shù)據(jù),輸出以作為秘密數(shù)的 秘密信息為冪值的所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果,其特征在于,包括輸 入輸出歩驟,受理所述對象數(shù)據(jù)的輸入,并輸出所述對象數(shù)據(jù)的乘冪運(yùn)算 結(jié)果;秘密信息存儲步驟,存儲所述秘密信息;中間值存儲步驟,存儲中 間值;秘密信息判斷步驟,對所述秘密信息加以判斷;乘數(shù)群存儲步驟, 存儲由多個乘數(shù)構(gòu)成的2個以上的乘數(shù)群;隨機(jī)數(shù)群存儲步驟,存儲由多 個隨機(jī)數(shù)構(gòu)成的隨機(jī)數(shù)群;2個以上的乘數(shù)群設(shè)置步驟,根據(jù)所述隨機(jī)數(shù)群 中含有的所述隨機(jī)數(shù),分別對2個以上的所述乘數(shù)群設(shè)置所述乘數(shù)群;乘 法步驟,根據(jù)所述秘密信息判斷部的判斷結(jié)果,對2個以上的所述乘數(shù)群 執(zhí)行所述中間值與屬于所述乘數(shù)群的所述乘數(shù)之間的乘法;二次冪運(yùn)算步 驟,執(zhí)行所述中間值的二次冪運(yùn)算;以及乘數(shù)群更新步驟,根據(jù)所述乘數(shù) 群中含有的所述乘數(shù),來更新所述乘數(shù)群,所述乘法步驟中使用的所述乘數(shù)是根據(jù)所述秘密信息判斷部的判斷結(jié)果從所述乘數(shù)群中含有的多個所述乘數(shù)中選擇出的,所有所述乘數(shù)群設(shè)置步驟通過組合在所述乘數(shù)群設(shè)置步
驟、所述乘數(shù)群設(shè)置步驟之外的1個以上的乘數(shù)群設(shè)置步驟、使用所述2個以上的乘數(shù)群設(shè)置步驟中設(shè)置的所述乘數(shù)群來進(jìn)行相乘的所述乘法步驟、所述二次冪運(yùn)算步驟和所述乘數(shù)群更新步驟的處理,來抵消在所述2個以上的乘數(shù)群設(shè)置步驟中設(shè)置的所述隨機(jī)數(shù)的影響。
(15) 本發(fā)明是由乘冪運(yùn)算裝置執(zhí)行的程序,該乘冪運(yùn)算裝置輸入對象數(shù)據(jù),并輸出以作為秘密數(shù)的秘密信息為冪值的所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果,其特征在于,所述程序使乘冪運(yùn)算裝置執(zhí)行下述步驟輸入輸出步驟,受理所述對象數(shù)據(jù)的輸入,并輸出所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果;秘密信息存儲步驟,存儲所述秘密信息;中間值存儲步驟,存儲中間值;秘密信息判斷步驟,對所述秘密信息加以判斷;乘數(shù)群存儲步驟,存儲由多個乘數(shù)構(gòu)成的2個以上的乘數(shù)群;隨機(jī)數(shù)群存儲步驟,存儲由多個隨機(jī)數(shù)構(gòu)成的隨機(jī)數(shù)群;2個以上乘數(shù)群設(shè)置步驟,根據(jù)所述隨機(jī)數(shù)群中含有的所述隨機(jī)數(shù),分別對2個以上的所述乘數(shù)群設(shè)置所述乘數(shù)群;乘法步驟,根據(jù)所述秘密信息判斷部的判斷結(jié)果,對2個以上的所述乘數(shù)群執(zhí)行所述中間值與屬于所述乘數(shù)群的所述乘數(shù)的乘法;二次冪運(yùn)算步驟,執(zhí)行所述中間值的二次冪運(yùn)算;以及乘數(shù)群更新步驟,根據(jù)所述乘數(shù)群中含有的所述乘數(shù),更新所述乘數(shù)群;所述乘法步驟中使用的所述乘數(shù)是根據(jù)所述秘密信息判斷部的判斷結(jié)果從所述乘數(shù)群中含有的多個所述乘數(shù)中選擇出的,所有所述乘數(shù)群設(shè)置步驟通過組合在所述乘數(shù)群設(shè)置步驟、所述乘數(shù)群設(shè)置歩驟之外的1個以上的乘數(shù)群設(shè)置步驟、使用所述2個以上的乘數(shù)群設(shè)置歩驟中設(shè)置的所述乘數(shù)群來進(jìn)行相乘的所述乘法步驟、所述二次冪運(yùn)算步驟和所述乘數(shù)群更新步驟的處理,來抵消在所述2個以上的乘數(shù)群設(shè)置步驟中設(shè)置的所述隨機(jī)數(shù)的影響。
(16) 本發(fā)明的特征在于是記錄了上述(15)記載的程序的媒體。
(17) 本發(fā)明是乘冪運(yùn)算裝置的集成電路,該乘冪運(yùn)算裝置輸入對象數(shù)據(jù),并輸出以作為秘密數(shù)的秘密信息為冪值的所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果,其特征在于,所述集成電路具有輸入輸出部,受理所述對象數(shù)據(jù)的輸入,并輸出所述對象數(shù)據(jù)的乘冪運(yùn)算結(jié)果;秘密信息存儲部,存儲所述秘密信息;中間值存儲部,存儲中間值;秘密信息判斷部,對所述秘密信息加以判斷;乘數(shù)群存儲部,存儲由多個乘數(shù)構(gòu)成的2個以上的乘數(shù)群;隨機(jī)數(shù)群存儲部,存儲由多個隨機(jī)數(shù)構(gòu)成的隨機(jī)數(shù)群;2個以上的乘數(shù)群設(shè)置部,根據(jù)所述隨機(jī)數(shù)群中含有的所述隨機(jī)數(shù),分別對2個以上的所述乘數(shù)群設(shè)置所述乘數(shù)群并將其存儲在所述乘數(shù)群存儲部中;乘法部,根據(jù)所述秘密信息判斷部的判斷結(jié)果,對2個以上的所述乘數(shù)群執(zhí)行所述中間值與屬于所述乘數(shù)群的所述乘數(shù)之間的乘法,并將乘法結(jié)果存儲在所述中間值存儲部;二次冪運(yùn)算部,執(zhí)行所述中間值的二次冪運(yùn)算,并將二次冪運(yùn)算結(jié)果存儲到所述中間值存儲部中;以及乘數(shù)群更新部,根據(jù)所述乘數(shù)群中含有的所述乘數(shù),來更新所述乘數(shù)群并將其存儲在所述乘數(shù)群存儲部中,所述乘法部中使用的所述乘數(shù)是根據(jù)所述秘密信息判斷部的判斷結(jié)果從所述乘數(shù)存儲部中存儲的多個所述乘數(shù)中選擇出的,所有所述乘數(shù)群設(shè)置部通過組合在所述乘數(shù)群設(shè)置部、所述乘數(shù)群設(shè)置部之外的1個以上的乘數(shù)群設(shè)置部、使用所述2個以上的乘數(shù)群設(shè)置部中設(shè)置的所述乘數(shù)群來進(jìn)行相乘的所述乘法部、所述二次冪運(yùn)算部和所述乘數(shù)群更新部的處理,來抵消在所述2個以上的乘數(shù)群設(shè)置部中設(shè)置的所述隨機(jī)數(shù)的影響。
(18)根據(jù)本發(fā)明,可以防止因BigMac攻擊而降低了安全性,同時,在進(jìn)行對象數(shù)據(jù)的乘冪運(yùn)算的過程中,由于取消了隨機(jī)數(shù)R的影響,所以不需要如現(xiàn)有技術(shù)那樣另外進(jìn)行取消處理。因此,其價值很大。產(chǎn)業(yè)上的可用性
本發(fā)明在上述表示的乘冪運(yùn)算裝置、解密基于公鑰加密的密文的裝置和生成基于公鑰加密的簽名數(shù)據(jù)的裝置的制造和銷售產(chǎn)業(yè)中,可以經(jīng)營性地、持續(xù)地、反復(fù)地利用。
通過使用基于本發(fā)明的乘冪運(yùn)算裝置,可以使基于BigMac攻擊的私鑰分析變得困難。
權(quán)利要求
1.一種信息安全裝置,在由預(yù)定的集合和使用其元的基本元定義的群中,通過進(jìn)行將使用了元X的基本運(yùn)算重復(fù)d次的冪運(yùn)算d&amp;X,由此安全且可靠地處理預(yù)定的信息,其特征在于,包括取得單元,取得值d;以及主運(yùn)算單元,使用窗口法,按照值d的每個窗口進(jìn)行進(jìn)位運(yùn)算和基于該窗口的窗口值及元X的窗口運(yùn)算,由此進(jìn)行冪運(yùn)算d&amp;X;所述主運(yùn)算單元在第一窗口的窗口運(yùn)算中,使用隨機(jī)數(shù)R;在第二窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消從所述第一窗口到該第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn)算因數(shù)。
2. 根據(jù)權(quán)利要求1所述的信息安全裝置,其特征在于, 所述信息安全裝置還包括處理單元,該處理單元使用冪運(yùn)算d&X的運(yùn)算結(jié)果,來解密信息,或?qū)π畔?shí)施數(shù)字簽名。
3. 根據(jù)權(quán)利要求1所述的信息安全裝置,其特征在于,所述第二窗口存在于從所述第一窗口開始距離值V處;所述取消值S是針對冪運(yùn)算(v&2)的運(yùn)算結(jié)果的所述隨機(jī)數(shù)R的冪運(yùn)算(V&2) &11的倒數(shù); 所述主運(yùn)算單元包括取得部,取得所述隨機(jī)數(shù)R與所述取消值S; 變量保持部,保持變量Z;初始化部,作為初始值在變量Z中設(shè)置單位元;進(jìn)位運(yùn)算部,通過所述進(jìn)位運(yùn)算使變量Z進(jìn)位窗口寬度,并將其結(jié)果 作為變量Z;窗口運(yùn)算部,對運(yùn)算對象的窗口,取得基于其窗口值W和元X的冪運(yùn) 算值,并至少使用變量Z和取得的冪運(yùn)算值來實(shí)施所述窗口運(yùn)算,將運(yùn)算 結(jié)果作為變量Z;以及控制部,對所述進(jìn)位運(yùn)算部和窗口運(yùn)算部進(jìn)行控制,使得對所有窗口重復(fù)進(jìn)位運(yùn)算和窗口運(yùn)算; 所述窗口運(yùn)算部在所述第一窗口中,基于對其窗口值w和元X進(jìn)行的冪運(yùn)算w&X的 運(yùn)算結(jié)果、所述隨機(jī)數(shù)R和變量Z,進(jìn)行窗口運(yùn)算,并將其運(yùn)算結(jié)果作為 變量Z;在所述第二窗口中,基于對其窗口值w和元X進(jìn)行的冪運(yùn)算w&X的 運(yùn)算結(jié)果、所述取消值S和變量Z,進(jìn)行窗口運(yùn)算,并將其運(yùn)算結(jié)果作為 變量Z。
4. 根據(jù)權(quán)利要求3所述的信息安全裝置,其特征在于, 所述窗口運(yùn)算部對從所述第一窗口起連續(xù)的i個窗口構(gòu)成的組,按照該組中含有的每個窗口,來基于對其窗口值w和元X的冪運(yùn)算值w&X、 所述隨機(jī)數(shù)R和變量Z進(jìn)行窗口運(yùn)算,其中,i是比v小的值,對從所述第二窗口起連續(xù)的i個窗口構(gòu)成的組,按照該組中含有的每 個窗口,來基于對其窗口值w和元X的冪運(yùn)算值w&X、所述取消值S和 變量Z,進(jìn)行窗口運(yùn)算。
5. 根據(jù)權(quán)利要求4所述的信息安全裝置,其特征在于, 所述各窗口中含有的比特數(shù)是u, u是l以上的整數(shù), 所述窗口個數(shù)是lend / u個,值lend是所述值d的比特長度以上的2的冪數(shù)中的最小值; 所述值v滿足lend=2v,所述第一窗口是開頭窗口,所述第二窗口是從開頭窗口起位于第lend /2u+l的窗口;將從開頭窗口開始的lend / 2u個窗口 、和從開頭起第lend / 2u+1個 窗口開始到末尾窗口為止的lend/2u個窗口分割為由i個窗口構(gòu)成的第1 到第P組、以及第p+l到第m組;所述取得部進(jìn)一步針對第1到第P組,在運(yùn)算對象從運(yùn)算對象的組改 變?yōu)橄乱唤M時,取得與運(yùn)算對象的變更之前剛使用的隨機(jī)數(shù)不同的隨機(jī)數(shù);所述窗口運(yùn)算部針對第1到第P組的每一個,在該組為運(yùn)算對象期間,分別對該組中含有的窗口,取得使用了所述取得部取得的隨機(jī)數(shù)的窗口運(yùn)^算所得到的運(yùn)算值;所述取得部在將第p+l到第m組中含有的第m'組作為運(yùn)算對象時, 取得與在第(m' —p)組中使用的隨機(jī)數(shù)相對應(yīng)的取消值;所述窗口運(yùn)算部在以所述第m'組為運(yùn)算對象期間,取得使用了所述 取得部取得的取消值的窗口運(yùn)算所得到的運(yùn)算值。
6. 根據(jù)權(quán)利要求5所述的信息安全裝置,其特征在于, 所述取得部使p個彼此不同的隨機(jī)數(shù)與分別對應(yīng)于隨機(jī)數(shù)的取消值相對應(yīng)地預(yù)先 加以存儲;針對所述第1到第P組的每一個,通過從該組成為運(yùn)算對象時在當(dāng)前 時刻未選擇的1個以上的隨機(jī)數(shù)中選擇1個隨機(jī)數(shù),來取得該組中使用的 隨機(jī)數(shù);針對所述第m,組,通過選擇與第(m' —p)組中使用的隨機(jī)數(shù)相對 應(yīng)的取消值,來取得在該第m'組中使用的取消值。
7. 根據(jù)權(quán)利要求5所述的信息安全裝置,其特征在于, 所述取得部在所述不同隨機(jī)數(shù)的取得時,對當(dāng)前時刻保持的隨機(jī)數(shù)R進(jìn)行對于預(yù) 定數(shù)q的乘冪運(yùn)算R A q,并將該乘冪運(yùn)算R ^ q的運(yùn)算結(jié)果再次作為隨機(jī) 數(shù)R加以保持;在取消值的取得時,對當(dāng)前時刻保持的取消值S進(jìn)行對于所述預(yù)定數(shù) q的乘冪運(yùn)算S a q,并將該乘冪運(yùn)算S a q再次作為取消值S加以保持。
8. 根據(jù)權(quán)利要求7所述的信息安全裝置,其特征在于, 所述取得部預(yù)先存儲第一種子值U和第二種子值V,所述第二種子值V是所述第一種子值U相對所述值v的冪運(yùn)算(v&2) &11的取消值;所述取得部在進(jìn)行對所述第一組的運(yùn)算之前,生成隨機(jī)數(shù)r,并在所述 第一和第二種子值U、 V中,分別將實(shí)施了對隨機(jī)數(shù)r的乘冪運(yùn)算后的值 作為隨機(jī)數(shù)R和取消值S加以保持。
9. 根據(jù)權(quán)利要求5所述的信息安全裝置,其特征在于, 所述各組由l個窗口構(gòu)成。
10. 根據(jù)權(quán)利要求5所述的信息安全裝置,其特征在于, 所述窗口是l比特長度。
11. 根據(jù)權(quán)利要求3所述的信息安全裝置,其特征在于, 所述取得部還在以所述第一窗口到所述第二窗口之間存在的第三窗口為對象時,將所述隨機(jī)數(shù)R取得與所述隨機(jī)數(shù)R不同的隨機(jī)數(shù)R';所述取得部還取得取消值S,,該取消值S,取消從所述第三窗口到該 第二窗口為止對所述隨機(jī)數(shù)R'進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn)算因數(shù), 并將該取消值S'與所述取消值S—起加以保持;所述窗口運(yùn)算部在所述第三窗口中,進(jìn)行基于對其窗口值w和元X進(jìn)行的冪運(yùn)算w& X的運(yùn)算結(jié)果、所述隨機(jī)數(shù)R'和變量Z的窗口運(yùn)算,并將其運(yùn)算結(jié)果作 為變量Z;在所述第二窗口中,還取得使用了所述取消值S'的窗口運(yùn)算所得到 的運(yùn)算值。
12. 根據(jù)權(quán)利要求ll所述的信息安全裝置,其特征在于, 所述取得部通過預(yù)先保持對所述取消值S和S'實(shí)施了基本運(yùn)算后的值T,來保持所述取消值S和S';所述取得部在以所述第二窗口作為運(yùn)算對象時,通過取得所述值T, 來取得所述取消值S和S'。
13. 根據(jù)權(quán)利要求ll所述的信息安全裝置,其特征在于, 所述取得部預(yù)先保持所述取消值S和S';通過施加使用了所述取消值S和S'的基本運(yùn)算來算出并取得值T, 由此取得所述取消值S和S'。
14. 根據(jù)權(quán)利要求1所述的信息安全裝置,其特征在于, 所述群將所述預(yù)定的集合設(shè)為以值n為模的剩余域,將基本運(yùn)算設(shè)為乘法;所述元X是所述剩余域中含有的值; 所述進(jìn)位運(yùn)算是所述剩余域上的乘冪運(yùn)算; 所述基本運(yùn)算和所述窗口運(yùn)算是所述剩余域上的乘法; 所述主運(yùn)算部使用所述剩余域上的乘冪運(yùn)算和所述剩余域上的乘法來 算出所述乘冪運(yùn)算d&X=X a d。
15. 根據(jù)權(quán)利要求1所述的信息安全裝置,其特征在于, 所述群將所述預(yù)定的集合設(shè)為橢圓曲線上的點(diǎn)的集合,將基本運(yùn)算設(shè)為加法;所述元X是橢圓曲線上的點(diǎn); 所述進(jìn)位運(yùn)算是所述橢圓曲線上的乘冪運(yùn)算; 所述基本運(yùn)算和所述窗口運(yùn)算是所述橢圓曲線上的加法; 所述主運(yùn)算部使用所述橢圓曲線上的乘冪運(yùn)算和所述橢圓曲線上的加法,來算出所述乘冪運(yùn)算d&X二(PX。
16. —種在信息安全裝置中使用的方法,該信息安全裝置在由預(yù)定的 集合和使用其元的基本元定義的群中,通過進(jìn)行將使用了元X的基本運(yùn)算 重復(fù)d次的冪運(yùn)算d&X,由此安全且可靠地處理預(yù)定的信息,其特征在于, 上述方法包括取得步驟,取得值d;以及主運(yùn)算步驟,使用窗口法,按照值d的每個窗口進(jìn)行進(jìn)位運(yùn)算和基于 該窗口的窗口值及元X的窗口運(yùn)算,由此進(jìn)行冪運(yùn)算d&X; 所述主運(yùn)算步驟中,在第一窗口的窗口運(yùn)算中,使用隨機(jī)數(shù)R;在第二窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消從所述第 一窗口到該第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn) 算因數(shù)。
17. —種計算機(jī)可讀取的記錄媒體,記錄了在信息安全裝置中使用的 計算機(jī)程序,所述信息安全裝置由預(yù)定的集合和使用其元的基本元定義的 群中,通過進(jìn)行將使用了元X的基本運(yùn)算重復(fù)d次的冪運(yùn)算d&X,由此安 全且可靠地處理預(yù)定的信息,其特征在于,所述記錄媒體記錄使計算機(jī)執(zhí)行下述步驟的計算機(jī)程序 取得步驟,取得值d;以及主運(yùn)算步驟,使用窗口法,按照值d的每個窗口進(jìn)行進(jìn)位運(yùn)算和基于 該窗口的窗口值及元X的窗口運(yùn)算,由此進(jìn)行冪運(yùn)算d&X; 所述主運(yùn)算步驟中,在第一窗口的窗口運(yùn)算中,使用隨機(jī)數(shù)R;在第二窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消從所述第 一窗口到該第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn) 算因數(shù)。
18. —種集成電路,在信息安全裝置中使用,該信息安全裝置在由預(yù) 定的集合和使用其元的基本元定義的群中,通過進(jìn)行將使用了元X的基本 運(yùn)算重復(fù)d次的冪運(yùn)算d&X,由此安全且可靠地處理預(yù)定的信息,其特征在于,包括取得單元,取得值d;主運(yùn)算單元,使用窗口法,按照值d的每個窗口進(jìn)行進(jìn)位運(yùn)算與基于 該窗口的窗口值和元X的窗口運(yùn)算,由此進(jìn)行冪運(yùn)算d&X; 所述主運(yùn)算單元在第一窗口的窗口運(yùn)算中,使用隨機(jī)數(shù)R;在第二窗口的窗口運(yùn)算中,使用取消值S,該取消值S取消從所述第 一窗口到該第二窗口為止對所述隨機(jī)數(shù)R進(jìn)行的進(jìn)位運(yùn)算所累積的累積運(yùn) 算因數(shù)。
全文摘要
本發(fā)明的目的在于提供一種信息安全裝置,與現(xiàn)有技術(shù)相比可以減少進(jìn)行秘密通信或認(rèn)證時應(yīng)運(yùn)算的冪運(yùn)算的處理時間。在該信息安全裝置中,通過根據(jù)對象數(shù)據(jù)X和秘密的值d使用窗口法算出乘冪值X^d,來進(jìn)行秘密通信或認(rèn)證,在算出乘冪值X^d的過程中,在對基于乘法的運(yùn)算中出現(xiàn)的隨機(jī)數(shù)R重復(fù)了預(yù)定次數(shù)例如256次二次冪運(yùn)算之后的乘法中,使用隨機(jī)數(shù)去除數(shù)S(=R^(-2^256)),來取消對隨機(jī)數(shù)R的二次冪運(yùn)算所得到的運(yùn)算結(jié)果,從而不需要現(xiàn)有技術(shù)的取消處理。
文檔編號G09C1/00GK101542557SQ20088000054
公開日2009年9月23日 申請日期2008年5月20日 優(yōu)先權(quán)日2007年5月30日
發(fā)明者布田裕一, 松崎棗, 野仲真佐男 申請人:松下電器產(chǎn)業(yè)株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
扎赉特旗| 龙南县| 灌南县| 寿阳县| 德钦县| 军事| 禄丰县| 定西市| 衡水市| 鹤壁市| 浑源县| 微博| 大石桥市| 临沧市| 石景山区| 安义县| 乌鲁木齐县| 达州市| 民丰县| 谢通门县| 武隆县| 右玉县| 安龙县| 六安市| 阿图什市| 高唐县| 丰都县| 衡阳市| 贵阳市| 雅安市| 大足县| 盘山县| 博客| 剑阁县| 桐乡市| 吴旗县| 安泽县| 玉田县| 阿尔山市| 双城市| 柞水县|