WO2009107650A2 - スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 - Google Patents
スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- WO2009107650A2 WO2009107650A2 PCT/JP2009/053395 JP2009053395W WO2009107650A2 WO 2009107650 A2 WO2009107650 A2 WO 2009107650A2 JP 2009053395 W JP2009053395 W JP 2009053395W WO 2009107650 A2 WO2009107650 A2 WO 2009107650A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- dmax
- storage means
- value
- values
- storing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
Definitions
- the present invention relates to a scalar multiplication operation method in which the scalar multiplication operation is accelerated by at least t-1 expansion of the scalar n multiplication n of the rational point Q, and a recording medium recording the operation program, and
- the present invention relates to a multiplication operation method for speeding up the multiplication operation by at least (qr) -advance expansion of n of the original A multiplication and a recording medium on which the operation program is recorded.
- the authentication device does not authenticate using the user's personal information, but uses multiple users as a group and uses a group signature indicating that they belong to this group.
- a group signature technique has been proposed in which authentication is performed without specifying a person, thereby enabling authentication without accumulating personal information in an authentication apparatus.
- Pairing means, for example, that P is a rational point on the prime field F q , Q is a rational point on the k-th order extension field F q k , and P and Q are input to obtain an element z of the extension field F * q k When a times P and b times Q are input, z is ab.
- “k” is referred to as an embedding degree
- “F * q k ” is correctly displayed as follows, but “F * q k ” is displayed due to display limitations.
- the encryption or decryption process in the ID-based encryption and the authentication process in the group signature are required to be executed in as short a time as possible.
- many scalar multiplications and power multiplications are executed, and it is required to execute these operations at high speed.
- Frobenius mapping phi q is also made to increase the speed by reducing the number of operations by using the A ⁇ A q ing.
- the known speed-up means for speeding up using a map is extremely effective when the scalar n in scalar multiplication or the multiplier n in power multiplication greatly exceeds the order q (n >> q).
- scalar n and multiplier n that do not exceed the order q of the finite field F q , compared with the case where scalar multiplication and power multiplication are directly executed without using a high-speed means.
- a remarkable effect could not be found.
- the scalar n or the multiplier n is In many cases, the order q is not much higher than the order q of the finite field F q , and an effective speedup cannot be expected even if a well-known speedup means is used.
- the present inventors are able to execute scalar multiplication or power multiplication at high speed even when the scalar n or the multiplier n does not exceed the order q of the finite field Fq.
- the research and development of the method has been carried out to arrive at the present invention.
- E (F q ) formed by the rational points of the elliptic curve defined by the finite field F q
- E (F q k ) is an additive group formed by rational points of an elliptic curve defined by an extension field F q k of a finite field F q Frobenius endomorphism of rational point ⁇ q on the finite field F q, trace t of Frobenius self-homogeneous map ⁇ q
- E [r] is a set of rational points whose order is a prime number r
- [j is a map that multiplies rational points by j
- the auxiliary input step further includes a step in which the CPU inputs a value of m ( ⁇ ) that satisfies r ( ⁇ )
- the CPU reads the coefficient D i ( ⁇ ) from the storage means as the coefficient of ⁇ dmax , which is the term of the maximum degree dmax of deg (D i ( ⁇ )), as T dmax ( ⁇ q ), and stores the coefficient T i in the storage means.
- F q k is a k-th order extension field of a finite field F q of order q
- H is a partial multiplicative group of prime order r of F q k
- ⁇ q be the original Frobenius automorphism map for the finite field F q
- the CPU inputs the value of the non-negative integer n, the value of the order q, the value of the prime order r of the F q k , and the value of the element A represented by A ⁇ H ⁇ F q k and stores the value An input step stored in the means; An initialization step in which the CPU initializes the storage means for storing the calculation result Z; The CPU reads the value of the order q and the element A from the storage means, sets the difference between the
- X ⁇ ⁇ Y ⁇ represents XY
- An auxiliary input step in which the CPU inputs the values of q ( ⁇ ), r ( ⁇ ), and s ( ⁇ ) and stores them in the storage means;
- the CPU reads r ( ⁇ ) and s ( ⁇ ) from the storage means, and based on the following formula obtained by expanding the r ( ⁇ ) by s ( ⁇ ) using the s ( ⁇ ): D i ( ⁇ ) ⁇ r ( ⁇ )% s ( ⁇ ) and r ( ⁇ ) ⁇ (r ( ⁇ ) ⁇ D i ( ⁇ )) / s ( ⁇ ) i ⁇ "degr ( ⁇ ) / degs ( ⁇ ) '' repeatedly, and the auxiliary expansion step of storing the coefficients D i ( ⁇ ) and r (
- the auxiliary storage step further includes a step in which the CPU inputs a value of m ( ⁇ ) that satisfies r ( ⁇ )
- E (F q ) formed by the rational points of the elliptic curve defined by the finite field F q
- E (F q k ) is an additive group formed by rational points of an elliptic curve defined by an extension field F q k of a finite field F q Frobenius endomorphism of rational point ⁇ q on the finite field F q, trace t of Frobenius self-homogeneous map ⁇ q
- E [r] is a set of rational points whose order is a prime number r, a map that j times the
- the auxiliary input procedure further includes a procedure of inputting a value of m ( ⁇ ) satisfying r ( ⁇ )
- a second auxiliary identification procedure to identify The values of m ( ⁇ ) and R ( ⁇ ) are read from the storage means, and V ( ⁇ q )
- F q k is a k-th order extension field of a finite field F q of order q
- H is a partial multiplicative group of prime order r of F q k
- ⁇ q be the original Frobenius automorphism map for the finite field F q
- arithmetic program for causing a computer that includes a CPU and storage means to perform multiplication to perform n multiplication of an element A of H with respect to a non-negative integer n
- the value of the non-negative integer n, the value of the order q, the value of the prime order r of the F q k , and the value of the element A represented by A ⁇ H ⁇ F q k are input and stored in the storage means.
- X ⁇ ⁇ Y ⁇ represents XY
- q ( ⁇ ), r ( ⁇ ), and s ( ⁇ ) using an integer variable ⁇ , respectively.
- the auxiliary storage procedure further includes a procedure of inputting a value of m ( ⁇ ) that satisfies r ( ⁇ )
- the present invention uses the Frobenius automorphism map ⁇ q to reduce the number of operations.
- an elliptic curve that can be used for pairing called a pairing friendly curve is used, and when using this pairing friendly curve, an integer variable ⁇ is set.
- the order q ( ⁇ ), prime order r ( ⁇ ) that divides #E (F q ), and the trace t ( ⁇ ) of the Frobenius self-homogeneous map ⁇ q are given in advance.
- the highest order coefficient D i ( ⁇ ) is D dmax ( ⁇ )
- this d dmax ( ⁇ ) is replaced with a polynomial h ( ⁇ q , ⁇ ) to further reduce the number of computations. Can be improved.
- n is expanded by v ⁇ dmax -h (0, ⁇ ) instead of D dmax ( ⁇ ), and h (q, ⁇ ) -h (0,0) instead of v ⁇ dmax -h (0, ⁇ ).
- ⁇ the number of computations can be further reduced and the computation speed can be improved.
- 10 is a flowchart of an auxiliary program for obtaining a polynomial h ( ⁇ q , ⁇ ) and v ⁇ dmax ⁇ h (0, ⁇ ).
- 5 is a flowchart of a power multiplication operation program.
- 5 is a flowchart of a power multiplication operation program. It is a flowchart of the auxiliary
- 5 is a flowchart of a power multiplication operation program.
- 10 is a flowchart of an auxiliary program for obtaining a polynomial h (q, ⁇ ) and v ⁇ dmax ⁇ h (0, ⁇ ).
- the present invention aims at speeding up the operation of scalar multiplication and speeding up the operation of power multiplication, and the operations themselves are different, such as scalar multiplication and power multiplication. It is the same, and the number of operations is reduced in the same way, so that the operation speed can be increased. First, scalar multiplication will be described, and then power multiplication will be described.
- scalar n multiplication of rational point Q of G for non-negative integer n that is, nQ is calculated. Note that the scalar multiplication assumed in the present embodiment is performed at the time of pairing calculation, and in general, the scalar n does not greatly exceed the order r.
- n C 1 (t ⁇ 1) + C 0
- n (t ⁇ 1) 2 + C 1 (t ⁇ 1) + C 0 It becomes.
- nQ [C 1 (t ⁇ 1) + C 0 ]
- Q [C 1 q] Q + [C 0 ]
- Q ⁇ q ([C 1 ] Q) + [C 0 ]
- nQ [(t ⁇ 1) 2 + C 1 (t ⁇ 1) + C 0 ]
- Q [Q] [q] Q + [C 1 q] Q + [C 0 ]
- Q ⁇ q ( ⁇ q (Q)) + ⁇ q ([C 1 ] Q) + [C 0 ]
- C 1 and C 0 are approximately equal to or smaller than t ⁇ 1, and the Frobenius self-homogeneous mapping of rational points can be used, thereby reducing the number of operations. Therefore, the scalar multiplication can be speeded up.
- the highest order is represented by dmax
- the coefficient of ⁇ dmax which is a term of the highest order dmax is represented by T dmax ( ⁇ q ).
- n is set to t ⁇
- a ⁇ 2 -10 decimal expansion and using 15 ⁇ q instead of ⁇ 2 -10, a rational n multiplication of the rational point of G or an n multiplication of the element A of H
- the Frobenius self-homogeneous map ⁇ q can be used for computation, and the number of computations can be reduced to speed up multiplication.
- n is set to t ⁇
- a scalar n multiplication of a rational point of G or an n multiplication of an element A of H is performed on the rational point. Calculations can be performed using the Frobenius self-homogeneous map ⁇ q, and the number of calculations can be reduced to speed up multiplication.
- n is set to t ⁇
- scalar n multiplication of rational point of G or n multiplication of element A of H is performed by Frobenius for rational point. Calculations can be performed using the auto-homogeneous mapping ⁇ q, and the number of calculations can be reduced to speed up multiplication.
- n is set to t ⁇
- ⁇ q 2 (1- ⁇ q ) ( ⁇ q 2 + 3 ⁇ q +1) instead of 6 ⁇
- scalar n multiplication of rational points of G or H The n multiplication of the element A can be performed using the Frobenius self-homogeneous map ⁇ q with respect to the rational point, and the number of operations should be reduced to speed up the multiplication.
- ⁇ 825 (10 bits).
- r 16656811746301 (44 bits)
- t 40883751 (22 bits) It is.
- D 1 ( ⁇ ) 7 ⁇ 2 It becomes.
- n is set to t ⁇ 1 binary expand, expand further chi 3 -49 binary, by using in place of ⁇ 3 -49 ⁇ 2 ⁇ q, a n multiplication of the original a scalar n multiplication or H of rational points G, Calculations can be performed using the Frobenius automorphism map ⁇ q for rational points, and the number of calculations can be reduced to speed up multiplications that should be performed.
- the scalar multiplication operation program and the power multiplication operation program will be described in detail.
- the scalar multiplication operation program and the power multiplication operation program are executed as one of the subroutines when the ID-based encryption, the group signature, or the like is executed on the electronic computer. is there.
- an electronic computer 10 that executes a scalar multiplication calculation program and a power multiplication calculation program includes a CPU 11 that executes calculation processing, and a storage device 12 such as a hard disk that stores necessary programs and data.
- the memory device 13 includes a RAM or the like that expands and executes a required program and temporarily stores data generated by the calculation.
- 14 is a bus.
- the storage device 12 stores various programs such as a main routine program, a scalar multiplication calculation program and a power multiplication calculation program, and data used by these programs.
- the electronic computer 10 functions as an authentication device for a group signature
- the signature of the group signature transmitted from the client device 30 connected to the telecommunications line 20 such as the Internet and connected to the telecommunications line 20 is used.
- the data is received, temporarily stored in the memory device 13, and the authentication process is performed by determining the validity of the signature data based on the group signature program.
- reference numeral 15 denotes an input / output control unit of the electronic computer 10.
- a number of scalar multiplication operation programs and power multiplication operation programs are executed when performing processing for determining the validity of signature data.
- a scalar multiplication operation program and power multiplication are performed. Only the calculation program will be described.
- the scalar multiplication operation program and the power multiplication operation program according to the present invention are not used in group signature processing, but are used in various applications.
- the scalar multiplication calculation program and the power multiplication calculation program according to the present invention are in a form that can be stored in a storage device 12 or a computer-readable recording medium, or downloaded from a server and stored in the storage device.
- a configuration in which a so-called hardware is implemented by configuring as a semiconductor circuit may be employed.
- An electronic computer is caused to function as a scalar multiplier by executing a scalar multiplication operation program.
- the CPU 11 sends a scalar n and a trace t of a Frobenius self-homogeneous map of E (F q ) from the client device 30 via the telecommunication line 20 and the input / output control unit 15.
- the value of the rational point Q ⁇ G ⁇ E (F q k ) is input and stored in the memory device 13 (step S101).
- the electronic computer functions as input means.
- the CPU 11 secures Z for storing the calculation result in the memory device 13, and initializes Z (Z ⁇ O) (step S102). Therefore, the electronic computer functions as input means.
- CPU11 to the inputted Q, performs operations expressed by 2 j Q (step S103).
- the CPU 11 reads the values of c [i], s, and scalar n from the memory device 11, functions as a conversion unit, and converts the scalar n to And s-advance expansion (step S104).
- i is a natural number
- the magnitude of i is determined by the magnitude of n.
- the electronic calculator functions as a synthesis unit, and uses Q [i] calculated in step S105 to calculate the scalar multiplication nQ, (Step S106).
- the electronic computer functions as output means, outputs the value of Z from the input / output control unit 15 as the execution result of the scalar multiplication operation program (step S107), and ends the scalar multiplication operation program. Yes.
- scalar n is divided log s n, it is possible to reduce the number of operations of elliptic doubling approximately 1 / (log s n) by using phi q.
- the order q of the elliptic curve finite field F q , the prime order r that divides #E (F q ), and the trace t of the Frobenius self-homogeneous map ⁇ q are respectively represented by q ( ⁇ ) using the integer variable ⁇ .
- D dmax ( ⁇ ) and polynomial h ( ⁇ q, ⁇ ) is the scalar multiplication nQ when being identified, by executing the operation program of the scalar multiplication to function the computer as a scalar multiplication unit.
- Each value of Q ⁇ G ⁇ E (F q k ) is input and stored in the memory device 13 (step S201). In this case, the electronic computer functions as input means.
- the electronic computer functions as initialization means. That is, the CPU 11 secures Z for storing the calculation result in the memory device 13 and initializes it (Z ⁇ O) (step S202).
- the electronic computer functions as a first calculation means. That is, the CPU 11 calculates 2 j Q in advance for the input Q (step S203). Since the calculation in step S203 is the same as the calculation in step S103, description thereof is omitted.
- the electronic computer functions as the first expansion means, and the scalar n is
- step S204 And s-advance expansion (step S204). Since the algorithm for the s-adic expansion in step S204 is the same as that for the s-adic expansion in step S104, description thereof is omitted.
- the electronic computer functions as a second expansion means, and uses scalar n as h ′ ( ⁇ q ) and c [i], And phi q proceeds to deploy (step S205).
- step S205 the CPU 11 executes the following algorithm as the calculation of ⁇ q- adic expansion.
- the CPU 11 initializes T ( ⁇ q ) stored in the memory device 13 to 1.
- the CPU 11 reads the value of c [i] from the memory device 13, performs a substitution operation of d [i] ⁇ c [i], and stores the value of d [i] in the memory device 13.
- the CPU 11 reads the values of d [i] and s from the memory device 13, and when d [i] ⁇ s is satisfied, e [j] ⁇ d [i]% s and d [i] ⁇ (d [i] -e [j])
- coefficient of phi q-adic expansion d [i] may become larger than s.
- CPU11 is, phi q proceeds by comparing the coefficient d [i] and s deployment, if the coefficient of phi q-adic expansion d [i] is determined to be greater than s: (step S206 NO) is, phi
- the coefficient d [i] for ⁇ q- adic expansion is adjusted to be smaller than s (step S207).
- the electronic computer functions as a comparison unit in step S206 and functions as an adjustment unit in step S207.
- the CPU 11 reads the value of the i-th coefficient of T ( ⁇ q ) from the memory device 13, stores the value in d [i], and compares d [i] with the value of s.
- the CPU 11 does not perform the above series of calculations when d [i] ⁇ s is not satisfied.
- step S208 the binary method is used, and the CPU 11 executes the following algorithm.
- the CPU 11 reads the values of d [i] and T [j] from the memory device 13, initializes Q [i] as Q [i] ⁇ O, and satisfies d [i] & 1, If the assignment operation represented by Q [i] ⁇ Q [i] + T [j] does not satisfy d [i] & 1, execute the assignment operation of d [i] ⁇ d [i] / 2 , Q [i] and d [i] are stored in the memory device 13.
- the electronic calculator functions as a synthesis unit, and uses Q [i] calculated in step S208 to calculate the scalar multiplication nQ, (Step S209).
- the CPU 11 outputs the value of Z from the input / output control unit 15. That is, the electronic computer functions as output means, outputs Z as the execution result of the scalar multiplication operation program (step S210), and ends the scalar multiplication operation program.
- a scalar n since the split log s n, it is possible to reduce the number of calculations approximate DegD dmax that an elliptical doubling using ⁇ q ( ⁇ ) / degr ( ⁇ ).
- the computer When the computer starts up the auxiliary program, it first functions as input means as shown in FIG. That is, the CPU 11 inputs r ( ⁇ ) and t ( ⁇ ) values and stores them in the memory device 13 (step S221).
- the magnitude of i is automatically determined from r ( ⁇ ) and s ( ⁇ ).
- the electronic computer functions as an extraction unit, extracts the one having the maximum deg (D i ( ⁇ )), and outputs it as D dmax ( ⁇ ) (step S223). That, CPU 11 reads out the values of D i (chi) compared from the memory device 13, and stores that value in memory device 13 maximum D i a (chi) as D dmax ( ⁇ ).
- the electronic computer functions as a calculation means. That is, the CPU 11
- the polynomial h ( ⁇ q , ⁇ ) is specified by performing the above calculation, and the value is stored in the memory device 13 and output (step S224).
- the electronic computer can obtain D dmax ( ⁇ ) and the polynomial h ( ⁇ q , ⁇ ) using the auxiliary program.
- the number of operations of elliptic doubling is approximately degD dmax ( ⁇ ) / degr ( ⁇ ).
- the computer program is executed to make the electronic computer function as a scalar multiplier. At that time, as shown in FIG.
- the electronic computer functions as input means.
- the electronic computer functions as initialization means, and the CPU 11 secures Z for storing the calculation result in the memory device 13 and initializes it (Z ⁇ O) (step S302). Then, the electronic computer functions as a first calculation means, and the CPU 11 reads the value of Q stored in the memory device 13, calculates 2 j Q in advance, and stores it in the memory device 13 (step S303). .
- the calculation in step S303 is the same as the calculation in step S103, and the processing performed by the CPU 11 is also the same, so the description thereof is omitted.
- step S304 the electronic computer functions as the first expansion means, and the scalar n is And s' advance (step S304).
- the s'-adic expansion in step S304 has the same algorithm as the s-adic expansion in step S204, and the processing performed by the CPU 11 is also the same, and thus the description thereof is omitted.
- step S305 the electronic computer functions as a second expansion means, and uses scalar n as h ′ ( ⁇ q ) and c [i], And phi q proceeds to deploy (step S305).
- step S305 it may coefficient phi q-adic expansion becomes larger than s'. Coefficients by taking a remainder of, phi q-adic expansion: Thus, '(NO step S306) The, s the coefficient of phi q-adic expansion is larger than the' coefficients of phi q-adic expansion is s Is adjusted to be smaller than s ′ (step S307).
- the electronic computer functions as a comparison unit in step S306 and functions as an adjustment unit in step S307.
- the electronic calculator functions as a synthesis unit, and uses Q [i] calculated in step S308 to calculate the scalar multiplication nQ, (Step S309). Since the calculation in step S309 is the same as the algorithm in step S209, and the processing performed by the CPU 11 is also the same, description thereof is omitted.
- the electronic computer functions as output means, outputs Z as the execution result of the scalar multiplication operation program (step S310), and ends the scalar multiplication operation program.
- scalar n is divided log s n, it is possible to reduce the number of operations of elliptic doubling by using phi q approximately dmax / degr (a).
- the polynomials h ( ⁇ q , ⁇ ) and v ⁇ dmax -h (0, ⁇ ) are prime orders r ( ⁇ ) that divide the orders q ( ⁇ ) and #E (F q ) of the finite field F q of the elliptic curve.
- the trace t ( ⁇ ) of the Frobenius self-homogeneous map ⁇ q is given in advance, it can be specified in advance, so that together with q ( ⁇ ), r ( ⁇ ) and t ( ⁇ ), the polynomial h ( ⁇ q , ⁇ ) and v ⁇ dmax -h (0, ⁇ ) may be incorporated into the arithmetic operation program for scalar multiplication, or the polynomial h ( ⁇ q , ⁇ by the following auxiliary program using r ( ⁇ ) and t ( ⁇ ) ) And v ⁇ dmax ⁇ h (0, ⁇ ) may be obtained.
- m ( ⁇ ) is a polynomial of the minimum order that satisfies r ( ⁇ )
- the magnitude of i is automatically determined from r ( ⁇ ) and s ( ⁇ ).
- i 0 to i ⁇ “degr ( ⁇ ) / degs ( ⁇ )
- the electronic computer functions as a first specifying means, extracts a coefficient of ⁇ dmax that is a term of the maximum degree dmax of deg (D i ( ⁇ )), and calculates the sum of the extracted coefficients as T ( ⁇ q , ⁇ ), and the other sum is U ( ⁇ q , ⁇ ) (step S323).
- the CPU 11 specifically executes the following algorithm.
- the CPU 11 specifies the highest order coefficient T dmax ( ⁇ q ) of T ( ⁇ q , ⁇ ) specified in step S323 and stores it in the memory device 13 (step S324).
- the electronic computer functions as third specifying means, and uses the highest order coefficient T dmax ( ⁇ q ) specified in step S324, V ( ⁇ q )
- m ( ⁇ q ), gcd (T dmax ( ⁇ q ), V ( ⁇ q )) 1 V ( ⁇ q ) that satisfies the condition is specified (step S325).
- the CPU 11 specifically executes the following algorithm.
- the electronic computer functions as a fourth specifying unit. That is, the CPU 11 reads V ( ⁇ q ) specified in step S325 from the memory device 13, and g ( ⁇ q ) V ( ⁇ q ) ⁇ v (mod m ( ⁇ q ))
- the scalars v and g ( ⁇ q ) satisfying the above are specified by the extended Euclidean mutual division method and stored in the memory device 13 (step S326).
- This extended Euclidean algorithm is executed based on a known program prepared in a general library. In particular, the coefficient of g ( ⁇ q ) and the scalar v should be made small. Is desirable.
- the CPU 11 reads g ( ⁇ q ) specified in step S326 from the memory device 13, and To determine the polynomial h ( ⁇ q , ⁇ ) (step S327), and the values of the polynomial h ( ⁇ q , ⁇ ) and v ⁇ dmax -h (0, ⁇ ) are stored in the memory device 13 and output. (Step S328).
- the electronic computer can obtain the polynomials h ( ⁇ q , ⁇ ) and v ⁇ dmax -h (0, ⁇ ) using the auxiliary program.
- the electronic computer functions as a calculation unit in step S327 and functions as an output unit in step S328.
- the number of times of ellipse doubling is approximately dmax / degr ( ⁇ ).
- multiplier A n should by t-1 binary expansion.
- step S401 When an arithmetic program for power multiplication is executed to cause the electronic computer to function as power multiplication, first, as shown in FIG. 7, the difference s between the power n and the prime order r of the order q and F q k Then, the element A ⁇ H ⁇ F q k is input (step S401). In this case, the electronic computer functions as input means.
- the electronic computer functions as initialization means. That is, the CPU 11 secures Z for storing the calculation result in the memory device 13, and initializes Z (Z ⁇ 1) (step S402).
- the electronic computer functions as a first calculation means.
- the CPU 11 inputs the value of the element A and stores it in the memory device 13, assuming that X ⁇ ⁇ Y ⁇ represents XY and calculates A ⁇ ⁇ 2 j ⁇ in advance for the input element A. (Step S403).
- the electronic computer functions as a developing means, and the power number n is calculated by the difference s. And s-advance expansion (step S404).
- the size of i is determined by the size of n.
- the CPU 11 reads the values of the coefficients c [i] and T [j] from the memory device 13 and performs an assignment operation represented by Q [i] ⁇ Q [i] * T [j] in the case of c [i] & 1.
- Step S406 the electronic computer functions as a synthesis unit, and uses A [i] calculated in step S405 to calculate the power multiplication An .
- the electronic computer functions as output means, outputs the value of Z from the input / output control unit 15 as the execution result of the power multiplication operation program (step S407), and ends the power multiplication operation program.
- the number n is divided log s n should, it is possible to reduce the number of operations of squaring approximately 1 / (log s n) by using phi q.
- the electronic computer functions as initialization means. That is, the CPU 11 secures Z for storing the calculation result in the memory device 13 and initializes Z (Z ⁇ 1) (step S502). Then, as a first calculation function, A ⁇ ⁇ 2 j ⁇ is calculated in advance for the inputted A (step S503). Since the calculation in step S503 is the same as the calculation in step S403, the description thereof is omitted.
- step S504 the electronic computer functions as the first expansion means, and calculates the power number n, And s-advance expansion (step S504). Since the algorithm for the s-adic expansion in step S504 is the same as that for the s-adic expansion in step S404, description thereof is omitted.
- the electronic computer functions as a second expansion means, and uses the power n as h ′ (q) and c [i], And q-advance expansion (step S505).
- step S505 the CPU 11 executes the following algorithm as an operation of q-adic expansion.
- the CPU 11 initializes T (q) stored in the memory device 13 to 1.
- the CPU 11 reads the value of c [i] from the memory device 13, performs a substitution operation of d [i] ⁇ c [i], and stores the value of d [i] in the memory device 13.
- the CPU 11 reads the values of d [i] and s from the memory device 13, and when d [i] ⁇ s is satisfied, e [j] ⁇ d [i]% s and d [i] ⁇ (d [i] -e [j])
- the value of q) is stored in the memory device 13.
- the q-adic expansion coefficient may be larger than s.
- the CPU 11 compares the coefficient d [i] for q-adic expansion and s, and determines that the coefficient d [i] for q-adic expansion is larger than s (step S506: NO), the q-adic expansion By taking the remainder of s with respect to the coefficient d [i], the coefficient d [i] for q-adic expansion is adjusted to be smaller than s (step S507).
- the electronic computer functions as a comparison unit in step S506 and functions as an adjustment unit in step S507.
- the CPU 11 reads the value of the i-th coefficient of T (q) from the memory device 13 and stores the value in d [i].
- the CPU 11 compares the values of d [i] and s, and if d [i] ⁇ s is satisfied, stores 0 in the i-th coefficient of T (q), and e [j] ⁇ d [i] % S and d [i] ⁇ (d [i] -e [j])
- the CPU 11 does not perform the above series of calculations when d [i] ⁇ s is not satisfied.
- the CPU 11 reads the values of d [i] and T [j] from the memory device 13, initializes A [i] as A [i] ⁇ O, and then satisfies d [i] & 1. If the assignment operation represented by A [i] ⁇ A [i] * T [j] does not satisfy d [i] & 1, execute the assignment operation d [i] ⁇ d [i] / 2 , A [i] and d [i] are stored in the memory device 13.
- Step S509 the electronic computer functions as a synthesis unit, and uses A [i] calculated in step S508 to calculate the power multiplication An .
- the CPU 11 outputs the value of Z from the input / output control unit 15.
- the electronic computer functions as output means, outputs Z as the execution result of the power multiplication operation program (step S510), and ends the power multiplication operation program.
- the number n should since the split log s n, it is possible to reduce to approximately DegD dmax the number of operations of squaring by using ⁇ q (a) / degr ( a).
- D dmax ( ⁇ ) and the polynomial h (q, ⁇ ) can be specified in advance because q ( ⁇ ), r ( ⁇ ) and s ( ⁇ ) are given in advance, and q ( ⁇ ), r ( ⁇ ) And s ( ⁇ ), D dmax ( ⁇ ) and the polynomial h (q, ⁇ ) may be incorporated into an arithmetic program for power multiplication, or by using the following auxiliary program using r ( ⁇ ) and s ( ⁇ ) , D dmax ( ⁇ ) and the polynomial h (q, ⁇ ) may be obtained.
- the computer When the computer starts the auxiliary program, it first functions as input means as shown in FIG. That is, the CPU 11 inputs the values of r ( ⁇ ) and s ( ⁇ ) and stores them in the memory device 13 (step S521).
- step S522 the electronic computer functions as expansion means, and using the input s ( ⁇ ), r ( ⁇ ) is And s ( ⁇ ) advance development (step S522).
- the magnitude of i is automatically determined from r ( ⁇ ) and s ( ⁇ ).
- the electronic computer functions as an extraction unit, extracts the one having the maximum deg (D i ( ⁇ )), and outputs it as D dmax ( ⁇ ) (step S523). That, CPU 11 reads out the values of D i (chi) compared from the memory device 13, and stores that value in memory device 13 maximum D i a (chi) as D dmax ( ⁇ ).
- the electronic computer functions as a calculation means. That is, the CPU 11
- the polynomial h (q, ⁇ ) is specified by performing the above calculation, and the value is stored in the memory device 13 and output (step S524).
- the electronic computer can determine D dmax ( ⁇ ) and the polynomial h (q, ⁇ ) using the auxiliary program.
- the number of operations of two multiplications is reduced to approximately degD dmax ( ⁇ ) / degr ( ⁇ ) by the multiplication shown in FIG. can do.
- the order q, the prime order r, and the difference s are specified in advance as q ( ⁇ ), r ( ⁇ ), and s ( ⁇ ), respectively, using an integer variable ⁇ , and r ( ⁇ ) is expressed as s
- the coefficient of ⁇ dmax that is a term of the highest order dmax is defined as T dmax (q)
- m (q), gcd (T dmax (q), V (q)) 1 V (q) that satisfies g (q) V (q)
- An arithmetic operation is performed by using va dmax -h (0, a) instead of var- expanding and using h (q, a) -h (0, a) instead of va dmax- h (0, a). The number of times has been reduced.
- the electronic computer functions as input means.
- the electronic computer functions as initialization means, and the CPU 11 secures Z for storing the calculation result in the memory device 13 and initializes it (Z ⁇ 1) (step S602).
- the electronic computer functions as a first computing means, and the CPU 11 reads the value of the original A stored in the memory device 13, calculates A ⁇ ⁇ 2 j ⁇ in advance, and stores it in the memory device 13. (Step S603).
- the calculation in step S603 is the same as the calculation in step S403, and the processing performed by the CPU 11 is also the same.
- step S604 the electronic computer functions as the first expansion means, and the scalar n is And s' advance (step S604).
- the s'-adic expansion at step S604 has the same algorithm as the s-adic expansion at step S404, and the processing performed by the CPU 11 is also the same, so the description thereof is omitted.
- step S605 the electronic computer functions as a second expansion means, and uses the power n as h ′ (q) and c [i], And q-advance expansion (step S605).
- step S605 Even in the q-adic expansion in step S605, the q-adic expansion coefficient may be larger than s ′.
- step S606: NO when the coefficient of q-adic expansion is larger than s ′ (step S606: NO), the coefficient of q-adic expansion is s ′ by taking a remainder of s ′ with respect to the coefficient of q-adic expansion. It adjusts so that it may become smaller than (step S607).
- the electronic computer functions as a comparison unit in step S606 and functions as an adjustment unit in step S607.
- step S608 the binary method is used, the calculation in step S608 is the same as the calculation in step S508, and the processing performed by the CPU 11 is also the same.
- step S609 uses A [i] calculated in step S608 to calculate the power multiplication An .
- Step S609 uses A [i] calculated in step S608 to calculate the power multiplication An .
- the calculation in step S609 is the same as the calculation in step S509, and the processing performed by the CPU 11 is also the same.
- the electronic computer functions as output means, outputs Z as the execution result of the power multiplication operation program (step S610), and ends the power multiplication operation program.
- the number n is divided log s n should, it is possible to reduce the number of operations of squaring approximately dmax / degr (a) by using a phi q.
- the polynomials h (q, ⁇ ) and v ⁇ dmax -h (0, ⁇ ) are specified in advance because the order q ( ⁇ ), the prime order r ( ⁇ ), and the difference s ( ⁇ ) are given in advance. Therefore, the polynomials h (q, ⁇ ) and v ⁇ dmax ⁇ h (0, ⁇ ) together with q ( ⁇ ), r ( ⁇ ) and s ( ⁇ ) may be incorporated into the arithmetic program for power multiplication, or r (
- the polynomials h (q, ⁇ ) and v ⁇ dmax -h (0, ⁇ ) may be obtained by the following auxiliary program using ⁇ ) and s ( ⁇ ).
- m ( ⁇ ) is a polynomial of the minimum order that satisfies r ( ⁇ )
- step S622 the electronic computer functions as expansion means, and using the input s ( ⁇ ), r ( ⁇ ) is And s ( ⁇ ) advance development (step S622).
- the magnitude of i is automatically determined from r ( ⁇ ) and s ( ⁇ ).
- the electronic computer executes the following algorithm as the calculation of s ( ⁇ ) -adic expansion.
- the electronic computer functions as a first specifying means, extracts a coefficient of ⁇ dmax that is a term of the maximum degree dmax of deg (D i ( ⁇ )), and calculates the sum of the extracted coefficients as T ( q, ⁇ ), and the other sum is U (q, ⁇ ) (step S623).
- the electronic computer specifically executes the following algorithm.
- the CPU 11 specifies the maximum degree coefficient T dmax (q) of T (q, ⁇ ) specified in step S623 and stores it in the memory device 13 (step S624).
- step S625 the electronic computer functions as a third specifying unit, and uses the highest order coefficient T dmax (q) specified in step S624, V (q)
- m (q), gcd (T dmax (q), V (q)) 1 V (q) that satisfies the condition is specified (step S625).
- the electronic computer specifically executes the following algorithm.
- the electronic computer functions as a fourth specifying unit. That is, the CPU 11 reads V (q) specified in step S625 from the memory device 13, and g (q) V (q) ⁇ v (mod m (q))
- the scalars v and g (q) satisfying the above are specified by the extended Euclidean mutual division method and stored in the memory device 13 (step S626).
- This extended Euclidean algorithm is executed based on a known program prepared in a general library, and in particular, the coefficient of g (q) and the scalar v should be made small. desirable.
- the electronic computer reads g (q) identified in step S626 from the memory device 13, and
- the polynomial h (q, ⁇ ) is specified by performing the above operation (step S627), and the values of the polynomial h (q, ⁇ ) and v ⁇ dmax -h (0, ⁇ ) are stored in the memory device 13 and output. (Step S628).
- the polynomial h (q, ⁇ ) and v ⁇ dmax ⁇ h (0, ⁇ ) can be obtained using the auxiliary program.
- the electronic computer functions as a calculation unit in step S627 and functions as an output unit in step S628.
- step 601 of FIG. 10 By using this v ⁇ dmax -h (0, ⁇ ) and polynomial h (q, ⁇ ) in step 601 of FIG. 10, the number of operations of two multiplications is reduced to about dmax / degr ( ⁇ ) by multiplication to be shown in FIG. can do.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Description
楕円曲線をE/Fq=x3+ax+b-y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fq k)を有限体Fqの拡大体Fq kで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1-tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[jを有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq-[q])
を満たすE(Fq k)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、CPU及び記憶手段を備えた電子計算機により演算するスカラー倍算の演算方法において、
CPUが、前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fq k)により表される有理点Qの値を入力して前記記憶手段に記憶する入力ステップと、
CPUが、演算結果Zを記憶する前記記憶手段を初期化する初期化ステップと、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t-1]Q
が成り立つことにより、
CPUが、s=t-1として、前記nをs進展開した次式に基づいて、
CPUが、前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算ステップと、
CPUが、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
を有するものである。
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
CPUが、前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
CPUが、前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
CPUが、前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出ステップと、
CPUが、前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φq kQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定ステップと、
CPUが、前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いるステップと、を有するものである。
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力ステップは、CPUが、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶するステップを更に含み、
CPUが、deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φq i、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φq iにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定ステップと、
CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定ステップと、
CPUが、前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定ステップと、
前記補助特定ステップに換えて、CPUが、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φq kQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定ステップと、
CPUが、前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いるステップと、を有するものである。
Fq kを位数qの有限体Fqのk次拡大体、
HをFq kの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、CPU及び記憶手段を備えた電子計算機により演算する演算方法において、
CPUが、前記非負整数nの値、前記位数qの値、前記Fq kの素数位数rの値、A∈H⊂Fq kにより表される元Aの値を入力して前記記憶手段に記憶する入力ステップと、
CPUが、演算結果Zを記憶する前記記憶手段を初期化する初期化ステップと、
CPUが、前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q-rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算ステップと、
CPUが、前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
CPUが、前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算ステップと、
CPUが、前記記憶手段から各A[i]を読み出し、次式に基づいて、
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
CPUが、前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
CPUが、前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
CPUが、前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出ステップと、
CPUが、前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax-Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φq k(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax-Di(χ)qi-qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定ステップと、
CPUが、前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いるステップと、を有するものである。
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶ステップは、CPUが、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶するステップを更に含み、
CPUが、deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定ステップと、
CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定ステップと、
CPUが、前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定ステップと、
前記補助特定ステップに換えて、CPUが、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi-Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φq k(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定ステップと、
CPUが、前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax-h(0,χ)}=A^{h(q,χ)-h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(q,a)-h(0,a)を用いるステップと、を有するものである。
楕円曲線をE/Fq=x3+ax+b-y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fq k)を有限体Fqの拡大体Fq kで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1-tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq-[q])
を満たすE(Fq k)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、CPU及び記憶手段を備えた電子計算機に実行させるためのスカラー倍算の演算プログラムにおいて、
電子計算機に、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fq k)により表される有理点Qの値を入力して前記記憶手段に記憶する入力手順と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手順と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t-1]Q
が成り立つことにより、
s=t-1として、前記nをs進展開した次式に基づいて、
前記記憶手段から前記有理点Q、非負整数n、及び前記c[i]の値を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手順と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、電子計算機に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手順と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φq kQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手順と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手順と、を実行させるものである。
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手順は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手順を更に含み、
電子計算機に、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φq i、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φq iにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手順と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手順と、
CPUが、前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手順と、
前記補助特定手順に換えて、CPUが、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φq kQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手順と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いる手順と、を実効させるためのスカラー倍算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
Fq kを位数qの有限体Fqのk次拡大体、
HをFq kの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、CPU及び記憶手段を備えた電子計算機により実行させるための演算プログラムにおいて、電子計算機に、
前記非負整数nの値、前記位数qの値、前記Fq kの素数位数rの値、A∈H⊂Fq kにより表される元Aの値を入力して前記記憶手段に記憶する入力手順と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手順と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q-rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返し行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手順と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手順と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、電子計算機に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手順と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax-Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φq k(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax-Di(χ)qi-qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手順と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
前記補助記憶手順は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手順を更に含み、
電子計算機に、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手順と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手順と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手順と、
前記補助特定手順に換えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi-Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φq k(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手順と、
CPUが、前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax-h(0,χ)}=A^{h(q,χ)-h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(q,a)-h(0,a)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
φq(Q)=[q]Q=[t-1]Q
が成り立つことにより、また、べき乗算の場合には、qとrの差分をs=q-rとし、Hの非零元Aに対し、
φq(A)=Aq=As
が成り立つことにより、スカラーnをt-1進展開、またはべき数nをs進展開して、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用い、またはsに換えて元に対するフロベニウス自己準同型写像φqを用いることにより、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回ることのない場合でも、演算回数を削減可能として演算速度を向上させることができる。
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定するとともに、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーvを用い、スカラー倍算の場合には、t-1進展開したスカラーnをDdmax(χ)進展開する換わりにvχdmax-h(0,χ)進展開して、vχdmax-h(0,χ)の換わりにh(q,χ)-h(0,χ)を用いることにより演算回数をさらに削減し、また、べき乗算の場合には、s進展開したべき数nをDdmax(χ)進展開する換わりにvχdmax-h(0,χ)進展開して、vχdmax-h(0,χ)の換わりにh(q,χ)-h(0,χ)を用いることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
11 CPU
12 記憶装置
13 メモリ装置
14 バス
15 入出力制御部
20 電気通信回線
30 クライアント装置
E(Fq):有限体Fqで定義される楕円曲線の有理点が成す加法群
E(Fq k):有限体Fqの拡大体Fq kで定義される楕円曲線の有理点が成す加法群
φq:有限体Fqに関する有理点のフロベニウス自己準同型写像
t:フロベニウス自己準同型写像φqのトレース
r:E(Fq)の位数#E(Fq)=q+1-tを割り切る素数位数
E[r]:位数が素数rである有理点の集合
[j]:有理点をj倍する写像
G:G=E[r]∩Ker(φq-[q])を満たすE(Fq k)に含まれる有理点の集合
と定義する。
n=C1(t-1)+C0
または、
n=(t-1)2+C1(t-1)+C0
となる。
nQ=[C1(t-1)+C0]Q
=[C1q]Q+[C0]Q
=φq([C1]Q)+[C0]Q
nQ=[(t-1)2+C1(t-1)+C0]Q
=[q][q]Q+[C1q]Q+[C0]Q
=φq(φq(Q))+φq([C1]Q)+[C0]Q
[r(χ)]Q=Σ[Di(χ)(t(χ)-1)i]Q=Σφq i([Di(χ)]Q)
とt(χ)-1進展開して、Di(χ)のうちでもっとも次数の高いものをDdmax(χ)とする。
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式h(φq,χ)を導入する。すなわち、この多項式h(φq,χ)は、Di(χ)のうちの最高次数のDdmax(χ)を、φqとχを変数とする多項式h(φq,χ)に置き換え可能であることを示しており、最高次数よりも小さい次数までの演算に抑えることができ、特に、χ=aとした場合には、t-1進展開したスカラーnをさらにDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることによって演算回数を大きく削減でき、スカラー倍算を高速化することができる。
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する。ここで、多項式m(χ)には円周等分多項式などを用いることができる。
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を特定し、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
としてφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
としてφqとχを変数とする2変数の多項式h(φq,χ)を導入する。
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いて、χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)とし、t-1進展開したスカラーnをDdmax(a)進展開する換わりに{vadmax-h(0,a)}進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いることにより演算回数を減できるので、スカラー倍算を高速化することができる。ここで、h'(φq)は、φqとχの2変数の多項式h(φq,χ)において、χ=aとしたことによりφqの1変数となっていることを示している。
Fq k:位数qの有限体Fqのk次拡大体
H:Fq kの素数位数rの部分乗法群
φq:有限体Fqに関する元のフロベニウス自己準同型写像
と定義して、非負整数nに対するHの元Aのn乗算を行うものであり、qとrの差分をs=q-rとし、このsをスカラー倍算におけるt-1に置き換えて上述の説明をべき乗算として読み換えるだけであり、詳細な説明は省略する。べき乗算の場合でも、最高次数部分の演算がより低い次数の演算に置き換えられることにより、演算回数を減してべき乗算を高速化することができる。
r(χ)=χ4-8χ2+25
t(χ)=(2χ3-11χ+15)/15
と与えられるものが知られている。
2r(χ)=(15χ)φq+(-5χ2+50)
0≡(15χ)φq+(-5χ2+50) (mod r(χ))
となる。
D0(χ)=-5χ2+50
D1(χ)=15χ
となる。
-5χ2+50=15χφq
となり、式を整理することにより、
χ2-10=3χφq
が得られる。
r(χ)=χ8-χ4+1
t(χ)=χ5-χ+1
と与えられた場合には、r(χ)をt(χ)-1進展開し、フロベニウス準同型写像φqを用いることにより、
r(χ)=χ3φq+1
0≡3φq+1 (mod r(χ))
となる。
D0(χ)=-1
D1(χ)=χ3
となる。
χ3φq=-1
となり、両辺にφ-1を掛けることで
χ3=-φq -1
が得られる。
r(χ)=25χ4+25χ3+15χ2+5χ+1
t(χ)=10χ2+5χ+3
と与えられるものが知られている。
8r(χ)=2φq 2-φq+(5χ+2)
0≡2φq 2-φq+(5χ+2) (mod r(χ))
となる。
D0(χ)=5χ+2
D1(χ)=-1
D2(χ)=2
となる。
5χ+2=-2φq 2+φq
が得られる。
r(χ)=36χ4-36χ3+18χ2-6χ+1
t(χ)=6χ2+1
と与えられるものが知られている。
r(χ)=φq 2+(-6χ+3)φq+(-6χ+1)
0≡φq 2+(-6χ+3)φq+(-6χ+1) (mod r(χ))
となる。
D0(χ)=-6χ+1
D1(χ)=-6χ+3
D2(χ)=1
となる。
6χ(φq+1)=φq 2+3φq+1
となる。
(φq+1)-1≡φq 2(1-φq) (mod g(φq))
が得られる。
6χ=φq 2(1-φq)(φq 2+3φq+1)
が得られる。
r=16656811746301(44ビット)
t=4083751(22ビット)
である。
6χ=4950(13ビット)=φq 2(1-φq)(φq 2+3φq+1)
となるので、Gの有理点のスカラーn倍算またはHの元Aのn乗算を行う場合には、有理点に対するフロベニウス自己準同型写像φqを用いて13ビット程度のスカラー倍算またはべき乗算に変換してから演算を行うこととなり、演算回数の大幅な削減が可能となっている。
r(χ)=χ6+37χ3+343
t(χ)=(χ4+16χ+7)/7
と与えられるものが知られている。
r(χ)=(7χ2)φq+(21χ3+343)
0≡(7χ2)φq+(21χ3+343) (mod r(χ))
となる。
D0(χ)=21χ3-343
D1(χ)=7χ2
となる。
21χ3-343=7χ2φq
となり、式を整理することによって、
χ3-49=χ2φq
が得られる。
(1)for(j=0;j<「log2s」;j++)
(2) T[j]←Q
(3) Q←Q+Q
(4)End for
ここで、(1)の「log2s」は、厳密には、
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。即ち、CPU11は、メモリ装置13からc[i]、s、nの値を読み出して、c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0からi<「logsn」まで繰り返して実行して、各係数c[i]、及びスカラーnの値をメモリ装置13に記憶する。
(1)for(i=0;i<「logsn」;i++)
(2) Q[i]←O
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z+φq i(Q[i])
(3)End for
即ち、CPU11は、メモリ装置13からQ[i]、Zの値を読み出して、Z←Z+φq i(Q[i])により表される代入演算をi=0からi<「logsn」まで繰り返して実行し、メモリ装置13にZの値を記憶する。
[r(χ)]Q=Σ[Di(χ)(t(χ)-1)i]Q=Σφq i([Di(χ)]Q)
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φq kQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
(1)T(φq)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(φq)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φq k-1)
(12) End for
(13) T(φq)←{T(φq)+U(φq)*h'(φq)i}%(φq k-1)
(14) End if
(15) else
(16) T(φq)←{T(φq)+d[i]*h'(φq)i}%(φq k-1)
(17) End else
(18)End for
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(φq)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(φq)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(φq)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φq k-1)
(13) End for
(14) T(φq)←{T(φq)+U(φq)*φq i}%(φq k-1)
(15) End if
(16) End for
(17)End until
(1)for(i=0;i<k;i++)
(2) Q[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
(1)for(i=0;i<k;i++)
(2) Z←Z+φq i(Q[i])
(3)End for
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
[r(χ)]Q=Σ[Di(χ)(t(χ)-1)i]Q=Σφq i([Di(χ)]Q)
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定し、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、g(φq)を用い、φq kQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いることにより、スカラー倍算nQをより高速化することができる。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(φq,χ)←0,U(φq,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(φq,χ)←T(φq,χ)+Di(χ)φq i
(5) End if
(6) else
(7) U(φq,χ)←U(φq,χ)+Di(χ)φq i
(8) End else
(9)End for
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する(ステップS325)。ステップS325では、CPU11は、具体的に以下のアルゴリズムを実行している。
(1)W(φq)←gcd(Tdmax(φq),m(φq))
(2)V(φq)←W(φq)
即ち、CPU11は、メモリ装置13からTdmax(φq)及びm(φq)の値を読出し、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される演算を実行して、メモリ装置13に、W(φq)及びV(φq)の値を記憶する。
g(φq)V(φq)≡v(mod m(φq))
を満たすスカラーv及びg(φq)を、拡張ユークリッドの互除法によって特定し、メモリ装置13に記憶する(ステップS326)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(φq)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
(1)for(;j++)
(2) T[j]←A
(3) A←A*A
(4)End for
即ち、CPU11は、メモリ装置13から元A、sの値を読み出して、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して実行し、メモリ装置13にT[j]及びAの値を記憶する。
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。即ち、CPU11は、メモリ装置13からn、sの値を読み出して、c[i]←n%s及びn←(n-c[i])/sにより表される演算を、i=0からi<「logsn」まで繰り返して実行し、メモリ装置13に各係数c[i]及びnの値を記憶する。
(1)for(i=0;i<「logsn」;i++)
(2) A[i]←1
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z*φq i(A[i])
(3)End for
即ち、CPU11は、メモリ装置13からA[i]、Zの値を読み出して、Z←Z*φq i(A[i])により表される代入演算をi=0からi<「logsn」まで繰り返して実行し、メモリ装置13にZの値を記憶する。
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax-Di(χ)qi}=A^{f(q,χ)}
となる多項式f(φq,χ)を用い、φq k(A)=Aに基づいて、
A^{Ddmax(χ)}=A^{Σi≠dmax-Di(χ)qi-qdmax}=A^{h(q,χ)}
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
(1)T(q)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(q)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(12) End for
(13) T(q)←{T(q)+U(q)*h'(q)i}%(qk-1)
(14) End if
(15) else
(16) T(q)←{T(q)+d[i]*h'(q)i}%(qk-1)
(17) End else
(18)End for
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(q)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(q)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(q)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(13) End for
(14) T(q)←{T(q)+U(q)*qi}%(qk-1)
(15) End if
(16) End for
(17)End until
(1)for(i=0;i<k;i++)
(2) A[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
(1)for(i=0;i<k;i++)
(2) Z←Z*φq i(A[i])
(3)End for
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定し、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi-Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、g(q)を用い、φq k(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax-h(0,χ)}=A^{h(q,χ)-h(0,χ)}
を満たすことを用いることにより、べき乗算Anをより高速化することができる。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
即ち、CPU11は、メモリ装置13からr(χ)及びχの値を読出し、Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し実行し、メモリ装置13にDi(χ)及びr(χ)の値を記憶する。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(q,χ)←0,U(q,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(q,χ)←T(q,χ)+Di(χ)qi
(5) End if
(6) else
(7) U(q,χ)←U(q,χ)+Di(χ)qi
(8) End else
(9)End for
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定する(ステップS625)。ステップS625では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)W(q)←gcd(Tdmax(q),m(q))
(2)V(q)←W(q)
即ち、CPU11は、メモリ装置13からTdmax(q)及びm(q)の値を読出し、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って、メモリ装置13に、W(q)及びV(q)の値を記憶する。
g(q)V(q)≡v(mod m(q))
を満たすスカラーv及びg(q)を、拡張ユークリッドの互除法によって特定し、メモリ装置13に記憶する(ステップS626)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(q)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
Claims (12)
- 楕円曲線をE/Fq=x3+ax+b-y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fq k)を有限体Fqの拡大体Fq kで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1-tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq-[q])
を満たすE(Fq k)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、CPU及び記憶手段を備えた電子計算機により演算するスカラー倍算の演算方法において、
CPUが、前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fq k)により表される有理点Qの値を入力して前記記憶手段に記憶する入力ステップと、
CPUが、演算結果Zを記憶する前記記憶手段を初期化する初期化ステップと、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t-1]Q
が成り立つことにより、
CPUが、s=t-1として、前記nをs進展開した次式に基づいて、
CPUが、前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算ステップと、
CPUが、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
を有することを特徴とするスカラー倍算の演算方法。 - 前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
CPUが、前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
CPUが、前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
CPUが、前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出ステップと、
CPUが、前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φq kQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定ステップと、
CPUが、前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いるステップと、を有することを特徴とする請求項1に記載のスカラー倍算の演算方法。 - 前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力ステップは、CPUが、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶するステップを更に含み、
CPUが、deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φq i、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φq iにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定ステップと、
CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定ステップと、
CPUが、前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定ステップと、
前記補助特定ステップに換えて、CPUが、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φq kQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定ステップと、
CPUが、前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いるステップと、を有することを特徴とする請求項2に記載のスカラー倍算の演算方法。 - Fq kを位数qの有限体Fqのk次拡大体、
HをFq kの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、CPU及び記憶手段を備えた電子計算機により演算する演算方法において、
CPUが、前記非負整数nの値、前記位数qの値、前記Fq kの素数位数rの値、A∈H⊂Fq kにより表される元Aの値を入力して前記記憶手段に記憶する入力ステップと、
CPUが、演算結果Zを記憶する前記記憶手段を初期化する初期化ステップと、
CPUが、前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q-rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返し行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算ステップと、
CPUが、前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
CPUが、前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算ステップと、
CPUが、前記記憶手段から各A[i]を読み出し、次式に基づいて、
- X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
CPUが、前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
CPUが、前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
CPUが、前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出ステップと、
CPUが、前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax-Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φq k(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax-Di(χ)qi-qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定ステップと、
CPUが、前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いるステップと、を有することを特徴とする請求項4に記載のべき乗算の演算方法。 - 前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶ステップは、CPUが、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶するステップを更に含み、
CPUが、deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定ステップと、
CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定ステップと、
CPUが、前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定ステップと、
前記補助特定ステップに換えて、CPUが、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi-Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φq k(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定ステップと、
CPUが、前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax-h(0,χ)}=A^{h(q,χ)-h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(q,a)-h(0,a)を用いるステップと、を有することを特徴とする請求項5に記載のべき乗算の演算方法。 - 楕円曲線をE/Fq=x3+ax+b-y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fq k)を有限体Fqの拡大体Fq kで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1-tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq-[q])
を満たすE(Fq k)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、CPU及び記憶手段を備えた電子計算機に実行させるためのスカラー倍算の演算プログラムにおいて、
電子計算機に、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fq k)により表される有理点Qの値を入力して前記記憶手段に記憶する入力手順と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手順と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t-1]Q
が成り立つことにより、
s=t-1として、前記nをs進展開した次式に基づいて、
前記記憶手段から前記有理点Q、非負整数n、及び前記c[i]の値を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手順と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
を実行させるためのスカラー倍算の演算プログラムを記録した電子計算機読取可能な記録媒体。 - 前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、電子計算機に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手順と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φq dmax([Ddmax(χ)]Q)=Σφq i([Di(χ)]Q)-φq dmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φq kQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq -dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手順と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手順と、を実行させるためのスカラー倍算の演算プログラムを記録した請求項7に記載の電子計算機読取可能な記録媒体。 - 前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手順は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手順を更に含み、
電子計算機に、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φq i、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φq iにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手順と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手順と、
CPUが、前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手順と、
前記補助特定手順に換えて、CPUが、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφq i([Di(χ)]Q)-[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φq kQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手順と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax-h(0,χ)]Q=[h(φq,χ)-h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いる手順と、を実効させるためのスカラー倍算の演算プログラムを記録した請求項8に記載の電子計算機読取可能な記録媒体。 - Fq kを位数qの有限体Fqのk次拡大体、
HをFq kの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、CPU及び記憶手段を備えた電子計算機により実行させるための演算プログラムにおいて、電子計算機に、
前記非負整数nの値、前記位数qの値、前記Fq kの素数位数rの値、A∈H⊂Fq kにより表される元Aの値を入力して前記記憶手段に記憶する入力手順と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手順と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q-rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手順と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手順と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
- X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、電子計算機に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手順と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax-Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φq k(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax-Di(χ)qi-qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手順と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した請求項10に記載の電子計算機読取可能な記録媒体。 - 前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶手順は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手順を更に含み、
電子計算機に、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手順と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手順と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手順と、
前記補助特定手順に換えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi-Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φq k(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手順と、
CPUが、前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax-h(0,χ)}=A^{h(q,χ)-h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(q,a)-h(0,a)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した請求項11に記載の電子計算機読取可能な記録媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/867,439 US20110179098A1 (en) | 2008-02-25 | 2009-02-25 | Method for scalar multiplication, method for exponentiation, recording medium recording scalar multiplication program, recording medium recording exponentiation program |
EP09715400A EP2249326A1 (en) | 2008-02-25 | 2009-02-25 | Scalar multiplication method, raising method, recording medium where scalar multiplication program is recorded, and recording medium where raising method program is recorded |
CN2009801063734A CN101965602A (zh) | 2008-02-25 | 2009-02-25 | 标量乘法的运算方法、幂运算的运算方法、记录有标量乘法的运算程序的记录介质及记录有幂运算的运算程序的记录介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008043462A JP4521503B2 (ja) | 2008-02-25 | 2008-02-25 | スカラー倍算の演算プログラム及びべき乗算の演算プログラム |
JP2008-043462 | 2008-02-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009107650A2 true WO2009107650A2 (ja) | 2009-09-03 |
Family
ID=41016554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/053395 WO2009107650A2 (ja) | 2008-02-25 | 2009-02-25 | スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20110179098A1 (ja) |
EP (1) | EP2249326A1 (ja) |
JP (1) | JP4521503B2 (ja) |
CN (1) | CN101965602A (ja) |
WO (1) | WO2009107650A2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102354279B (zh) * | 2011-09-19 | 2014-03-26 | 飞天诚信科技股份有限公司 | 在嵌入式系统中处理数据的方法及协处理器 |
US8826358B2 (en) * | 2012-06-27 | 2014-09-02 | Cable Television Laboratories, Inc. | Back channel communication |
KR101372273B1 (ko) | 2012-11-06 | 2014-03-25 | 기초과학연구원 | 친겹선형 곡선에서의 효율적인 연산을 위한 상수배와 지수승 분해 방법 |
JP6819856B2 (ja) * | 2016-09-15 | 2021-01-27 | カシオ計算機株式会社 | 電子計算機、演算処理方法及びプログラム |
US11646880B2 (en) * | 2017-01-18 | 2023-05-09 | Nippon Telegraph And Telephone Corporation | Secret computation method, secret computation system, secret computation apparatus, and program |
CN110688089A (zh) * | 2019-09-24 | 2020-01-14 | 武汉理工大学 | 一种针对群元数乘或幂运算的计算方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004271792A (ja) | 2003-03-07 | 2004-09-30 | Nippon Telegr & Teleph Corp <Ntt> | 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム |
JP2007041461A (ja) | 2005-08-05 | 2007-02-15 | Hitachi Ltd | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2257008C (en) * | 1998-12-24 | 2007-12-11 | Certicom Corp. | A method for accelerating cryptographic operations on elliptic curves |
US7069287B2 (en) * | 2000-09-19 | 2006-06-27 | Worcester Polytechnic Institute | Method for efficient computation of odd characteristic extension fields |
US7215780B2 (en) * | 2001-12-31 | 2007-05-08 | Certicom Corp. | Method and apparatus for elliptic curve scalar multiplication |
US7885406B2 (en) * | 2006-10-10 | 2011-02-08 | Microsoft Corporation | Computing endomorphism rings of Abelian surfaces over finite fields |
-
2008
- 2008-02-25 JP JP2008043462A patent/JP4521503B2/ja not_active Expired - Fee Related
-
2009
- 2009-02-25 EP EP09715400A patent/EP2249326A1/en not_active Withdrawn
- 2009-02-25 WO PCT/JP2009/053395 patent/WO2009107650A2/ja active Application Filing
- 2009-02-25 CN CN2009801063734A patent/CN101965602A/zh active Pending
- 2009-02-25 US US12/867,439 patent/US20110179098A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004271792A (ja) | 2003-03-07 | 2004-09-30 | Nippon Telegr & Teleph Corp <Ntt> | 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム |
JP2007041461A (ja) | 2005-08-05 | 2007-02-15 | Hitachi Ltd | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 |
Also Published As
Publication number | Publication date |
---|---|
JP4521503B2 (ja) | 2010-08-11 |
EP2249326A1 (en) | 2010-11-10 |
CN101965602A (zh) | 2011-02-02 |
US20110179098A1 (en) | 2011-07-21 |
JP2009265111A (ja) | 2009-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Costello et al. | Efficient algorithms for supersingular isogeny Diffie-Hellman | |
WO2009107650A2 (ja) | スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 | |
JP4752313B2 (ja) | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム | |
KR20070085269A (ko) | 암호 처리 연산 장치 | |
JP4682852B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
KR101019242B1 (ko) | 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법 | |
KR20080086476A (ko) | 암호 처리 장치, 및 암호 처리 방법, 및 컴퓨터 프로그램 | |
US20070053506A1 (en) | Elliptic curve encryption processor, processing method of the processor using elliptic curves, and program for causing a computer to execute point scalar multiplication on elliptic curves | |
JP5147085B2 (ja) | 演算方法及び演算装置 | |
JP5403630B2 (ja) | スカラ倍算器及びスカラ倍算プログラム | |
KR101223498B1 (ko) | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 | |
JP5246796B2 (ja) | スカラー倍算の演算装置及びべき乗算の演算装置 | |
US10361855B2 (en) | Computing a secure elliptic curve scalar multiplication using an unsecured and secure environment | |
EP1578054B1 (en) | Cryptography-processing method, cryptography-processing apparatus and computer program | |
JP4616169B2 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
JP2009301071A (ja) | スカラー倍算の演算プログラム及びべき乗算の演算プログラム | |
US20240195607A1 (en) | Encryption device, key generation device, and computer program product for encryption | |
WO2022009384A1 (ja) | 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム | |
JP2011085750A (ja) | 楕円曲線スカラー倍算装置 | |
JPWO2012015047A1 (ja) | 埋め込み次数1かつ合成数位数の楕円曲線上の有理点のスカラー倍算およびペアリング演算 | |
JP2001194996A (ja) | 多項式の除算装置 | |
JP3638493B2 (ja) | 楕円曲線自乗演算装置、およびこのプログラム記録媒体 | |
JP2008020757A (ja) | 暗号処理装置、および暗号処理演算方法、並びにコンピュータ・プログラム | |
WO2024100108A1 (en) | Devices and processes for generating public keys and for generating and verifying signatures | |
KR100808953B1 (ko) | 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200980106373.4 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09715400 Country of ref document: EP Kind code of ref document: A2 |
|
DPE1 | Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101) | ||
WWE | Wipo information: entry into national phase |
Ref document number: 12867439 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2009715400 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
NENP | Non-entry into the national phase |
Ref country code: JP |