WO2005013243A1 - モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム - Google Patents

モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム Download PDF

Info

Publication number
WO2005013243A1
WO2005013243A1 PCT/JP2003/009722 JP0309722W WO2005013243A1 WO 2005013243 A1 WO2005013243 A1 WO 2005013243A1 JP 0309722 W JP0309722 W JP 0309722W WO 2005013243 A1 WO2005013243 A1 WO 2005013243A1
Authority
WO
WIPO (PCT)
Prior art keywords
mod
reg2
mxk
reg1
calculating
Prior art date
Application number
PCT/JP2003/009722
Other languages
English (en)
French (fr)
Inventor
Kouichi Itoh
Masahiko Takenaka
Naoya Torii
Original Assignee
Fujitsu Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Limited filed Critical Fujitsu Limited
Priority to JP2005507387A priority Critical patent/JP4616169B2/ja
Priority to EP03817774A priority patent/EP1650727B1/en
Priority to DE60332876T priority patent/DE60332876D1/de
Priority to AU2003252750A priority patent/AU2003252750A1/en
Priority to PCT/JP2003/009722 priority patent/WO2005013243A1/ja
Publication of WO2005013243A1 publication Critical patent/WO2005013243A1/ja
Priority to US11/230,592 priority patent/US7792893B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction

Definitions

  • the present invention belongs to the field of information security, and relates to a calculation technique for performing a modular exponentiation multiplication operation for cryptographic processing at high speed.
  • the common key encryption method uses the same key (secret key) for encryption and decryption. By using this secret key as information that cannot be understood by a third party other than the sender and the receiver. This is a method that maintains safety.
  • Public key cryptography is a method in which different keys are used for encryption and decryption. Instead of making the key (public key) used for encryption publicly available, a key (private key) for decrypting ciphertext is used. This is a method for maintaining security by using the key) as secret information only for the recipient.
  • RSA and elliptic curve cryptography are known as typical public key cryptosystems.
  • R 2 mxk , where k is the bit length per word and m is the effective word length of n.
  • the operation performed by the Montgomery modular multiplication is axbxR- 1 (mod n), which is different from the ordinary modular multiplication operation axb (mod n). Therefore, in order to execute the modular exponentiation operation and correctly, it is necessary to convert the input data given to the Montgomery modular multiplication into data called a Montgomery system.
  • Fig. 2 shows the algorithm of the modular exponentiation processing using the Montgomery multiplication remainder .
  • the first line gives 1 as the initial value of y
  • the third line performs Montgomery transformation on a and y. And get y '.
  • the process of repeating the Montgomery multiplication remainder once or twice according to the bit value of d is repeated for the least significant bit to the most significant bit of d.
  • the final operation result y is obtained by performing the inverse Montgomery transformation on the 8th line for y 'calculated in this loop.
  • the first line calculates R (mod n).
  • the algorithm of FIG. 3 has a disadvantage that the processing speed is slow because the addition remainder is repeated X times in the third to fifth rows.
  • R 2 1G24
  • Conventional Method 2 for example, Patent Document 5
  • Each method is characterized by speeding up the entire calculation by combining REDG operation, shift operation and subtraction, instead of using only shift operation and subtraction.
  • k is the bit length per mode
  • n is the value expressed in m-mode value
  • Conventional method 1 mainly consists of the following St mark and Step B.
  • H R 2 (mod n) is calculated from H 0 using the REDC operation.
  • FIG. 4 shows the flowchart of Step and Step B in Conventional Method 1.
  • the effective code length of n is m, and the number of consecutive '0's from the most significant bit when n is stored right-justified in REG1 is represented by q.
  • V is an integer such that (mxk) / v is a power of 2 for v ⁇ 1 and m and k.
  • Table 1 below shows the number of operations required for Conventional Method 1. Where SFT indicates 1-bit shift, SUB indicates subtraction, and REDG indicates Montgomery modular multiplication.
  • Example 1 1024-b is RSAB
  • v 21, 42, 84, 168 can be selected.
  • Conventional method 2 is composed of the following StepA 2 and StepB 2 .
  • StepB 2 From H 0 using REDG operation Calculate n). This is done by detecting each bit value of mxk in order from the most significant bit to the least significant bit, and repeating the REDC operation once or twice according to ' ⁇ ' ⁇ '.
  • Step A 2 The flow chart of Step A 2, Step B 2 shown in FIG. Note that the calculation method of 2 v xR (mod n) in Step A 2 is shown in the case where the same method as Step A of Conventional method 1 is used.
  • the effective word length of n is m, and the number of consecutive '0's from the most significant bit when n is right-justified and stored in REG1 is represented by q.
  • REG2 is shifted one bit to the left.
  • REG1 and REG2 are shifted right by q times, and REG2 is copied to REG0.
  • REG1 n
  • ⁇ ' represents the bit length of nxk) / v
  • REG2 Calculate REDG (REG2, REG2) n
  • the processing can be performed if (mxk) / v is an integer, so that the value of V can be set under a wider condition than the conventional method 1, and by setting the optimum value of V Conventional Parameter H can be calculated with a smaller amount of calculation than method 1.
  • Patent family USP5751620, EP712070
  • Patent Document 3 Patent Document 3
  • Patent Document 4 Patent Document 4
  • Patent family one EP0601907A2
  • Patent Document 5 (Patent Document 5)
  • StepA StepAz is the cause.
  • the shift operation is repeated for REG1 and REG2, but a problem arises because the number of times the shift operation is repeated depends on the value of q.
  • FIG. 6 shows the processing of the St mark in the conventional method.
  • Step A and since Step A 2 are subjected to the same process, Fig. 6 also represents the process of St mark A 2.
  • StepA For calculation of the 2 v xR (mod n) in the process of FIG. 6, the following StepA ⁇ StepA 1 2, StepA ,, a, StepA,, performs processing consisting of 4.
  • Step A 1 2 in order to calculate R (mod ⁇ ′) from 0-n ′, the condition is that the most significant bit of m ⁇ node value n ′ must be 1. A total of shift processes are required according to q. In order to show the reason why the number of shifts depends on q, the details of the processing contents of the St mark Au StepAw will be described.
  • Solution 1 implements the process of calculating 2 v xR (mod n) without relying on q by performing a remainder operation on R using a method different from the conventional method.
  • Solution 1 The processing of Solution 1 is shown in FIG. 9 and will be described.
  • REG2 is given an initial value of 2 (n) xk to calculate R (mod n), and 2 mxk (mod n) is obtained by repeating the double remainder operation k times .
  • the initial value 2 (n) xk of REG2 can be easily generated by giving 1 to the (m-1) th word value and giving 0 to other word values.
  • the obtained R (mod n) is further multiplied by twice twice to obtain 2 v xR (mod n).
  • These double remainder operations can be performed by k + v double remainder operations collectively.
  • H 0 2 v xR (inod n) using shift calculation and subtraction, and multiply by 2 using REDC as in conventional method 1.
  • the problem 5 can be solved because it is not necessary to detect the bit value of (mxk) / v in the repetition of the REDG operation.
  • a method of calculating a conversion parameter in a Montgomery multiplication residue which can solve problems 1 to 5 by appropriately combining the above-described solutions 1 to 3, and a calculation of a conversion parameter in the Montgomery multiplication residue
  • the present invention proposes a program for causing a computer to execute the method, and a conversion parameter calculation device for Montgomery modular multiplication.
  • problems 1, 2, 3, and 5 can be solved by executing solution 1 and solution 2 described above in the first and third steps.
  • the first step and B) the second step of calculating and outputting H ′ R 2 (mod n).
  • REDC is the Montgomery modular multiplication operation
  • REDG (a, b) axbxR— 1 (mod n), respectively
  • H ′ R 2 (mod n).
  • problem 2 and problem 4 can be solved by executing solution 3 described above in the second step.
  • REG1 2 v xR (mod n) is calculated by repeating the quadratic remainder operation modulo V times, and then copied to H 0 .
  • problem 1 and problem 3 can be solved by applying solution 1 described above in the first step.
  • H ' R (mod n)
  • H 0 2 v xR
  • Calculate (mod n) (where v is an integer, v ⁇ 1 and (mxk) / v is an integer)
  • problems 2 and 4 which are problems of the conventional method, can be solved to enable high-speed calculation.
  • An arithmetic unit of R 2 (mod n), comprising a first register REG1 composed of m words, a second register RE62 composed of m or more words, and two registers REG1 and REG2.
  • solution 3 can be realized by the H 'operation unit, and thus, problems 2 and 4 can be solved.
  • FIG. 1 is an explanatory diagram showing an algorithm of the Montgomery modular multiplication.
  • FIG. 2 is an explanatory diagram illustrating an example of a modular exponentiation operation using a Montgomery modular multiplication.
  • FIG. 3 is an explanatory diagram illustrating an algorithm for calculating a conversion parameter H using addition and subtraction.
  • FIG. 4 is a flowchart of the conventional method 1.
  • FIG. 5 is a flowchart of the conventional method 2.
  • Figure 6 is a Furochiya one bets of 2 V R (mod n) calculation processing in the conventional method that causes Problem 1 and Problem 3.
  • Figure 8 is a description diagram showing an outline and problems associated therewith of the processing of Step B 2 in Conventional Method 2.
  • FIG. 9 is an explanatory diagram showing a method of calculating 2 v xR (mod n) used in Solution 1 of the present invention.
  • FIG. 10 is an explanatory diagram showing a method of calculating R 2 (mod n) used in Solution 3 of the present invention.
  • FIG. 11 is a flowchart of the first embodiment of the present invention.
  • FIG. 12 is a flowchart of the second embodiment of the present invention.
  • FIG. 13 is a flowchart of the first embodiment.
  • FIG. 14 is a flowchart of the second embodiment.
  • FIG. 15 is a flowchart of the third embodiment.
  • FIG. 16 is an explanatory diagram of a recording medium that stores the program of the present invention.
  • the first embodiment mainly includes a St mark A 3 and Step B 3> Step G 3 .
  • V is an integer
  • satisfies v ⁇ 1 and (mxk) / v is an integer.
  • Outputs H R 2 (mod n) and ends.
  • V is an integer
  • v ⁇ 1 and (mxk) / v is an integer.
  • p " is an integer satisfying 2 P "> (mxk) / v> 2 p " —1 , E (p", m, k) (mod n).
  • R 2 (mod n) is calculated from 2 v xR (mod n) by using Solution 2, and the constraint that (mxk) / v is a power of 2 Is unnecessary.
  • p " is an integer satisfying 2 p " ⁇ (mxk) / v> 2 p " —1
  • E (p", m, k) mxk + vx2 p ".
  • step 304 2 p
  • FIG. 1 2 it is mainly composed of St mark A 4, Step B 4.
  • the input is n (modulo)
  • This operation In, it detects each bit value of mxk in order from the least significant bit to the most significant bit, and repeats the REDG operation once or twice according to ' ⁇ ' ⁇ 'of each bit value.
  • StepA 4 and StepB 4 The details of StepA 4 and StepB 4 will be described below.
  • REG1: n is given as an initial value (however, the effective word length of n is m).
  • V is an integer
  • v ⁇ 1 and (mxk) / v is an integer.
  • b is a constant that indicates the maximum bit length of (mxk) / v
  • REDG (A, B) n is the Montgomery multiplication remainder
  • REDC (A, B) AxBx2- fflXk (mod n).
  • REG0: REDG (REG0, REG0) Calculate n .
  • Solution 1 can be implemented, and it is not necessary to calculate the MSB for n. can do.
  • step 404 has realized a solution 3, and the restrictions on V, and the (mxk) / v effective bit length count of the unnecessary.
  • H R 2 (mod n) is calculated by detecting each bit value of (mxk) / v and performing REDG operation once or twice according to the bit value.
  • i 0, 1 b-
  • the present invention has the advantage that only the constant that is the maximum bit length of (mxk) / v needs to be given, and it is not necessary to calculate the effective bit length of (mxk) / v that changes depending on the input value.
  • the solution 3 is realized in step 404, the restriction that (mxk) / v is a power of 2 is eliminated, and the calculation of the MSB of (mxk) / v is unnecessary. Therefore, Issue 2 and Issue 4 are solved.
  • Example 1 in which the first embodiment of the present invention is implemented will be described based on the flowchart of FIG.
  • Steps 501 to 504 in FIG. 13 correspond to steps 301 to 304 in FIG. 11, respectively.
  • Table 3 shows the amount of calculation required for the first embodiment. (Table 3)
  • Example 2 in which the second embodiment of the present invention is implemented will be described based on the flowchart of FIG.
  • FIG. 14 is an embodiment in which the method of calculating 2 mxk (mod n) in step 402 of FIG. 12 and the method of calculating the double remainder operation in step 403 are specified.
  • the processing of steps 401 and 402 in FIG. 12 is performed by steps 601 to 606, the processing of step 403 in FIG. 12 is performed by step 606, and the processing of step 404 in FIG. 12 is performed by step 607.
  • Table 4 shows the amount of calculation required for the second embodiment.
  • Example 3 of the second embodiment of the present invention will be described with reference to the flowchart of FIG.
  • FIG. 15 shows an embodiment in which, similarly to the second embodiment, the method of calculating 2 mxk (mod n) in step 402 of FIG. 12 and the method of calculating the double remainder operation in step 403 are specified.
  • the method of solution 1 as the calculation method in step 402, it is possible to solve problem 1 and problem 3 in addition to the effect of solving problem 2 and problem 4 similar to the second embodiment.
  • FIG. 15 will be described.
  • the processing of steps 401 and 402 in FIG. 12 is performed by steps 701 to 703, the processing of step 403 in FIG. 12 is performed by step 704, and the processing of step 404 in FIG. 12 is performed by step 705.
  • steps 701 to 703 the processing of step 403 in FIG. 12
  • step 705 the processing of step 404 in FIG. 12 is performed by step 705.
  • Table 5 shows the calculation amount of the third embodiment.
  • the present invention can realize processing with a smaller calculation amount than the conventional method.
  • Table 7 shows a comparison regarding the amount of calculation. In Table 7, it is assumed that the calculation amounts of addition, subtraction, and shift operation are all the same, and these operations are collectively described as ADD.
  • REDG stands for Montgomery modular multiplication.
  • the first and third embodiments require less processing than the conventional methods 1 and 2. It can be realized.
  • the condition is k ⁇ 3q.
  • the first and third embodiments are different from the conventional method in the number of times of ADD. Can be reduced.
  • Comparative examples 1 and 2 below show examples of comparison of computational complexity including REDG.
  • n 1024 bits.
  • n 163 bits.
  • Table 9 the number of ADDs can be reduced compared to the conventional method while solving the problems of the conventional method.
  • a program stored in a hard disk, GD-R0N !, or another recording medium can be expanded on a main memory to cause a computer to function as each functional unit.
  • the program for realizing the method of calculating the conversion parameters in the Montgomery modular multiplication of the present invention includes a portable recording medium 310 such as a GD-R0M311 and a flexible disk 312, and a communication line.
  • the program may be recorded on any of the other recording device 330 provided in the computer 300 and the recording medium 320 such as the hard disk or the RAM of the computer 300, and may be loaded on the main memory of the computer 300 when the program is executed. Be executed.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

明 細 書 モンゴメリ乗算剰余における変換パラメータの計算装置、 方法およびそのプロ グラム
(技術分野)
本発明は、 情報セキュリティ分野に属するものであり、 暗号処理を目的とした べき乗乗算剰余演算を高速に行うための計算技術に関する。
(背景技術)
今後の情報化社会の発展に伴い、 電子マネー、 住民基本台帳ネットワークなど の情報ネットワークを利用したサービスが普及すると予想される。 これらのサー ビスを安全に運用するためには、 情報セキュリティ技術が必須であり、 情報セキ ユリティの基盤技術として暗号技術が用いられる。 暗号技術を用いることで、 暗 号、 デジタル署名、 認証などの機能を実現し、 個人情報を第三者からの不正なァ クセスから防ぐことができる。
暗号技術を実現するための暗号方式は現在まで様々な方式が知られており、 こ れらは共通鍵暗号方式と公開鍵暗号方式の 2種類に大別される。 共通鍵暗号方式 と呼ばれるものは、 暗号化と復号化で同一の鍵 (秘密鍵)を用いる方式であり、 こ の秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を 保つ方式である。 公開鍵暗号方式とは、 暗号化と復号化で異なる鍵を用いる方式 であり、 暗号化を行うための鍵 (公開鍵)を一般に公開する代わりに、 暗号文を復 号するための鍵 (個人鍵)を受信者のみの秘密情報とすることで安全性を保つ方式 である。
秘密鍵暗号方式を用いる場合、 前述の秘密鍵を送受信者以外の第三者にわから ない安全な形で共有する必要がある。 これに対し公開鍵暗号方式は、 送受信者間 で秘密情報を共有する必要がないというメリットを有する力 処理を行うための 計算量が共通鍵暗号方式と比べて非常に大きいというデメリッ卜を有する。 よつ て、 公開鍵暗号方式においては、 計算処理の高速化が大きな課題となる。
公開鍵暗号方式は、 RSA、 楕円曲線暗号が代表的な方式として知られている。
RSAにおいてはべき乗剰余演算を用いた処理が、 楕円曲線暗号においては点のスカ ラー倍算と呼ばれる演算を用いた処理がそれぞれ行われる。 これら 2つの演算の いずれについても、 整数 a, b, nから y=axb (mod n) (0≤a, bく n)を計算する乗算剰余 演算が基本演算として用いられる。 ただし、 乗算剰余演算をそのままハードゥエ ァもしくはソフトウエアにて実装した場合、 処理時間が大きく処理効率が悪いた め、 乗算剰余処理の代わリにモンゴメリ乗算剰余と呼ばれる演算法を用いて計算 するのが一般的である。
モンゴメリ乗算剰余とは、 整数 a, b, nから y=axbx!T1 (mod n)の形で示される yを 計算する演算法である。 ただし、 R=2mxkであり、 kは 1ワードあたりのビット長、 m は nの有効ワード長を表す。 モンゴメリ乗算剰余を用いることで、 通常の乗算剰余 処理より高速な処理を実現することができる。 モンゴメリ乗算剰余のァルゴリズ ムを図 1に示す。 ただし、 χ= (χ^ ^ , Χο)は、 整数値 Xを m個のワード値
Χ| ( ϊ =ιπ " 1 1 , 0, 0≤Xiく 2k)を用いて表現する形式を表す。
前述したように、 モンゴメリ乗算剰余で行う演算は axbxR— 1 (mod n)であり、 通 常の乗算剰余演算 axb (mod n)とは異なる演算を行う。 よって、 べき乗剰余演算お よびを正しく実行するためには、 モンゴメリ乗算剰余に対して与える入力データ をモンゴメリ系と呼ばれるデータに変換する必要がある。 通常の乗算剰余演算に 与える任意の入力データを X、 Xをモンゴメリ系に変換したデータを x'とし、 Xから x'への変換(モンゴメリ変換)を x' =Mont (x)、 x'から Xへの変換(モンゴメリ逆変換) を χ=ΜοηΓ1 (χ' )と表した場合、 これらは以下の式で与えられる。 モンゴメリ変換 : x' = Mont (x) =xxR (mod n)
モンゴメリ逆変換 : X = Montr1 (x' ) =x' xR—1 (mod n) モンゴメリ乗算剰余を y=REDG (a, b) n=axbxR— 1 (mod n)と記したとき、 前述のモ ンゴメリ変換およびモンゴメリ逆変換は、 REDG を用いて以下のように表すことが できる。 ただし、 Hは H=R2 (mod n)で表される値であり、 事前計算により求めら れる値である (以下、 Hをモンゴメリ変換パラメータと称す)。 モンゴメリ変換 : x' = REDC (x, H) n=xxR2xR~1 = xxR (mod n)
(ただし、 H=R2 (mod n) )
モンゴメリ逆変換 : x= REDC (χ' , 1 ) = x' xI xR -1 = χ' xiT1 (mod n) 以上に基づいて、 モンゴメリ乗算剰余を用いたべき乗剰余処理のアルゴリズム を図 2に示す。
図 2では、 バイナリ法と呼ばれるべき乗剰余演算法をベースにモンゴメリ乗算 剰余を用いたアルゴリズムを示しており、 入力値 a,d, n からべき乗剰余演算結果 y=ad (mod n)を計算する。 1行目で y の初期値として 1 を与え、 2行目でモンゴ メリ変換パラメータ H=R2 (mod n)を計算した後、 3行目で aと yに対しモンゴメ リ変換を行い a'と y'を得る。 4〜7行目のループでは、 dのビット値に応じてモン ゴメリ乗算剰余を 1回もしくは 2回繰り返す処理を、 d の最下位ビットから最上 位ビットについて繰り返す。 このループで計算された y'に対し 8行目でモンゴメ リ逆変換を行うことで、 最終的な演算結果 yを得る。
H=R2 (mod n)を計算するためのもっとも自明な計算法としては、 整数 a, b, n か ら加算、 減算を繰り返す方法である。 R=2Xとした場合、 図 3に示すアルゴリズム で Hを計算することができる。
図 3のアルゴリズムについて説明する。
1行目では、 R (mod n)を計算する。 R (mod n)の算出法は様々な方法があるが、 例えば R=2Xに対し nの有効ビッ卜長が Xである場合、 R (mod n) = 0-nにより簡 単に計算できる。
3〜5行目では、 H=R (mod n)に対し、 H+Hを計算した後、 結果が n以上である場 合に nを減算することで、 H+H (mod n)の加算剰余 (2倍剰余) を行っている。 な お、 H+H の計算は、 左 1 ビットシフト演算でも実現可能である。 この加算剰余演 算を X回繰り返すことで、 Rx2x (mod n) = R2 (mod n)を算出する。
ただし、 図 3のアルゴリズムでは、 3~5行目で加算剰余を X回繰り返すため、 処理速度が遅いという欠点を有する。 例えば nが 1024b の場合の RSA演算では、 R=21G24であるが、 1024 回の加算剰余が行う必要があり、 この計算量は膨大である この欠点を解消した計算法が種々提案されており、 以下に示す従来法 1 (たと えば、 特許文献 1〜特許文献 4) あるいは従来法 2 (たとえば、 特許文献 5) な ど力《ある。
いずれの方法も、 シフト算、 減算のみを用いて計算を行うのではなく、 REDG演 算、 シフト算および減算を組み合わせることで全体の計算を高速化していること が特徴である。
以下に、 従来法 1および従来法 2について簡単に説明する。
なお、 kを 1ヮードあたりのビッ卜長、 nを mヮード値で表現された値、 nの最 上位から連続する' 0'の個数を q とする。 例えば k=8 の場合、 n のビッ卜列が 00101011 11001111 ならば m=2,q=2 であり、 n のビット列が 10001001 11100110 11100101ならば m=3,q=0である。
〈従来法 1〉
従来法 1は、 主に以下の St印 , StepBから構成される。
ここで、 入力 : n (剰余の法)とし、 出力 : R2 (mod n) (ただし、 R=2mxk (mod n)とする。
StepA,:シフト算および減算を用いて、 H。=2vxR (mod n)を計算する (v≥1)。
St印 : REDC演算を用いて、 H0から H=R2 (mod n)を計算する。
従来法 1における Step と StepB,のフローチヤ一トを図 4に示す。
図 4において、 ステップ 101 では 2つのレジスター REG1, RE62 に初期値として、 REG1:=n, REG2:=0を与える。 ただし、 nの有効ヮード長は mであり、 n を右詰で REG1に格納した際の最上位ビッ卜から連続する' 0'の個数を qと表す。
ステップ 102 では、 REG1 に対し 1 ビッ ト左シフ トを q 回繰り返し、 REG1=n' =2qxnとする。
ステップ 103では、 REG2:=REG2-REG1を計算し、 REG2=2mxk (mod n, )とする。 ステップ 104では、 以下の処理を v+q回繰り返し、 REG2=2mxk+v+qとする。 ただし、 Vは v≥1かつ m, kに対し(mxk)/vが 2のべき乗となるような整数である。
① REG2を左 1 ビットシフ卜する。 ② REG2≥REG1ならば、 REG2:=REG2 - REG1を計算する。
ステップ 105では、 REG1 および REG2に対して 1 ビッ卜右シフト処理を q回繰 リ返すことで、 REG1=n, REG2=H0=2mxk+v(mod n)とする。
ステップ 106 では、 REG2:=REDC(REG2, REG2)n を p 回繰り返すことで、 H=REG2=22xmxk=R2 (mod n)を計算し、 この計算結果を出力して終了する。 ただし、 pは p=log2((mxk)/v)を満たす整数を表し、 REDG(A,B)nはモンゴメリ乗算剰余
Figure imgf000007_0001
(mod n)を表すものとする。
この従来法 1に必要な演算回数を以下の表 1に示す。 ただし、 SFT は 1 ビット シフトを、 SUBは減算を、 REDGはモンゴメリ乗算剰余演算をそれぞれ表す。
〔表 1〕
従来法 1に必要な演算回数
Figure imgf000007_0002
ステップ 106における pは、 p=log2((mxk)/v)を満たす整数であるが、 これを満 たすためには (mxk)/vが整数 X を用いて(mxk)/v=2xと表せる、 すなわち 2のべき 乗の値である必要がある。 従来法 1ではこの条件により V の値の選択が制限され るため、 n の有効ビット長によっては V の値を大きくする必要がある。 表 1から、 SFTおよび SUBの計算回数は Vに比例するため、 Vを大きくすることで全体の計算 量が大きくなるという欠点がある。
具体的な暗号処理を例にその演算回数を以下を示す。
例 1 : 1024- bは RSAB音号
この場合、 nは 1024bitである。 1ワード =32bitとすると k=32であり、 nの有 効ヮ一ド長 m=32となる。 1ヮ一ドあたりのビット長 kと nの有効ヮード長 mとを 乗算した k*mと nの全ビッ卜数とがー致することから、 nの最上位ビット =1 とな レ J q=0である。 また、 mxk=1024なので、 v=1, 2, 4... , 1024が選択可能である。 v=1 の場合、 SFTが 1回、 SUBが 1.5回、 REDGが p=log2((32x32)/1)=10回である。 例 2: 163-bit楕円曲線暗号 この場合、 nは 163bitである。 1ワード =8bitとすると k=8であり、 nの有効 ワード長 m=21 となる。 nをビット長 k=8、 有効ワード長 m=21で表現すると、 最上 位に位置する
Figure imgf000008_0001
な ので、 v=21, 42, 84, 168が選択可能である。 v=21の場合、 SFTが 4x5 + 21=41回、 SUBが 0.5χ (5+21 )+1=14回、 REDGが p=log2((21x8)/21)=3回である。
〈従来法 2 >
従来法 2は以下の StepA2, StepB2から構成される。
ここで、 入力 : n (剰余の法)とし、 出力 : R2 (mod n) (ただし、 R=2mxk (mod n)) とする。
StepA2 : H0=2vxR (mod n)を計算する。 特許文献 5では 2vxR (mod n)を計算する方 法を特定していないが、 例として従来法 1における 2vxR(mod n)の計算法を挙げて いる。
StepB2 : H0から、 REDG演算を用いて
Figure imgf000008_0002
n)を計算する。 これは、 mxkの各 ビット値を最上位ビッ卜から最下位ビッ卜の順番に検出し、 'Ο'Ί'に応じて REDC 演算を 1回もしくは 2回行うことを繰り返すことで行う。
StepA2, StepB2のフローチャートを図 5に示す。 なお、 StepA2における 2vxR (mod n)の計算法は、 従来法 1の StepA と同じ方法を用いた場合について示す。 図 5において、 ステップ 201 では、 2つのレジスター REG1.REG2 に対して初期 値として REG1:=n, REG2:=0を与える。 ただし、 nの有効ワード長は mであり、 n を右詰で REG1 に格納した際の最上位ビッ卜から連続する' 0' の個数を q と表す。 ステップ 201 では、 REG1 に対し 1 ビッ ト左シフ トを q 回繰り返し、 REG1=n' =2qxnとする。
ステップ 202では、 REG2:=REG1 - REG2を計算し、 REG2=2mxk (mod n' )とする。 ステップ 203では、 以下の処理を q+v回繰り返し、 REG2=2mxk+v+q(mod η')とする。
① REG2を左 1 ビットシフトする。
(DRE62≥REG1ならば、 REG2:=REG2-REG1を計算する。
ステップ 204では、 REG1および REG2を q回右シフトし、 REG0に REG2をコピ一 し、 REG1=n, REG0=RE62=2mxk+v(mod n)とする。 ただし、 v は整数であり v≥1 かつ (mxk)/vが整数である。
ステップ 201 では、 以下の処理を i=p '- 2 1,0について p'-1 回繰り返すこ とで、 REG2=22xmxk=R2 (mod n)を計算し、 計算結果を出力して終了する。 ただし、 ρ' は nxk)/v のビッ ト長を表 し、 REDG(A, B)n はモンゴメ リ乗算剰余 REDGCA, B) =AxBx2-mxk (mod n)を表す。
③ REG2 := REDG(REG2, REG2)nを計算する
④ (mxk)/vの i 番目のビット値 =1 ならば、 REG2 := REDC(REG2, REG0)nを計算 する。 前述した従来法 1の処理を行うためには、 p=log2((mxk)/v)が整数である必要が あり、 すなわち (mxk)/vが 2のべき乗であるという制限がある。 この制限を満た すためには、 以下の(i) (ii)の 2段階により m,k,vを設定する必要がある。
(ί)ηのビット長および 1ワードあたりのビット長から m,kを決定する。
(i i) (i)で決定した m,kに対し (mxk)/vが 2のべき乗となるように Vの値を設定す る。
すなわち、 (i)により、 nのビット長およびプロセッサにおける 1ワードあたり のビット長から一意に決定する m, kの値に対し( i i )で vの値を調整することで
(mxk)/vが 2のべき乗の値となるように設定する。 問題となるのは、 (i i)において Vの値を調整する際に、 (mxk)/vが 2のべき乗の値でなければならないという制限 により、 Vの値が大きくなると、 パラメータ Hの計算処理全体の計算量が大きくな る場合があることである。 この問題の具体例は、 前述の例 1、 例 2におけるシフト および減算の回数を比較することでわかる。 例 1では、 Vの値は v=1,2,4,...と非 常に小さな値を設定できたが、 例 2では v=21, 42,...と大きな値を設定する必要が ある。 表 1の通り、 全体の計算処理におけるシフトおよび減算回数の合計は Vの 1.5倍に比例する。 つまり v=1の場合と比較して、 v=21の場合シフトおよび減算回 数の合計が 30回増加することになる。
これに対し、 従来法 2では (mxk)/vが整数であれば処理を行うことができるので 、 Vの値を従来法 1より広い条件で設定でき、 最適な Vの値を設定することで従来 法 1よリ少ない計算量でパラメータ Hを計算することができる。
従来法 2に必要な演算回数を表 2に示す。 ただし、 SFTは 1 ビットシフトを、 SUBは減算を、 REDGはモンゴメリ乗算剰余演算をそれぞれ表す。 なお W(x)は、 xの 最上位ビットを除く Ί'の個数を表し、 ステップ 206において(mxk)/vのビット値が 1である場合の REDC演算の回数である。 例えば、 W((10000)2)=0, W((1000101)2)=2 である。 ただし(··.)2は 2進表現を表す記号であり、 例えば (1101)2=13、
(11100) 2=28である。
〔表 2〕
従来法 2に必要な演算回数
Figure imgf000010_0001
具体的な暗号処理を例にその演算回数を以下を示す。
例 3: 1024-bit RSA
この場合、 ηは 1024bitである。 1ワード =32bitとすると k=32であり、 nの有 効ヮード長 m=32となる。 前述と同様に、 k*mビットと nの全ビット数がー致して いることか、 nの最上位ビッ卜 =1 となり q=0である。 また、 mxk=1024なので、 v は 1024 の任意の因数(factor)から選択可能である。 v=1 の場合、 SFTが 1 回、 SUBが 1 · 5回、 REDCが p= I og2 ( (32x32) /1 ) =10回である。
例 4: 163-bit楕円曲線暗号
この場合、 nは 163bitである。 1ワード =8bitとすると k=8であり、 nの有効 ワード長 m=21 となる。 この場合も前述と同様に、 k*mビッ卜に nを右詰にした場 合、 最上位 21x8■ 163=5bitが 0となり q=5である。 また、 mxk=168なので、 vは 168の任意の因数 (factor)から選択可能である。 v=21の場合、 SFTが 4x5 + 21=41 回、 SUBが 0,5χ(5+21)+1=14回であり、 REDGについては (mxk)/v=(1000)2から ρ'- 1+ W((mxk)/v)= 4-1+0=3回である。 また v=1の場合、 SFTが 4x5 + 1=21 回、 SUB が 0.5χ (5+1 )+1=4 回であり、 REDC については(mxk)/v=(10101000)2から p, - 1+ W ( (mxk) /v) = 8-1 +2=9 回である。 v=21 の場合、 従来法 1の例 2と同一の計算量で あるが、 v=1の場合 SFTを 41-21=20回、 SUBを 14-4=10回、 合計 3 0回削減可能 である。 REDGが 9-3=6回増加しているが、 REDG演算をコプロ等の専用ハードゥエ ァで高速に処理する場合、 SUB もしくは SFT と同程度の時間で計算可能であるた め、 v=1の方が高速な処理を実現できる。
〔特許文献 1〕
特開平 08-263316号公報
(パテントフアミリ一: USP5745398, EP712071 )
〔特許文献 2〕
特開平 08- 339310号公報
(パテントファミリー: USP5751620, EP712070)
〔特許文献 3〕
特開平 1 1 -305995号公報
(パテントファミリ一: USP6240436)
〔特許文献 4〕
米国特許第 5912904号公報
(パテントファミリ一: EP0601907A2)
〔特許文献 5〕
米国特許題 5777916号公報
(パテントファミリー: EP785503)
〈発明が解決しょうとする課題〉
前述した従来法 1および従来法 2では、 それぞれ以下の課題 1〜課題 5に示す ように、 パラメータ V に関する制限、 データ値の最上位有効ビッ ト(Most S i gn i f i cant B i t, 以下 MSB)の算出、 およびデータのビット値の検出、 という問 題を有する。 MSB の算出およびビッ卜値の検出にはビット単位の演算処理が必要 となるが、 これらはソフトゥ; Eァ実装における処理効率が悪い。
①従来法 1における課題 (課題 1 ) qを算出するために、 nの NISBを算出する必要がある。
(課題 2 ) (mxk) / が 2のべき乗という制限がある。
②従来法 2における課題
(課題 3 ) 2vxR (mod n)の計算に従来法 1の方法を用いる場合、 nの MSBを算出す る必要がある。
(課題 4 ) p'を算出するために、 (mxk) /vの MSBを算出する必要がある。
(課題 5 ) REDC演算を繰り返すために、 (mxk) /v の各ビット値を検出する必要が あ 。 課題 1および課題 3については、 それぞれ StepA^ StepAzが原因である。 つまり、 これらの処理では REG1 , REG2に対してシフト演算を繰り返しているが、 シフト演 算を繰リ返す回数が qの値に依存していることにより問題を生じている。
この問題発生のメカニズムについて、 従来法の St印 の処理を示す図 6に基づ いて説明する。 なお、 StepA,と StepA2は同じ処理を行っているので、 図 6は St印 A2の処理も表している。
図 6の処理では 2vxR (mod n)の 計算を行うために、 以下の StepA^ StepA1 2, StepA,, a, StepA, , 4から構成される処理を行う。
StepAu n' =2qxn を計算する (ただし、 n を mワードで表現したとき最上位ビッ 卜 =1 )。
StepAu R (mod n' ) = 0-n'を計算する。
StepAu R (mod n' )から 2q+vxR (mod n' )を計算する。
St印 4 2q+vxR (mod η' )から 2vxR (mod n)を計算する。 上記の StepA1 2において、 R (mod η' )の計算を 0-n'により行うためには、 m ヮ 一ド値 n'の最上位ビットが 1であることが条件であり、 これにより StepA全体で q に応じた回数のシフト処理を必要とする。 シフ卜回数が q に依存する理由を示 すために、 St印 Au StepAwの処理内容の詳細について説明する。 StepA では、 REG1 =nに対し左 qビットシフトを行うことで REG1=n' =nx2q を計 算している。 これによリ、 mヮードで表現される REG1の最上位ビッ卜が 1でない 場合、 左シフト演算を用いて最上位ビットを 1とする。 最上位ビットを 1 とする ことで、 StepA1 2において R (mod n' )で示される剰余算を、 R (mod η' ) =0-η'に示 される簡単な計算で行うことができる。
St印 Α1 2では、 REG2=R (mod n' )の演算を目的に REG2 := 0-n'の計算を行う。 図 7に示すように、 n の最上位ビッ卜 =1 であり最上位ビットを除いた値が 1 以 上である場合には、 Ο-η'の演算結果における最上位ビットが必ず 0 となることか ら、 明らかに 0≤0 - η'く η'となり(mod n' )による剰余値の範囲に収まることとなる。 しかしながら、 n の最上位ビット =0の場合は、 Ο-η'の最上位ビットが必ず 1 とな ることから、 明らかに 0 - η'≥η となり剰余値の範囲を超えることになる。 したが つて、 mワードによる演算では、 0- n'の演算結果は 0 - n' = 2mxk - n' =R-n'であるが、 R-n'の値が目的である R (mod η' )となるためには、 mワードで表現される n の最 上位ビッ卜が 1であることが条件である。
StepA1 3では、 StepA1 2で得られた REG2=R (mod η' )に対して 2倍剰余算を q+v 回繰リ返すことで REG2=2q+vxR (mod n' )を計算している。 この REG2 の値から、 StepA^において 2vxR (mod n)を得るために、 2倍剰余算は q+v回必要となる。
St印 Auでは、 REG2=2q+vxR (mod η' )および REG1=n' =nx2qそれぞれに対し、 右 1 ビットシフトを q 回繰り返すことで、 REG2. REG1 の値を補正し目的の値である REG2=2vxR (mod n)を得ている。 REG2 の値の補正は、 x=axz (mod ηχζ)を満たす χ から、 y = a (mod n)を満たす yは y=x/zにより求められることを利用している。 以上から、 StepA .2において R (mod η' ) =0-η'による剰余演算を行うために、 最 上位ビッ卜 =1である mヮ一ド値 n'を作成することが原因となり、 StepA全体の処 理が qに依存した回数分のシフト処理を行う必要があることがわかる。 課題 2は、 StepB の処理が原因である。 この処理においては、 HQ=2vxR (inod n)を 計算した後、 H REDG (H0, H0) = (2vxR) x (2vxR) xR"1=22vR (mod n) ' H2=REDC , ,) =
(22vxR) x (22vxR) xR"1=24vR (mod n) Hi=REDC (HM, HH) = (2rixv) xR (mod n) , . . . のように、 REDG演算を p回繰り返すことで H。=R2 (mod n)を得る。 ただし、 (と は 2の x乗を表す。 この結果計算される Hpが Hp= (22~pxv) xR (mod n) =R2 (mod n)と なるためには、 22 xv=R=2mxkである必要があるので、 2p= (mxk) /vが条件となる。 す なわち(mxk) /vが 2のべき乗であるという制限が生じる。 課題 4、 課題 5は、 従来法 2の StepB2で用いている計算手順が原因である。 StepB2が行う処理の概要を図 8に示す。
St印 B2では、 図 8に示すように、 Ho=2vxR (mod n)を用いて i=p' - 2 1 , 0の順 香で (mxk) /vの i 番目のビッ卜値を検出し、 ビット値 =0 ならば HrREDG (HH, Ημ を、 ビット値 =1 ならば H^REDG OIH , HH) n. H-REDC CHi, H。) nを繰り返すことで、 H fR2 (mod n)を計算する。 ただし、 p'は (mxk) /vの有効ビット長である。
したがって、 StepB2において正しい結果を得るためには、 p'を求めるための (mxk) /vの MSBの算出と、 (mxk) /vの各ビット値の検出の 2つの処理が必要であり、 この結果、 課題 4と課題 5がそれぞれ発生する。 (発明の開示)
〈解決法 1〉
本発明は、 上述したような課題を解決するものであって、 以下の解決法 1を用 いることで課題 1および課題 3を回避する。 この解決法 1では、 従来法とは異な る手法を用いて Rに関する剰余算を行うことで、 qに依存せずに 2vxR (mod n)を 計算する処理を実現する。
解決法 1の処理を図 9に示し、 これについて説明する。 解決法 1では、 R (mod n)を計算するために REG2に初期値 2(n ) xkを与え、 これに対し 2倍剰余算を k回繰 リ返すことで 2mxk (mod n)を得る。 REG2の初期値 2(n ) xkは、 (m-1 )番目のワード値 に 1 を与え、 それ以外のワード値に 0を与えることで容易に生成できる。 得られ た R (mod n)に対し、 さらに v回の 2倍剰余を行うことで、 2vxR (mod n)を得るこ とができる。 これらの 2倍剰余算は、 まとめて k+v 回の 2倍剰余算により行うこ とができる。 この方法を用いることで、 q の値に依存しない処理を実現できるの で、 nの MSBを算出することが不要となる。
〈解決法 2〉 また、 本発明では、 前述した課題 2を解決するための方策として解決法 2を提 案する。
ここでは、 REDC を用いた補正演算を用いることで、 p に関する条件を 2p=(mxk)/v から 2p≥(mxk)/v>2 というより広い条件に変更する。 シフ卜算、 減 算を用いて H0=2vxR(inod n)を計算し、 従来法 1 と同様に REDC を用いた 2乗算
H^REDC (H H0) n, H2=REDC (Η,, H) n H^REDC (HH, HH) n, ...を p 回繰り返すこと で、 その結果、 Hp= (2 pxv) xR(mod n)を演算する。 従来法と同様 2p≠(mxk)/v の場 合、 すなわち 2p>(mxk)/v〉2p1においては、 Hp= (22'pxv) xR(mod n)=R2 (mod n)とは ならないが、 この解決法 2では、 この Hpに対し Hp=REDC(Hp,g)nで示される補正演 算を行うことで HP=R2 (mod n)を得る。 この条件を満たす gは g=2kxG(p m k)と表され、 G(p,m, k)=2xm-(vx2p)/kにより与えられる。 2P> (mxk) /v>2p1の場合、 G(p,m,k)は 1 ≤G(p,m,k)≤m-1 を満たす整数値となる性質を備えているので、 g の値は G(p,m, k)-1番目のワード値 =1、 そのほかのワード値 =0とすることで容易に生成で きる。 前述の補正演算を用いて R2 (mod n)が計算できることは、 Hp=REDC(Hp,g) = (2rpxvxR)x(2kxG(p'm'k))xR— 1 (mod n) = (2Γρχν) χ (22 k- vx p) (mod n) =22xmxk (mod n) = R2 (mod n)により確認できる。 また、 この解決法 2を用いた場合、 REDG演算の 繰り返しにおいて(mxk) /v のビット値検出を必要としないので、 課題 5も解決す ることができる。
〈解決法 3〉
前述した課題 4については、 本発明の解決法 3を用いて解決することができる。 この解決法 3の処理を図 1 0に示す。
ここでは、 i=0, 1 b-1の順番で (mxk) /vの i番目のビット値を検出すること を繰り返し、 ビッ 卜値 =0 ならば Hi=REDG(Hi, Ι )ηを、 ビッ ト値 =1 ならば H'=REDG(H', H0), HrREDC(HH, HH)とすることで H' =R2 (mod n)を計算する。
従来法の StepB2ではビット値の検出を上位ビッ卜—下位ビッ卜の順に行ってい たのに対し、 この解決法 3では、 下位ビット—上位ビットの順に行っている。 た だし、 H'=R (mod n)および H0=2vxR (mod n)であり、 b は (mxk)/v の最大ビット長 を表す定数である。
このように、 解決法 3の手順に従うことで、 (mxk)/v の各ビット値の' Ο'Ί'の みに応じて計算を行えばよく、 (mxk)/v の有効ビット長に依存しない処理を行う ので課題 4が解決される。 また、 (mxk)/v が 2のべき乗であるという制限がない ため、 課題 2も同時に解決することができる。
本発明では、 前述したような解決法 1〜解決法 3を適宜組み合わせることで課 題 1 〜5を解決することが可能なモンゴメリ乗算剰余における変換パラメータの 演算方法、 モンゴメリ乗算剰余における変換パラメータの演算方法をコンビユー タに実行させるためのプログラムおよびモンゴメリ乗算剰余における変換パラメ ータ演算装置を提案するものである。
本発明の請求項 1に係るモンゴメリ乗算剰余における変換パラメータの演算方 法は、 剰余の法 n の有効ヮ一ド長を m、 1つ一ド当たりのビット長を 2mxk=R とするモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法であつ て、 A) H0=2vxR (mod n) (ただし、 vは整数であり、 v≥1かつ (mxk)/vは整数) を 計算する第 1工程と、 B) i=1,2,...,p に関して、 Ι =Ι¾Ε00(ΗΗ,ΗΗ)ηを繰り返すこ とで、 H0=2vxR (mod から Hp=2vx2"pxR (mod n)を計算する (ただし、 p は 2P≥ (mxk)/v >2 を満たす整数を、 REDC はモンゴメリ乗算剰余 REDC (a, b) =axbxR"1 (mod n)を、 χΊ は指数演算 χιをそれぞれ表す) 第 2工程と、 C) 2p>(mxk)/vの場 合、 第 2工程で得られた Hpに対し HP=REDG(HP, g)nを計算することで HP=R2 (mod n)を計算し (ただし、 g=2kxE(p m k)、 E(p,m, k) =2xm- (νχ2ρ) Αである)、 最後に Hpを R2 (mod n)として出力する第 3工程とを含む。 ここで、 第 1工程は、 A - 1) 2つの レジスタ REG1, REG2 を、 REG1=n, REG2=2(n )xkにより初期化する (ただし、 REG1 は m個のワードから、 REG2は m個以上のワードから構成されるレジスタ) 工程と、 A-2) REG2に対し、 REG1の値を法とした 2倍剰余算を k+v回繰り返すことで 2vxR (mod η)を得る工程とを含む。
この場合、 第 1工程および第 3工程により前述した解決法 1および解決法 2を 実行して、 課題 1, 2, 3, 5を解決することができる。
本発明の請求項 2に係るモンゴメリ乗算剰余における変換パラメータの演算方 法は、 剰余の法 ηの有効ヮード長を m、 1ヮード当たりのビット長を 2mxk=R とするモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法であつ て、 A) H'=R (mod n), H0=2vxR (mod n)を計算する (ただし、 v は整数であり、 v ≥1 かつ (mxk)/v は整数) 第 1工程と、 B) H' =R2 (mod n)を計算し出力する第 2ェ 程とを含んでいる。 ここで、 第 2工程は、 i=0, 1,..,b-1 に関して、 B- 1) (mxk)/v の i 番目のビット値 =1 ならば、 H'=REDC(H', Η^ηを計算する工程と、 Β-2) Η^Ε00(ΗΗΗ)ηを計算する工程とを繰り返すことで (ただし b は (mxk)/v の最 大ビット長を表す定数、 REDCはモンゴメリ乗算剰余演算 REDG(a,b)=axbxR— 1 (mod n)をそれぞれ表す)、 H'=R2 (mod n)を計算するものである。
この場合、 第 2工程により前述した解決法 3を実行して、 課題 2および課題 4 を解決することができる。
本発明の請求項 3に係るモンゴメリ乗算剰余における変換パラメータの演算方 法は請求項 2に記載のモンゴメリ桌算剰余における変換パラメータの演算方法で あって、 第 1工程は、 A-1 ) 2つのレジスタ REG1, REG2 に対し、 REG1 :=n, REG2:=0により初期化する (ただし、 REG1は m個のワードから、 REG2は m個のヮ ードから構成されるレジスタであり、 k は 1ワードあたりのビット長である) ェ 程と、 A - 2) REG1 に対し左 1 ビットシフ卜を q回繰り返すことで、 REG1=n'=2qxn とする (ただし、 qは mワードで表現される nの最上位ビットから連続する' 0'の 個数を表す) 工程と、 A-3) REG2 = REG2-REG1 を計算することで、 REG2=R (mod η')を計算する工程と、 A-4) REG2に対し、 2倍剰余演算を q回繰り返すことで、 REG2=2qxR (mod η')を計算する工程と、 A-5) RE61, REG2に対し、 右 1 ビットシフ トを q回繰り返すことで、 REG1=n, REG2=R (mod n)を計算した後、 REG2の値を Η' にコピーする工程と、 Α- 6) REG2に対し、 さらに REG1 の値を法とした 2倍剰余演 算を V回繰り返すことで、 REG2=2vxR (mod n)を計算した後、 H0にコピーする工程 とを含む。
この場合、 第 1工程において従来法 1を実行することにより、 q が小さい場合 に全体の計算速度を高速化することが可能となる。
本発明の請求項 4に係るモンゴメリ乗算剰余における変換パラメータの演算方 法は請求項 2に記載のモンゴメリ乗算剰余における変換パラメータの演算方法で あって、 第 1工程は、 A- 1) 2つのレジスタ REG1, REG2 に対し、 REG1:=n, REG2:=2(n ) xkにより初期化する (ただし、 REG1は m個のワードから、 REG2は m個 以上のワードから構成されるレジスタであり、 k は 1ワードあたりのビット長で ある) 工程と、 A-2) REG 2に対し REG1 の値を法とした 2倍剰余演算を k回繰り 返すことで、 REG2=2mxk (mod n)=R (mod n)を計算し、 H'にコピーする工程と、 A- 3) REG2 に対し 2倍剰余演算をさらに V回繰り返すことで、 REG2 = 2vxR (mod n) を計算し、 Η0にコピーする工程とを含む。
この場合、 第 1工程において前述した解決法 1を適用することにより、 課題 1 および課題 3を解決することができる。
本発明の請求項 5に係るモンゴメリ乗算剰余における変換パラメータの演算方 法のプログラムは、 剰余の法 ηの有効ワード長を m、 1ワード当たりのビット長 を 2mxk=R とするモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演 算方法のプログラムであって、 A) H0=2vxR (mod n) (ただし、 v は整数であり、 v ≥1 かつ (ιτΐχΙ /ν は整数) を計算する第 1工程と、 B) i=1,2,..., p に関して、 HrREDG(HH,HH)nを繰り返すことで、 H0=2vxR (mod から Hp=2vx2pxR (mod n)を計 算する (ただし、 pは 2p≥(mxk)/v〉2P1を満たす整数を、 REDGはモンゴメリ乗算 剰余 REDC(a,b) =axbxR-1 (mod n)を、 χΊ は指数演算 χ'をそれぞれ表す) 第 2ェ 程と、 C) 2p>(mxk)/vの場合、 第 2工程で得られた Hpに対し HP=REDC(HP, g)nを計 算することで HP=R2 (mod n)を計算し (ただし、 g=2kxE(p'rak)、 E(p,m, k)=2xm- (vx2p)/kである)、 最後に Hpを R2 (mod n)として出力する第 3工程とを含み、 前 記第 1工程は、 A- 1) 2つのレジスタ REG1, RE62を、 REG1=n, REG2=2(n )xkにより 初期化する (ただし、 REG1は m個のワードから、 REG2は tn個以上のワードから構 成されるレジスタ) 工程と、 A-2) REG2に対し、 REG1 の値を法とした 2倍剰余算 を k+v回繰り返すことで 2vxR (mod n)を得る (ただし、) 工程とを含む、 モンゴメ リ乗算剰余における変換パラメータの演算方法をコンピュータに実行させるため のプログラムである。
この場合、 請求項 1に記載したようなモンゴメリ乗算剰余における変換パラメ ータの演算方法をコンピュータに実行させる場合に、 従来法の問題である課題 1, 2, 3, 5を解決して高速演算を可能とする。
本発明の請求項 6に係るプログラムは、 剰余の法 n の有効ワード長を m、 1ヮ ード当たりのビット長を 2mxk=R とするモンゴメリ乗算剰余における変換パラ メータ R2 (mod n)の演算方法のプログラムであって、 A) H'=R (mod n), H0=2vxR (mod n)を計算する (ただし、 vは整数であり、 v≥1 かつ (mxk)/vは整数) 第 1ェ 程と、 B) H'=R2 (mod n)を計算し出力する第 2工程とを含み、 第 2工程は、 i=0,1,.. ,b-1 に関して、 B-1 ) (mxk)/v の i 番目のビッ ト値 =1 ならば、
Figure imgf000019_0001
HH)nを計算する工程とを 繰り返すことで (ただし bは (mxk)/vの最大ビット長を表す定数、 REDCはモンゴ メリ乗算剰余演算 REDC(a,b)=axbxR-1 (mod n)をそれぞれ表す) H'=R2 (mod n)を計 算する、 モンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータ に実行させるためのプログラムである。
この場合、 請求項 2に記載したようなモンゴメリ乗算剰余における変換パラメ ータの演算方法をコンピュータに実行させる場合に、 従来法の問題である課題 2, 4を解決して高速演算を可能とする。
本発明の請求項 7に係るモンゴメリ乗算剰余における変換パラメータの演算装 置は、 剰余の法 n の有効ヮード長を m、 1ヮード当たりのビット長を 2mxk=R とするモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算装置であつ て、 m個のワードから構成される第 1 レジスタ REG1 と、 m個以上のワードから構 成される第 2 レジスタ RE62 と、 2つのレジスタ REG1, REG2 を、 REG1=n, REG2=2 )xkにより初期化する初期化処理部と、 第 2レジスタ REG2 に対し、 第 1 レジスタ REG1 の値を法とした 2倍剰余算を k+v回繰り返すことで H0=2vxR (mod n) (ただし、 vは整数であり、 v≥1かつ (mxk)/vは整数) を演算する H0演算部と、 i=1,2 p に関して、 H-REDGWi Hi— を繰り返すことで、 H0=2vxR (mod n)か ら Hp=2vxrpxR(mod n)を計算する (ただし、 pは 2p≥(mxk)/v >2P1を満たす整数を、 REDCはモンゴメリ乗算剰余 REDC(a,b) =axbxR-1 (mod n)を、 χΊ は指数演算 xjを それぞれ表す) Hp演算部と、 2p>(mxk)/vの場合、 前記 Hp演算部により得られた Hp に対し HP=REDG(HP, g)nを計算することで HP=R2 (mod n)を計算し (ただし、 g=2kxE(pm k)、 E(p,m, k) =2xm- (vx2p) /kである)、 最終的に得られた Hpを R2 (mod n) として出力するパラメータ出力部とを備える。
この場合、 初期化処理部および H0演算部により解決法 1を実現し、 課題 1, 3 を解決することが可能となる。 また、 パラメータ出力部により解決法 2を実現し、 課題 2, 5を解決することが可能となる。 本発明の請求項 8に係るモンゴメリ乗算剰余における変換パラメータの演算装 置は、 剰余の法 n の有効ワード長を m、 1ワード当たりのビット長を 2mxk=R とするモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算装置であつ て、 H' =R (mod n), H0=2vxR (mod n)を計算する (ただし、 v は整数であり、 v≥1 かつ (mxk) /vは整数) H0演算部と、 i=0, 1 , . .,b - 1 に関して、 (mxk) /vの i番目の ビット値 =1 ならば、 H' =REDG (H', Ι ) ηを計算する工程と、 H^EDG , Ημι) ηを計 算する工程とを繰り返すことで H' =R2 (mod n)を計算し出力する (ただし b は (mxk) / の最大ビッ ト長を表す定数、 REDG はモンゴメ リ乗算剰余演算 REDC (a, b) =axbxR"1 (mod n)をそれぞれ表す) H'演算部とを含む。
この場合、 H'演算部により解決法 3を実現することができ、 これにより、 課題 2 , 4を解決することが可能となる。
(図面の簡単な説明)
図 1は、 モンゴメリ乗算剰余のアルゴリズムを示す説明図である。
図 2は、 モンゴメリ乗算剰余を用いたべき乗剰余演算の例を示す説明図である 図 3は、 加算、 減算を用いた変換パラメータ Hの計算アルゴリズムを示す説明図 である。
図 4は、 従来法 1のフローチャートである。
図 5は、 従来法 2のフローチャートである。
図 6は、 課題 1および課題 3の原因となる従来法における 2VR (mod n)計算処理 のフローチヤ一トである。
図 7は、 従来法における R (mod n' ) =0- n'の計算が成立するための n'の条件を示 す説明図である。
図 8は、 従来法 2における StepB2の処理の概要およびそれに伴う課題を示す説 明図である。
図 9は、 本発明の解決法 1で用いる 2vxR (mod n)の計算法を示す説明図である。 図 1 0は、 本発明の解決法 3で用いる R2 (mod n)の計算法を示す説明図である。 図 1 1は、 本発明の第 1実施形態のフローチャートである。 図 1 2は、 本発明の第 2実施形態のフローチャートである。
図 1 3は、 実施例 1のフローチャートである。
図 1 4は、 実施例 2のフローチャートである。
図 1 5は、 実施例 3のフローチャートである。
図 1 6は、 本発明のプログラムを格納する記録媒体の説明図である。
(発明を実施するための最良の形態)
〈第 1実施形態〉
本発明の第 1実施形態について、 図 1 1に示すフローチャートに基づいて説明 する。
図 1 1に示すように、 この第 1実施形態では主に St印 A3, StepB3> StepG3から構 成される。
ここで、 入力 : n (剰余の法)、 出力 : R2 (mod n) (ただし、 R=2mxk (mod n)) とする。
StepA3では、 シフト算および減算を用いて、 H0=2mxk+V (mod n)を満たす H。を計算 する。 ここで、 Vは整数であり、 v≥1かつ (mxk)/vが整数であることを満たすもの とする。
StepB3では、 REDC演算を用いて、 H0から H=2E(p"'m k) (mod n)を計算する。 ただし、 E(p",m, k)=mxk+vx2p", p"は 2P"> (mxk)/v >2(p"— 1)を満たす整数である。
StepC3では、 2p">(mxk)/vならば、 g=2kxG(p"'m k)について H=REDG(H, 6)による補正演 算を行う。 ただし、 Gは G (p", m, k) =2xm- (νχ2ρ") Λであリ、 1≤G(p",m, k)≤ttHの範 囲を満たす整数である。 演算後に H=R2 (mod n)を出力し終了する。
この第 1実施形態のアルゴリズ厶について以下に詳細を示す。
ステップ 301では、 2つのレジスタに対して初期値として、 REG1:=n, RE62:=2(m" 1)xkを与える。 ただし、 nの有効ワード長は mである。
ステップ 302では、 REG2に対して、 2倍剰余算を k+v回繰り返し REG2=2mxk+v (mod n )とする。 ただし、 Vは整数であり、 v≥1かつ (mxk)/vが整数である。
ステップ 303では、 REG2 := REDG(REG2, REG2)nを p"回繰り返すことで、 REG2=2E( p"'m k) (mod n)を計算する。 ただし、 p"は 2P"> (mxk)/v>2p"— 1を満たす整数、 E(p",m, k)
Figure imgf000022_0001
(mod n)を表す。
ステップ 304では、 2p">(mxk)/vならば、 REG2 := REDC(REG2, g)nによる補正演算 を行う。 ただし、 g=2kx(3(p"'m'k)および G(p",m,k) = 2xm - (vx2p")/kである。 REG2=R2 ( mod n)を出力し終了する。
このようにした第 1実施形態では、 ステップ 301,302において、 前述した解決法 1を用いて REG2=2vxR (mod n)の計算を行っており、 nの MSBを算出することが不要 となる。
また、 ステップ 303, 304では、 解決法 2を用いることで、 2vxR (mod n)から R2 ( mod n)の計算を行っており、 (mxk)/vが 2のべき乗であるという制限を不要として いる。 ステップ 303では、 REG2=2vxRにモンゴメリ乗算剰余演算を用いた 2乗算を p "回繰り返すことで、 REG2 = 2E(p"'m k) (mod n)を得ることができる。 ただし、 p"は 2 p"≥ (mxk) /v〉2p"— 1を満たす整数であり、 E (p", m, k) =mxk+vx2p"である。 ステツプ 304 では、 2p"〉(mxk)/vの場合に REG2 := REDG(REG2, g)nによる補正演算を行うことで、 REG2=R2 (mod n)を算出することができる。 ただし、 g=2kxG(p"'m k)および G(p", m, k) = 2xm— (vx2p")/kである。
このようにして、 第 1実施形態では、 解決法 1を用いることで、 nの MSBの算出 が不要となり、 課題 1および課題 3が解決される。 また、 解決法 2を用いること で、 (mxk) /vが 2のべき乗であるという制限が不要となり、 課題 2が解決され、 さらに (mxk)/vのビット値検出が不要となり、 課題 5が解決される。
〈第 2実施形態〉
本発明の第 2実施形態について、 図 1 2に示すフローチャートに基づいて説明 する。
この第 2実施形態では、 図 1 2に示すように、 主に St印 A4, StepB4から構成さ れる。 ここで、 入力を n (剰余の法)、 出力を R2 (mod n) (ただし、 R=2mxk (mod n)) とする。
StepA4では、 H'=R (mod n), H0=2vxR (mod n)を計算する。
StepB4では、 H',H0から、 REDG演算を用いて H=R2(mod n)を計算する。 この演算 では、 mxk の各ビット値を最下位ビッ卜から最上位ビッ卜の順に検出し、 各ビッ ト値の' Ο' Ί 'に応じて REDG演算を 1回もしくは 2回行うことを繰り返す。
この第 2実施形態の場合、 従来法 2と異なり、 (mxk) /v の MSB を算出する必要 がないというメリツトを有する。 ただし、 (mxk) /v の最大ビット長を表す定数 b が必要となる。
また、 StepA4における HQの算出法については、 本発明の第 1実施形態における StepA3に示す方法を用いることで、 nの有効ビットを算出が不要となる。
StepA4, StepB4の詳細を以下に説明する。
ステップ 401では、 REG1 : =nを初期値として与える (ただし、 nの有効ワード長 は mである)。
ステップ 402では、 2mxk (mod n)を演算し、 その結果を REG0と REG2に対して与 えることで、 REG0 = REG2 = 2mxk (mod n)とする。
ステップ 403では、 REG0に対し 2倍剰余演算を v回繰り返し、 REG0=2mxk+v (mod n)を計算する。 ただし Vは整数であり、 v≥1 かつ (mxk) /vが整数であることを満 たす。
ステップ 404では、 以下の①および②の処理を i =0, 1 b - 1 について b回繰 リ返すことで、 REG2=22xnxk=R2 (mod n)を計算して出力し終了する。 ただし、 b は (mxk) /v の最大ビッ ト長を表す定数、 REDG (A,B) nはモンゴメ リ乗算剰余 REDC (A, B) =AxBx2-fflXk (mod n)をそれぞれ表す。
① REG0 : = REDG (REG0, REG0) nを計算する。
② mxkの i番目のビッ卜値 =1ならば、 REG2 := REDC (REG2, REG0) nを計算する。 この第 2実施形態では、 ステップ 401において REG1に初期値 nを与えており、 第 1実施形態と異なり REG2に対する初期値を与えていない。 これはステップ 402 の実現方法によって初期値が異なることによる。
ステップ 402では、 2mxk (mod n)を演算した上で、 この演算結果を REG0と REG2 に与え、 REG0=REG2=2mxk (mod n)としている。 2 (mod n)を計算するための実現方 法は複数存在するが、 たとえば第 1実施形態と同様の構成にすることで解決法 1 を実現することができ、 nに関する MSBの算出を不要とすることができる。
ステップ 403では、 REG0に対し 2倍剰余算を V回行うことで REG0=2mxk (mod n) を計算している。 1 また、 ステップ 404では、 解決法 3を実現しており、 V に関する制限、 および (mxk) /vの有効ビット長カウントを不要としている。 ここでは、 (mxk) /vの各ビッ ト値を検出し、 ビット値に応じて REDG演算を 1回もしくは 2回行うことで、 H=R2 (mod n)を計算している。 このことにより、 従来法 2では i番目のビット値を検出 する際、 (mxk) /v の有効ビット長 p'に対し i =p ' - 2 1 , 0 の順に検出していた のに対し、 この第 2実施形態では (mxk) /v の最大ビッ卜長 bに対し i =0,1 b-
1の順に検出している。 つまり、 本発明は (mxk) /vの最大ビット長である定数 の みを与えればよく、 入力値によって変化する(mxk) /v の有効ビット長を計算する 必要がないというメリットを有する。 従来法 2に対して、 i =b- 1 1 , 0 の順に 検出するように変更した場合、 b=p 'が満たされない限り計算結果が R2 (mod と 一致せず、 目的であるパラメータ Hを計算することができなくなる。
このように第 2実施形態では、 ステップ 404 において解決法 3を実現しており、 (mxk) /v が 2のべき乗であるという制限がなくなり、 また (mxk) /vの MSBの算出 が不要となるので課題 2およぴ課題 4が解決される。
図 1 2では、 ステップ 402 における 2 (mod n)の計算法を特定していないが、 第 1実施形態と同様の解決法 1を適用することで、 n に関する MSB を算出するこ とが不要となり、 さらに課題 1および課題 3を解決することができる。 〈実施例 1 >
本発明の第 1実施形態を実施した実施例 1を図 1 3のフローチヤ一卜に基づい て説明する。
図 1 3におけるステップ 501 ~504は、 それぞれ図 1 1のステップ 301〜304に 対応しており、 ステップ 302における 2倍剰余演算については、 ステップ 502に おいて REG2を左 1 ビットシフトした後、 REG2≥REG1 ならば REG1 から REG1 を減 算することで行っている。 この代わりに REG2 : =REG2+REG2 の加算処理を行い、 REG2≥REG1ならば REG2から REG1を減算する構成とすることも可能である。
この実施例 1に必要な計算量を表 3に示す。 〔表 3〕
実施例 1に必要な計算 i
Figure imgf000025_0001
〈実施例 2〉
本発明の第 2実施形態を実施した実施例 2を図 1 4のフローチヤ一卜に基づい て説明する。
図 1 4では、 図 1 2のステップ 402における 2mxk (mod n)の算出方法、 およびス テツプ 403における 2倍剰余演算の計算方法について特定した実施例である。 ステップ 601〜606により図 1 2のステップ 401,402の処理を、 ステップ 606に より図 1 2のステップ 403の処理を、 ステツプ 607により図 1 2のステツプ 404 の処理をそれぞれ行っている。
ステップ 601〜606 の処理により、 REG0=REG2=2roxk (mod n)演算している。 これ は、 図 6に示した方法において v=0とすることで演算することができる。
ステップ 607 では、 REG0 に対し 2倍剰余算を v 回繰り返すことで REG0=2mxk+v (mod n)とする。
ステップ 608では、 解決法 3を用いて (mxk) /vの各ビット値に応じて REDG演算 を 1回もしくは 2回繰り返すことで、 REG2=22xmxk (mod n) =R2 (mod n)を計算する。 この実施例 2に必要な計算量を表 4に示す。
〔表 4〕
実施例 2に必要な計算 j
601 602 603 604 605 606 607 608 ムき+
SFT 0 q 0 q 2q 0 V 0 4q+v
SUB 0 0 1 0. 5q 0 0 0. 5v 0 0. 5 (q+v) +1
REDC 0 0 0 0 0 0 0 b+1+W ( (mxk) /v) b+1+ ( (mxk) /v) 〈実施例 3〉
本発明の第 2実施形態を実施した実施例 3を図 1 5のフローチャートに基づい て説明する。
図 1 5では、 実施例 2と同様に、 図 1 2のステップ 402 における 2mxk (mod n) 算出法およびステップ 403 における 2倍剰余演算の計算方法について特定した実 施例である。 ステップ 402 の計算方法に解決法 1の手法を用いることで、 実施例 2と同様の課題 2および課題 4を解決する効果に加え、 課題 1および課題 3を解 決することができる。
図 1 5について説明する。 ステップ 701〜703 により、 図 1 2のステップ 401 , 402の処理を、 ステップ 704により図 1 2のステップ 403の処理を、 ステツ プ 705により図 1 2のステップ 404の処理をそれぞれ行っている。 以下ではこれ らの処理について説明する。
ステップ 701〜703 の処理により、 REG0=REG2=2mxk (mod n)を計算している。 こ れは、 解決法 1で v=0をした場合の処理を行っており、 nの MSBの算出を不要と し、 課題 1および課題 3を解決できる。 これらの処理により REG0=REG2=2mxk (mod n)を計算した後、 ステップ 704, 705 において解決法 3を用いた処理を行い、 REG2=R2 (mod n)を算出する。 (mxk) /v が 2のべき乗であるという制限がなく、 (mxk) /v の MSB の算出が不要であるので、 課題 4を解決することができる。 最後 【こ、 REG2の値をパラメータ Hとして出力し終了する。
この実施例 3の計算量を表 5に示す。
〔表 5〕
実施例 2に必要な計算】
Figure imgf000026_0001
〈発明の効果〉 上述した実施例 1 ~3では、 表 6に示すように、 各課題 1〜5を解決すること が可能となる。
〔表 6〕
本発明によリ解決可能な課題
Figure imgf000027_0001
さらに、 nの条件によって、 本発明は従来法より小さな計算量で処理を実現す ることが可能である。 計算量に関する比較を以下の表 7に示す。 表 7では、 加算、 減算、 シフト算の計算量は全て同一と仮定しており、 これらの演算をまとめて ADDと表記している。 また、 REDGはモンゴメリ乗算剰余を表す。
〔表 7〕
従来法と本発明の計算量に関する比較
Figure imgf000027_0002
表 7における ADD の計算量を比較すると、 4.5q+1.5v+1>1.5k+1.5v である場合 には、 実施例 1, 3の方が従来法 1, 2より小さな計算量による処理を実現する ことができる。 このときの条件は k≤3q であり、 つまり nの最上位ビットから連 続する' 0'の個数が k/3以上である場合に、 実施例 1, 3は従来方式よリ ADDの回 数を少なくすることができる。
また、 REDGを含めた計算量比較の例を、 以下の比較例 1 , 2に示す。
比較例 1 : 1024-bit RSA, 1 ヮード =32bit、 v=1の場合。
この場合、 nは 1024bitである。 また、 1ヮード =32bitなので k=32であり、 1024ビッ卜を表現するためのヮード長 111=32となる。 このとき、 nの最上位ビット =1 となるので、 q=0である。 したがって、 (mxk)/v=1024= (10000000000) 2であり、 W((mxk)/v)=0である。 また、 RSA暗号の最大ビット長を 1024-bitと仮定し、 b=11 とする。 この条件下で、 従来法と本発明に必要な計算量は以下のとおりである。 従来法 1
ADDは 2.5回、 また p=10であるので REDGは 10回。
従来法 2
ADDは 2.5回、 また p'=11, W((mxk)/v)=0であるので REDGは 10回。
実施例 1
ADDは 1.5x32+1.5x1=49.5回、 また p"=10かつ 2p"=(mxk)/vであるので REDGは 10回。
実施例 2
ADDは 2.5回、 また b=11, W ( (mxk) /v) =0であるので REDGは 12回。
実施例 3
ADDは 1.5x32+1.5x1=49.5回、 また b=11 , W ( (mxk) /v) =0であるので REDGは 12 回。 これらを表 8にまとめる。 実施例 2を用いることで、 従来法の課題を解消しな がら、 ADDに関する計算量を従来法と同じとすることができる。
〔表 8〕
比較例 1における計算 ϊ t比較
Figure imgf000029_0002
比較例 2 : 163-bit楕円曲線暗号、 1 ワード =8bit、 従来法 1で v=21、 他は v=3の 口。
この場合、 nは 163bitである。 また、 1ヮードが 8ビットなので k=8であり、 163 ビットを表現するためのワード長 m=21 となる。 このとき、 n の上位 8x21- 163=5ビッ卜が 0となるので q=5である。 vについては、 パラメータ選択の制限か ら従来法 1のみ v=21 とし、 従来法 2および実施例 1, 2, 3は v=3とする。 v=21 の場合、 (mxk)/v=8=(1000)2であり、 W((mxk)/v)=0 である。 また v=3 の場合、 (mxk)/v=56=(111000)2であり、 W ( (mxk) /v) =2である。 また、 楕円曲線暗号の最大 ビット長を 255-bit と仮定し、 b=8 とする。 この条件下で、 従来法と本発明に必 要な計算量は以下のとおりである。 従来法 1
ADDは 4.5x5+1.5x21=54回、 また p=3であるので REDCは 3回。
従来法 2
ADDは 4.5x5+1.5x3=27回、 また p' =6,
Figure imgf000029_0001
であるので REDCは 7回。 実施例 1
ADDは 1.5x8+1.5x3=16.5回、 また p"=6かつ 2p">(mxk)/vであるので REDCは 7 回。
実施例 2
ADDは 4.5x5+1.5x3=27回、 また b=8, W((mxk)/v)=2であるので REDCは 10回。 実施例 3
ADDは 1.5x8+1.5x3=16.5回、 また b=8, W ( (mxk) /v) =2であるので REDCは 10回。 これらを表 9にまとめる。 実施例 1 , 3を用いることで、 従来法の課題を解消 しながら、 ADDの回数を従来法より削減することができる。 さらに、 REDC演算を コプロセッサ等の専用ハードウ: Lァを用いて高速に計算する場合を仮定し ADD=REDG とした場合、 実施例 1の計算量は 16. 5+7=23. 5, 実施例 3の計算量は 16. 5+10=26. 5 となり、 従来法 1の (54+3=57)、 および従来法 2の (27+7=34) よ リも全体の計算量を小さく抑えることができる。
〔表 9〕
比較例 2における計算量比較
Figure imgf000030_0001
〈他の実施形態〉
前述した各実施形態は、 ハードディスク、 GD-R0N!、 その他の記録媒体に格納さ れたプログラムをメインメモリ上で展開して、 コンピュータを各機能部として機 能させるように構成できる。 この場合、 本発明のモンゴメリ乗算剰余における変 換パラメータの演算方法を実現するプログラムは、 図 1 6に示すように、 GD- R0M31 1やフレキシブルディスク 312などの可搬型記録媒体 310、 通信回線の先に備 えられる他の記録装置 330、 コンピュータ 300のハードディスクや RAMなどの記録媒 体 320のいずれに記録されるものであってもよく、 プログラム実行時にはコンビュ ータ 300の主メモリ上にロードされて実行される。
(産業上の利用可能性)
本発明によれば、 パラメータ Vに関する制限、 データ値の最上位有効ビット(Mos t S i gn i f i cant B i t, 以下 MSB)の算出、 およびデータのビット値の検出という問題 を解決し、 ソフトウェア実装における処理効率が向上させることができる。 この ことにより、 RSA、 楕円曲線暗号などの公開鍵暗号を処理する際の処理速度を向上 させることができる。

Claims

請 求 の 範 囲
1.
剰余の法 nの有効ヮード長を m、 1 ヮード当たりのビット長を 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法であって、
A) H0=2vxR (mod n) (ただし、 vは整数であり、 v≥1かつ (mxk)/vは整数) を計算 する工程であって、
A-1) 2つのレジスタ REG1, REG2を、 REG1=n, REG2=2(n )xkにより初期化する (た だし、 REG1は m個のワードから、 REG2は m個以上のワードから構成されるレジス タ) 工程と、
A-2) REG2に対し、 REG1の値を法とした 2倍剰余算を k+v回繰り返すことで 2vxR (mod n)を得る工程と、
を含む第 1工程と、
B) i=1,2 pに関して、 H REDGOIi Hi— を繰り返すことで、 H0=2vxR (mod n) から Hp=2vxrpxR(mod n)を計算する (ただし、 pは 2p≥(mxk)/v >2P- 1を満たす整数 を、 REDC はモンゴメリ乗算剰余 REDC(a,b) =axbxR-1 (mod n)を、 χΊ は指数演算 X1をそれぞれ表す) 第 2工程と、
C) 2p>(mxk)/vの場合、 第 2工程で得られた Hpに対し HP=REDG(HP, g)nを計算する ことで HP=R2 (mod n)を計算し (ただし、 g=2kxE(p m k)、 E(p, m, k)=2xm-(vx2p)/kであ る)、 最後に Hpを R2 (mod n)として出力する第 3工程と、
を含むモンゴメリ乗算剰余における変換パラメータの演算方法。
2.
剰余の法 nの有効ヮード長を m、 1 ヮード当たりのビット長を 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法であって、
A) H'=R (mod n), H0=2vxR (mod n)を計算する (ただし、 v は整数であり、 v≥1 かつ (mxk)/vは整数) 第 1工程と、
B) i=0, 1,.. ,b-1に関して、
B-1) (mxk)/vの ί番目のビット値 =1 ならば、 H'=REDG(H', Η ηを計算する工程と、 B-2) HrREDC(HH- HH)nを計算する工程と、
を繰り返すことで H'=R2 (mod n)を計算し出力する (ただし bは (mxk)/vの最大ビ ット長を表す定数、 REDC はモンゴメリ乗算剰余演算 REDC(a,b)=axbxR-1 (mod n) をそれぞれ表す) 第 2工程と、
を含むモンゴメリ乗算剰余における変換パラメータの演算方法。
3.
前記第 1工程は、
A-1) 2つのレジスタ REG1, REG2 に対し、 REG1:=n, REG2:=0 により初期化する (ただし、 REG1は m個のワードから、 REG2は m個のワードから構成されるレジス タであり、 kは 1ワードあたりのビッ卜長である) 工程と、
A - 2) REG1 に対し左 1 ビットシフ卜を q回繰り返すことで、 REG1=n'=2qxnとする (ただし、 qは mヮードで表現される nの最上位ビッ卜から連続する' 0'の個数を 表す) 工程と、
A-3) REG2 := REG2-REG1 を計算することで、 REG2=R (mod η')を計算する工程と、 A-4) REG2に対し、 2倍剰余演算を q回繰り返すことで、 REG2=2qxR (mod η')を計 算する工程と、
Α - 5) REG1, REG2 に対し、 右 1 ビットシフトを q 回繰り返すことで、 REG1=n, REG2=R (mod n)を計算した後、 REG2の値を H'にコピーする工程と、
A-6) REG2に対し、 さらに REG1の値を法とした 2倍剰余演算を v回繰り返すこと で、 REG2=2vxR (mod n)を計算した後、 H0にコピーする工程と、
を含む請求項 2に記載のモンゴメリ乗算剰余における変換パラメータの演算方法。
4.
前記第 1工程は、
A-1) 2つのレジスタ REG1, REG2に対し、 REG1:=n, REG2:=2(n ) xkにより初期化す る (ただし、 REG1は m個のワードから、 REG2は m個以上のワードから構成される レジスタであり、 kは 1ワードあたりのビット長である) 工程と、
A - 2) REG 2に対し REG1 の値を法とした 2倍剰余演算を k 回繰り返すことで、 REG2=2mxk (mod n)=R (mod n)を計算し、 H'にコピーする工程と、
A-3) REG2 に対し 2倍剰余演算をさらに v回繰り返すことで、 REG2 = 2vxR (mod n)を計算し、 H0にコピーする工程と、
を含む請求項 2に記載のモンゴメリ乗算剰余における変換パラメータの演算方法。
5.
剰余の法 nの有効ヮード長を m、 1ヮ一ド当たりのビット長を 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法のプロダラ ムであって、
A) H0=2vxR (mod n) (ただし、 vは整数であり、 v≥1かつ (mxk)/vは整数) を計算 する工程であって、
A - 1) 2つのレジスタ REG1, REG2を、 REG1=n, REG2=2(n )xkにより初期化する (た だし、 REG1は m個のワードから、 REG2は m個以上のワードから構成されるレジス タ) 工程と、
A-2) RE62に対し、 REG1の値を法とした 1倍剰余算を k+v回繰り返すことで 2vxR (mod n)を得る (ただし、) 工程と、
を含む第 1工程と、
B) i=1,2,..., pに関して、 H^EDGO I を繰り返すことで、 H0=2vxR (mod n) から Hp=2vx2'pxR(mod n)を計算する (ただし、 pは 2p≥(mxk)/v >2P1を満たす整数 を、 REDC はモンゴメリ乗算剰余 REDC(a,b) =axbxR-1 (mod n)を、 χΊ は指数演算 1をそれぞれ表す) 第 2工程と、
0 2p>(mxk)/vの場合、 第 2工程で得られた Hpに対し HP=REDC(HP, g)nを計算する ことで HP=R2 (mod n)を計算し (ただし、 g=2kxE(pmk)、 E(p, in, k)=2xm-(vx2p)/kであ る)、 最後に Hpを R2 (mod n)として出力する第 3工程と、
を含むモンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに 実行させるためのプログラム。
6.
剰余の法 nの有効ヮード長を m、 1ヮード当たりのビッ卜長を 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法のプログラ ムであって、
A) H'=R (mod n), H0=2vxR (mod n)を計算する (ただし、 v は整数であり、 v≥1 かつ (mxk) /vは整数) 第 "I工程と、
B) i=0, 1,.. , b-1に関して、
B-1) (mxk)/vの i番目のビット値 =1 ならば、 H'=REDC(H', Η ηを計算する工程と, B-2) Hi=REDC (ΗΗ, ΗΗ) ηを計算する工程と、
を繰り返すことで H'=R2 (mod n)を計算し出力する (ただし bは (mxk)/vの最大ビ ット長を表す定数、 REDC はモンゴメリ乗算剰余演算 REDG(a,b)=axbxR— 1 (mod n) をそれぞれ表す) 第 2工程と、
を含むモンゴメリ乗算剰余における変換パラメータの演算方法をコンピュータに 実行させるためのプログラム。
剰余の法 nの有効ヮード長を m、 1ヮード当たりのビット長を 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算方法であって、 m個のワードから構成される第 1 レジスタ REG1と、
m個以上のヮードから構成される第 2レジスタ REG2と、
2つのレジスタ REG1, REG2 を、 REG1=n, REG2=2(n )xkにょリ初期化する初期化 処理部と、
前記第 2レジスタ REG2に対し、 第 1 レジスタ REG1 の値を法とした 2倍剰余算 を k+v 回繰り返すことで H0=2vxR (mod n) (ただし、 v は整数であり、 v>1 かつ (mxk)/vは整数) を演算する H0演算部と、
i=1,2 p に関して、 Hi=REDG(Hi HH)nを繰り返すことで、 H。=2vxR (mod n) から Hp=2vx2'pxR(mod n)を計算する (ただし、 pは 2p≥(mxk)/v >2P1を満たす整数 を、 REDC はモンゴメリ乗算剰余 REDC(a, b) =axbxR"1 (mod n)を、 χΊ は指数演算 をそれぞれ表す) Hp演算部と、
2pXmxk)/vの場合、 前記 Hp演算部により得られた Hpに対し HP=REDC(HP, g)nを 計算することで HP=R2 (mod n)を計算し (ただし、 g=2kxE(p'm k)、 E(p,m, k)=2xm- (vx2p)/kである)、 最終的に得られた Hpを R2 (mod n)として出力するパラメータ 出力部と、
を備えるモンゴメリ乗算剰余における変換パラメータの演算装置。 8.
剰余の法 nの有効ヮ一ド長を m、 1 ヮード当たりのビット長を k、 2mxk=R とす るモンゴメリ乗算剰余における変換パラメータ R2 (mod n)の演算装置であって、
H'=R (mod n), H0=2vxR (mod n)を計算する (ただし、 v は整数であり、 ≥1 か つ (mxk)/vは整数) H0演算部と、
i=0, 1, .., b-1 に関して、 (mxk) /vの i番目のビッ卜値 =1ならば、 H' =REDC (Η', Η,)ηを計算する工程と、
Figure imgf000036_0001
HH)nを計算する工程とを繰り返すことで H'=R2 (mod n)を計算し出力する (ただし b は (mxk)/vの最大ビット長を表す定数、 REDG はモンゴメリ乗算剰余演算 REDC(a,b)=axbxR"1 (mod n)をそれぞれ表す) H' 演算部と、
を含むモンゴメリ乗算剰余における変換/ ラメ一タの演算装置。
PCT/JP2003/009722 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム WO2005013243A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2005507387A JP4616169B2 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
EP03817774A EP1650727B1 (en) 2003-07-31 2003-07-31 Method for calculating conversion parameter of montgomery multiplication remainder
DE60332876T DE60332876D1 (de) 2003-07-31 2003-07-31 Verfahren zum errechnen eines konvertierungsparameters aus dem montgomery-multiplikations-divisionsrest
AU2003252750A AU2003252750A1 (en) 2003-07-31 2003-07-31 Calculator, method, and program for calculating conversion parameter of montgomery multiplication remainder
PCT/JP2003/009722 WO2005013243A1 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
US11/230,592 US7792893B2 (en) 2003-07-31 2005-09-21 Device and method for calculating conversion parameter of montgomery modular multiplication and program therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/009722 WO2005013243A1 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/230,592 Continuation US7792893B2 (en) 2003-07-31 2005-09-21 Device and method for calculating conversion parameter of montgomery modular multiplication and program therefor

Publications (1)

Publication Number Publication Date
WO2005013243A1 true WO2005013243A1 (ja) 2005-02-10

Family

ID=34113469

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2003/009722 WO2005013243A1 (ja) 2003-07-31 2003-07-31 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム

Country Status (6)

Country Link
US (1) US7792893B2 (ja)
EP (1) EP1650727B1 (ja)
JP (1) JP4616169B2 (ja)
AU (1) AU2003252750A1 (ja)
DE (1) DE60332876D1 (ja)
WO (1) WO2005013243A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1708081A1 (en) * 2005-03-30 2006-10-04 Fujitsu Limited Method and device for calulcating conversion parameter of Montgomery
JP2007212701A (ja) * 2006-02-09 2007-08-23 Renesas Technology Corp 剰余演算処理装置
EP1845442A1 (en) 2006-04-11 2007-10-17 STMicroelectronics S.r.l. Computation of a modular multiplication with an electronic circuit
JP2015055851A (ja) * 2013-09-13 2015-03-23 富士通セミコンダクター株式会社 演算回路および演算回路の制御方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2015171A1 (fr) * 2007-06-29 2009-01-14 Gemplus Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
EP2385461A1 (en) * 2010-04-30 2011-11-09 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US8626811B2 (en) * 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US11508263B2 (en) * 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152319A (ja) * 1993-11-30 1995-06-16 Canon Inc 暗号化装置
JPH07199807A (ja) * 1993-12-27 1995-08-04 Canon Inc 暗号化用剰余乗算回路、暗号装置、および暗号通信システム
JP2002007112A (ja) * 2000-06-20 2002-01-11 Sony Corp 剰余演算計算方法および剰余演算計算装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69434422T2 (de) 1993-11-30 2006-04-20 Canon K.K. Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
FR2726666B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery
FR2743908B1 (fr) * 1996-01-18 1998-02-27 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2743907B1 (fr) * 1996-01-18 1998-02-27 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2771525B1 (fr) * 1997-11-24 2002-10-11 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
US6240436B1 (en) * 1998-03-30 2001-05-29 Rainbow Technologies, Inc. High speed montgomery value calculation
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US7278090B2 (en) * 2004-03-31 2007-10-02 Nxp B.V. Correction parameter determination system
EP1845442B1 (en) * 2006-04-11 2011-11-09 STMicroelectronics Srl Computation of a modular multiplication with an electronic circuit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152319A (ja) * 1993-11-30 1995-06-16 Canon Inc 暗号化装置
JPH07199807A (ja) * 1993-12-27 1995-08-04 Canon Inc 暗号化用剰余乗算回路、暗号装置、および暗号通信システム
JP2002007112A (ja) * 2000-06-20 2002-01-11 Sony Corp 剰余演算計算方法および剰余演算計算装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KEIICHI IWAMURA ET AL.: "Bekijo Joyo ni Tekishita Montgomery-ho ni yoru Joyo Josanho to Soreo Jitsugen suru Systolic Arragys", THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS, vol. J76-A, no. 8, 25 August 1993 (1993-08-25), pages 1214 - 1223, XP002984736 *
See also references of EP1650727A4 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1708081A1 (en) * 2005-03-30 2006-10-04 Fujitsu Limited Method and device for calulcating conversion parameter of Montgomery
US8085931B2 (en) 2005-03-30 2011-12-27 Fujitsu Limited Computation method, computing device and computer program
JP2007212701A (ja) * 2006-02-09 2007-08-23 Renesas Technology Corp 剰余演算処理装置
EP1845442A1 (en) 2006-04-11 2007-10-17 STMicroelectronics S.r.l. Computation of a modular multiplication with an electronic circuit
US8117251B2 (en) 2006-04-11 2012-02-14 Stmicroelectronics S.R.L. Computation of a multiplication operation with an electronic circuit and method
JP2015055851A (ja) * 2013-09-13 2015-03-23 富士通セミコンダクター株式会社 演算回路および演算回路の制御方法

Also Published As

Publication number Publication date
US7792893B2 (en) 2010-09-07
EP1650727B1 (en) 2010-06-02
DE60332876D1 (de) 2010-07-15
EP1650727A4 (en) 2007-07-25
JPWO2005013243A1 (ja) 2006-09-28
AU2003252750A1 (en) 2005-02-15
US20060235921A1 (en) 2006-10-19
JP4616169B2 (ja) 2011-01-19
EP1650727A1 (en) 2006-04-26

Similar Documents

Publication Publication Date Title
US8504602B2 (en) Modular multiplication processing apparatus
JP5412274B2 (ja) サイドチャネル攻撃からの保護
KR101255393B1 (ko) 타원 곡선 점 곱셈
KR100891323B1 (ko) 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
CN107040362B (zh) 模乘设备和方法
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
US7908641B2 (en) Modular exponentiation with randomized exponent
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
JPWO2005015526A1 (ja) 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
JP2009500710A (ja) 攻撃又は解析に対してデータ処理装置を保護するための装置及び方法
EP0952697A2 (en) Elliptic curve encryption method and system
US20090268900A1 (en) Signed montgomery arithmetic
WO2005013243A1 (ja) モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
US6609141B1 (en) Method of performing modular inversion
Hitchcock et al. A new elliptic curve scalar multiplication algorithm to resist simple power analysis
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
Gutub Fast 160-bits GF (p) elliptic curve crypto hardware of high-radix scalable multipliers
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
Greuet et al. Modular Polynomial Multiplication Using RSA/ECC Coprocessor
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置
de la Fe et al. Profiling Attack against RSA Key Generation Based on a Euclidean Algorithm. Information 2021, 12, 462
Knezevic et al. Speeding up Barrett and Montgomery modular multiplications

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005507387

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2003817774

Country of ref document: EP

Ref document number: 11230592

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 2003817774

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11230592

Country of ref document: US