WO2009107650A2 - スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 - Google Patents

スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 Download PDF

Info

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
Application number
PCT/JP2009/053395
Other languages
English (en)
French (fr)
Inventor
野上保之
森川良孝
加藤英洋
赤根正剛
Original Assignee
国立大学法人 岡山大学
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 国立大学法人 岡山大学 filed Critical 国立大学法人 岡山大学
Priority to US12/867,439 priority Critical patent/US20110179098A1/en
Priority to EP09715400A priority patent/EP2249326A1/en
Priority to CN2009801063734A priority patent/CN101965602A/zh
Publication of WO2009107650A2 publication Critical patent/WO2009107650A2/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public 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

スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体
 本発明は、有理点Qのスカラーn倍算のnを少なくともt-1進展開することによりスカラー倍算の演算を高速化したスカラー倍算の演算方法及びその演算プログラムを記録した記録媒体、及び元Aのn乗算のnを少なくとも(q-r)進展開することによりべき乗算の演算を高速化したべき乗算の演算方法及びその演算プログラムを記録した記録媒体に関する。
 昨今、インターネットなどの電気通信回線を利用した情報ネットワーク技術が高度に発展し、インターネットによって様々な情報を取得するだけでなく、インターネットバンキングや行政機関への電子申請などのような各種のサービスが提供されてきている。
 このようなサービスを利用する場合には、サービスの利用者が、成りすましや架空の人間などではなく、適正な利用者であることを確認するための認証処理が必要であり、信頼性の高い認証方法として、公開鍵と秘密鍵を用いる公開鍵暗号をベースとした電子認証技術がよく利用されている。
 しかしながら、公開鍵暗号方式の電子認証では、公開鍵あるいは秘密鍵が漏洩した場合には直ちに公開鍵と秘密鍵を変更する必要があり、公開鍵及び秘密鍵の管理を慎重に行わなければならないとともに、必要に応じて新たな公開鍵と秘密鍵の設定登録作業が生じるという繁雑さがあるため、最近では、利用者の氏名やメールアドレスのように利用者特有のIDを用いて電子認証を行うIDベース暗号が用いられることが多くなっている。
 また、電子認証を行う認証装置によって利用者の個人認証を行った場合には、認証装置に利用者ごとの履歴が蓄積されることとなり、この履歴情報自体が利用者の個人情報であって、最近では、この履歴情報が漏洩することによる個人情報の漏洩のおそれが指摘されている。
 そこで、認証装置では利用者の個人情報を利用して認証を行うのではなく、複数の利用者をひとまとまりのグループとして、このグループに所属していることを示すグループ署名を用いることにより、利用者を特定することなく認証を行うことによって、認証装置に個人情報が蓄積されることなく認証を可能としたグループ署名技術が提案されている。
 このようなIDベース暗号やグループ署名における所用の演算には、楕円曲線上の有理点の双線形写像を用いるペアリングと呼ばれる手法が用いられている。ペアリングとは、たとえば、Pを素体Fq上の有理点、Qをk次拡大体Fq k上の有理点として、PとQとを入力して拡大体F* q kの元zが出力されるとき、a倍のPと、b倍のQを入力するとzのab乗が出力される演算である。なお、ここで、「k」を埋込み次数と呼び、「F* q k」は、正しくは、以下の表示であるが、表示の制限上、「F* q k」と表示している。
Figure JPOXMLDOC01-appb-M000013
 IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理では、できるだけ短時間で実行されることが求められている。特に、ペアリングに基づく暗号方式などにおいてはスカラー倍算及びべき乗算が数多く実行されているため、これらの演算を高速に実行することが求められている。
 そのため、従来より、スカラー倍算やべき乗算をバイナリ法やWindow法などを用いて高速化することが行われている。
 また、拡大体の元A∈Fq kのべき乗Anを演算する場合には、フロベニウス写像φq:A→Aqを用いることによって演算回数を削減することにより高速化を図ることも行われている。
 また、スカラー倍算においても、写像を利用することにより演算回数を削減して高速化を図る手法が提案されている(例えば、特許文献1、特許文献2参照。)。
特開2004-271792号公報 特開2007-41461号公報
 しかしながら、写像を利用して高速化を図る周知の高速化手段では、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回る場合(n>>q)にはきわめて有効であるもの、有限体Fqの位数qより大きく上回ることのないスカラーn及び乗数nに対しては、高速化手段を用いずに直接的にスカラー倍算及びべき乗算を実行した場合と比較して顕著な効果が見いだせないものであった。
 特に、IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理においては、スカラーnを用いたスカラー倍算あるいは乗数nを用いたべき乗算が必要な場合に、スカラーnあるいは乗数nが、有限体Fqの位数qより大きく上回ることのない場合が多く、周知の高速化手段を用いても効果的な高速化が期待できなかった。
 本発明者らはこのような現状に鑑み、スカラーnあるいは乗数nが有限体Fqの位数qより大きく上回ることのない場合であっても、スカラー倍算あるいはべき乗算を高速に実行できる演算方法の研究開発を行って、本発明を成すに至ったものである。
 本発明のスカラー倍算の演算方法では、
 楕円曲線を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進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000014
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開ステップと、
 CPUが、前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算ステップと、
 CPUが、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
Figure JPOXMLDOC01-appb-M000015
 前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φq i(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成ステップと、
を有するものである。
 さらに、本発明のスカラー倍算の演算方法では、
 前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
 CPUが、前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
 CPUが、前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000016
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開ステップと、
 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の係数をTdmaxq)として、前記記憶手段から係数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,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmaxq)を特定する第2の補助特定ステップと、
 CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
  V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmaxq),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が、前記記憶手段からTdmaxq)、χdmax、Di(χ)、Qの各値を読み出して、
  [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]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により展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000017
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開ステップと、
 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]を読み出し、次式に基づいて、
Figure JPOXMLDOC01-appb-M000018
Z←Z*φq i(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成ステップと、を有するものである。
 さらに、本発明のべき乗算の演算方法では、
 X^{Y}はXYであることを表すこととし、
 前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
 CPUが、前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
 CPUが、前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000019
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開ステップと、
 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進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000020
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手順と、
 前記記憶手段から前記有理点Q、非負整数n、及び前記c[i]の値を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手順と、
 t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
Figure JPOXMLDOC01-appb-M000021
 前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φq i(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手順と、を実行させるものである。
 さらに、本発明のスカラー倍算の演算プログラムを記録した電子計算機読取可能な記録媒体では、
 前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、電子計算機に、
 前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
 前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000022
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手順と、
 前記記憶された係数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の係数をTdmaxq)として、前記記憶手段から係数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,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmaxq)を特定する第2の補助特定手順と、
 前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
  V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmaxq),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が、前記記憶手段からTdmaxq)、χdmax、Di(χ)、Qの各値を読み出して、
  [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]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により展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000023
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手順と、
 前記記憶手段から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]を読み出し、次式に基づいて、
Figure JPOXMLDOC01-appb-M000024
Z←Z*φq i(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
 さらに、本発明のべき乗算の演算プログラムを記録した記録媒体では、
 X^{Y}はXYであることを表すこととし、
 前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、電子計算機に、
 前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
 前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
Figure JPOXMLDOC01-appb-M000025
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手順と、
 前記記憶された係数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)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
 しかも、本発明のべき乗算の演算プログラムを記録した記録媒体では、前記係数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)を用いる手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体とした。
 本発明は、フロベニウス自己準同型写像φq用いて演算回数を削減すものであって、特に、スカラー倍算の場合には、Gの有理点Qに対し、
  φ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を大きく上回ることのない場合でも、演算回数を削減可能として演算速度を向上させることができる。
 特に、ペアリングをベースとしたIDベース暗号やグループ署名などでは、ペアリングフレンドリ曲線と呼ばれるペアリングを利用可能な楕円曲線が用いられ、このペアリングフレンドリ曲線を用いる場合には、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられており、スカラー倍算の場合には、r(χ)をt(χ)-1進展開するとともに、このt(χ)-1進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、また、べき乗算の場合には、r(χ)をs(χ)=q(χ)-r(χ)進展開するとともに、このs(χ)進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
 しかも、最高次数dmaxとなるDi(χ)が複数存在する場合には、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
  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,χ)を用いることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
スカラー倍算の演算プログラム及びべき乗算の演算プログラムを備えた電子計算機の説明図。 スカラー倍算の演算プログラムのフローチャートである。 スカラー倍算の演算プログラムのフローチャートである。 dmax(χ)及び多項式h(φq,χ)を求める補助プログラムのフローチャートである。 スカラー倍算の演算プログラムのフローチャートである。 多項式h(φq,χ)及びvχdmax-h(0,χ)を求める補助プログラムのフローチャートである。 べき乗算の演算プログラムのフローチャートである。 べき乗算の演算プログラムのフローチャートである。 dmax(χ)及び多項式h(q,χ)を求める補助プログラムのフローチャートである。 べき乗算の演算プログラムのフローチャートである。 多項式h(q,χ)及びvχdmax-h(0,χ)を求める補助プログラムのフローチャートである。
符号の説明
 10 電子計算機
 11 CPU
 12 記憶装置
 13 メモリ装置
 14 バス
 15 入出力制御部
 20 電気通信回線
 30 クライアント装置
 本発明は、スカラー倍算の演算の高速化及びべき乗算の演算の高速化を目的としたものであり、スカラー倍算とべき乗算というように演算自体は異なるが、高速化のための手法は同じであり、それぞれ同じように演算回数が削減されることにより、演算の高速化を可能としているものである。最初にスカラー倍算について説明し、次いでべき乗算について説明する。
 まず、楕円曲線を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倍算、すなわちnQを演算する。なお、本実施形態で想定するスカラー倍算はペアリングの演算の際に行われるものであり、一般的にスカラーnは位数rを大きく超えるものではない。
 また、r=q+1-tであることから、0≡q+1-t(mod r)である。
 ここで、スカラーnをt-1進展開すると、スカラーnが位数rを大きく超えるものではないことから、
  n=C1(t-1)+C0
または、
  n=(t-1)2+C1(t-1)+C0
となる。
 φq(Q)=[q]Q=[t-1]Qであるので、n=C1(t-1)+C0の場合、nQは以下のようになる。
  nQ=[C1(t-1)+C0]Q
    =[C1q]Q+[C0]Q
    =φq([C1]Q)+[C0]Q
 また、n=(t-1)2+C1(t-1)+C0場合には、nQは以下のようになる。
  nQ=[(t-1)2+C1(t-1)+C0]Q
    =[q][q]Q+[C1q]Q+[C0]Q
    =φqq(Q))+φq([C1]Q)+[C0]Q
 ここで、C1及びC0はt-1と同程度あるいはそれよりも小さくなり、しかも有理点のフロベニウス自己準同型写像を用いることができることによって演算回数を削減できる。したがって、スカラー倍算を高速化することができる。
 また、通常、ペアリングの演算を行う場合には、既知のペアリングフレンドリ曲線が用いられており、特に、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることが多い。
 ここで、[r]Q=[q+1-t]Q=Oであることを考慮しながら、r(χ)をt(χ)-1で剰余をとる。すなわち、r(χ)を、
  [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,χ)を導入する。
 さらに、φq kQ=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)を用いることによって演算回数を大きく削減でき、スカラー倍算を高速化することができる。
 また、Di(χ)のうちでもっとも次数の高いものが複数存在する場合には、最高次数をdmaxで表すものとし、最高次数dmaxの項であるχdmaxの係数をTdmaxq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
  V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
を満たすV(φq)を特定する。ここで、多項式m(χ)には円周等分多項式などを用いることができる。
 そして、拡張ユークリッドの互除法を用いて、
  g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を特定し、
  [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]Q
           =[f(φq,χ)]Q
としてφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
 さらに、g(φq)を用い、φq kQ=Qに基づいて、
  [vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
としてφqとχを変数とする2変数の多項式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)とし、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に置き換えて上述の説明をべき乗算として読み換えるだけであり、詳細な説明は省略する。べき乗算の場合でも、最高次数部分の演算がより低い次数の演算に置き換えられることにより、演算回数を減してべき乗算を高速化することができる。
 以下において、既知のペアリングフレンドリ曲線を用いながら具体例を説明する。
 埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
  r(χ)=χ4-8χ2+25
  t(χ)=(2χ3-11χ+15)/15
と与えられるものが知られている。
 この場合、r(χ)をt(χ)-1進展開して、フロベニウス準同型写像φqを用いることにより、
  2r(χ)=(15χ)φq+(-5χ2+50)
  0≡(15χ)φq+(-5χ2+50)  (mod r(χ))
となる。
 したがって、Di(χ)は、
  D0(χ)=-5χ2+50
  D1(χ)=15χ
となる。
 このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
  -5χ2+50=15χφq
となり、式を整理することにより、
  χ2-10=3χφq
が得られる。
 したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt-1進展開し、さらにχ2-10進展開して、χ2-10に換えて15χφqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
 他の埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が
  r(χ)=χ8-χ4+1
  t(χ)=χ5-χ+1
と与えられた場合には、r(χ)をt(χ)-1進展開し、フロベニウス準同型写像φqを用いることにより、
  r(χ)=χ3φq+1
  0≡3φq+1 (mod r(χ))
となる。
 したがって、Di(χ)は、
  D0(χ)=-1
  D1(χ)=χ3
となる。
 このうち、D1(χ)が最も次数が高いので、D1(χ)φq以外を右辺に移すことにより、
  χ3φq=-1
となり、両辺にφ-1を掛けることで
  χ3=-φq -1
が得られる。
 したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt-1進展開し、さらにχ3進展開して、χ3に換えて-φq -1を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
 また、埋め込み次数10のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
  r(χ)=25χ4+25χ3+15χ2+5χ+1
  t(χ)=10χ2+5χ+3
と与えられるものが知られている。
 この場合、r(χ)をt(χ)-1進展開して、フロベニウス準同型写像φqを用いることにより、
  8r(χ)=2φq 2-φq+(5χ+2)
  0≡2φq 2-φq+(5χ+2)  (mod r(χ))
となる。
 したがって、Di(χ)は、
  D0(χ)=5χ+2
  D1(χ)=-1
  D2(χ)=2
となる。
 このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより
  5χ+2=-2φq 2+φq
が得られる。
 したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt-1進展開し、さらに5χ+2進展開して、5χ+2に換えて-2φq 2+φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
 また、埋め込み次数12のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
  r(χ)=36χ4-36χ3+18χ2-6χ+1
  t(χ)=6χ2+1
と与えられるものが知られている。
 この場合、r(χ)をt(χ)-1進展開して、フロベニウス準同型写像φqを用いることにより、
  r(χ)=φq 2+(-6χ+3)φq+(-6χ+1)
  0≡φq 2+(-6χ+3)φq+(-6χ+1)  (mod r(χ))
となる。
 したがって、Di(χ)は、
 D0(χ)=-6χ+1
 D1(χ)=-6χ+3
 D2(χ)=1
となる。
 ここで、D0(χ)とD1(χ)が共に最も次数が高いので、D0(χ)とD1(χ)φqの最高次数を与えるχの項以外を右辺に移すことにより、
  6χ(φq+1)=φq 2+3φq+1
となる。
 ここで、g(φq)=φq 4-φq 2+1とすると、gcd(φq+1,g(φq))=1を満たし、拡張ユークリッドの互除法より
  (φq+1)-1≡φq 2(1-φq)  (mod g(φq))
が得られる。
 したがって、両辺にφq 2(1-φq)を乗じることにより、
  6χ=φq 2(1-φq)(φq 2+3φq+1)
が得られる。
 したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt-1進展開し、さらに6χ進展開して、6χに換えてφq 2(1-φq)(φq 2+3φq+1)を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
 より具体的な例として、χ=825(10ビット)とする。このとき、
  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ビット程度のスカラー倍算またはべき乗算に変換してから演算を行うこととなり、演算回数の大幅な削減が可能となっている。
 また、埋め込み次数18のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
  r(χ)=χ6+37χ3+343
  t(χ)=(χ4+16χ+7)/7
と与えられるものが知られている。
 この場合、r(χ)をt(χ)-1進展開して、フロベニウス準同型写像φqを用いることにより、
  r(χ)=(7χ2q+(21χ3+343)
  0≡(7χ2q+(21χ3+343)  (mod r(χ))
となる。
 したがって、Di(χ)は、
  D0(χ)=21χ3-343
  D1(χ)=7χ2
となる。
 このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
  21χ3-343=7χ2φq
となり、式を整理することによって、
  χ3-49=χ2φq
が得られる。
 したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt-1進展開し、さらにχ3-49進展開して、χ3-49に換えてχ2φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
 最後に、スカラー倍算の演算プログラム及びべき乗算の演算プログラムについて詳説する。なお、スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、本実施形態では、IDベース暗号やグループ署名などを電子計算機で実行している際に、サブルーチンの一つとしてそれぞれ実行されるものである。
 図1に示すように、スカラー倍算の演算プログラム及びべき乗算の演算プログラムを実行する電子計算機10は、演算処理を実行するCPU11と、所要のプログラムやデータを記憶したハードディスクなどの記憶装置12と、所要のプログラムを展開して実行可能とするとともに、演算にともなって生成されたデータを一時的に記憶するRAMなどで構成されたメモリ装置13を備えている。図1中、14はバスである。本実施形態では、記憶装置12には、メインルーチンのプログラムやスカラー倍算の演算プログラム及びべき乗算の演算プログラムなどの各種プログラム、及びこれらのプログラムが使用するデータを記憶させている。
 電子計算機10が、例えばグループ署名における認証装置として機能する場合には、インターネットなどの電気通信回線20に接続して、この電気通信回線20に接続されたクライアント装置30から送信されたグループ署名の署名データを受信し、メモリ装置13に一次的に記憶して、グループ署名用のプログラムに基づいて署名データの正当性を判定して認証処理を行っている。図1中、15は電子計算機10の入出力制御部である。
 スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、それぞれ署名データの正当性を判定する処理を行う際に数多く実行されるものであり、以下においては、スカラー倍算の演算プログラム、及びべき乗算の演算プログラムについてのみ説明する。なお、本発明に係るスカラー倍算の演算プログラム及びべき乗算の演算プログラムは、グループ署名の処理において用いられるものではなく、多種多様な用途で用いられるものである。しかも、本発明に係るスカラー倍算の演算プログラム及びべき乗算の演算プログラムは、記憶装置12や電子計算機で読み取り可能な記録媒体に、或いはサーバからダウンロードして記憶装置に記憶可能な形態である場合だけでなく、半導体回路として構成することによりいわゆるハードウェア実装される形態であってもよい。
 まず、t-1進展開によるスカラー倍算nQについて説明する。
 図2は、スカラー倍算nQ(=Z)を求めるフローチャート図である。スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる。図2に示すように、はじめに、CPU11は、クライアント装置30から電気通信回線20、入出力制御部15を介して、スカラーnと、E(Fq)のフロベニウス自己準同型写像のトレースtと、有理点Q∈G⊂E(Fq k)の値を入力し、メモリ装置13に記憶する(ステップS101)。この場合、電子計算機は、入力手段として機能する。
 次いで、CPU11は、演算結果を格納するZをメモリ装置13に確保して、このZを初期化(Z←O)する(ステップS102)。従って、電子計算機は、入力手段として機能する。CPU11は、入力したQに対して、2jQにより表される演算を実行する(ステップS103)。
 ステップS103では、T[j]=2jQとして、CPU11は、メモリ装置13からQ、tの値を読み出し、以下のアルゴリズムを実行している。
(1)for(j=0;j<「log2s」;j++)
(2)  T[j]←Q
(3)  Q←Q+Q
(4)End for
ここで、(1)の「log2s」は、厳密には、
Figure JPOXMLDOC01-appb-M000026
であるが、表記上の制限のため、「」を用いている。ここで、CPU11は、s=t-1とし、jを自然数として、T[j]←Q及びQ←Q+Qにより表される代入演算をj=0からj<「log2s」まで繰り返して実行し、メモリ装置13に演算結果の値を記憶する。なお、以下において、アルゴリズム中の「」は同じ意味に用いる。
 次いで、t-1=sとして、CPU11は、メモリ装置11からc[i]、s、スカラーnの値を読み出し、転換手段として機能して、スカラーnを、
Figure JPOXMLDOC01-appb-M000027
とs進展開する(ステップS104)。ここで、iは自然数であり、iの大きさは、nの大きさによって決定されるものである。
 ステップS104では、s進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(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に記憶する。
 次いで、本実施形態では、電子計算機は、第2の演算手段として、Q[i]=c[i]Qの演算を行う(ステップS105)。
 ステップS105では、バイナリ法を用いており、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、i=0からi<「logsn」まで、Q[i]←0の代入演算によりメモリ装置11に記憶されたQ[i]を初期化し、更に、以下の演算を繰り返して実行する。CPU11はメモリ装置13から係数Q[i]、T[j]の値を読み出し、c[i]&1の場合にQ[i]←Q[i]+T[j]により表される代入演算を、その他の場合にc[i]←c[i]/2により表される代入演算を、j=0からc[i]!=0まで繰り返して実行し、各Q[i]及び係数c[i]の値をメモリ装置13に記憶する。
 次いで、電子計算機は、合成手段として機能し、ステップS105で演算したQ[i]を用いて、スカラー倍算nQを、
Figure JPOXMLDOC01-appb-M000028
によって合成する(ステップS106)。
 ステップS106では、CPU11は、以下のアルゴリズムを実行している。
(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の値を記憶する。
 そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、入出力制御部15からZの値を出力し(ステップS107)、スカラー倍算の演算プログラムを終了している。これによって、スカラーnをlogsn分割したので、φqを用いることで楕円2倍算の演算回数をおよそ1/(logsn)に削減することができる。
 また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されている場合には、r(χ)をt(χ)-1進展開することにより
  [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をより高速化することができる。
 すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてスカラーnをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
 Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる。この際に、図3に示すように、はじめに、CPU11は、スカラーnと、χ=aとしてs=Ddmax(a)及びh'(φq)=h(φq,a)と、有理点Q∈G⊂E(Fq k)の各値を入力してメモリ装置13に記憶する(ステップS201)。この場合、電子計算機は、入力手段として機能する。
 次いで、電子計算機は、初期化手段として機能する。即ち、CPU11は、演算結果を格納するZをメモリ装置13に確保して初期化(Z←O)する(ステップS202)。そして、電子計算機は第1の演算手段として機能する。即ち、CPU11は、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS203)。ステップS203の演算はステップS103の演算とアルゴリズムは同じであるので、説明は省略する。
 次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
Figure JPOXMLDOC01-appb-M000029
とs進展開する(ステップS204)。ステップS204でのs進展開は、ステップS104でのs進展開とアルゴリズムは同じであるので、説明は省略する。
 次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
Figure JPOXMLDOC01-appb-M000030
とφq進展開する(ステップS205)。
 ステップS205では、φq進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13に記憶されたT(φq)を1に初期化する。CPU11は、メモリ装置13からc[i]の値を読み出し、d[i]←c[i]の代入演算を行ってd[i]の値をメモリ装置13に記憶する。次に、CPU11は、メモリ装置13からd[i]、sの値を読み出して、d[i]≧sを満たす場合にはe[j]←d[i]%s及びd[i]←(d[i]-e[j])%sにより表される代入演算をj=0からj<「logsd[i]」まで繰り返し実行し、U(φq)←1に初期化した後にU(φq)←{U(φq)*e[j]*h'(φq)j}%(φq k-1)により表される演算をj=0からj<「logsd[i]」まで繰り返し実行し、次にT(φq)←{T(φq)+d[i]*h'(φq)i}%(φq k-1)により表される演算を実行して、T(φq)の値をメモリ装置13に記憶する。CPU11は、d[i]≧sを満たさない場合はT(φq)←{T(φq)+d[i]*h'(φq)i}%(φq k-1)により表される演算を実行してT(φq)の値をメモリ装置13に記憶する。CPU11は、以上の演算を、i=0からi<「logsn」まで繰り返して実行し、各iにおけるd[i]、T(φq)の値をメモリ装置11に記憶する。
 なお、スカラーnをφq進展開した場合に、φq進展開の係数d[i]がsよりも大きくなることがある。CPU11は、φq進展開の係数d[i]とsとを比較して、φq進展開の係数d[i]がsよりも大きいと判定した場合(ステップS206:NO)には、φq進展開の係数d[i]に対してsの剰余をとることにより、φq進展開の係数d[i]がsよりも小さくなるように調整している(ステップS207)。この場合、電子計算機は、ステップS206において比較手段として機能し、ステップS207において調整手段として機能する。
 ステップS207では、電子計算機は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13からT(φq)のi番目の係数の値を読み出してd[i]にその値を記憶し、d[i]とsの値を比較する。CPU11は、d[i]≧sを満たす場合に、T(φq)のi番目の係数に0を記憶し、e[j]←d[i]%s及びd[i]←(d[i]-e[j])%sにより表される演算をj=0からj<「logsd[i]」まで繰り返し実行し、次にU(φq)←1に初期化した後に、U(φq)←{U(φq)*e[j]*h'(φq)j}%(φq k-1)により表される演算を、j=0からj<「logsd[i]」まで繰り返し実行し、次にT(φq)←{T(φq)+U(φq)*φq i}%(φq k-1)により表される演算を実行してメモリ装置13にT(φq)の値を記憶する。CPU11は、d[i]≧sを満たさない場合には上記一連の演算を行わない。CPU11は、以上の演算をi=0からi<k-1まで繰り返し実行し、これをd[i]<sを満たすまで行う。
 次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS208)。
 ステップS208でも、バイナリ法を用いており、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11はメモリ装置13からd[i]及びT[j]の値を読み出して、Q[i]←OとしてQ[i]を初期化した後に、d[i]&1を満たす場合は、Q[i]←Q[i]+T[j]により表される代入演算を、d[i]&1を満たさないときはd[i]←d[i]/2の代入演算を実行して、Q[i]及びd[i]の値をメモリ装置13に記憶する。
 次いで、電子計算機は、合成手段として機能し、ステップS208で演算したQ[i]を用いて、スカラー倍算nQを、
Figure JPOXMLDOC01-appb-M000031
によって合成する(ステップS209)。
 ステップS209では、CPU11は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2)  Z←Z+φq i(Q[i])
(3)End for
 即ち、CPU11はメモリ装置13からZ及びQ[i]の値を読み出して、Z←Z+φq i(Q[i])により表される代入演算を、i=0からi<kまで繰り返して実行して、メモリ装置13にZの値を記憶する。CPU11は、入出力制御部15からZの値を出力する。つまり、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS210)、スカラー倍算の演算プログラムを終了している。これによって、スカラーnをlogsn分割したので、φqを用いることで楕円2倍算の演算回数をおよそdegDdmax(χ)/degr(χ)に削減することができる。
 Ddmax(χ)及び多項式h(φq,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びt(χ)とともに、Ddmax(χ)と多項式h(φq,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(φq,χ)を求めてもよい。
 電子計算機は、補助プログラムを起動させると、図4に示すように、はじめに、入力手段として機能する。即ち、CPU11は、r(χ)とt(χ)の値を入力してメモリ装置13に記憶する(ステップS221)。
 次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)-1=s(χ)として、r(χ)を、
Figure JPOXMLDOC01-appb-M000032
とs(χ)進展開する(ステップS222)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS222では、s(χ)進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2)  Di(χ)←r(χ)%s(χ)
(3)  r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
 即ち、CPU11は、メモリ装置13からr(χ)及びs(χ)の値を読み出して、Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<degr(χ)/degs(χ)まで繰り返し実行し、メモリ装置13にDi(χ)及びr(χ)の値を記憶する。
 次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS223)。即ち、CPU11は、メモリ装置13からDi(χ)の値を読み出して比較し、最大のDi(χ)をDdmax(χ)としてその値をメモリ装置13に記憶する。
 次いで、電子計算機は、演算手段として機能する。即ち、CPU11は、
Figure JPOXMLDOC01-appb-M000033
の演算を行って多項式h(φq,χ)を特定し、メモリ装置13にその値を記憶し、出力している(ステップS224)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(φq,χ)を求めることができる。このDdmax(χ)及び多項式h(φq,χ)を図3のステップ201に用いることで図3に示すスカラー倍算により楕円2倍算の演算回数をおよそdegDdmax(χ)/degr(χ)に削減することができる。
 また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されているとともに、r(χ)をt(χ)-1進展開することにより
  [r(χ)]Q=Σ[Di(χ)(t(χ)-1)i]Q=Σφq i([Di(χ)]Q)
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmaxq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
  V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
を満たすV(φq)を特定し、
  g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、
  [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]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をより高速化することができる。
 すなわち、χ=aとして、s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)とし、スカラーnをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(φq,a)-h(0,a)を用いることにより、演算回数を削減している。
 s'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる。その際に、図5に示すように、はじめに、CPU11は、スカラーnと、χ=aとしてスカラーs'=vadmax-h(0,a)及びh'(φq)=h(φq,a)-h(0,a)と、有理点Q∈G⊂E(Fq k)の値を入力してメモリ装置13に記憶する(ステップS301)。この場合、電子計算機は、入力手段として機能する。
 次いで、電子計算機は初期化手段として機能し、CPU11は、メモリ装置13に演算結果を格納するZを確保して、初期化(Z←O)する(ステップS302)。そして、電子計算機は第1の演算手段として機能し、CPU11はメモリ装置13に記憶されたQの値を読み出して、2jQをあらかじめ演算し、メモリ装置13に記憶しておく(ステップS303)。ステップS303の演算はステップS103の演算とアルゴリズムは同じであり、CPU11が行う処理も同じなので、説明は省略する。
 次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
Figure JPOXMLDOC01-appb-M000034
とs'進展開する(ステップS304)。ステップS304でのs'進展開は、ステップS204でのs進展開とアルゴリズムは同じであり、CPU11が行う処理も同じなので、説明は省略する。
 次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
Figure JPOXMLDOC01-appb-M000035
とφq進展開する(ステップS305)。ステップS305でのφq進展開は、スカラーs'(=vadmax-h(0,a))が、ステップS205でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS205でのs進展開とアルゴリズムは同じであり、CPU11が行う処理も同じであるため、詳細な説明は省略する。
 ステップS305でのφq進展開でも、φq進展開の係数がs'よりも大きくなることがある。このように、φq進展開の係数がs'よりも大きい場合(ステップS306:NO)には、φq進展開の係数に対してs'の剰余をとることにより、φq進展開の係数がs'よりも小さくなるように調整している(ステップS307)。このステップS307での演算も、スカラーs'(=vadmax-h(0,a))が、ステップS207でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS207での演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるため、詳細な説明は省略する。この場合、電子計算機は、ステップS306において比較手段として機能し、ステップS307において調整手段として機能する。
 次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS308)。ステップS308でも、バイナリ法を用いており、ステップS308の演算もステップS208の演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるので、説明は省略する。
 次いで、電子計算機は、合成手段として機能し、ステップS308で演算したQ[i]を用いて、スカラー倍算nQを、
Figure JPOXMLDOC01-appb-M000036
によって合成する(ステップS309)。ステップS309の演算もステップS209の演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるので、説明は省略する。
 そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS310)、スカラー倍算の演算プログラムを終了している。これによって、スカラーnをlogsn分割したので、φqを用いることで楕円2倍算の演算回数をおよそdmax/degr(a)に削減することができる。
 多項式h(φq,χ)及びvχdmax-h(0,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びt(χ)とともに、多項式h(φq,χ)及びvχdmax-h(0,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、多項式h(φq,χ)及びvχdmax-h(0,χ)を求めてもよい。
 電子計算機は、補助プログラムを起動させると、図6に示すように、はじめに、入力手段として機能する。CPU11は、入力したr(χ)、t(χ)及びm(χ)の値をメモリ装置13に記憶する(ステップS321)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
 次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)-1=s(χ)として、r(χ)を、
Figure JPOXMLDOC01-appb-M000037
とs(χ)進展開する(ステップS322)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS322では、s(χ)進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(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の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(φq,χ)とし、それ以外の和をU(φq,χ)とする(ステップS323)。ステップS323では、CPU11は、具体的に以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13からr(χ)、s(χ)及びDi(χ)の値を読出し、T(φq,χ)←0,U(φq,χ)←0の初期化処理を行った後に、deg(Di(χ))=dmaxを満たす場合はT(φq,χ)←T(φq,χ)+Di(χ)φq iにより表される代入演算を、deg(Di(χ))=dmaxを満たさない場合はU(φq,χ)←U(φq,χ)+Di(χ)φq iにより表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して実行し、メモリ装置13にT(φq,χ)及びU(φq,χ)を記憶する。
 次いで、電子計算機は、第2の特定手段として機能する。CPU11は、ステップS323で特定したT(φq,χ)の最高次数係数Tdmaxq)を特定し、メモリ装置13に記憶する(ステップS324)。
 次いで、電子計算機は、第3の特定手段として機能し、ステップS324で特定した最高次数係数Tdmaxq)を用い、
  V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
を満たすV(φq)を特定する(ステップS325)。ステップS325では、CPU11は、具体的に以下のアルゴリズムを実行している。
(1)W(φq)←gcd(Tdmaxq),m(φq))
(2)V(φq)←W(φq)
 即ち、CPU11は、メモリ装置13からTdmaxq)及びm(φq)の値を読出し、W(φq)←gcd(Tdmaxq),m(φq))及びV(φq)←W(φq)により表される演算を実行して、メモリ装置13に、W(φq)及びV(φq)の値を記憶する。
 次いで、電子計算機は、第4の特定手段として機能する。即ち、CPU11はメモリ装置13から、ステップS325で特定したV(φq)を読み出して、
  g(φq)V(φq)≡v(mod m(φq))
を満たすスカラーv及びg(φq)を、拡張ユークリッドの互除法によって特定し、メモリ装置13に記憶する(ステップS326)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(φq)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
 次いで、CPU11は、ステップS326で特定したg(φq)をメモリ装置13から読み出し、
Figure JPOXMLDOC01-appb-M000038
の演算を行って多項式h(φq,χ)を特定し(ステップS327)、多項式h(φq,χ)及びvχdmax-h(0,χ)の値をメモリ装置13に記憶し出力している(ステップS328)。このようにして、電子計算機では、補助プログラムを用いて多項式h(φq,χ)及びvχdmax-h(0,χ)を求めることができる。この場合、電子計算機は、ステップS327において演算手段として機能し、ステップS328において出力手段として機能する。このvχdmax-h(0,χ)及び多項式h(φq,χ)を図5のステップ301に用いることで図5に示すスカラー倍算により楕円2倍算の演算回数をおよそdmax/degr(χ)に削減することができる。
 以下において、べき乗算の演算プログラムについて説明する。まず、t-1進展開によるべき乗算Anについて説明する。
 べき乗算の演算プログラムを実行させて電子計算機をべき乗算として機能させる際に、図7に示すように、はじめに、べき数nと、位数qとFq kの素数位数rとの差分sと、元A∈H⊂Fq kが入力される(ステップS401)。この場合、電子計算機は、入力手段として機能する。
 次いで、電子計算機は、初期化手段として機能する。即ち、CPU11は、演算結果を格納するZをメモリ装置13に確保して、このZを初期化(Z←1)する(ステップS402)。そして、電子計算機は第1の演算手段として機能する。CPU11は、元Aの値を入力してメモリ装置13に記憶し、X^{Y}はXYを表すものとして、入力された元Aに対して、A^{2j}をあらかじめ演算しておく(ステップS403)。
 ステップS403では、T[j]=A^{2j}として、CPU11は、以下のアルゴリズムを実行している。
(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の値を記憶する。
 次いで、電子計算機は、展開手段として機能し、べき数nを、差分sにより
Figure JPOXMLDOC01-appb-M000039
とs進展開する(ステップS404)。ここで、iの大きさは、nの大きさによって決定するものである。
 ステップS404では、s進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(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の値を記憶する。
 次いで、本実施形態では、電子計算機は、第2の演算手段として機能し、A[i]=Ac[i]の演算を行う(ステップS405)。
 ステップS405では、バイナリ法を用いており、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、i=0からi<「logsn」まで、A[i]←1の代入演算によりメモリ装置11に記憶されたA[i]を初期化し、更に、以下の演算を繰り返して実行する。CPU11はメモリ装置13から係数c[i]、T[j]の値を読み出し、c[i]&1の場合にQ[i]←Q[i]*T[j]により表される代入演算を、その他の場合にc[i]←c[i]/2により表される代入演算を、j=0からc[i]!=0まで繰り返して実行し、各Q[i]及び係数c[i]の値をメモリ装置13に記憶する。
 次いで、電子計算機は、合成手段として機能し、ステップS405で演算したA[i]を用いて、べき乗算Anを、
Figure JPOXMLDOC01-appb-M000040
によって合成する(ステップS406)。
 ステップS406では、CPU11は、以下のアルゴリズムを実行している。
(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の値を記憶する。
 そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、入出力制御部15からZの値を出力し(ステップS407)、べき乗算の演算プログラムを終了している。これによって、べき数nをlogsn分割したので、φqを用いることで2乗算の演算回数をおよそ1/(logsn)に削減することができる。
 また、位数q、素数位数r、差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合には、r(χ)をs(χ)進展開することにより
  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をより高速化することができる。
 すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてべき数nをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
 Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のべき乗算nQでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる。この際に、図8に示すように、はじめに、CPU11は、べき数nと、χ=aとしてs=Ddmax(a)及びh'(q)=h(q,a)と、元A∈H⊂Fq kの各値を入力してメモリ装置13に記憶する(ステップS501)。この場合、電子計算機は、入力手段として機能する。
 次いで、電子計算機は、初期化手段として機能する。即ち、CPU11は、演算結果を格納するZをメモリ装置13に確保し、Zを初期化(Z←1)する(ステップS502)。そして、第1の演算機能として、入力されたAに対して、A^{2j}をあらかじめ演算しておく(ステップS503)。ステップS503の演算はステップS403の演算とアルゴリズムは同じであるので、説明は省略する。
 次いで、電子計算機は、第1の展開手段として機能し、べき数nを、
Figure JPOXMLDOC01-appb-M000041
とs進展開する(ステップS504)。ステップS504でのs進展開は、ステップS404でのs進展開とアルゴリズムは同じであるので、説明は省略する。
 次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
Figure JPOXMLDOC01-appb-M000042
とq進展開する(ステップS505)。
 ステップS505では、q進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13に記憶されたT(q)を1に初期化する。CPU11は、メモリ装置13からc[i]の値を読み出し、d[i]←c[i]の代入演算を行ってd[i]の値をメモリ装置13に記憶する。次に、CPU11は、メモリ装置13からd[i]、sの値を読み出して、d[i]≧sを満たす場合にはe[j]←d[i]%s及びd[i]←(d[i]-e[j])%sにより表される代入演算をj=0からj<「logsd[i]」まで繰り返し実行し、U(φq)←1に初期化した後にU(q)←{U(q)*e[j]*h'(q)j}%(qk-1)により表される演算をj=0からj<「logsd[i]」まで繰り返し実行し、次にT(q)←{T(q)+U(q)*h'(q)i}%(qk-1)により表される演算を実行して、T(q)の値をメモリ装置13に記憶する。CPU11は、d[i]≧sを満たさない場合はT(q)←{T(q)+d[i]*h'(q)i}%(qk-1)により表される演算を実行してT(q)の値をメモリ装置13に記憶する。CPU11は、以上の演算を、i=0からi<「logsn」まで繰り返して実行し、各iにおけるd[i]、T(q)の値をメモリ装置11に記憶する。
 なお、べき数nをq進展開した場合に、q進展開の係数がsよりも大きくなることがある。CPU11は、q進展開の係数d[i]とsとを比較して、q進展開の係数d[i]がsよりも大きいと判定した場合(ステップS506:NO)には、q進展開の係数d[i]に対してsの剰余をとることにより、q進展開の係数d[i]がsよりも小さくなるように調整している(ステップS507)。この場合、電子計算機は、ステップS506において比較手段として機能し、ステップS507において調整手段として機能する。
 ステップS507では、電子計算機は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13からT(q)のi番目の係数の値を読み出してd[i]にその値を記憶する。CPU11は、d[i]とsの値を比較し、d[i]≧sを満たす場合に、T(q)のi番目の係数に0を記憶し、e[j]←d[i]%s及びd[i]←(d[i]-e[j])%sにより表される演算をj=0からj<「logsd[i]」まで繰り返し実行し、次にU(q)←1に初期化した後に、U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)により表される演算を、j=0からj<「logsd[i]」まで繰り返し実行し、次にT(q)←{T(q)+U(q)*qi}%(qk-1)により表される演算を実行してメモリ装置13にT(q)の値を記憶する。CPU11は、d[i]≧sを満たさない場合には上記一連の演算を行わない。CPU11は、以上の演算をi=0からi<k-1まで繰り返し実行し、これをd[i]<sを満たすまで行う。
 次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS508)。
 ステップS508でも、バイナリ法を用いており、CPU11は、以下のアルゴリズムを実行している。
(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
 即ち、CPU11はメモリ装置13からd[i]及びT[j]の値を読み出して、A[i]←OとしてA[i]を初期化した後に、d[i]&1を満たす場合は、A[i]←A[i]*T[j]により表される代入演算を、d[i]&1を満たさないときはd[i]←d[i]/2の代入演算を実行して、A[i]及びd[i]の値をメモリ装置13に記憶する。
 次いで、電子計算機は、合成手段として機能し、ステップS508で演算したA[i]を用いて、べき乗算Anを、
Figure JPOXMLDOC01-appb-M000043
によって合成する(ステップS509)。
 ステップS509では、CPU11は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2)  Z←Z*φq i(A[i])
(3)End for
  即ち、CPU11はメモリ装置13からZ及びA[i]の値を読み出して、i=0からi<kまで繰り返して演算を実行して、メモリ装置13にZの値を記憶する。CPU11は、入出力制御部15からZの値を出力する。つまり、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS510)、べき乗算の演算プログラムを終了している。これによって、べき数nをlogsn分割したので、φqを用いることで2乗算の演算回数をおよそdegDdmax(a)/degr(a)に削減することができる。
 Ddmax(χ)及び多項式h(q,χ)は、q(χ)、r(χ)及びs(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びs(χ)とともに、Ddmax(χ)と多項式h(q,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(q,χ)を求めてもよい。
 電子計算機は、補助プログラムを起動させると、図9に示すように、はじめに、入力手段として機能する。即ち、CPU11は、r(χ)とs(χ) の値を入力してメモリ装置13に記憶する(ステップS521)。
 次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
Figure JPOXMLDOC01-appb-M000044
とs(χ)進展開する(ステップS522)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS522では、s(χ)進展開の演算として、CPU11は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2)  Di(χ)←r(χ)%s(χ)
(3)  r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
 即ち、CPU11は、メモリ装置13からr(χ)及びs(χ)の値を読み出して、Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<degr(χ)/degs(χ)まで繰り返し実行し、メモリ装置13にDi(χ)及びr(χ)の値を記憶する。
 次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS523)。即ち、CPU11は、メモリ装置13からDi(χ)の値を読み出して比較し、最大のDi(χ)をDdmax(χ)としてその値をメモリ装置13に記憶する。
 次いで、電子計算機は、演算手段として機能する。即ち、CPU11は、
Figure JPOXMLDOC01-appb-M000045
の演算を行って多項式h(q,χ)を特定し、メモリ装置13にその値を記憶し、出力している(ステップS524)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(q,χ)を求めることができる。このDdmax(χ)及び多項式h(q,χ)を図8のステップ501に用いることで図8に示すべき乗算により2乗算の演算回数をおよそdegDdmax(χ)/degr(χ)に削減することができる。
 また、位数q、素数位数r及び差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)及びs(χ)とあらかじめ特定されているとともに、r(χ)をs(χ)進展開することにより
  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をより高速化することができる。
 すなわち、χ=aとして、s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a)とし、べき数nをDdmax(a)進展開する換わりにvadmax-h(0,a)進展開して、vadmax-h(0,a)の換わりにh(q,a)-h(0,a)を用いることにより、演算回数を削減している。
 s'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a)が特定されている場合のべき乗算Anでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる。その際に、図10に示すように、はじめに、CPU11は、べき数nと、χ=aとしてスカラーs'=vadmax-h(0,a)及びh'(q)=h(q,a)-h(0,a)と、元A∈H⊂Fq kの値を入力してメモリ装置13に記憶する(ステップS601)。この場合、電子計算機は、入力手段として機能する。
 次いで、電子計算機は、初期化手段として機能し、CPU11は、メモリ装置13に演算結果を格納するZを確保して、初期化(Z←1)する(ステップS602)。そして、電子計算機は第1の演算手段として機能し、CPU11はメモリ装置13に記憶された元Aの値を読み出して、A^{2j}をあらかじめ演算し、メモリ装置13に記憶しておく(ステップS603)。ステップS603の演算はステップS403の演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるので、説明は省略する。
 次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
Figure JPOXMLDOC01-appb-M000046
とs'進展開する(ステップS604)。ステップS604でのs'進展開は、ステップS404でのs進展開とアルゴリズムは同じであり、CPU11が行う処理も同じなるので、説明は省略する。
 次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
Figure JPOXMLDOC01-appb-M000047
とq進展開する(ステップS605)。ステップS605でのq進展開は、スカラーs'(=vadmax-h(0,a))が、ステップS505でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS505でのs進展開とアルゴリズムは同じであり、CPU11が行う処理も同じであるため、詳細な説明は省略する。
 ステップS605でのq進展開でも、q進展開の係数がs'よりも大きくなることがある。このように、q進展開の係数がs'よりも大きい場合(ステップS606:NO)には、q進展開の係数に対してs'の剰余をとることにより、q進展開の係数がs'よりも小さくなるように調整している(ステップS607)。このステップS607での演算も、スカラーs'(=vadmax-h(0,a))が、ステップS507でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS507での演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるため、詳細な説明は省略する。ここで、電子計算機は、ステップS606において比較手段として機能し、ステップS607において調整手段として機能する。
 次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS608)。ステップS608でも、バイナリ法を用いており、ステップS608の演算もステップS508の演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるので、説明は省略する。
 次いで、電子計算機は、合成手段として機能し、ステップS608で演算したA[i]を用いて、べき乗算Anを、
Figure JPOXMLDOC01-appb-M000048
によって合成する(ステップS609)。ステップS609の演算もステップS509の演算とアルゴリズムは同じであり、CPU11が行う処理も同じであるので、説明は省略する。
 そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS610)、べき乗算の演算プログラムを終了している。これによって、べき数nをlogsn分割したので、φqを用いることで2乗算の演算回数をおよそdmax/degr(a)に削減することができる。
 多項式h(q,χ)及びvχdmax-h(0,χ)は、位数q(χ)、素数位数r(χ)及び差分s(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びs(χ)とともに、多項式h(q,χ)及びvχdmax-h(0,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、多項式h(q,χ)及びvχdmax-h(0,χ)を求めてもよい。
 電子計算機は、補助プログラムを起動させると、図11に示すように、はじめに、入力手段として機能する。CPU11は、入力したr(χ)、s(χ)及びm(χ) の値をメモリ装置13に記憶する(ステップS621)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
 次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
Figure JPOXMLDOC01-appb-M000049
とs(χ)進展開する(ステップS622)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS622では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(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の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(q,χ)とし、それ以外の和をU(q,χ)とする(ステップS623)。ステップS623では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(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
 即ち、CPU11は、メモリ装置13からr(χ)、s(χ)及びDi(χ)の値を読出し、T(q,χ)←0,U(q,χ)←0の初期化処理を行った後に、deg(Di(χ))=dmaxを満たす場合はT(q,χ)←T(q,χ)+Di(χ)qiにより表される代入演算を、deg(Di(χ))=dmaxを満たさない場合はU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して実行し、メモリ装置13にT(q,χ)及びU(q,χ)を記憶する。
 次いで、電子計算機は、第2の特定手段として機能。CPU11は、ステップS623で特定したT(q,χ)の最高次数係数Tdmax(q)を特定、メモリ装置13に記憶する(ステップS624)。
 次いで、電子計算機は、第3の特定手段として機能し、ステップS624で特定した最高次数係数Tdmax(q)を用い、
  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)の値を記憶する。
 次いで、電子計算機は、第4の特定手段として機能する。即ち、CPU11はメモリ装置13から、ステップS625で特定したV(q)を読み出して、
  g(q)V(q)≡v(mod m(q))
を満たすスカラーv及びg(q)を、拡張ユークリッドの互除法によって特定し、メモリ装置13に記憶する(ステップS626)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(q)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
 次いで、電子計算機は、ステップS626で特定したg(q)をメモリ装置13から読み出し、
Figure JPOXMLDOC01-appb-M000050
の演算を行って多項式h(q,χ)を特定し(ステップS627)、多項式h(q,χ)及びvχdmax-h(0,χ) の値をメモリ装置13に記憶し出力している(ステップS628)。このようにして、電子計算機では、補助プログラムを用いて多項式h(q,χ)及びvχdmax-h(0,χ)を求めることができる。この場合、電子計算機は、ステップS627において演算手段として機能し、ステップS628において出力手段として機能する。このvχdmax-h(0,χ)及び多項式h(q,χ)を図10のステップ601に用いることで図10に示すべき乗算により2乗算の演算回数をおよそdmax/degr(χ)に削減することができる。

Claims (12)

  1.  楕円曲線を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進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000001
    c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開ステップと、
     CPUが、前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算ステップと、
     CPUが、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
    Figure JPOXMLDOC01-appb-M000002
     前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φq i(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成ステップと、
    を有することを特徴とするスカラー倍算の演算方法。
  2.  前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
     CPUが、前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
     CPUが、前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000003
    Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開ステップと、
     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に記載のスカラー倍算の演算方法。
  3.  前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
     前記補助入力ステップは、CPUが、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶するステップを更に含み、
     CPUが、deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmaxq)として、前記記憶手段から係数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,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmaxq)を特定する第2の補助特定ステップと、
     CPUが、前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
      V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
    を満たすV(φq)を、W(φq)←gcd(Tdmaxq),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が、前記記憶手段からTdmaxq)、χdmax、Di(χ)、Qの各値を読み出して、
      [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]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に記載のスカラー倍算の演算方法。
  4.  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により展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000004
    c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開ステップと、
     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]を読み出し、次式に基づいて、
    Figure JPOXMLDOC01-appb-M000005
    Z←Z*φq i(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成ステップと、を有することを特徴とするべき乗算の演算方法。
  5.  X^{Y}はXYであることを表すこととし、
     前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
     CPUが、前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力ステップと、
     CPUが、前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000006
    Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開ステップと、
     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に記載のべき乗算の演算方法。
  6.  前記係数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に記載のべき乗算の演算方法。
  7.  楕円曲線を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進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000007
    c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手順と、
     前記記憶手段から前記有理点Q、非負整数n、及び前記c[i]の値を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手順と、
     t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
    Figure JPOXMLDOC01-appb-M000008
     前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φq i(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手順と、
    を実行させるためのスカラー倍算の演算プログラムを記録した電子計算機読取可能な記録媒体。
  8.  前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、電子計算機に、
     前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
     前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)-1として、r(χ)をs(χ)進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000009
    Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手順と、
     前記記憶された係数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に記載の電子計算機読取可能な記録媒体。
  9.  前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
     前記補助入力手順は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手順を更に含み、
     電子計算機に、
     deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmaxq)として、前記記憶手段から係数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,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmaxq)を特定する第2の補助特定手順と、
     前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
      V(φq)|m(φq),gcd(Tdmaxq),V(φq))=1
    を満たすV(φq)を、W(φq)←gcd(Tdmaxq),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が、前記記憶手段からTdmaxq)、χdmax、Di(χ)、Qの各値を読み出して、
      [Tdmaxqdmax]Q=Σφq i([Di(χ)]Q)-[Tdmaxqdmax]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に記載の電子計算機読取可能な記録媒体。
  10.  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により展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000010
    c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手順と、
     前記記憶手段から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]を読み出し、次式に基づいて、
    Figure JPOXMLDOC01-appb-M000011
    Z←Z*φq i(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手順と、を実行させるためのべき乗算の演算プログラムを記録した電子計算機読取可能な記録媒体。
  11.  X^{Y}はXYであることを表すこととし、
     前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、電子計算機に、
     前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手順と、
     前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
    Figure JPOXMLDOC01-appb-M000012
    Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手順と、
     前記記憶された係数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に記載の電子計算機読取可能な記録媒体。
  12.  前記係数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に記載の電子計算機読取可能な記録媒体。
PCT/JP2009/053395 2008-02-25 2009-02-25 スカラー倍算の演算方法、べき乗算の演算方法、スカラー倍算の演算プログラムを記録した記録媒体及びべき乗算の演算プログラムを記録した記録媒体 WO2009107650A2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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