WO2007080633A1 - 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム - Google Patents

楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム Download PDF

Info

Publication number
WO2007080633A1
WO2007080633A1 PCT/JP2006/300223 JP2006300223W WO2007080633A1 WO 2007080633 A1 WO2007080633 A1 WO 2007080633A1 JP 2006300223 W JP2006300223 W JP 2006300223W WO 2007080633 A1 WO2007080633 A1 WO 2007080633A1
Authority
WO
WIPO (PCT)
Prior art keywords
elliptic curve
storage device
unit
order
pairing
Prior art date
Application number
PCT/JP2006/300223
Other languages
English (en)
French (fr)
Inventor
Katsuyuki Takashima
Original Assignee
Mitsubishi Denki Kabushiki Kaisha
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 Mitsubishi Denki Kabushiki Kaisha filed Critical Mitsubishi Denki Kabushiki Kaisha
Priority to PCT/JP2006/300223 priority Critical patent/WO2007080633A1/ja
Priority to EP06711568A priority patent/EP1993086B1/en
Priority to US12/085,587 priority patent/US8111826B2/en
Priority to JP2007553794A priority patent/JP4688886B2/ja
Publication of WO2007080633A1 publication Critical patent/WO2007080633A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7204Prime number generation or prime number testing

Definitions

  • Elliptic curve encryption parameter generation device Elliptic curve encryption parameter generation device, elliptic curve encryption operation device, elliptic curve encryption parameter generation program, and elliptic curve encryption operation program
  • the present invention relates to a cryptographic operation device using elliptic curve pairing calculation and a device for generating elliptic curve encryption parameters to be set in a cryptographic calculation device using elliptic curve pairing calculation.
  • the present invention relates to an apparatus for generating elliptic curve encryption parameters that can perform elliptic encryption pairing calculations at high speed and can easily change the encryption security level using elliptic curve pairing calculations.
  • Non-Patent Document 3 an encryption method using a pairing operation on an elliptic curve
  • the public key of the user can be generated based on ID (Identifier) information, etc., so there is no need to guarantee the validity of the public key.
  • ID Identifier
  • Non-patent document 1 and non-patent document 2 have been proposed as methods for solving this problem.
  • Non-patent literature 1 M.; 5Cott, 'Faster pairings using an elliptic curve endo morphism, to appear in Indocrypt 2005, Springer Verlag, (2005).
  • Non-patent literature 2 M. Scott, "Scaling security in pairing—based protocols " ⁇ available at http: // eprint. iacr. org, 2005.
  • Non-Patent Document 3 Sakai, Ogishi, Kasahara, "Cryptography using pairing on an elliptic curve", 200 1 Year Symposium on Cryptography and Information Security (SCIS 2001).
  • the number of bits in the group number is one of the factors that determine the security of elliptic curve pairing ciphers.
  • the computing power of computing devices such as computers is improving day by day, and the security of the ciphers is threatened. there is a possibility.
  • An elliptic curve encryption parameter generation device includes:
  • a storage device for storing information
  • a prime number generation unit that generates a prime number r using the arithmetic unit and stores the generated prime number r using the storage device;
  • a group number aptitude determination unit that determines whether the prime number r is appropriate as the group number of K);
  • a group number candidate output unit that reads the prime number r generated by the prime number generation unit from the storage device and outputs the prime number r as a group number candidate using the output device;
  • the group number aptitude determination unit The prime number r generated by the prime number generation unit is read out from the storage device power, the natural number r 1 is obtained by subtracting 1 from the prime number r using the arithmetic unit, and the natural number obtained using the storage device is obtained. memorize r 1
  • a natural number k within a predetermined range is generated using the arithmetic device, the generated natural number k is stored using the storage device, and
  • the obtained natural number r 1 and the generated natural number k are read from the storage device, and the arithmetic unit is used to determine whether the natural number k is a divisor of the natural number !: 1,
  • the prime number r is appropriate as the group number of the additive group E (K) consisting of points on the elliptic curve E on the finite field K in elliptic curve cryptography. To do.
  • the above-mentioned operation is performed within an even number range of 2 or more and a predetermined threshold value 2k or less.
  • the number k is generated, and the generated natural number k is stored using the storage device.
  • the prime number generation unit includes:
  • a prime number r having a Hamming weight of the prime number r equal to or less than a predetermined value is generated using the arithmetic device, and the generated prime number r is stored using the storage device.
  • the prime number generation unit includes:
  • a natural number is generated using the arithmetic unit, and the generated natural number is stored using the storage unit.
  • the obtained prime factor r is read from the storage device, and the prime factor r is output as a prime number!: Using the output device.
  • the prime number generation unit includes:
  • the obtained quotient n is read from the storage device, and using the arithmetic unit, it is determined whether the quotient n is a predetermined integer or less,
  • the obtained prime factor r is read from the storage device, and the prime factor r is output as a prime number!: Using the output device.
  • the prime number generation unit includes:
  • the integer ⁇ ( ⁇ ) is obtained using the arithmetic unit, and is obtained using the storage device.
  • the prime number generation unit includes:
  • a natural number ⁇ in which the Hamming weight of the natural number is equal to or less than a predetermined value is generated using the arithmetic unit, and the generated natural number is stored using the storage unit.
  • the prime number generation unit includes:
  • the prime number r that can be set as the group number in the elliptic curve cryptography arithmetic unit that speeds up the elliptic curve pairing operation by specializing in the group number having a specific format is described above. It is generated using an arithmetic device, and the generated prime number r is stored using the storage device.
  • the prime number generation unit includes:
  • the prime number r that can be set as a group number is added to the elliptic curve cryptography arithmetic unit that speeds up the elliptic curve pairing operation. Generated using the arithmetic device, and stores the generated prime number r using the storage device
  • the prime number generation unit includes:
  • r is generated using the arithmetic device, and the generated prime number r is stored using the storage device.
  • the prime number generation unit includes:
  • a prime number r that can be set as a group number is generated using the arithmetic device, and the generated prime number r is stored using the storage device.
  • the prime number generation unit includes:
  • (j8 x, y) (where ⁇ is the primitive cube root of 1 on the finite field ⁇ ), the elliptic curve cryptography arithmetic unit that speeds up the elliptic curve pairing operation, A prime number r that can be set is generated using the arithmetic device, and the generated prime number r is stored using the storage device.
  • the prime number generation unit includes:
  • a prime number r that can be set as is generated using the arithmetic unit, and the generated prime number r is stored using the storage unit.
  • the group number candidate output unit includes:
  • the elliptic curve cryptography arithmetic unit A prime number r having the same format as that is output as the group number candidate using the output device.
  • the group number candidate output unit includes:
  • the group number candidate output unit includes:
  • the prime number r that can be set as the same group number is output as the group number candidate using the output device.
  • the elliptic curve encryption parameter generation device further includes:
  • An input device for inputting information An input device for inputting information
  • the prime number r selected from the group number candidates output by the group number candidate output unit is input as a group number!:, And the group is input using the storage device.
  • the group number r input by the group number input unit and the expansion order k input by the expansion order input unit are read from the storage device, and the group number r and the A finite field order determining unit for determining the order q of the finite field K in the elliptic curve cryptographic operation based on the expansion order k and storing the determined order q of the finite field K using the storage device; ,
  • a finite field order output unit that reads the determined order q of the finite field K from the storage device and outputs the order q of the finite field K using the output device;
  • the finite body number determining unit includes:
  • the elliptic curve cryptography arithmetic unit that speeds up the elliptic curve pairing operation is set to the order of the finite field K.
  • the order q that can be set is determined using the arithmetic unit, and the order q of the determined finite field K is stored using the storage unit.
  • the finite body number determining unit includes:
  • pol (x) x k - ⁇ (where ⁇ is a variable on a finite field ⁇ and ⁇ is an element of a multiplicative group ⁇ * of a finite field ⁇ )
  • the order q which can be set as the order of the finite field ⁇ , in the elliptic curve cryptography computing device that has speeded up the elliptic curve pairing computation by expanding to the extension field K ′ is calculated using the above computing device. And store the order q of the defined finite field K using the storage device.
  • the finite body number determining unit includes:
  • the obtained candidate order q can be set as the order of the finite field K.
  • the finite body number determining unit is
  • arithmetic device uses the arithmetic device to generate a candidate q of the order that can be set as the order of the finite field K, store the generated candidate q of the order using the storage device, and Read out the expansion order k from the storage device, use the arithmetic unit to prime the expansion order k to find all prime factors ⁇ , and use the storage device to store all the prime factors ⁇ And
  • the obtained prime factors ⁇ are read out from the memory device, the product ⁇ of all the prime factors ⁇ is calculated using the arithmetic device, and the calculated product ⁇ is calculated using the memory device.
  • the expansion order k is read from the storage device, and it is determined whether or not the expansion order k is a multiple of the expansion order k force by using the arithmetic unit, and it is determined that the expansion order k is a multiple of 4. Then, the calculated product ⁇ ⁇ ⁇ ⁇ is read out from the storage device force, and the product device is doubled by using the arithmetic device to calculate the product 2 ⁇ , and the calculated product 2 ⁇ using the storage device is newly calculated.
  • the generated candidate q of the order is read from the storage device, and the integer q ⁇ 1 is calculated by subtracting 1 from the candidate candidate q of the order using the arithmetic unit, and the total is calculated using the storage device.
  • the calculated integer q ⁇ 1 and the calculated product ⁇ ⁇ ⁇ ⁇ are read out from the memory device power, and using the arithmetic device, it is determined whether or not the integer q ⁇ 1 is a multiple of the product ⁇ . When it is determined that the integer q— 1 is a multiple of the product ⁇ ⁇ ,
  • the calculated quotient N and all the obtained prime factors ⁇ are read from the storage device, and using the arithmetic unit, it is determined whether or not the quotient is a multiple of the prime factor ⁇ . For all prime factors ⁇ , if it is determined that the quotient is not a multiple of the prime factor ⁇ ,
  • the generated candidate order q can be set as the order of the finite field K.
  • the elliptic curve cryptography arithmetic device is:
  • An input device for inputting information An input device for inputting information
  • a storage device for storing information
  • a group number input unit that inputs the group number r, and stores the group number r input using the storage device;
  • the order q input by the finite order input unit and the group order r input by the group order input unit are read from the storage device, and the order q and the group are read using the arithmetic unit.
  • Place Elliptic curve pairing calculation is performed by elliptic curve pairing calculation that is fast by specializing in the group number having a specific format based on the group number r input by the number input unit.
  • the elliptic curve pairing calculation unit includes:
  • the above-mentioned arithmetic unit is used to perform the elliptic curve pairing calculation by the elliptic curve pairing calculation that is performed at high speed by using the self-homogeneous mapping ⁇ that can be efficiently calculated as the above-mentioned automorphic mapping ⁇ .
  • the elliptic curve pairing calculation unit includes:
  • Elliptic curve pairing that is fast by using an automorphism map whose absolute value of the discriminant D of the ring formed by the automorphism map ⁇ is smaller than a predetermined value as the automorphism map ⁇ .
  • An elliptic curve pairing calculation is performed using the above calculation device by calculation.
  • the elliptic curve pairing calculation unit includes:
  • the elliptic curve pairing calculation unit includes:
  • An elliptic curve cryptography arithmetic device includes:
  • An input device for inputting information An input device for inputting information
  • a storage device for storing information
  • the speed is increased.
  • Elliptic curve pairing calculation unit that performs elliptic curve pairing calculation using the converted elliptic curve pairing calculation;
  • An elliptic curve encryption parameter generation program includes:
  • a computer having a storage device for storing information, an output device for outputting information, and an arithmetic device for performing an operation
  • a prime number generation unit that generates a prime number r using the arithmetic unit and stores the generated prime number r using the storage device;
  • a group number aptitude determination unit that determines whether the prime number r is appropriate as the group number of K);
  • the prime number aptitude judgment unit determines that the prime number r is appropriate as the group number of the additive group E (K) that is the point power on the elliptic curve E on the finite field K in the elliptic curve cryptography
  • a prime number encryption unit that reads the prime number r generated by the prime number generation unit from the storage device and outputs the prime number r as a group number candidate using the output device; It functions as a device.
  • An elliptic curve cryptographic computation program includes:
  • a computer having an input device for inputting information, a storage device for storing information, and an arithmetic device for performing an operation,
  • the order q input by the finite order input unit and the group order r input by the group order input unit are read from the storage device, and the order q and the group are read using the arithmetic unit.
  • a storage device for storing information
  • a prime number generation unit that generates a prime number r using the arithmetic unit and stores the generated prime number r using the storage device;
  • a group number candidate output unit that reads the prime number r generated by the prime number generation unit from the storage device and outputs the prime number r as a group number candidate using the output device;
  • Embodiment 1 will be described with reference to FIGS.
  • a set of a secret key X and a public key y is prepared for each user.
  • the secret key X is kept secret by each user.
  • the public key y is disclosed to the public other than the user himself / herself.
  • user B wants to send data secretly to user A, user B encrypts the data using the public key y corresponding to user A. This ciphertext cannot be force-decrypted by user A who knows the secret key X.
  • user B needs to verify that public key y corresponds to user A. In other words, it is necessary to guarantee that the public key y is actually made public by user B. If such a guarantee cannot be obtained, a malicious third party will publish the public key y 'corresponding to his private key x' as if it were that of User B, This is because the user A can receive eavesdropping by receiving the ciphertext encrypted using the public key y 'without knowing it and decrypting it with his private key X'.
  • the elliptic curve cryptosystem 800 in this embodiment is disclosed by the user.
  • a private key and public key are generated based on the HD information.
  • ID-based public key cryptography a public key generated based on an identification name (ID) such as a name or device number can be used, so it is verified whether the public key really belongs to the user. There is no need to do this.
  • FIG. 1 is a system configuration diagram showing an example of the overall configuration of an elliptic curve cryptosystem 800 based on the disclosed HD information in this embodiment.
  • the center 300 generates an elliptic curve encryption parameter 510 and publishes it.
  • the elliptic curve cryptographic operation devices 200a and 200b acquire and store the elliptic curve cryptographic parameter 510 disclosed by the center 300.
  • the elliptic curve cryptographic operation apparatus 200b discloses its own ID (Identifier) information 521.
  • the center 300 acquires the HD information 521 disclosed by the elliptic curve cryptographic operation device 200b, and generates the secret key 531 of the elliptic curve cryptographic operation device 200b based on the acquired HD information 521.
  • the center 300 secretly transmits the generated secret key 531 to the elliptic curve cryptographic operation apparatus 200b.
  • the elliptic curve cryptographic operation device 200b receives and stores the secret key 531 transmitted by the center 300.
  • the elliptic curve cryptographic operation device 200a is an HD information released by the elliptic curve cryptographic operation device 200b.
  • the elliptic curve cryptographic operation device 200a encrypts the plaintext 601 to be transmitted to the elliptic curve cryptographic operation device 200b using the calculated public key, and encrypts the encrypted ciphertext 651 into the elliptic curve cryptographic operation device 200b. Send to.
  • the elliptic curve cryptographic operation device 200b is a ciphertext sent by the elliptic curve cryptographic operation device 200b.
  • the secret key is also generated based on the information of the user. Therefore, it is necessary to prevent a third party from generating the secret key. There is a point. Therefore, by using elliptic curve pairing calculation, a third party can obtain the secret key. It can be generated in such a way (Non-patent Document 3 etc.).
  • the elliptic curve encryption parameter generation device 100 and the elliptic curve encryption operation device 200 described in this embodiment are used for an elliptic curve encryption system that uses an elliptic curve pairing operation, and were disclosed as an example thereof.
  • An elliptic curve cryptosystem based on HD information is explained.
  • an elliptic curve cryptosystem using an elliptic curve pairing operation can be applied not only to an elliptic curve cryptosystem based on public information but also to other elliptic curve cryptosystems. .
  • An elliptic curve cryptosystem using an elliptic curve pairing operation requires an enormous amount of calculation to solve the discrete logarithm problem, so that a third party knows secret information such as a secret key. Is built on what is almost impossible (with current computer capabilities).
  • the discrete logarithm problem is that for the two elements (elements) g and g of the algebraic group (G, +) (addition is defined and is a group with respect to addition.
  • Mg is the sum of g and m times).
  • the other is the algebraic group G, the multiplicative group ⁇ ⁇ formed by the pairing e (P, Q) that maps the direct product of two points P and Q on the elliptic curve E on the finite field K onto the finite field K '.
  • 'It is a discrete logarithm problem when * is considered.
  • the elliptic curve pairing is a value e (P, Q) calculated for two points P and Q on the elliptic curve ⁇ on the finite field ⁇ .
  • the point P is added a times.
  • bQ is the point obtained by adding the point Q b times in the additive group E (K).
  • e (-, is a pairing that takes a value on the multiplicative group K, * of the finite field K.
  • the difficulty of the elliptic curve discrete logarithm problem is that the number of elements (group number) of the additive group E (K) formed by the points on the elliptic curve E (and the infinity point O) on the finite field K! The longer the bit length of r, the more difficult it is to solve the elliptic curve discrete logarithm problem.
  • the difficulty of the finite field multiplicative group discrete problem is related to the number of elements (order) q k of the finite field K '.
  • the longer the bit length of q k the more finite field multiplicative group discrete problems are solved. It becomes difficult.
  • q is the number (order) of elements of the finite field K
  • k is a natural number.
  • a finite field of order q (Finite Field, Galois Field! /) Is represented as GF (q).
  • the finite field GF (p) can be regarded as a set of integers from 0 to p ⁇ 1.
  • Addition in the finite field GF (p) is calculated by using normal integer addition. However, if the calculation result is greater than p, the remainder divided by p is taken as the calculation result. That is, the addition of the element a and the element b of the finite field GF (p) is calculated by using an arithmetic unit such as a computer by calculating (a + b) mod p (mod represents a modulus) be able to.
  • Subtraction in the finite field GF (p) is defined as addition of inverse elements in addition.
  • the inverse element in addition means an element that, when added, becomes a unit element (0) in addition.
  • a + (-a) 0 (mod p)
  • a p-a.
  • the subtraction of subtracting element b from element a of the finite field GF (p) can be computed by computing (a + p— b) mod q (or more simply (a— b) mod p). It can be calculated using an arithmetic device such as.
  • Multiplication in the finite field GF (p) is also calculated by using ordinary integer multiplication. As in the case of addition, if the calculation result is larger than p, the remainder obtained by dividing by p is taken as the calculation result. That is, the multiplication of the element a and the element b of the finite field GF (p) can be calculated using an arithmetic unit such as a computer by calculating (aXb) mod p.
  • Division in the finite field GF (p) is defined as multiplication of the inverse element in multiplication.
  • the inverse element in multiplication means the element which becomes unit element (1) in multiplication as in the case of addition.
  • the division of dividing the original b the element a of the finite field GF (p), by calculating the (aXb _1) mod p may be calculated by using an arithmetic unit such as a computer.
  • n 2
  • n 2
  • first-order polynomial f (X) ax n_1 + ax n_2 H ha x + a (x is a variable.
  • a is an integer between 0 and p—1 .
  • i can be regarded as a set of 0 to n—an integer of 1.
  • the element of the finite field GF (p n ) is stored in the storage device as an array a [n] of n integers, for example, the coefficient is an integer between 0 and n ⁇ 1. This is feasible.
  • the element of the finite field GF (p n ) is stored in the storage device as an array of n integers a [n], so the i-th (i Add the element a [i] from 0 to n—integer 1) and the i-th element b [i] of the array b [n] (if necessary, find the remainder divided by p)
  • the addition in the finite field GF (p n ) can be calculated using an arithmetic device such as a computer.
  • the element of the finite field GF (p n ) is stored in the storage device as an array of n integers a [n], so the i-th (i Is a new array by subtracting the i-th element b [i] of the element a [i] force array b [n] (requires the remainder divided by p if necessary)
  • the subtraction in the finite field GF (p n ) can be calculated using an arithmetic device such as a computer.
  • A is an integer from 0 to p— 1.
  • i is an integer from 0 to n.
  • a ⁇ 0) polynomial, and irreducible (if an element of the finite field GF (p n ) is assigned to po l (x), there should be no element with pol (x) 0)
  • the element of the finite field GF (p n ) is stored in the storage device as an array a [n] of n integers.
  • I-th element (i is an integer from 0 to n 1) and j-th element j (j is an integer from 0 to n— 1) b [j] (If necessary, find the remainder after dividing by p), if i + j ⁇ n, add to the (i + j) th element c [i + j] of the new array c [n] (The array c [n] is initialized with 0).
  • n is a natural number
  • an operation for determining the point R that is an element of E (K) is defined. This is called addition on an elliptic curve.
  • the unit element (zero element) of the addition on the elliptic curve is the point O at infinity.
  • the addition on the elliptic curve is defined geometrically, but by converting this definition to an algebraic one, the elliptic operation is performed using the four arithmetic operations defined on the finite field K. Additivity on the curve can be calculated.
  • an element of E (K) is replaced with an element X of a finite field K and a finite number.
  • the arithmetic operation defined on the finite field K can be calculated using an arithmetic device such as a computer, so the addition on the elliptic curve is calculated using an arithmetic device such as a computer. It is also possible.
  • the public key cipher using the additive group E (GF (q)) is the elliptic cipher (or elliptic curve cipher) t, and in particular, the order (number of elements) of the additive group E (GF (q)) is It is cryptographically important to be divisible by the prime number r.
  • the main operation in the conventional elliptic cryptosystem was to calculate the scalar multiple aP (the point P added a times) for the integer a and the point P.
  • calculating the value of pairing e (P, Q) is also the main operation. Therefore, it is necessary to calculate the value of pairing e (P, Q) at high speed.
  • FIG. 2 is a diagram showing an example of the appearance of the elliptic curve cryptographic operation apparatus 200 in this embodiment.
  • an elliptic curve cryptographic operation device 200 includes a system unit 910, a display device 901 having a CRT (Cathode Ray Tube) or LCD (liquid crystal) display screen, a keyboard 90 2 (K / B), a mouse 903, and an FDD904.
  • Hardware resources such as (Flexible Disk Drive), compact disk device 905 (CDD), printer device 906, and scanner device 907 are provided, and these are connected by cables and signal lines.
  • the system unit 910 is a computer and is connected to the facsimile machine 932 and the telephone 931 with a cable, and is connected to the Internet 940 through a local area network 942 (LAN) and a gateway 941.
  • LAN local area network
  • the elliptic curve cryptography arithmetic unit 200 may be such a computer.
  • the elliptic curve cryptographic operation device 200 should include at least an operation device that performs operations, a storage device that stores information, and an input / output device that exchanges information with the outside! /.
  • FIG. 3 shows hardware resources of the elliptic curve cryptographic operation apparatus 200 according to this embodiment. It is a figure which shows an example.
  • an elliptic curve cryptographic operation apparatus 200 includes a CPU 911 (also referred to as a central processing unit, a central processing unit, a processing unit, or an arithmetic unit) that executes a program.
  • storage devices such as optical disk units and memory card read / write devices can be used!
  • the RAM 914 is an example of a volatile memory.
  • the storage media of the ROM 913, the FDD 904, the CDD 905, and the magnetic disk device 920 are examples of nonvolatile memories. These are examples of storage devices or storage units.
  • the communication board 915, the keyboard 902, the scanner device 907, the FDD 904, and the like are examples of an input unit and an input device.
  • the communication board 915, the display device 901, the printer device 906, and the like are examples of an output unit and an output device.
  • the communication board 915 is connected to the facsimile machine 932, the telephone 931, the LAN 942, and the like.
  • the communication board 915 is not limited to the LAN 942, but may be connected to the Internet 940, a WAN (Wide Area Network) such as ISDN, or the like. If the Internet 940 or ISDN is connected to a WAN such as IS DN !, the gateway 941 is unnecessary.
  • the magnetic disk device 920 stores an operating system 921 (OS), a window system 922, a program group 923, and a file group 924.
  • the programs in the program group 923 are executed by the CPU 911, the operating system 921, and the window system 922.
  • the program group 923 stores programs that execute the functions described as “ ⁇ unit” and “ ⁇ means” in the description of the embodiments described below.
  • the program is read and executed by the CPU 911.
  • the arrows in the flowcharts described in the following description of the embodiments mainly indicate input / output of data and signals.
  • the data and signal values are RAM914 memory, FDD904 flexible disk, CDD905 compact disk, Recording is performed on a recording medium such as a magnetic disk of the magnetic disk device 920, other optical disks, mini disks, and DVDs (Digital Versatile Disks). Data and signals are transmitted on-line via the bus 912, signal line cable and other transmission media.
  • firmware and software are stored as programs on a recording medium such as a magnetic disk, a flexible disk, an optical disk, a compact disk, a mini disk, and a DVD.
  • the program is read by CPU911 and executed by CPU911.
  • the program causes the computer to function as “to part” and “to means” described below.
  • it causes the computer to execute the procedures of “to part” and “to means” described below.
  • FIG. 4 is a block configuration diagram showing an example of the configuration of the internal blocks of the elliptic curve cryptographic operation apparatus 200 in this embodiment.
  • the elliptic curve cryptographic operation device 200 includes an elliptic curve cryptographic parameter input unit 210, an m information input unit 221, a plaintext input unit 222, a ciphertext input unit 223, a secret key input unit 224, and a cryptographic calculation unit 230. It includes a key calculation unit 241, a ciphertext generation unit 242, a ciphertext decryption unit 243, a ciphertext output unit 252, a plaintext output unit 253, a secret key storage unit 294, and the like.
  • the elliptic curve encryption parameter input unit 210 inputs parameters necessary for the elliptic curve encryption calculation using the input device, and stores the input parameters using the storage device.
  • Elliptic curve encryption parameters include values of the order q of the finite field GF (q) where the coordinates X and Y of the point (X, Y) on the elliptic curve E take the value, and the pairing e ( ⁇ ,-).
  • the finite field GF (q k ), the order of extension k that determines the order q k also called the embedding degree (Embedding Degree)
  • the elliptic curve E: Y 2 X 3 + a
  • the elliptic curve encryption parameter input unit 210 includes a finite field order input unit 211, an expansion order input unit 212, an elliptic curve coefficient input unit 213, a group order input unit 214, and the like.
  • the finite field order input unit 211 inputs the order q of the finite field GF (q) using an input device.
  • the order q is, for example, an integer having a bit length of 320 bits (prime p or power of prime p). Therefore, a 40-byte storage area is required to store the order q in the storage device.
  • the finite field order input unit 211 stores the order q of the input finite field GF (q) using a storage device.
  • the expansion order input unit 212 inputs the expansion order k using an input device.
  • the expansion order k is an integer of about 2 to 20, for example. Therefore, a 1-byte storage area is sufficient to store the expansion order k in the storage device.
  • the expansion order input unit 212 stores the input expansion order k using a storage device.
  • the operation for obtaining the pairing e (', can be performed at high speed, so k is preferably an even number.
  • the elliptic curve coefficient input unit 213 inputs the coefficients a and b of the elliptic curve E using an input device. Since the coefficients a and b are elements of the finite field GF (q), when q is a prime number p, it is an integer from 0 to p ⁇ 1. Therefore, in order to store the coefficients a and b in the storage device, the same 40-byte storage capacity as the order q is required.
  • the elliptic curve coefficient input unit 213 stores the coefficients a and b of the input elliptic curve E using a storage device.
  • Group number input section 214 inputs group number r of additive group E (K) using an input device.
  • the bit length of group number r is less than or equal to q. Therefore, a 40-byte storage area is sufficient to store the group number r in the storage device.
  • the group number input unit 214 stores the input group number r using a storage device.
  • Information input section 221 uses the input device to input information on the other party to whom the ciphertext is to be transmitted.
  • the information includes, for example, an email address, an employee number, and a device serial number.
  • the Ih blueprint input unit 221 stores the input Ih blueprint using a storage device.
  • Public key calculation unit 241 reads the I blueprint input by information input unit 221 from the storage device.
  • the public key calculation unit 241 is based on the elliptic curve pairing encryption algorithm. From the read information, calculate the public key of the other party to whom you want to send the ciphertext. In this process, it is necessary to add points on elliptic curve E and calculate elliptic curve pairing.
  • the public key calculation unit 241 performs these calculations by calling the cryptographic calculation unit 230.
  • the public key calculation unit 241 stores the calculated public key using a storage device.
  • the plaintext input unit 222 uses the input device to input data (plaintext) to be transmitted to the other party without being seen by a third party.
  • the plaintext input unit 222 stores the input data using a storage device.
  • the ciphertext generation unit 242 reads out the data input by the plaintext input unit 222 and the public key calculated by the public key calculation unit 241 from the storage device.
  • the ciphertext generation unit 242 generates ciphertext from the read data and public key based on the elliptic curve pairing encryption algorithm. In this process, it is necessary to add points on elliptic curve E and to calculate elliptic curve pairing.
  • the ciphertext generation unit 242 also performs these operations by calling the cipher operation unit 230.
  • the ciphertext generation unit 242 stores the generated ciphertext using a storage device.
  • the data (plaintext) that is the basis of the ciphertext may be data generated inside the elliptic curve cryptographic operation apparatus 200 that is not input from the outside.
  • data indicating the state of the elliptic curve cryptographic operation device 200 or data obtained by decrypting an externally input ciphertext is stored using a storage device, and a ciphertext is generated based on this data.
  • Unit 242 may generate the ciphertext.
  • the ciphertext output unit 252 reads the ciphertext generated by the ciphertext generation unit 242 from the storage device.
  • the ciphertext output unit 252 outputs the read ciphertext using the output device.
  • the ciphertext is transmitted to the other party who wants to transmit via the Internet.
  • the ciphertext is transmitted to the other party or the relay apparatus to be transmitted using the wireless transmission apparatus.
  • Secret key input unit 224 inputs the secret key of elliptic curve cryptographic operation apparatus 200 using the input device. This is generated by the center 300 based on the HD information of the elliptic curve cryptographic operation apparatus 200 and secretly transmitted to the elliptic curve cryptographic operation apparatus 200.
  • the secret key input unit 224 stores the input secret key in the secret key storage unit 294.
  • the secret key storage unit 294 stores the secret key input by the secret key input unit 224 using a storage device. Since the secret key needs to be stored so as not to be known to a third party, it is preferable that the storage device used by the secret key storage unit 294 has tamper resistance.
  • the ciphertext input unit 223 uses the input device to input the ciphertext transmitted from another elliptic curve cryptography arithmetic device to the elliptic curve cryptography arithmetic device 200.
  • ciphertext is received via the Internet.
  • the ciphertext is received using a wireless reception device.
  • the ciphertext input unit 223 stores the input ciphertext using a storage device.
  • the ciphertext decryption unit 243 reads the ciphertext input by the ciphertext input unit 223 and the secret key stored by the secret key storage unit 294 from the storage device.
  • the ciphertext decryption unit 243 decrypts the original data (plain text) from the read ciphertext and secret key based on the elliptic curve bearing encryption algorithm. In this process, it is necessary to add points on elliptic curve E and to calculate elliptic curve pairing.
  • the ciphertext decryption unit 243 also performs these operations by calling the cipher operation unit 230.
  • the ciphertext decryption unit 243 stores the decrypted data (plaintext) using the storage device.
  • the plaintext output unit 253 reads the data decrypted by the ciphertext decryption unit 243 from the storage device.
  • the plaintext output unit 253 outputs the decrypted data using the output device.
  • a display device is used to display a screen generated from the decrypted data.
  • the decrypted data may be used inside the elliptic curve encryption arithmetic apparatus 200, which need not be output to the outside.
  • it may be interpreted as some command (for example, an instruction to change the setting of the elliptic curve encryption parameter) to the elliptic curve cryptographic operation apparatus 200, and an operation based on the command may be performed.
  • the cryptographic computation unit 230 performs computations necessary for cryptographic computation based on the elliptic curve pairing cryptographic algorithm, such as addition of points on the elliptic curve E and calculation of elliptic curve pairing.
  • the cryptographic computation unit 230 includes a finite field computation unit 231, an elliptic curve computation unit 232, an elliptic curve pairing computation unit 233, and the like.
  • the finite field operation unit 231 performs four arithmetic operations such as addition, subtraction, multiplication, and division defined on the finite field GF (q) or the finite field GF (q k ) using an operation device.
  • the elliptic curve calculation unit 232 uses an arithmetic unit to calculate an elliptic curve on the finite field GF (q). Perform operations such as adding points on E and scalar multiplication (calculating a point obtained by adding the same point an integer number of times). When performing these calculations, if it is necessary to perform the four arithmetic operations defined on the finite field, these calculations are performed by calling the finite field calculation unit 231.
  • the elliptic curve pairing calculation unit 233 uses a calculation device to perform calculations such as calculating a pairing value of two points on the elliptic curve E on the finite field GF (q). When performing these calculations, if it is necessary to add points on the elliptic curve or perform the four arithmetic operations defined on the finite field, call the elliptic curve calculation unit 232 or the finite field calculation unit 231. By performing these operations.
  • FIG. 5 is a block configuration diagram showing an example of the configuration of the internal blocks of the elliptic curve pairing calculation unit 233 in this embodiment.
  • the elliptic curve pairing calculation unit 233 includes a point input unit 331, a first calculation unit 332, an auxiliary calculation unit 333, a second calculation unit 334, a power calculation unit 335, a pairing output unit 336, and the like.
  • the point input unit 331 obtains the point P and the point Q on the elliptic curve on the finite field GF (q) for which pairing is to be obtained, such as the pair of the point P and the point Q such as the ciphertext generation unit 242. Enter the ring value from the block you want to calculate. For example, when the point input unit 331 is realized by a program, an integer array (or a pointer or reference indicating the array) indicating the points P and Q is received as an argument of a function or subroutine. Enter point P and point Q. The point input unit 331 stores the input points P and Q using a storage device.
  • the first calculation unit 332 reads the points P and Q input by the point input unit 331 from the storage device.
  • the first calculation unit 332 uses the calculation device to perform the first half of the pairing calculation from the read points P and Q, and obtain the intermediate progress f.
  • the intermediate course f is a value on the finite field GF (q k ).
  • the first calculation unit 332 stores the obtained intermediate progress f using a storage device.
  • the auxiliary computation unit 333 receives from the first computation unit 332 three points on the elliptic curve on the finite field GF (q) and an integer i.
  • the three input points are point A, point B, and point Q.
  • the auxiliary calculation unit 333 stores the point A, the point B, the point Q, and the integer i using a storage device.
  • the auxiliary calculation unit 333 reads the input point A, point B, point Q, and integer i from the storage device.
  • the auxiliary calculation unit 333 uses the calculation device to calculate the value g necessary for the first calculation unit 332 to perform the pairing calculation from the read points A, B, and Q, and the second calculation unit 334 The value s necessary for the pairing operation is calculated.
  • g and s are values on GF (q k ).
  • the auxiliary calculation unit 333 stores the calculated values g and s using a storage device. At this time, s is stored as the i-th element of the original array of the finite field GF (q k ).
  • the auxiliary calculation unit 333 outputs the stored g to the first calculation unit 332.
  • the second calculation unit 334 reads the intermediate process f obtained by the first calculation unit and the value s calculated by the auxiliary calculation unit 333 from the storage device.
  • the second calculation unit 334 performs the latter half of the pairing calculation from the read intermediate progress f and the value s by using the arithmetic device, and obtains the intermediate progress f ′.
  • the intermediate course f ′ is a value on the finite field GF (q k ).
  • the second calculation unit 334 stores the obtained intermediate progress f ′ using the storage device.
  • the power calculation unit 335 reads the intermediate process f ′ obtained by the second calculation unit 334 from the storage device.
  • the power calculator 335 calculates the (q k — l) Zr power of the intermediate progress f ′ using an arithmetic unit. Since q k -l is a multiple of r, this operation finds the power of f. Therefore, it can be calculated by multiplying f 'by a finite number of times.
  • the power calculation unit 335 stores the calculation result using a storage device.
  • the pairing output unit 336 outputs the calculation result calculated by the power calculation unit 335 from the storage device.
  • the pairing output unit 336 outputs the read calculation result to the block that has called the elliptic curve pairing calculation unit 233.
  • 6 and 7 are flowcharts showing an example of the flow of calculation processing for calculating the pairing value of tito pairing in a calculation method that is not fast-speeded.
  • the elliptic curve pairing calculation unit inputs a point P and a point Q on the elliptic curve E on the finite field GF (q k ).
  • the order of the point P is assumed to be equal to the group order r of the additive group E (GF (q)).
  • rP 0 (adding point P times becomes infinity point 0 (the unit element of the Karo method group E (GF (q)))).
  • the finite field GF (q k ) is an extension of the finite field GF (q)
  • the point on the elliptic curve E on the finite field GF (q) is the ellipse on the finite field GF (q k ). Included in points on curve E.
  • the elliptic curve pairing calculation unit stores the input point P and point Q using the storage device.
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficients a and b of the elliptic curve E and the group number r of the additive group E (GF (q)).
  • the elliptic curve pairing calculation unit randomly selects a point on the elliptic curve E on the finite field GF (q k ) using the calculation device.
  • the elliptic curve pairing calculation unit secures a storage area for storing the point S on the elliptic curve E on the finite field GF (q k ) using the storage device, and stores the selected point as the point S. To do.
  • the elliptic curve pairing calculation unit calculates the sum of the point Q and the point S on the elliptic curve E on the finite field GF (q k ) using the calculation device.
  • the elliptic curve pairing calculation unit secures a storage area for storing the point Q ′ on the elliptic curve E on the finite field GF (q k ) using a storage device, and calculates the calculated points Q and S. Is stored as a point Q '.
  • the elliptic curve pairing calculation unit reads the point P on the elliptic curve E on the finite field GF (q k ) as the storage device power.
  • the elliptic curve pairing calculation unit secures a storage area for storing the point A on the elliptic curve E on the finite field GF (q k ) using the storage device, and uses the read point P as the point A.
  • the elliptic curve pairing computation unit uses a storage device to generate a finite field GF (q k
  • the storage area for storing the pairing value f on) is secured, and the constant 1 on the finite field GF (q k ) is stored as the pairing value f.
  • the elliptic curve pairing operation unit secures a storage area for storing the integer m using a storage device, and sets the bit length of the group number r of the additive group E (GF (q)). Store u as an integer m.
  • the elliptic curve pairing calculation unit reads the point A from the storage device.
  • Equation 1 is (3X 2 + a) (X— X) — 2Y (Y
  • the elliptic curve pairing calculation unit secures a storage area for storing the elements c, d, e of the finite field GF (q k ) using a storage device, and calculates the coefficients c, d, e of the calculated equation 1
  • a storage area for storing the elements c, d, e of the finite field GF (q k ) using a storage device, and calculates the coefficients c, d, e of the calculated equation 1
  • the elliptic curve pairing calculation unit reads the coefficients c, d, e of Equation 1 calculated in S108, and reads the storage device power.
  • the elliptic curve pairing calculation unit obtains an intersection R ′ between the tangent of the elliptic curve E at the point A represented by Equation 1 and the elliptic curve E using the calculation device.
  • the elliptic curve pairing calculation unit secures a storage area for storing the point R ′ on the elliptic curve E on the finite field GF (q k ) using a storage device, and stores the obtained intersection R ′.
  • the elliptic curve pairing calculation unit reads the intersection R ′ obtained in S109 and reads the storage device force.
  • the elliptic curve pairing calculation unit secures a storage area for storing the element u of the finite field GF (q k ) using a storage device, and stores the coefficient u of the calculated equation V.
  • the elliptic curve pairing calculator reads the coefficient u of the equation V calculated in S110 from the storage device.
  • the elliptic curve pairing calculation unit stores the obtained intersection as a new point A using the storage device V.
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficients c, d, e of Equation 1 calculated in S108 and the point Q 'calculated in S104.
  • the elliptic curve pairing calculation unit uses an arithmetic unit to place the coordinates (X, Y) of the point Q 'on the left side cX + dY + e of Equation 1.
  • the elliptic curve pairing calculation unit is a storage device.
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficients c, d, e of Equation 1 calculated in S108 and the point S selected in S103.
  • the elliptic curve pairing calculation unit uses the calculation device to substitute the coordinates (X, Y) of point S for cX + dY + e on the left side of Equation 1.
  • the entered value cX + dY + e is calculated.
  • the elliptic curve pairing calculator uses a storage device
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficient u of the equation V calculated in S110 and the point Q 'calculated in S104.
  • the elliptic curve pairing calculator substitutes the coordinates (X, Y) of point Q 'for the left side X—u of equation V using an arithmetic unit.
  • the elliptic curve pairing calculation unit uses a storage device to store the value X — u.
  • the storage area for storing the element v (Q ') of GF (q k ) is allocated, and the calculated value X — u is changed to v (Q
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficient u of the equation V calculated in S110 and the point S selected in S103.
  • the elliptic curve pairing calculation unit uses the calculation device to substitute the value X obtained by substituting the coordinates (X, Y) of the point S for the left side X—u of equation V. —Calculate u.
  • the elliptic curve pairing calculation unit uses a storage device to secure a storage area for storing the element v (S) of the finite field GF (q k ) and set the calculated value X — u as v (S).
  • the elliptic curve pairing calculation unit calculates the pairing value f and the values l (Q '), 1 (S), v (Q'), v (S) calculated in S112 to S115. It also reads the storage device power. The elliptic curve pairing calculation unit calculates (f 2 Xl (Q ′) Xv (S)) / (v (Q ′) X1 (S)) using an arithmetic unit. The elliptic curve pairing calculation unit uses the storage device to calculate the calculated value (f 2 XI (Q ') Xv (S)) / (v (Q') Xl (S)) as the new pairing value f
  • the elliptic curve pairing calculation unit uses the storage device to calculate the calculated value (f 2 XI (Q ') Xv (S)) / (v (Q') Xl (S)) as the new pairing value f
  • the elliptic curve pairing calculation unit uses an arithmetic unit to add the additive group E (GF
  • the elliptic curve pairing calculation unit reads point A and point P from the storage device.
  • Equation 1 (Y — Y) (X
  • the elliptic curve pairing calculation unit stores the calculated coefficients c, d, e of Equation 1 using a storage device.
  • the elliptic curve pairing computing unit reads the coefficients c, d, e of Equation 1 calculated in S118, and reads the storage device power.
  • the elliptic curve pairing calculation unit obtains an intersection R ′ between the straight line passing through the point A and the point P represented by Equation 1 and the elliptic curve E using the calculation device.
  • the elliptic curve pairing calculation unit stores the obtained intersection R ′ using a storage device.
  • the elliptic curve pairing calculation unit reads the intersection R 'obtained in S119 and reads the storage device force.
  • the elliptic curve pairing calculation unit stores the coefficient U of the calculated equation V using a storage device.
  • the elliptic curve pairing calculation unit reads the coefficient u of the equation V calculated in S120 from the storage device.
  • the elliptic curve pairing calculation unit stores the obtained intersection as a new point A using the storage device V.
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficients c, d, e of Equation 1 calculated in S118 and the point Q 'calculated in S104.
  • the elliptic curve pairing calculation unit uses an arithmetic unit to place the coordinates (X, Y) of the point Q 'on the left side cX + dY + e of Equation 1.
  • the elliptic curve pairing calculation unit stores the calculated value cX + dY + 6 as 1 ′) using the storage device.
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficients c, d, e of Equation 1 calculated in S118 and the point S selected in S103.
  • the elliptic curve pairing calculation unit uses the calculation device to substitute the coordinates (X, Y) of point S for cX + dY + e on the left side of Equation 1.
  • the entered value cX + dY + e is calculated.
  • the elliptic curve pairing calculator uses a storage device
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficient u of the equation V calculated in S120 and the point Q 'calculated in S104.
  • the elliptic curve pairing calculator substitutes the coordinates (X, Y) of point Q 'for the left side X—u of equation V using an arithmetic unit.
  • the elliptic curve pairing calculation unit uses a storage device to store the value X — u.
  • the storage area for storing the element v (Q ') of GF (q k ) is allocated, and the calculated value X — u is changed to v (Q
  • the elliptic curve pairing calculation unit also reads out the storage device power of the coefficient u of the equation V calculated in S120 and the point S selected in S103.
  • Elliptic curve pairing calculator Using the arithmetic unit, the value X obtained by substituting the coordinates (X, Y) of the point S for the left side X—u of the equation V
  • the elliptic curve pairing calculation unit uses a storage device to secure a storage area for storing the element v (S) of the finite field GF (q k ) and set the calculated value X ⁇ u as v (S).
  • the elliptic curve pairing computation unit calculates the pairing value f and the values l (Q '), 1 (S), v (Q'), v (S) calculated in S122 to S125. It also reads the storage device power.
  • the elliptic curve pairing calculation unit calculates (fXl (Q ′) Xv (S)) Z (v (Q ′) Xl (S)) using a calculation device.
  • the elliptic curve pairing calculation unit uses the storage device to calculate the calculated value (f Xl (Q ') Xv (S)) Z (v (Q') X 1 (S)) as the new pairing value f
  • the elliptic curve pairing calculation unit reads the integer m from the storage device.
  • the elliptic curve pairing calculation unit uses an arithmetic unit to subtract 1 from the integer m to obtain an integer m ⁇ 1.
  • the elliptic curve pairing calculation unit stores the obtained integer m ⁇ 1 as a new integer m using a storage device.
  • the elliptic curve pairing calculation unit reads the integer m from the storage device.
  • the elliptic curve pairing calculation unit checks whether m is 0 or more using a calculation device. If m ⁇ 0, return to S108. If m ⁇ 0, proceed to S129.
  • the elliptic curve pairing calculation unit reads the pairing value f from the storage device.
  • the elliptic curve pairing calculation unit calculates f to the (q k ⁇ l) Zr power using a calculation device.
  • the elliptic curve pairing calculation unit calculates f to the (q k — l) Zr power by multiplying f by (q k — l) Zr times using the calculation device.
  • the elliptic curve pairing calculation unit uses the storage device to store the calculated f to the (q k — l) Zr power as a new f.
  • the elliptic curve pairing calculation unit reads the pairing value f calculated in S129 from the storage device.
  • the elliptic curve pairing calculator outputs the read pairing value f.
  • the pairing value for Vee pairing can be obtained in the same procedure until S128. it can.
  • the pairing value calculation time becomes shorter as the grouping number r of the group number r of the additive group E (GF (q)) is smaller. .
  • the noming weight means the number of bits having a bit value of 1 when a certain integer is expressed in binary.
  • the bit value r force of the m-th bit of the group number r in that case, the force for executing S118 to S126.
  • r force ⁇ S118 to S126 are not executed.
  • This calculation procedure is a calculation procedure for performing an operation of multiplying the point P by r and calculating a pairing value using a linear equation obtained in the process.
  • FIG. 8 to FIG. 10 are flowchart diagrams showing an example of the flow of calculation processing for calculating the pairing value of the date pairing by the elliptic curve pairing calculation unit 233 in this embodiment.
  • This calculation process uses an algorithm called Miller lite (Miller lite) algorithm that utilizes a homomorphic map that can be calculated efficiently.
  • the integer Hamming weight is 2.
  • the storage device is used to store c values (arrays) for storing the value s on the finite field GF (q k ). s [c]) is secured
  • the point input unit 331 generates a point P on the elliptic curve E on the finite field GF (q k ). , Enter the point Q.
  • the point input unit 331 uses a storage device to secure a storage area for storing the points P and Q, and stores the input points P and Q.
  • the point P is a point on the elliptic curve E on the finite field GF (q) which is a subfield of the finite field GF (q k ). That is, the point P is an element of the additive group E (GF (q)).
  • a point Q is a point on an elliptic curve E 'on a part of the organic Kiritai GF (q k) finite GF (q k / 2), efficient manner computable endomorphism This is the point mapped using ⁇ . That is, the point Q is an element of the additive group E (GF (q k / 2 )).
  • kZ2 must be an integer, and therefore only when the expansion order k is an even number.
  • an auto-homogeneous map ⁇ that can be computed efficiently is an element of the additive group E (GF (q k / 2 )) and an element of the same additive group E (GF (q k / 2 )).
  • ⁇ ( ⁇ ) ⁇ ⁇ ( ⁇ ( ⁇ )
  • a point ( ⁇ ⁇ ) that is a scalar multiplication of a point on the elliptic curve is defined as the point ⁇ added ⁇ times. If this is calculated prudently, the addition on the elliptic curve must be repeated. Even with a slightly more efficient algorithm, the addition on the elliptic curve is calculated up to (21og ⁇ ) times
  • the computing power to find ⁇ ( ⁇ ) If the amount of computation is less than the computation to find ⁇ ⁇ , which is a scalar multiplication of the points on the elliptic curve, find ⁇ ( ⁇ ) instead of finding ⁇ ⁇ By performing the calculation, it becomes possible to calculate the scalar multiple of the points on the elliptic curve at high speed.
  • a self-homogeneous map ⁇ that requires a relatively small amount of computation for obtaining ⁇ ( ⁇ ) is called a self-homogeneous map that can be computed efficiently.
  • ⁇ 2 ( ⁇ ) is a point ⁇ ( ⁇ ) that is a map of point ⁇ ( ⁇ ( ⁇ )).
  • is an infinite point
  • Is an integer obtained by D b 2 -4ac.
  • the discriminant D takes a negative value.
  • ⁇ : (X, y) ⁇ ( ⁇ x, iy) may be used as a self-homogeneous map ⁇ that can be efficiently calculated.
  • other self-homogeneous maps may be used. Note that it is preferable to use the auto-homogeneous map ⁇ having a small absolute value of the discriminant D of the ring formed by the auto-homogeneous map because the calculation is fast.
  • the first calculation unit 332 reads out the coefficients a and b of the elliptic curve E and the group number r of the additive group E (GF (q)) from the storage device.
  • the first calculation unit 332 reads a point P on the elliptic curve E on the finite field GF (q k ).
  • the first computing unit 332 secures a storage area for storing the point A on the elliptic curve E on the finite field GF (q k ) using the storage device, and stores the read point P as the point A.
  • the first computing unit 332 uses a storage device to secure a storage area for storing the pairing value f on the finite field GF (q k ) and to store the finite field GF (q k ). Store the above constant 1 as the pairing value f.
  • first computing unit 332 uses a storage device to secure a storage area for storing integer j, and stores integer 1 as integer j.
  • first computing unit 332 uses a storage device to secure a storage area for storing integer i, and stores integer 1 as integer i.
  • the first calculation unit 332 reads point A, point Q, and integer j from the storage device.
  • the first computing unit 332 has three points (point A and point) on the elliptic curve E on the finite field GF (q k ).
  • A, point Q) and the integer j are input to the auxiliary arithmetic unit 333.
  • the auxiliary calculation unit 333 receives the finite field input to the first calculation unit 332 in S208.
  • the auxiliary calculation unit 333 stores the calculated point A as a new point A using the storage device.
  • the auxiliary calculation unit 333 secures a storage area for storing the value g using the storage device, and stores the calculated value g.
  • the auxiliary calculation unit 333 stores the calculated value s in the i-th (s [i]) storage area reserved in advance for storing the value s using the storage device.
  • FIG. 11 is a flowchart showing an example of the flow of a toe pairing auxiliary calculation process by the auxiliary calculation unit 333 in this embodiment.
  • the auxiliary arithmetic unit 333 inputs three points on the elliptic curve E on the finite field GF (q k ) and an integer i.
  • the three input points are called point A, point B, and point Q in this order.
  • point A and point Q are input from the first calculation unit 332 as point A and point Q.
  • point B may be input from the first calculation unit 332 or point P may be input to the point B.
  • the auxiliary arithmetic unit 333 uses a storage device to secure and input storage areas for storing the points A, B, Q, and the integer i on the elliptic curve E on the finite field GF (q k ). Stores point A, point B, point Q, and integer i.
  • the auxiliary arithmetic unit 333 obtains the points A and B input in S281 from the storage device.
  • the auxiliary calculation unit 333 secures a storage area for storing the values m and c on the finite field GF (q k ) using the storage device, and stores the obtained coefficients m and c of Equation 1.
  • S283 This is a helper operation. Read the coefficients m and c of Equation 1 obtained in S282 and the points A and B input in S281 from the storage device.
  • the auxiliary calculation unit 333 calculates the sum of the point A and the point B based on the equation 1 obtained in S282 using the calculation device.
  • the auxiliary calculation unit 333 stores the calculated sum of the points A and B as a new point A using the storage device. As a result, the point A on the first calculation unit 332 side that called the auxiliary calculation unit 333 is also rewritten to become a new point A.
  • the auxiliary arithmetic unit 333 reads out the memory device power of the coefficient m of Equation 1 obtained in point A, point Q, and S282 input in S281 (not the point A calculated in S283).
  • the auxiliary computation unit 333 uses a computation device to calculate a value on the finite field GF (q k ) — Y — Y ⁇ m ( ⁇
  • X —X is calculated.
  • (X, Y) is the coordinates of point A.
  • (X, Y) is the coordinates of point Q.
  • is the primitive cube root of 1 on the finite field GF (q k ).
  • the auxiliary calculation unit 333 reads the integer i input in S281 and also the storage device power.
  • the auxiliary arithmetic unit 333 uses the storage device to calculate the i-th storage area (s [i]) among the storage areas reserved for storing the value s on the finite field GF (q k ).
  • the auxiliary calculation unit 333 also reads out the memory device power of the coefficient m of equation 1 obtained in point A, point Q, and S282 input in S281 (not the point A calculated in S283).
  • the auxiliary computing unit 333 uses a computing device to calculate the value Y — Y — m (X on the finite field GF (q k )
  • the auxiliary arithmetic unit 333 uses a storage device to secure a storage area for storing the value g on the finite field GF (q k ), and calculates the calculated value Y -Y — m (X —X) as the value.
  • q k the finite field GF
  • the auxiliary arithmetic unit 333 reads the value g calculated in S285 from the storage device.
  • the auxiliary calculation unit 333 outputs the read value g to the first calculation unit 332 that is a caller.
  • the auxiliary calculation unit 333 moves the point A while the first calculation unit 332 Calculate the value g required to perform the gig operation.
  • a value s necessary for the second computing unit 335 to perform a pairing operation later is calculated and stored in the storage device.
  • the first calculation unit 332 reads the pairing value f and the value g calculated by the auxiliary calculation unit 333 in S208 from the storage device.
  • the first calculation unit 332 calculates the value f 2 X g on the finite field GF (q k ) using the calculation device.
  • the first calculation unit 332 stores the calculated value f 2 X g as a new pairing value f using the storage device.
  • the first calculation unit 332 reads the integer j from the storage device.
  • the first computing unit 332 calculates an integer j + 1 by adding 1 to the read integer j using the computing device.
  • the first calculation unit 332 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the first calculation unit 332 reads the integer i from the storage device.
  • the first computing unit 332 calculates an integer i + 1 by adding 1 to the read integer i using an arithmetic unit.
  • the first computing unit 332 uses the storage device to fe the calculated integer i + 1 as a new integer i. .
  • the first calculation unit 332 reads the integer i from the storage device.
  • the first calculation unit 332 uses an arithmetic unit to check whether the integer -c or less.
  • the first computing unit 332 reads point A, point P, point Q, and integer j from the storage device.
  • the first calculation unit 332 inputs three points (point A, point P, and point Q) on the elliptic curve E on the finite field GF (q k ) and the integer j to the auxiliary calculation unit 333.
  • the auxiliary calculation unit 333 generates a point A, a value g, and a value based on the three points on the elliptic curve E on the finite field GF (q k ) input by the first calculation unit 332 in S213. calculate s The auxiliary calculation unit 333 stores the calculated point A, value g, and value s using a storage device.
  • the first calculation unit 332 reads the pairing value f and the value g calculated by the auxiliary calculation unit 333 in S214 from the storage device.
  • the first calculation unit 332 calculates the value f X g on the finite field GF (q k ) using the calculation device.
  • the first computing unit 332 stores the calculated value fxg as a new pairing value f using the storage device.
  • the first calculation unit 332 reads the integer j from the storage device.
  • the first computing unit 332 calculates an integer j + 1 by adding 1 to the read integer j using the computing device.
  • the first calculation unit 332 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the first calculation unit 332 stores the integer 1 as the integer i using the storage device.
  • the first calculation unit 332 reads point A, point Q, and integer j from the storage device.
  • the first computing unit 332 has three points (point A, point on the elliptic curve E on the finite field GF (q k ).
  • A, point Q) and the integer j are input to the auxiliary arithmetic unit 333.
  • the auxiliary calculation unit 333 receives the finite field input by the first calculation unit 332 in S218.
  • the auxiliary arithmetic unit 333 calculates the point A, the value g, and the value s using the storage device. Store the value s.
  • the first calculation unit 332 reads the pairing value f and the value g calculated by the auxiliary calculation unit 333 in S219 from the storage device.
  • the first calculation unit 332 calculates the value f 2 X g on the finite field GF (q k ) using the calculation device.
  • the first calculation unit 332 stores the calculated value f 2 X g as a new pairing value f using the storage device.
  • the first calculation unit 332 reads the integer j from the storage device.
  • the first computing unit 332 calculates an integer j + 1 by adding 1 to the read integer j using the computing device.
  • the first calculation unit 332 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the first calculation unit 332 reads the integer i from the storage device.
  • the first computing unit 332 calculates an integer i + 1 by adding 1 to the read integer i using an arithmetic unit.
  • the first computing unit 332 uses the storage device to fe the calculated integer i + 1 as a new integer i. .
  • the first calculation unit 332 reads the integer i from the storage device.
  • the first calculation unit 332 checks whether i is equal to or less than c using the calculation device. i
  • the first calculation unit 332 reads point A, point P, and point Q from the storage device.
  • the first computing unit 332 has three points (point A, point on the elliptic curve E on the finite field GF (q k ).
  • the auxiliary calculation unit 333 receives the finite field input to the first calculation unit 332 in S224.
  • the auxiliary arithmetic unit 333 calculates the point A, the value g, and the value s using the storage device. Store the value s.
  • the first calculation unit 332 reads the pairing value f and the value g calculated in S225 from the assisting calculation unit 333 force S from the storage device.
  • the first calculation unit 332 calculates the value f X g on the finite field GF (q k ) using the calculation device.
  • the first calculation unit 332 stores the calculated value f X g as a new pairing value f using the storage device.
  • the second calculation unit 334 reads the pairing value f calculated by the first calculation unit 332 in S226.
  • Second computing unit 334 uses a storage device to secure a storage area for storing value h on finite field GF (q k ), and stores read pairing value f as pairing value h. .
  • the second calculation unit 334 stores the integer 1 as the integer j using the storage device.
  • second operation unit 334 stores integer 1 as integer i using the storage device.
  • the second calculation unit 334 reads the pairing value f, the integer j, and the j-th value (s [j]) of the value s calculated by the auxiliary calculation unit 333 (s [j]).
  • the second calculation unit 334 calculates the value f 2 X sj] on the finite field GF (q k ) using the calculation device.
  • the second calculation unit 334 uses the storage device to calculate the calculated value f 2 X sj] is stored as a new pairing value f.
  • the second calculation unit 334 reads the integer j from the storage device.
  • the first computing unit 332 calculates an integer j + 1 by adding 1 to the read integer j using the computing device.
  • the first calculation unit 332 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the second calculation unit 334 reads the integer i from the storage device.
  • the first computing unit 332 calculates an integer i + 1 by adding 1 to the read integer i using an arithmetic unit.
  • the first computing unit 332 uses the storage device to fe the calculated integer i + 1 as a new integer i. .
  • the second calculation unit 334 reads the integer i from the storage device.
  • the second arithmetic unit 334 uses an arithmetic device to determine whether the read integer is ⁇ c or less.
  • the second calculation unit 334 reads out the storage device power of the pairing value f, the integer j, and the jth value (s [j]) among the values s calculated by the auxiliary calculation unit 333.
  • the second calculation unit 334 calculates the value f X sj] on the finite field GF (q k ) using the calculation device.
  • the second calculation unit 334 calculates the calculated value f X sj] using the storage device. Is stored as a new pairing value f. [0196]
  • the second calculation unit 334 reads the integer j from the storage device.
  • the first computing unit 332 calculates an integer j + 1 by adding 1 to the read integer j using the computing device.
  • the first calculation unit 332 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the second calculation unit 334 reads the pairing value f and the pairing value h stored in S227 from the storage device.
  • the second calculation unit 334 calculates the value f X h on the finite field GF (q k ) using the calculation device.
  • the second calculation unit 334 stores the calculated value fxh as a new pairing value f using the storage device.
  • the second calculation unit 334 stores the integer 1 as the integer i using the storage device.
  • the second calculation unit 334 reads the pairing value f, the integer j, and the j-th value (s [j]) of the value s calculated by the auxiliary calculation unit 333 (s [j]).
  • the second calculation unit 334 calculates the value f 2 X sj] on the finite field GF (q k ) using the calculation device.
  • the second calculation unit 334 uses the storage device to calculate the calculated value f 2 X s [j] is stored as a new pairing value f.
  • the second calculation unit 334 reads the integer j from the storage device.
  • the second computing unit 334 calculates an integer j + 1 by adding 1 to the read integer j using a computing device.
  • the second arithmetic unit 334 uses the storage device to fe the calculated integer j + 1 as a new integer. .
  • the second computing unit 334 reads the integer i from the storage device.
  • the second computing unit 334 calculates an integer j + 1 by adding 1 to the read integer j using a computing device.
  • the second arithmetic unit 334 uses the storage device to convert the calculated integer i + 1 to a new integer i. [0202] In S241, the second calculation unit 334 reads the integer i from the storage device. Whether the second arithmetic unit 334 is less than or equal to the read integer using the arithmetic device
  • the power calculation unit 335 reads the pairing value f from the storage device.
  • the power calculation unit 335 calculates the (q k — l) Zr power of the pairing value f using an arithmetic unit.
  • the power calculation unit 335 calculates the (q k ⁇ l) Zr power of the pairing value f by multiplying the pairing value f by (q k ⁇ l) Zr times using an arithmetic unit. .
  • the elliptic curve pairing calculation unit uses the storage device to store the calculated f to the (q k — l) Zr power as a new pairing value f.
  • the pairing output unit 336 reads the pairing value f as well as the storage device power.
  • the pairing output unit 336 outputs the read pairing value f.
  • the second calculation unit 334 does not perform a calculation for obtaining ⁇ ′ + ⁇ .
  • the value obtained in the process of finding ⁇ '+ ⁇ is required. This value is already calculated by the auxiliary calculation unit 333 and stored as the value s in the process in which the first calculation unit 332 calculates ( ⁇ + 1) ⁇ . Therefore, the second calculation unit 334 calculates ⁇ + ⁇ There is no need to perform operations.
  • the value s required by the part 334 is calculated.
  • the computation to find ⁇ ⁇ is faster than the computation to find the scalar multiple of the dot ⁇ ⁇ ⁇ ⁇ for integers with the same bit length as the Hamming weight of 3 or more. It can be calculated.
  • the calculation procedure described here uses the fact that the Hamming weight is small, expands the pairing calculation processing iteration loop described in FIGS. 6 to 7, and performs conditional branching (S117 in FIG. 7). This eliminates the pairing calculation process at high speed.
  • the Hamming weight is 1, the integers that can be selected as the group number r are limited.
  • the group number r must be a prime number from ⁇ . Also, as described above, the pairing calculation process can be speeded up with a smaller weight and weighting.
  • the integers c and c can be obtained from the group number r input by the input unit 214. This calculation is
  • Calculation is possible using a computing device such as a computer.
  • the group number input unit 214 inputs integers c and c that are not equal to the group number r.
  • group number input unit 214 inputs both group number r and integers c and c.
  • the elliptic curve pairing calculation unit 233 can be realized by causing a computer to execute a program that causes the computer to perform the above-described operation.
  • the number of repetitions of processing performed by the first calculation unit 332 (S207 to S212, S218 to S223) (the number of repetitions of processing performed by the second calculation unit 334 is also the same) is ⁇ Equal to Hamming weight. Therefore, if a conditional branch is provided so that the number of repetitions is changed according to the weight and the ming weight, it is possible to cope with group numbers r having different ⁇ and ming weights.
  • the elliptic curve pairing calculation unit 233 when the elliptic curve pairing calculation unit 233 is realized in a node-like fashion, it is more preferable to fix the weight and the weighting weight because the circuit configuration can be simplified.
  • the group number r input by the group number input unit 214 is set to the group number having a specific format.
  • pairing calculation processing can be performed at high speed.
  • f (x) is a value obtained by substituting an integer.
  • Reference numeral 200 denotes an elliptic curve cryptographic computation device that performs elliptic curve pairing computation by elliptic curve pairing computation speeded up by specializing in the number of groups having a specific format.
  • the group number input unit 214 is not necessary.
  • the elliptic curve cryptographic operation apparatus 200 that speeds up the pairing calculation process has a predetermined group number r of a predetermined value. It is an elliptic curve cryptography calculation device that performs elliptic curve pairing calculation by elliptic curve pairing calculation that is faster than specified.
  • the difficulty of the elliptic curve discrete logarithm problem is related to the bit length of the group number r of the additive group E (GF (q)).
  • the level of difficulty of the finite field multiplicative group discrete logarithm problem can be increased by increasing the expansion order k.
  • the elliptic curve cryptographic computation device that performs the elliptic curve pairing operation by the elliptic curve pairing operation that has been speeded up by specially specifying the group number r determined in advance is an expanded order. By configuring k to be changed later, the level of safety can be increased.
  • the finite field operation unit 231 is configured to perform the four arithmetic operations defined on the finite field GF (q k ) even when the expansion order k is changed.
  • the element of the finite field GF (q k ) is stored in the storage device, for example, as a set (array) of k 0 to p ⁇ 1 integers when q is equal to the prime number p. To do.
  • the elliptic curve cryptography computation device in this embodiment is also characterized in that it performs elliptic curve pairing computation at high speed by focusing on the carefully selected group number r. .
  • the elliptic curve pairing calculation unit 233 uses the calculation device to specialize in the number of groups having a specific format. Since the elliptic curve pairing calculation is performed by the elliptic curve pairing calculation, the elliptic curve pairing encryption process can be performed at high speed even when the calculation capability of the calculation device is low. Play.
  • the elliptic curve pairing computation unit 233 uses the computation device to calculate the self-homogeneous map ⁇ on the elliptic curve E on the finite field K.
  • Elliptic curve pairing calculation is performed by using elliptic curve pairing calculation that is faster, so that even if the calculation capability of the calculation device is low, elliptic curve pairing encryption processing can be performed at high speed. There is an effect that can be done.
  • the elliptic curve pairing calculation unit 233 uses the calculation device as a self-homogeneous map ⁇ on the elliptic curve E on the finite field K. Since the elliptic curve pairing calculation is performed by the elliptic curve pairing calculation that is performed at high speed by using the self-homogeneous mapping that can be calculated efficiently, even if the calculation capability of the calculation device is low, the elliptic curve pairing calculation is performed. The effect is that the curve pairing encryption process can be performed at high speed.
  • the elliptic curve pairing calculation unit 233 uses the calculation device as a self-homogeneous map ⁇ on the elliptic curve E on the finite field K. Since the elliptic curve bearing operation is performed by the elliptic curve pairing operation that is fast by using the autohomogeneous map with a small absolute value of the discriminant D of the ring formed by the automorphism map, Even if the computing power is low, the elliptic curve bearing encryption process can be performed at high speed.
  • the elliptic curve pairing The computing unit 233 uses an arithmetic unit to calculate the self-homogeneous map ⁇ on the elliptic curve E on the finite field K as: (x, y) ⁇ (j8 x, y) (where ⁇ is a finite Since elliptic curve pairing calculation is performed by using elliptic curve pairing that is accelerated by using the root of 1 of the field 1), even if the calculation capability of the calculation device is low, the elliptic curve The effect is that the processing of the bearing encryption can be performed at high speed.
  • the elliptic curve pairing computation unit 233 uses the computation device as the self-homogeneous map ⁇ on the elliptic curve ⁇ on the finite field ⁇ . , ⁇ : (X, y) ⁇ (— X, iy) (where i is the primitive fourth power of 1 on the finite field K) Since the curve pairing calculation is performed, the elliptic curve pairing encryption process can be performed at high speed even when the calculation capability of the calculation device is low.
  • the elliptic curve pairing calculation unit 233 uses the calculation device to specialize in a specific group number determined in advance. Since the elliptic curve pairing calculation is performed by the elliptic curve pairing calculation, the elliptic curve pairing encryption process can be performed at high speed even when the calculation capability of the calculation device is low. Play.
  • the elliptic curve cryptographic operation apparatus 200 described above can be realized by causing a computer to execute a program that causes the computer to function as the elliptic curve cryptographic operation apparatus described above.
  • the elliptic curve pairing calculation unit 233 uses the calculation device to specialize in the group number having a specific format, so The elliptic curve pairing calculation is performed by the elliptic curve pairing calculation, so that even if the calculation capability of the calculation device is low, the elliptic curve pairing encryption process can be performed at high speed. .
  • the elliptic curve encryption parameter generation device 100 is installed in the center 300 or the like, which is much smaller in number than the elliptic curve encryption operation device 200, and therefore the elliptic curve encryption parameter generation device 100 It is assumed that the computing device possessed by has higher performance than the computing device possessed by the elliptic curve cryptographic computation device 200.
  • FIG. 12 is a block configuration diagram showing an example of the configuration of the internal block of the elliptic curve encryption parameter generation device 100 in this embodiment.
  • the elliptic curve cryptographic parameter generation apparatus 100 includes a prime number generation unit 110, a group number suitability determination unit 120, a group number candidate output unit 130, a group number selection unit 140, a group number output unit 150, a group number input unit. 160, an extended order input unit 170, a finite body number determination unit 180, a finite body number output unit 190, and the like.
  • the prime number generation unit 110 generates a prime number r that can be used as a group number of the additive group E (GF (q)) using an arithmetic unit.
  • the prime number generation unit 110 stores the generated prime number r using a storage device.
  • the group number suitability determining unit 120 reads the prime number!: Generated by the prime number generating unit 110 from the storage device.
  • the group number aptitude determination unit 120 determines whether or not the read prime number r is appropriate as the group number of the additive group E (GF (q)) using an arithmetic unit.
  • the group number aptitude determination unit 120 stores the determination result using a storage device.
  • the group number candidate output unit 130 reads the prime number!: Generated by the prime number generation unit 110 and the determination result determined by the group number aptitude determination unit 120 from the storage device.
  • the group number candidate output unit 130 uses the arithmetic unit to select the prime number r that the group number suitability determination unit 120 determines to be appropriate as the group number of the additive group E (GF (q)).
  • the group number candidate output unit 130 outputs the selected prime number r as a group number candidate using the output device.
  • the group number selection unit 140 selects the group number candidates output from the group number candidate output unit 130, Select the group number r to be used as the group number of the additive group E (GF (q)).
  • the group number selection unit 140 stores the selected group number r using a storage device.
  • the group number candidate output unit 130 uses the display device 901 (an example of an output device) to display the group number candidates, and the group selected by the administrator from the displayed group number candidates. By inputting the order r, the group number selection unit 140 selects the group number!:.
  • the group number selection unit 140 may randomly select the group number r from among the group number candidates output by the group number candidate output unit 130.
  • the group number output unit 150 reads the group number!: Selected by the group number selection unit 140 from the storage device.
  • the group number output unit 150 outputs the read group number r using an output device.
  • the group number output unit 150 receives the elliptic curve cryptographic operation device 20 via the Internet.
  • the group number input unit 160 inputs the group number!: Selected by the group number selection unit 140 using an input device.
  • the group number input unit 160 stores the input group number r using a storage device.
  • the expansion order input unit 170 stores the input expansion order k using a storage device.
  • the finite field order determination unit 180 reads the group order r input by the group order input unit 160 and the expansion order k input by the expansion order input unit 170 from the storage device.
  • the finite field order determination unit 180 determines the order q of the finite field GF (q) based on the read group order r and the extension order k using an arithmetic unit.
  • the finite field order determining unit 180 uses the storage device to fe the determined order q of the finite field GF (q). .
  • the finite body number output unit 190 reads the order q of the finite field GF (q) determined by the finite body number determination unit 180 from the storage device.
  • the finite field order output unit 190 outputs the order q of the read finite field GF (q) using the output device. For example, the finite field order output unit 190 transmits the order q of the finite field GF (q) to the elliptic curve cryptographic operation apparatus 200 via the Internet.
  • the elliptic curve cryptographic parameter generation device 100 in this embodiment has a specific group number r or a specific group number in order to perform the elliptic curve pairing operation at high speed.
  • This is an apparatus for generating elliptic curve cryptography parameters that can be set in the elliptic curve cryptography computing apparatus 200 that is specific to the group number r having the form:
  • the group order r may be selected so that r 1 has as many divisors as possible.
  • the expansion order k is an even number
  • the elliptic curve pairing operation can be performed at high speed. Therefore, for example, 2, 4, 6, ... is selected as the expansion order k. It can be so.
  • FIG. 13 is a flowchart showing an example of the process of determining the group number suitability by the group number suitability determining unit 120 in this embodiment.
  • the range for changing the expansion order k is 2 ⁇ k ⁇ 2k (k is an integer greater than or equal to 2)
  • the integer k can be determined by a predetermined value.
  • the group number aptitude determination unit 120 inputs the prime number r generated by the prime number generation unit 110.
  • the group number aptitude determination unit 120 stores the input prime number r using a storage device.
  • the group number aptitude determination unit 120 extracts the prime number r input in S381 from the storage device.
  • the group number aptitude determination unit 120 calculates an integer (r ⁇ 1) Z2 using an arithmetic unit.
  • R is a prime number of 3 or more, so (r-1) Z2 is an integer.
  • the group number aptitude determination unit 120 secures a storage area for storing the integer r ′ using the storage device, and stores the calculated integer (r ⁇ 1) Z2 as the integer r ′.
  • the group number aptitude determination unit 120 secures a storage area for storing the integer k using the storage device, and stores the integer 2 as the integer k.
  • the group number aptitude determination unit 120 reads the integer k and the integer r calculated in S382 from the storage device.
  • the group number aptitude determination unit 120 uses an arithmetic unit to check whether or not the read integer r ′ is a multiple of the read integer k. If r 'is a multiple of k, go to S385. If it is not a multiple of r ', proceed to S388.
  • the group number aptitude determination unit 120 reads the integer k from the storage device.
  • Group number aptitude determination unit 120 calculates an integer k + 1 by adding 1 to integer k using an arithmetic unit.
  • the group number aptitude determination unit 120 stores the calculated integer k + 1 as a new integer k using the storage device.
  • the group number aptitude determination unit 120 extracts the integer k calculated in S385 from the storage device.
  • Group number aptitude determination unit 120 uses an arithmetic unit to determine whether integer k is equal to or less than integer k.
  • the group number aptitude determination unit 120 determines that the prime number r is appropriate as the group number. In other words, the group number aptitude determination unit 120 uses an arithmetic unit to indicate that the prime number r is appropriate as the group number, such as data indicating the determination result (for example, the character string “OK” or the Boolean value “1”). ”).
  • the group number aptitude determination unit 120 stores the generated data (determination result) using a storage device.
  • the group number aptitude determination unit 120 determines that the prime number r is appropriate as the group number. I refuse. In other words, the group number aptitude determination unit 120 uses an arithmetic unit to indicate data indicating the determination result that the prime number r is appropriate as the group number (for example, a character string “NG” or a Boolean value “ 0 ").
  • the group number aptitude determination unit 120 stores the generated data (determination result) using a storage device.
  • the group number aptitude determination unit 120 reads out the determination result from the storage device.
  • the group number aptitude determination unit 120 outputs the read determination result.
  • the group number aptitude determination unit 120 converts all even numbers with r-1 to 2k or less to divisors.
  • prime number! Is appropriate as a group number
  • prime number r is appropriate as a group number
  • the extension order k that can ensure the minimum security of the encryption is 2k (k is an integer greater than or equal to 2. k ⁇ k) , 2k or more
  • the criterion should be whether all divisors are even numbers less than 2k! In that case, max
  • the power integer r' may be primed.
  • FIG. 14 is a flowchart showing an example of the group number candidate calculation process by the elliptic curve cryptographic parameter generation device 100 in this embodiment.
  • the data may be input using an input device and stored using a storage device.
  • weights of the weights can be varied by inputting them using an input device and storing them using a storage device.
  • the prime number generation unit 110 uses the storage device to store the integer c.
  • the prime number generation unit 110 reads the integer c from the storage device.
  • the prime number generation unit 110 calculates an integer 2 el + 2 e2 using an arithmetic unit. so
  • the prime number generation unit 110 uses a storage device to secure a storage area for storing the integer number and stores the calculated integer ⁇ + 2 as the integer number.
  • the prime number generation unit 110 reads out the integer number generated in S302.
  • the prime number generation unit 110 calculates an integer 2 + ⁇ + 1 using an arithmetic unit.
  • the prime number generation unit 110 uses a storage device to secure a storage area for storing the integer r, and stores the calculated integer ⁇ 2 + ⁇ + 1 as the integer r.
  • the prime number generation unit 110 reads out the integer r generated in S303 and also the storage device power.
  • the prime number generation unit 110 checks whether or not the read integer r is a prime number power using an arithmetic unit. If the integer r is not a prime number, the process proceeds to S307. If the integer r is prime, proceed to S305.
  • the group number suitability determining unit 120 reads the integer r (prime number r) generated by the prime number generating unit 110 in S303 from the storage device and inputs it.
  • the group number aptitude determination unit 120 uses an arithmetic unit to determine whether or not the input prime number r is appropriate as a group number. If it is determined that the prime number r is not appropriate as a group number, the process proceeds to S307. If it is determined that the prime number r is appropriate as a group number, the process proceeds to S306.
  • the group number candidate output unit 130 reads the prime number r generated by the prime number generation unit 110 in S303 from the storage device.
  • the group number candidate output unit 130 outputs the read prime number r as a group number candidate using an output device.
  • the prime number generation unit 110 reads the integer c from the storage device.
  • the prime number generation unit 110 calculates an integer c + 1 by adding 1 to the integer c using an arithmetic unit.
  • the prime generation unit 110 uses the storage device to set the calculated integer c + 1 to a new integer c.
  • the prime number generation unit 110 reads the integer c calculated in S307 from the storage device.
  • the prime number generation unit 110 uses an arithmetic unit to check whether the read integer c is smaller than the integer c.
  • the integer r is calculated using the corresponding relational expression of r.
  • f () a 2 + b + c)
  • the prime number generator 110 reads out the integer generated in S302 from the storage device.
  • the prime number generation unit 110 calculates an integer a 2 + b + c using an arithmetic unit.
  • the prime number generation unit 110 uses a storage device to secure a storage area for storing the integer r, and stores the calculated integer a 2 + b + c as the integer r.
  • the coefficients a, b, and c of the quadratic polynomial f (x) may be predetermined constants.
  • the coefficients a, b, c are input using an input device and stored using a storage device.
  • the prime number generation unit 110 stores the stored coefficients a, b, c in the storage device.
  • the integer a 2 + b + c may be calculated based on the read coefficients a, b, and c.
  • the described force r may be a prime factor of + 1 (or ⁇ ( ⁇ )).
  • the prime number generation unit 110 reads the integer r generated in S303 and stores the storage device power.
  • the prime number generation unit 110 performs prime factorization on the read integer r using an arithmetic unit.
  • the prime number generation unit 110 selects the largest prime number from the prime factorization of the integer r using an arithmetic unit.
  • the prime number generation unit 110 stores the selected prime number as a prime number r using a storage device.
  • the process of S304 is performed by, for example, the following process S304b after the process S304a.
  • the prime generation number I10 reads the integer calculated in S303 and the prime number r selected in S304a from the storage device.
  • the prime number generation unit 110 calculates f () Zr using an arithmetic unit.
  • the prime number generation unit 110 secures a storage area for storing the quotient n, which is an integer, using the storage device, and stores the calculated f () Zr as the quotient n.
  • the prime number generation unit 110 reads the quotient n calculated in S304b in the storage device power.
  • the prime number generation unit 110 uses an arithmetic unit to read a quotient n that is a predetermined integer n or less.
  • the quotient n may be calculated by multiplying by a factor other than r obtained in S304a.
  • the predetermined integer n in S304c may be a constant that is determined by force.
  • n may be input using an input device and stored using a storage device. Good.
  • the group number! Actually set in the elliptic curve cryptographic operation apparatus 200 is changed to the group number. Selection unit 140 selects.
  • the group number output unit 150 outputs the group number!: Selected by the group number selection unit 140.
  • Elliptic curve cryptographic operation device 200 uses an input device to input group number r output by group number output unit 150, and stores it as one of elliptic curve cryptographic parameters using a storage device. Then, using an arithmetic unit, based on the stored group number r, addition of points on the elliptic curve and calculation of elliptic curve pairing are performed.
  • the elliptic curve cryptographic operation device 200 is manufactured that performs the elliptic curve pairing operation at high speed by specifying the group number r. May be. In that case, the group order r cannot be changed later, but by changing the extension order k, the security level of the encryption can be changed later.
  • the extension degree k is determined based on the level of security of the elliptic curve cryptography used by the elliptic curve cryptographic operation apparatus 200.
  • the expansion order input unit 170 inputs the expansion order k using an input device.
  • the extension order k may be determined by the administrator of the elliptic curve cryptography and input to the extension order input unit 170.
  • a risk detection device that detects the risk of an attack on elliptic curve cryptography is provided, and when the risk detection device determines that the risk of the attack has increased, the expansion order k is changed to A device for inputting to 170 may be provided.
  • FIG. 15 is a flowchart showing an example of the flow of the finite body number determining process by the finite body number determining unit 180 in this embodiment.
  • the processing flow described here uses an algorithm called the Cocks-Pinch method.
  • the group number r is a prime number, and the remainder of dividing the group number r by k is 1.
  • the expansion order k is assumed to be an even number of 2 or more.
  • the finite field number determination unit 180 obtains a primitive kth power root of 1 on the multiplicative group GF (r) * of the finite field GF (r) using an arithmetic unit.
  • the finite field number determination unit 180 secures a storage area for storing the value g on the finite field GF (r) by using a storage device, and stores the obtained primitive k-th root of 1 as the value g. .
  • the finite body number determination unit 180 also reads the storage device power of the value g obtained in S401.
  • the finite field number determining unit 180 calculates the value gZ2 on the finite field GF (r) by dividing the read value g by 2 using an arithmetic unit.
  • the finite field number determination unit 180 secures a storage area for storing the integer ⁇ using a storage device, and stores the calculated value gZ2 on the finite field GF (r) as the integer ⁇ .
  • the value on the finite field GF (r) can be treated as an integer.
  • the finite body number determination unit 180 reads the integer D and the integer ⁇ calculated in S402 from the storage device.
  • the finite body number determination unit 180 calculates a value (2 ⁇ 1) ⁇ ⁇ on the finite field GF (r) using an arithmetic unit.
  • D is a quadratic residue modulo the group number r
  • D is a value on the finite field GF (r)
  • the value (2 ⁇ — 1) ZD can be calculated.
  • the finite body number determination unit 180 uses a storage device to store a storage area for storing the integer f.
  • the finite position determining unit 180 secures a storage area for storing the integer j using the storage device, and stores the integer 1 as the integer j.
  • the finite body number determination unit 180 uses a storage device to determine the group number r and an integer.
  • the finite body number determination unit 180 uses an arithmetic unit to calculate an integer ⁇ 2 + ⁇ + (1 ((f + j Xr) 2 X o
  • the finite body number determination unit 180 secures a storage area for storing the integer p using a storage device, and calculates the calculated integer ⁇ 2 + ⁇ + (1— (f + j Xr) 2 XD) / 4 ⁇
  • integer p 1— (f + j Xr) 2 XD) / 4 ⁇
  • the finite body number determination unit 180 extracts the integer p calculated in S405 from the storage device.
  • the finite body number determination unit 180 checks whether or not the read integer p is a prime power using an arithmetic unit. If the integer p is not prime, go to S408. If the integer p is a prime number, proceed to S4 07.
  • the finite position determining unit 180 reads the integer p (prime number) calculated in S405 from the storage device.
  • the finite body number determination unit 180 determines whether or not the read prime number p is suitable for high-speed calculation using an arithmetic unit. If it is determined that the prime p is not suitable for high-speed computation, the process proceeds to S408. If it is determined that the prime number p is suitable for high-speed computation, the process proceeds to S409.
  • the finite body number determination unit 180 reads the integer j from the storage device.
  • the finite body number determination unit 180 calculates an integer j + 1 by adding 1 to the read integer j using an arithmetic unit.
  • the finite body number determination unit 180 stores the calculated integer j + 1 as a new integer j using a storage device.
  • the finite field number determining unit 180 determines the prime number p to be the order q of the finite field GF (q).
  • the finite field order determination unit 180 secures a storage area for storing the order q of the finite field GF (q) using a storage device, and the prime number p is defined as the order q of the finite field GF (q).
  • the finite position determining unit 180 reads the integer ⁇ calculated in S402 from the storage device.
  • the finite body number determination unit 180 calculates an integer 2 ⁇ by multiplying the integer ⁇ by 2 using an arithmetic unit.
  • the finite body number determination unit 180 secures a storage area for storing the integer t using the storage device, and stores the calculated integer 2 ⁇ as the integer t.
  • the minimum P satisfying the condition is determined as the order q.
  • the number of bits of the order q is close to the predetermined number of bits and is set to the number of bits, by setting the initial value of the integer j to an appropriate value, P having the number of bits close to the desired number of bits can be determined as the order q.
  • the prime q is determined as the order q of the finite field GF (q).
  • the order q of the finite field GF (q) is the power of the prime p (p n . An integer of 2 or more).
  • the order q of the finite field GF (q) is determined by the Cox pinch method, and the order q of the finite field GF (q) is determined based on other algorithms. Good.
  • the finite field number determination unit 180 determines whether the prime ⁇ is suitable for high-speed computation by determining whether or not the force ⁇ of the finite field GF (q) satisfying the above three conditions exists. Judge whether it is power.
  • FIG. 16 is a flowchart showing an example of the flow of high-speed arithmetic aptitude determination processing by the finite body number determination unit 180 in this embodiment.
  • the finite order determining unit 180 reads the expansion order k from the storage device.
  • the finite body number determination unit 180 reads the prime factor number ⁇ and the ⁇ prime factors ⁇ obtained in S481 from the storage device.
  • the finite position determining unit 180 calculates a product ⁇ ( ⁇ ) (i is an integer from 0 to ⁇ 1) of the prime factor ⁇ of the extended order k using an arithmetic unit.
  • the finite body number determination unit 180 uses a storage device to secure a storage area for storing the integer ⁇ , and stores the calculated product ⁇ ( ⁇ ) as the integer ⁇ .
  • the finite position determination unit 180 reads the expansion order k from the storage device.
  • the finite position determination unit 180 uses the arithmetic unit to determine whether the power is a multiple of the expansion order k force. Determine whether. If it is a multiple of the expansion order k force, go to S484. If the expansion order k is not a multiple of 4, proceed to S485.
  • the finite body number determination unit 180 reads the integer 482 calculated in S482 from the storage device.
  • the finite body number determination unit 180 uses an arithmetic unit to double the read integer ⁇ to calculate the integer 2 ⁇ .
  • the finite body number determination unit 180 stores the calculated integer 2 ⁇ as a new integer ⁇ using a storage device.
  • the finite body number determination unit 180 reads the prime number p from the storage device.
  • the finite body number determination unit 180 calculates an integer P-1 by subtracting 1 from the read prime number p using an arithmetic unit.
  • the finite body number determining unit 180 uses a storage device to secure a storage area for storing the integer p ′, and stores the calculated integer p ⁇ 1 as the integer p ′.
  • the finite position determining unit 180 reads the integer ⁇ and the integer P ′ calculated in S485 from the storage device.
  • the finite body number determining unit 180 uses an arithmetic unit to divide the integer p ′ by the integer ⁇ , and quotient N and the remainder
  • the finite body number determination unit 180 uses a storage device to secure a storage area for storing the integers ⁇ ⁇ and ⁇ , and stores the calculated quotient and the remainder ⁇ .
  • the finite body number determination unit 180 extracts the remainder ⁇ calculated in S486 from the storage device.
  • the finite body number determination unit 180 determines whether or not the read remainder ⁇ is 0, using an arithmetic unit. If the remainder ⁇ is 0, go to S488. If the remainder ⁇ is not 0, go to S49 3.
  • the finite position determining unit 180 secures a storage area for storing the integer i using the storage device, and stores the integer 0 as the integer i.
  • the finite position determination unit 180 uses the integer i and the prime factor calculated in S481.
  • the i-th prime factor and the quotient N calculated in S486 are read from the storage device.
  • the finite body number determination unit 180 determines whether or not the quotient N is a multiple of the prime factor ⁇ using an arithmetic unit. If ⁇ is a multiple of ⁇ , go to S493. If ⁇ is not a multiple of ⁇ , go to S490.
  • the finite body number determination unit 180 reads the integer i from the storage device.
  • the finite body number determination unit 180 calculates an integer i + 1 by adding 1 to the integer i using an arithmetic unit.
  • the finite body number determination unit 180 stores the calculated integer i + 1 as a new integer i using a storage device.
  • the finite position determination unit reads the number v of prime factors obtained in S481 and the integer i calculated in S490 from the storage device.
  • the finite position determining unit 180 determines whether or not the integer i is smaller than the number V of prime factors using an arithmetic unit. If i ⁇ v, go back to S489. If i ⁇ v, go to S492.
  • the finite body number determination unit 180 determines that the prime p is suitable for high-speed computation using the arithmetic unit. That is, data indicating the determination result that the prime number p is suitable for high-speed computation (for example, the character string “OK” or the Boolean value “1”) is generated.
  • the finite body number determination unit 180 uses the storage device to store the data indicating the determination result, and then ends the high-speed calculation suitability determination process.
  • the finite position determining unit 180 uses the arithmetic device to determine that the prime number ⁇ is not suitable for high-speed computation. That is, data indicating a determination result that the prime number ⁇ is not suitable for high-speed calculation (for example, a character string “NG” or a Boolean value “0”) is generated.
  • the finite body number determination unit 180 uses the storage device to store the data indicating the determination result, and then ends the high-speed calculation suitability determination process.
  • the original order L of the multiplicative group GF (q) * is a divisor of the order q-1 of the multiplicative group GF (q) *. Also, For every divisor of the order q—l of the multiplicative group GF (q) *, there exists an element of the multiplicative group GF (q) * whose order is the divisor.
  • the finite field number determining unit 180 calculates the prime p as the order q of the finite field GF (q) when the above three conditions are all satisfied. Judged to be suitable.
  • the order q of the finite field GF (q) has been explained as being a prime number p!
  • the order q of the order of the finite field GF (q) is It may be a power of a prime number p (p n ).
  • the force remaining in confirming the existence of the element ⁇ of the finite field GF (q) The multiplication in the finite field GF (q k ) is smaller when the element ⁇ of the finite field GF (q) is smaller. Can be fast. Therefore, the element ⁇ of the finite field GF (q) is obtained and it is determined whether or not the coefficient is small, and if it is small, it may be determined that it is suitable for high-speed computation.
  • Elliptic curve cryptographic parameter generation apparatus 100 can also use, for example, the coefficient a of elliptic curve E.
  • the prime number generation unit 110 generates a prime number!:
  • the prime number generation unit 110 determines whether the prime number r generated by the prime number generation unit 110 is appropriate as the group number of the additive group E (K) consisting of points on the elliptic curve E. 130 outputs a prime number r determined to be appropriate as a group number candidate, so that it is possible to obtain group number candidates that can easily change the security level of elliptic curve cryptography. And have the effect
  • K group number of the additive group E (K)
  • q k group number candidates
  • the prime r having a Hamming weight equal to or less than a predetermined value is output as a group number candidate. There is an effect that curve pairing calculation can be performed at high speed.
  • the quotient ⁇ obtained by dividing the integer f ( ⁇ ) by the prime number r is not more than a predetermined integer! Therefore, it is necessary to set the elliptic curve pairing operation to the elliptic curve cryptography operation device 200 that speeds up the elliptic curve pairing by specializing in the group number corresponding to the above-mentioned quadratic polynomial f (X). There is an effect that it is possible to obtain candidates for the number of groups that can be.
  • the prime number r calculated using x 2 + x + l or x 2 + l as the second-order polynomial f (X) Number candidates Therefore, it is possible to set the elliptic curve pairing operation to the elliptic curve cryptographic operation device 200 with high speed by specializing in the group number of the form corresponding to the above-mentioned quadratic polynomial f (X). There is an effect that candidates for the number of possible group positions can be obtained.
  • a natural number having a small ming weight is generated as the natural number, and the prime number r calculated based on the natural number is output as a group number candidate. Therefore, by specifying the group number in the form corresponding to the above-mentioned quadratic polynomial f (X), it is possible to set the elliptic curve cryptography operation device 200 that performs the elliptic curve pairing operation at high speed. This is advantageous in that it is possible to obtain candidates for a large number of groups.
  • the prime number generation unit 110 speeds up the elliptic curve pairing operation by specializing in group numbers having a specific format. Since the prime curve r that can be set as the group number is generated in the elliptic curve cryptographic operation device 200, the elliptic curve pairing operation in the elliptic curve cryptographic operation device 200 is performed for the group number having the above specific format. The effect is that the speed can be increased.
  • the prime number generation unit 110 uses the self-homogeneous map ⁇ on the elliptic curve E on the finite field K, so that an elliptic curve pair is obtained. Since the prime curve r that can be set as a group number is generated in the elliptic curve cryptography calculation device 200 that speeds up the ring computation, the elliptic curve pairing calculation in the elliptic curve cryptography computation device 200 is performed by the above-mentioned self-homogeneous type. By using the map ⁇ , it is possible to achieve high speed.
  • the prime number generation unit 110 is capable of calculating efficiently as a self-homogeneous map on the elliptic curve E on the finite field K.
  • the prime curve r that can be set as a group number is generated in the elliptic curve cryptography arithmetic device 200 that speeds up the elliptic curve pairing computation.
  • the elliptic curve pairing operation in can be performed at high speed by using the above automorphism map ⁇ .
  • the prime number generation unit 110 performs a ring formed by a self-homogeneous map as a self-homogeneous map on an elliptic curve E on a finite field K.
  • the primitive third root of 1 in the finite field ⁇
  • elliptic curve pairing operation Since the prime curve r that can be set as a group number is generated in the elliptic curve cryptography operation device 200 that speeds up the elliptic curve cryptography operation device 200, the elliptic curve pairing operation in the elliptic curve cryptography operation device 200 is performed as described above. By using, there is an effect that high speed can be achieved.
  • ⁇ : (x, y) ⁇ (-x, iy) (where i is the primitive fourth root of 1 on the finite field K) as an automorphism on curve E
  • the prime number r that can be set as the group number is generated in the elliptic curve cryptographic operation device 200 that performs the pairing calculation at high speed
  • the elliptic curve pairing calculation in the elliptic curve cryptographic operation device 200 is performed as described above.
  • the homomorphic map ⁇ there is an effect that it can be performed at high speed.
  • the prime number r that can set the group number having the same format is output as the group number candidate, so it is specialized for the group number having a specific format.
  • the elliptic curve cryptographic operation device 200 performs the elliptic curve pairing calculation at high speed, it is possible to easily change the encryption security level.
  • the prime prime number r is output as a group number candidate, so even if it is an elliptic curve cryptography calculation device 200 that specializes in a specific group number and performs an elliptic curve pairing operation at high speed, it can be encrypted easily. There is an effect that the level of safety can be changed.
  • the prime number r that does not need to be changed in order is output as a group number candidate, so that the elliptic curve cryptography computing device 20 can be used for the elliptic curve pairing operation by specializing in a specific group order 20 0 Even so, it is possible to easily change the encryption security level.
  • the group number r of the additive group E (K) that also has a point force on the elliptic curve E on the finite field K GF (q)
  • the order q of the finite field K is determined based on the expansion field K of the finite field K in the elliptic curve pairing operation, and the expansion order k of GF (q k ). Even if the group number r is fixed, it is possible to easily change the encryption security level.
  • the finite field K GF (q) is expanded to the expansion field GF (q k ) using a predetermined irreducible polynomial pol (X). Therefore, the order q of the finite field K that can be set in the elliptic curve cryptography computing device that performs the elliptic curve picture pairing computation at high speed is determined, so that the elliptic curve pair in the elliptic curve cryptography computing device 200 is determined.
  • the ring operation can be performed at high speed by using the irreducible polynomial pol (X).
  • the order q of the finite field K that can be set in an elliptic curve cryptography arithmetic unit that performs elliptic curve pairing computations at high speed is determined. It is possible to perform the elliptic curve pairing operation at high speed.
  • the elliptic curve cryptographic parameter generation device 100 described above can be realized by causing a computer to execute a program that causes a computer to function as the elliptic curve cryptographic parameter generation device described above. .
  • the prime number generation unit 110 determines whether the prime number r generated by the prime number generation unit 110 is appropriate as the group number of the additive group E (K) consisting of points on the elliptic curve E.
  • K additive group
  • the prime number r determined to be appropriate is output as a group number candidate, it is possible to find a group number candidate that can easily change the security level of elliptic curve cryptography. , Have an effect
  • part of elliptic curve pairing parameters p and r are selected as k I r ⁇ 1 for many integers k with fast r group number r.
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes
  • r is characterized by a small Hamming weight.
  • r is selected to be a prime number obtained by dividing a quadratic polynomial with an integer coefficient ⁇ by a small integer for a certain integer.
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes:
  • r is selected to be a prime number obtained by dividing ⁇ ⁇ + ⁇ + 1 by a small integer for a certain integer.
  • the elliptic curve pairing encryption parameter generation apparatus (elliptic curve encryption parameter generation apparatus) described above further includes:
  • the Hamming weight of the integer ⁇ is selected to be small.
  • the elliptic curve pairing encryption parameter generation apparatus (elliptic curve encryption parameter generation apparatus) described above further includes:
  • the Hamming weight of the integer ⁇ is selected to be small.
  • a feature of the elliptic curve pairing calculation is that even if a part of the elliptic curve pairing parameter k is changed using a high-speed calculation method using a homomorphic map on the elliptic curve, the high-speed operation is maintained. To do.
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes:
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes:
  • the elliptic curve pairing encryption parameter generation apparatus (elliptic curve encryption parameter generation apparatus) described above further includes:
  • the elliptic curve pairing encryption parameter generation apparatus (elliptic curve encryption parameter generation apparatus) described above further includes:
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes:
  • the extension field GF (q k ) is characterized by using q, which can be calculated at high speed.
  • the elliptic curve pairing encryption parameter generation device (elliptic curve encryption parameter generation device) described above further includes
  • Each prime factor of k divides the multiplicative order L of the element ⁇ of GF (q) that is not 0 and does not divide (q—1) ZL
  • the feature is that q is selected to satisfy the two conditions.
  • the elliptic curve pairing encryption parameter generation apparatus (elliptic curve encryption parameter generation apparatus) described above further includes:
  • the elliptic curve pairing cryptographic operation device (elliptic curve cryptographic operation device) described above is an elliptic curve pairing operation, and some of the elliptic curve pairing parameters p and r are fast group numbers It is characterized by r being chosen as k I r ⁇ 1 for many integers k.
  • the elliptic curve pairing cryptographic operation device described above (elliptic curve cryptographic operation device) r is characterized by a small Hamming weight.
  • r is selected to be a prime number obtained by dividing a quadratic polynomial with an integer coefficient ⁇ by a small integer for a certain integer.
  • r is selected to be a prime number obtained by dividing ⁇ ⁇ + ⁇ + 1 by a small integer for a certain integer.
  • the Hamming weight of the integer ⁇ is selected to be small.
  • the Hamming weight of the integer ⁇ is selected to be small.
  • the elliptic curve pairing cryptographic operation device described above maintains high speed even if part of the elliptic curve pairing parameter is changed in elliptic curve pairing calculation. It is characterized by.
  • the elliptic curve pairing cryptographic operation device (elliptic curve cryptographic operation device) described above is an elliptic curve pairing operation using a high-speed calculation method using a homomorphic map on an elliptic curve. It is characterized by maintaining high speed even if part of the pairing parameter k is changed.
  • the extension field GF (q k ) is characterized by using q, which can be calculated at high speed.
  • Each prime factor of k divides the multiplicative order L of the element ⁇ of GF (q) that is not 0 and does not divide (q— 1) ZL
  • the feature is that q is selected to satisfy the two conditions.
  • part of elliptic curve pairing parameters p and r are selected as k I r ⁇ 1 for many integers k with fast r group number r.
  • r is characterized by a small Hamming weight.
  • r is selected to be a prime number obtained by dividing a quadratic polynomial with an integer coefficient ⁇ by a small integer for a certain integer.
  • r is selected to be a prime number obtained by dividing ⁇ ⁇ + ⁇ + 1 by a small integer for a certain integer.
  • the Hamming weight of the integer ⁇ is selected to be small.
  • the Hamming weight of the integer ⁇ is selected to be small.
  • a feature of the elliptic curve pairing calculation is that even if a part of the elliptic curve pairing parameter k is changed using a high-speed calculation method using a homomorphic map on the elliptic curve, the high-speed operation is maintained. To do.
  • the extension field GF (q k ) is characterized by using q, which can be calculated at high speed.
  • Each prime factor of k divides the multiplicative order L of the element ⁇ of GF (q) that is not 0 and does not divide (q— 1) ZL
  • the feature is that q is selected to satisfy the two conditions.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Abstract

 素数生成部110が、演算装置を用いて、高速化された楕円曲線ペアリング演算に適した形式を有する整数rを生成する(S302~S303)。素数生成部110が、演算装置を用いて、整数rが素数であるか否かを判断する(S304)。整数rが素数である場合に、素数生成部110が、演算装置を用いて、素数rが安全性のレベルを容易に変更できる群位数であるか否かを判断する(S305)。これにより、処理能力の低い演算装置でも演算ができるように高速化されたアルゴリズムを用いた楕円曲線ペアリング演算を行う楕円曲線暗号演算装置に設定することが可能であり、かつ、容易に安全性のレベルを変更することができる楕円曲線パラメータを生成することができる。

Description

明 細 書
楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円 曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム
技術分野
[0001] この発明は、楕円曲線ペアリング演算を用いた暗号演算装置及び楕円曲線ペアリ ング演算を用いた暗号演算装置に設定する楕円曲線暗号パラメータを生成する装 置に関する。特に、楕円暗号ペアリング演算を高速ィ匕し、かつ、楕円曲線ペアリング 演算を用いた暗号の安全性レベルを容易に変更できる楕円曲線暗号パラメータを生 成する装置に関する。
背景技術
[0002] 近年、楕円曲線上のペアリング演算を利用した暗号方式 (例えば、非特許文献 3) が注目されている。この暗号方式によれば、 ID (Identifier)情報などに基づいて、利 用者の公開鍵を生成することができるため、公開鍵の正当性を保証する必要がない 一方、楕円曲線上のペアリング演算を、コンピュータなどの演算装置を用いて行う 場合、その計算量が多ぐ演算能力の低い演算装置を用いて、いかに速くペアリング 演算を行うかが課題となっている。この課題を解決する方法として、非特許文献 1や 非特許文献 2が提案されて ヽる。
また、これらの暗号技術の安全性は、現存するコンピュータなどの演算装置の演算 能力によれば、暗号を解読するのに膨大な時間がかかることに基づ!/ヽて 、る。
非特干文献 1 : M. ;5Cott、 'Faster pairings using an elliptic curve endo morphism 、 to appear in Indocrypt 2005、 Springer Verlag、 (2005) . 非特許文献 2 : M. Scott、 "Scaling security in pairing— based protocols"^ available at http: / / eprint. iacr. org、 2005.
非特許文献 3 :境、大岸、笠原、 "楕円曲線上のペアリングを用いた暗号方式"、 200 1年 暗号と情報セキュリティシンポジウム(SCIS 2001) .
発明の開示 発明が解決しょうとする課題
[0003] 従来、楕円曲線上の点からなる加法群の群位数として、特殊な形式を有する群位 数を用いることにより、楕円曲線上のペアリング演算を高速ィ匕している。
群位数のビット数は、楕円曲線ペアリング暗号の安全性を決める要素の一つである しかし、コンピュータなどの演算装置の演算能力は日々向上しており、暗号の安全 性が脅力される可能性がある。
したがって、群位数の形式または群位数を固定して楕円曲線上のペアリング演算を 高速ィ匕した場合であっても、暗号の安全性レベルを容易に変更できるようにしておか なければならな!/ヽと 、う課題がある。
課題を解決するための手段
[0004] この発明にかかる楕円曲線暗号パラメータ生成装置は、
情報を記憶する記憶装置と、
情報を出力する出力装置と、
演算を行う演算装置と、
上記演算装置を用いて、素数 rを生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する素数生成部と、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、楕円曲線暗号演算における有限体 K=GF (q)上における楕円曲線 E上の 点からなる加法群 E (K)の群位数として上記素数 rが適切であるカゝ否かを判断する群 位数適性判断部と、
楕円曲線暗号演算における有限体 K上の楕円曲線 E上の点力 なる加法群 E (K) の群位数として上記素数 rが適切であると、上記群位数適性判断部が判断した場合 に、
上記素数生成部が生成した素数 rを上記記憶装置から読み出し、上記出力装置を 用いて、上記素数 rを群位数候補として出力する群位数候補出力部と、
を有することを特徴とする。
[0005] 上記群位数適性判断部は、 上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、上記素数 rから 1を減じて、自然数 r 1を求め、上記記憶装置を用いて、求 めた上記自然数 r 1を記憶し、
上記演算装置を用いて、所定の範囲内の自然数 kを生成し、上記記憶装置を用い て、生成した上記自然数 kを記憶し、
求めた上記自然数 r 1と、生成した上記自然数 kとを上記記憶装置から読み出し、 上記演算装置を用いて、上記自然数 kが上記自然数!: 1の約数であるか否かを判 断し、
上記所定の範囲内のすべての上記自然数 kが上記自然数 r 1の約数であると判 断した場合に、
上記演算装置を用いて、楕円曲線暗号演算における有限体 K上の楕円曲線 E上 の点からなる加法群 E (K)の群位数として上記素数 rが適切であると判断する ことを特徴とする。
[0006] 上記群位数適性判断部は、
上記演算装置を用いて、 2以上、所定の閾値 2k 以下の偶数の範囲内で上記自
max
然数 kを生成し、上記記憶装置を用いて、生成した上記自然数 kを記憶する ことを特徴とする。
[0007] 上記素数生成部は、
上記演算装置を用いて、上記素数 rのハミング重みが所定の値以下である素数 rを 生成し、上記記憶装置を用いて、生成した上記素数 rを記憶する
ことを特徴とする。
[0008] 上記素数生成部は、
上記演算装置を用いて、自然数えを生成し、上記記憶装置を用いて、生成した上 記自然数えを記憶し、
生成した上記自然数 λを上記記憶装置から読み出し、上記演算装置を用いて、所 定の 2次多項式 f (X) =ax2 + bx + c (ただし、 a、 b、 cは整数、 xは変数)に、上記自然 数えを代入して、整数 f ( ) =a 2 + b +cを求め、上記記憶装置を用いて、求め た上記整数 ί ( λ )を記憶し、 求めた上記整数 ί(λ)を上記記憶装置力 読み出し、上記演算装置を用いて、上 記整数 ί(λ)の素因数 rを求め、上記記憶装置を用いて、求めた上記素因数 rを記憶 し、
求めた上記素因数 rを上記記憶装置から読み出し、上記出力装置を用いて、上記 素因数 rを素数!:として出力する
ことを特徴とする。
[0009] 上記素数生成部は、
求めた上記整数 ί(λ)と、求めた上記素因数 rとを上記記憶装置から読み出し、上 記演算装置を用いて、上記整数 ί(λ)を上記素因数 rで除して、商 n=f( )Zrを求 め、上記記憶装置を用いて、求めた上記商 nを記憶し、
求めた上記商 nを上記記憶装置から読み出し、上記演算装置を用いて、上記商 n が所定の整数以下であるか否かを判断し、
上記商 nが所定の整数以下であると判断した場合に、
求めた上記素因数 rを上記記憶装置から読み出し、上記出力装置を用いて、上記 素因数 rを素数!:として出力する
ことを特徴とする。
[0010] 上記素数生成部は、
上記所定の 2次多項式 f(x)として、 x2+x+lまたは x2+lを用い、上記演算装置を 用いて、上記整数 ί(λ)を求め、上記記憶装置を用いて、求めた上記整数 ί(λ)を記 憶する
ことを特徴とする。
[0011] 上記素数生成部は、
上記演算装置を用いて、上記自然数えのハミング重みが所定の値以下である自然 数 λを生成し、上記記憶装置を用いて、生成した上記自然数えを記憶する ことを特徴とする。
[0012] 上記素数生成部は、
特定の形式を有する群位数に特化することにより、楕円曲線ペアリング演算を高速 化した楕円曲線暗号演算装置に、群位数として設定することができる素数 rを、上記 演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数 rを記憶する ことを特徴とする。
[0013] 上記素数生成部は、
有限体 K上の楕円曲線 E上の自己準同型写像 φを利用することにより、楕円曲線 ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定すること ができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した 上記素数 rを記憶する
ことを特徴とする。
[0014] 上記素数生成部は、
上記自己準同型写像 φとして、効率的に演算可能な自己準同型写像を利用する ことにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数 として設定することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置 を用いて、生成した上記素数 rを記憶する
ことを特徴とする。
[0015] 上記素数生成部は、
上記自己準同型写像 φとして、上記自己準同型写像 φがなす環の判別式 Dの絶 対値が所定の値よりも小さい自己準同型写像を利用することにより、楕円曲線ペアリ ング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができ る素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する
ことを特徴とする。
[0016] 上記素数生成部は、
上記楕円曲線 Eとして、 Y2=X3+bを用い、上記自己準同型写像 として、 (x, y)
→( j8 x, y) (ただし、 βは有限体 Κ上における 1の原始 3乗根)を利用することにより、 楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定 することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、 生成した上記素数 rを記憶する
ことを特徴とする。 [0017] 上記素数生成部は、
上記楕円曲線 Eとして、 Y2=X3 + aXを用い、上記自己準同型写像 φとして、(X, y
)→(-x, iy) (ただし、 iは有限体 K上における 1の原始 4乗根)を利用することにより、 楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定 することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、 生成した上記素数 rを記憶する
ことを特徴とする。
[0018] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを 所定の範囲内で変化させた場合に、上記楕円曲線暗号演算装置が特化した群位数 の形式と、同一の形式を有する素数 rを、上記出力装置を用いて、上記群位数候補と して出力する
ことを特徴とする。
[0019] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを 所定の範囲内で変化させた場合に、同一の群位数として設定することができる素数 r を、上記出力装置を用いて、上記群位数候補として出力する
ことを特徴とする。
[0020] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを
2以上、所定の閾値 2kmax以下の偶数の範囲内で変化させた場合に、同一の群位 数として設定することができる素数 rを、上記出力装置を用いて、上記群位数候補とし て出力する
ことを特徴とする。
[0021] 上記楕円曲線暗号パラメータ生成装置は、更に、
情報を入力する入力装置と、
上記入力装置を用いて、楕円曲線ペアリング演算における有限体 Kの拡大体 K' = GF (qk)の拡大次数 kを入力し、上記記憶装置を用いて、入力した上記拡大次数 k を記憶する拡大次数入力部と、
上記入力装置を用いて、上記群位数候補出力部が出力した群位数候補のなかか ら選択した素数 rを群位数!:として入力し、上記記憶装置を用いて、入力した上記群 位数 rを記憶する群位数入力部と、
上記群位数入力部が入力した群位数 rと、上記拡大次数入力部が入力した拡大次 数 kとを上記記憶装置から読み出し、上記演算装置を用いて、上記群位数 rと、上記 拡大次数 kとに基づいて、上記楕円曲線暗号演算における有限体 Kの位数 qを定め 、上記記憶装置を用いて、定めた上記有限体 Kの位数 qを記憶する有限体位数決定 部と、
定めた上記有限体 Kの位数 qを上記記憶装置から読み出し、上記出力装置を用い て、上記有限体 Kの位数 qを出力する有限体位数出力部と、
を有することを特徴とする。
[0022] 上記有限体位数決定部は、
所定の既約多項式 pol (X)を用いて有限体 Kを拡大体 K 'へ拡大することにより、楕 円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体 Kの位数とし て設定することができる位数 qを、上記演算装置を用いて定め、上記記憶装置を用い て、定めた上記有限体 Kの位数 qを記憶する
ことを特徴とする。
[0023] 上記有限体位数決定部は、
既約多項式 pol (X)として、 pol (x) =xk- γ (ただし、 χは有限体 Κ上における変数 、 Ύは有限体 Κの乗法群 Κ*の元)を用いて有限体 Κを拡大体 K'へ拡大することに より、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体 Κの 位数として設定することができる位数 qを、上記演算装置を用いて定め、上記記憶装 置を用いて、定めた上記有限体 Kの位数 qを記憶する
ことを特徴とする。
[0024] 上記有限体位数決定部は、
上記演算装置を用いて、上記有限体 Kの位数として設定することができる位数の候 補 qを生成し、上記記憶装置を用いて、生成した上記位数の候補 qを記憶し、 上記拡大次数入力部が入力した拡大次数 kと、上記位数の候補 qとを上記記憶装 置力 読み出し、上記演算装置を用いて、以下の 3つの条件:
(1)拡大次数 kのすベての素因数が、上記有限体 Kの元 γの位数 Lの約数である こと。
(2)拡大次数 kのすベての素因数が、(q— 1) ZLの約数でな 、こと。
(3)拡大次数 k力 の倍数である場合には、 q— 1も 4の倍数であること。
のすベてを満たす有限体 Kの元 γが存在するか否かを判断し、
上記演算装置を用いて、上記 3つの条件すベてを満たす有限体 Κの元 γが存在 すると判断した場合に、
上記演算装置を用いて、求めた上記位数の候補 qを、上記有限体 Kの位数として 設定することができると判断する
ことを特徴とする。
上記有限体位数決定部は、
上記演算装置を用いて、上記有限体 Kの位数として設定することができる位数の候 補 qを生成し、上記記憶装置を用いて、生成した上記位数の候補 qを記憶し、 上記拡大次数 kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大 次数 kを素因数分解して、すべての素因数 πを求め、記憶装置を用いて、求めたす ベての素因数 πを記憶し、
求めた上記すベての素因数 πを記憶装置力 読み出し、上記演算装置を用いて、 上記すベての素因数 πの積 Πを計算し、上記記憶装置を用いて、計算した積 Πを し し、
上記拡大次数 kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大 次数 k力 の倍数であるカゝ否かを判断して、上記拡大次数 kが 4の倍数であると判断 した場合に、計算した上記積 Πを上記記憶装置力 読み出し、上記演算装置を用い て、上記積 Πを 2倍して、積 2Πを計算し、上記記憶装置を用いて、計算した積 2Πを 、新たな積 Πとして記憶し、
生成した上記位数の候補 qを上記記憶装置から読み出し、上記演算装置を用いて 、上記位数の候補 qから 1を減じて、整数 q— 1を計算し、上記記憶装置を用いて、計 算した上記整数 q— 1を記憶し、
計算した上記整数 q— 1と、計算した上記積 Πとを記憶装置力 読み出し、上記演 算装置を用いて、上記整数 q—1が上記積 Πの倍数である力否かを判断し、 上記整数 q— 1が上記積 Πの倍数であると判断した場合に、
計算した上記整数 q— 1と、計算した上記積 Πとを上記記憶装置力 読み出し、上 記演算装置を用いて、上記整数 q— 1を上記積 Πで除して、商 N= (q— 1) ZLを計 算し、上記記憶装置を用いて、求めた上記商 Nを記憶し、
計算した上記商 Nと、求めた上記すベての素因数 πとを上記記憶装置から読み出 し、上記演算装置を用いて、上記商 Νが上記素因数 πの倍数である力否かを判断し 上記すベての素因数 πについて、上記商 Νが上記素因数 πの倍数でないと判断 した場合に、
上記演算装置を用いて、生成した上記位数の候補 qを、上記有限体 Kの位数として 設定することができると判断する
ことを特徴とする。
この発明にかかる楕円曲線暗号演算装置は、
情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数であって、特定の形式を有する 群位数 rを入力し、上記記憶装置を用いて、入力した上記群位数 rを記憶する群位数 入力部と、
上記有限体位数入力部が入力した位数 qと、上記群位数入力部が入力した群位数 rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数 qと、上記群位 数入力部が入力した群位数 rとに基づ ヽて、特定の形式を有する群位数に特化する ことにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う 楕円曲線ペアリング演算部と、
を有することを特徴とする。
[0027] 上記楕円曲線ペアリング演算部は、
有限体 K上における楕円曲線 E上の自己準同型写像 φを利用することにより高速 化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング 演算を行う
ことを特徴とする。
[0028] 上記楕円曲線ペアリング演算部は、
上記自己準同型写像 φとして、効率的に演算可能な自己準同型写像を利用する ことにより高速ィ匕した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円 曲線ペアリング演算を行う
ことを特徴とする。
[0029] 上記楕円曲線ペアリング演算部は、
上記自己準同型写像 φとして、上記自己準同型写像 φがなす環の判別式 Dの絶 対値が所定の値よりも小さい自己準同型写像を利用することにより高速ィ匕した楕円曲 線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う ことを特徴とする。
[0030] 上記楕円曲線ペアリング演算部は、
上記楕円曲線 Eとして、 Y2=X3 + bを用い、
上記自己準同型写像 として、(X, γ)→( β χ, y) (ただし、 |8は有限体 K上におけ る 1の原始 3乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上 記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
[0031] 上記楕円曲線ペアリング演算部は、
上記楕円曲線 Eとして、 Y2=X3 + aXを用い、
上記自己準同型写像 φとして、(X, y)→( - x, iy) (ただし、 iは有限体 K上におけ る 1の原始 4乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上 記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする。
[0032] この発明にかかる楕円曲線暗号演算装置は、
情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記有限体位数入力部が入力した位数 qを上記記憶装置から読み出し、上記演算 装置を用いて、上記位数 qと、楕円曲線暗号演算における有限対 K=GF (q)上にお ける楕円曲線 E上の点力もなる加法群 E (K)の群位数として、あら力じめ定めた特定 の群位数 rとに基づいて、上記特定の群位数 rに特化することにより高速化した楕円 曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算 部と、
を有することを特徴とする。
[0033] この発明にかかる楕円曲線暗号パラメータ生成プログラムは、
情報を記憶する記憶装置と、情報を出力する出力装置と、演算を行う演算装置とを 有するコンピュータを、
上記演算装置を用いて、素数 rを生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する素数生成部と、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、楕円曲線暗号演算における有限体 K=GF (q)上における楕円曲線 E上の 点からなる加法群 E (K)の群位数として上記素数 rが適切であるカゝ否かを判断する群 位数適性判断部と、
楕円曲線暗号演算における有限体 K上の楕円曲線 E上の点力 なる加法群 E (K) の群位数として上記素数 rが適切であると、上記群位数適性判断部が判断した場合 に
上記素数生成部が生成した素数 rを上記記憶装置から読み出し、上記出力装置を 用いて、上記素数 rを、群位数候補として出力する群位数候補出力部と、 を有する楕円曲線暗号パラメータ生成装置として機能させることを特徴とする。
[0034] この発明にかかる楕円曲線暗号演算プログラムは、
情報を入力する入力装置と、情報を記憶する記憶装置と、演算を行う演算装置とを 有するコンピュータを、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数であって、特定の形式を有する 群位数 rを入力し、上記記憶装置を用いて、入力した群位数 rを記憶する群位数入力 部と、
上記有限体位数入力部が入力した位数 qと、上記群位数入力部が入力した群位数 rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数 qと、上記群位 数 rとに基づいて、特定の形式を有する群位数に特化することにより高速化した楕円 曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算 部と、
を有する楕円曲線暗号演算装置として機能させることを特徴とする。
発明の効果
[0035] この発明にかかる楕円曲線暗号パラメータ生成装置によれば、
情報を記憶する記憶装置と、
情報を出力する出力装置と、
演算を行う演算装置と、
上記演算装置を用いて、素数 rを生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する素数生成部と、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、楕円曲線暗号演算における有限体 K=GF (q)上における楕円曲線 E上の 点からなる加法群 E (K)の群位数として上記素数 rが適切であるカゝ否かを判断する群 位数適性判断部と、
楕円曲線暗号演算における有限体 K上の楕円曲線 E上の点力 なる加法群 E (K) の群位数として上記素数 rが適切であると、上記群位数適性判断部が判断した場合 に、
上記素数生成部が生成した素数 rを上記記憶装置から読み出し、上記出力装置を 用いて、上記素数 rを群位数候補として出力する群位数候補出力部と、
を有するので、
楕円曲線暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を 求めることができると!/、う効果を奏する。
発明を実施するための最良の形態
[0036] 実施の形態 1.
実施の形態 1を、図 1〜図 11を用いて説明する。
[0037] 公開鍵暗号通信にお!、ては、利用者ごとに秘密鍵 Xと公開鍵 yの組が用意され、秘 密鍵 Xは、各利用者が秘密に保持しておく。公開鍵 yは利用者自身以外の一般に公 開する。利用者 Bが利用者 Aに秘密にデータを送りたい時は、利用者 Bは利用者 A に対応する公開鍵 yを用いてデータを暗号化する。この暗号文は、秘密鍵 Xを知る利 用者 Aにし力復号できない。
ここで、利用者 Bは、公開鍵 yが利用者 Aに対応するものであるカゝ検証する必要が ある。すなわち、公開鍵 yが本当に利用者 Bが公開したものであるという保証をする必 要がある。そのような保証が得られなければ、悪意の第三者が自己の秘密鍵 x'に対 応する公開鍵 y'を、あた力も利用者 Bのものであるかのようにして公開し、利用者 A がそれを知らずに公開鍵 y'を用いて暗号ィ匕した暗号文を受信して、自己の秘密鍵 X 'で復号することによって、盗聴が可能となってしまうからである。
そのため、従来は、 PKI (Public Key Infrastructure)というインフラストラクチャ を用いて、利用者と公開鍵との対応を保証することを行って!/、た。
[0038] 一方、この実施の形態における楕円曲線暗号システム 800は、利用者が公開して いる HD情報に基づいて、秘密鍵及び公開鍵を生成する。このような IDベース公開鍵 暗号方式では、名前や機器番号のような識別名(ID)に基づいて生成した公開鍵を 用いることができるので、公開鍵が本当に利用者のものであるかを検証する必要がな い。
[0039] 図 1は、この実施の形態における公開された HD情報に基づく楕円曲線暗号システ ム 800の全体構成の一例を示すシステム構成図である。
センタ 300は、楕円曲線暗号パラメータ 510を生成し、公開する。
楕円曲線暗号演算装置 200a, 200bは、センタ 300が公開した楕円曲線暗号パラ メータ 510を取得し、記憶する。
楕円曲線暗号演算装置 200bは、自己の ID (Identifier)情報 521を公開する。 センタ 300は、楕円曲線暗号演算装置 200bが公開した HD情報 521を取得し、取 得した HD情報 521に基づいて、楕円曲線暗号演算装置 200bの秘密鍵 531を生成 する。
センタ 300は、生成した秘密鍵 531を、秘密裏に楕円曲線暗号演算装置 200bに 対して送信する。
楕円曲線暗号演算装置 200bは、センタ 300が送信した秘密鍵 531を受信し、記 憶する。
[0040] 楕円曲線暗号演算装置 200aは、楕円曲線暗号演算装置 200bが公開した HD情報
521を取得し、記憶した楕円曲線暗号パラメータに基づいて、楕円曲線暗号演算装 置 200bの公開鍵を算出する。
楕円曲線暗号演算装置 200aは、算出した公開鍵を用いて、楕円曲線暗号演算装 置 200bに対して送信したい平文 601を暗号ィ匕し、暗号化した暗号文 651を楕円曲 線暗号演算装置 200bに対して送信する。
楕円曲線暗号演算装置 200bは、楕円曲線暗号演算装置 200bが送信した暗号文
651を受信し、記憶した秘密鍵 531を用いて復号して、元の平文 601を取得する。
[0041] このように、公開された 情報に基づく楕円曲線暗号システムでは、秘密鍵も利用 者の 情報に基づ 、て生成するので、第三者が秘密鍵を生成できな 、ようにする必 要がある。そのため、楕円曲線ペアリング演算を用いることにより、第三者が秘密鍵を 生成できな ヽようにして ヽる(非特許文献 3など)。
この実施の形態で説明する楕円曲線暗号パラメータ生成装置 100及び楕円曲線 暗号演算装置 200は、楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システ ムに用いられるものであり、その一例として公開された HD情報に基づく楕円曲線暗号 システムについて説明する。しかし、楕円曲線ペアリング演算を用いる方式の楕円曲 線暗号システムであれば、公開された 情報に基づく楕円曲線暗号システムに限ら ず、他の楕円曲線暗号システムについても、適用することが可能である。
[0042] 楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムは、離散対数問題 を解くには、膨大な計算量が必要となるため、第三者が秘密鍵など秘密の情報を知 ることが(現在の計算機の能力では)ほぼ不可能であることに基づいて構築されてい る。
ここで、離散対数問題とは、代数群 (G, +) (加法が定義され、加法について群で あるものとする。以下、代数群 Gという)の 2つの要素(元) g 、 gに対して、 g =mg ( mは、自然数。 mgは、 gを m回加算したもの)を満たすような mを求める問題である。
2 2
代数群 Gの要素の数 (位数。要素の位数と区別するため、群位数ともいう)が大きい 場合、離散対数問題の多くは、計算量的に、解くことが非常に困難になることが知ら れて 、る。この事実を利用して公開鍵暗号を設計することができる。
[0043] 楕円曲線ペアリング演算を用いる方式の楕円曲線暗号システムには、 2種類の離 散対数問題が関係している。
1つは、代数群 Gとして、有限体 K上における楕円曲線 E上の点がなす加法群 E (K )を考えた場合の離散対数問題である。
もう 1つは、代数群 Gとして、有限体 K上における楕円曲線 E上の 2点 P、 Qの直積を 、有限体 K'上に写像したペアリング e (P, Q)がなす乗法群 Κ' *を考えた場合の離散 対数問題である。
[0044] 楕円曲線ペアリングとは、有限体 Κ上における楕円曲線 Ε上の 2点 P、 Qに対して計 算される値 e (P, Q)である。楕円曲線ペアリング演算を用いる方式の楕円曲線暗号 システムにおいては、双線形性を有するペアリングが用いられる。ペアリングの双線 形性とは、整数 aゝ bに対して、 e (aP, bQ) =e (P, Q)ab(aPは、加法群 E (K)におい て点 Pを a回加算した点。 bQは、加法群 E (K)において点 Qを b回加算した点。 e ( - , は、有限体 K,の乗法群 K,*上に値をとるペアリング。 e ( - , ') abは、乗法群 K,*上 において e ( ', を a X b回乗算したもの)を満たすことをいう。このような性質をもつぺ ァリングとして、ヴエイュ (Weil)ペアリングや、ティト(Tate)ペアリングが知られている ペアリングを用いた IDベース公開鍵暗号の多くは、双線形ディフィ一一ヘルマン( Diffie-Hellman)問題の困難性に基づいて構築されている。双線形ディフィ一— ヘルマン問題とは、加法群 E (K)の要素である aP、 bP、 cQ (a, b, cは、整数。 P, Q は、有限体 K上における楕円曲線 E上の点)が既知である場合に、 e (P, Q) abeを計 算せよという問題である。
双線形ディフィ一一ヘルマン問題の困難性を確保するには、楕円曲線離散対数問 題の困難性と有限体乗法群離散対数問題の困難性を確保する必要がある。
楕円曲線離散対数問題の困難性は、有限体 K上における楕円曲線 E上の点 (およ び無限遠点 O)がなす加法群 E (K)の要素の数 (群位数)!:と関連しており、 rのビット 長が長いほど、楕円曲線離散対数問題を解くことが困難になる。
また、有限体乗法群離散問題の困難性は、有限体 K'の要素の数 (位数) qkと関連 しており、 qkのビット長が長いほど、有限体乗法群離散問題を解くことが困難になる。 ここで、 qは、有限体 Kの要素の数 (位数)であり、 kは自然数である。
したがって、双線形ディフィ一—ヘルマン問題の困難性を確保するためには、加法 群 E (K)の群位数!:及び有限体 K'の位数 qkのビット長が適当な長さになるようにパラ メータを設定する必要がある。
[0045] なお、ヴエイュペアリングやティトペアリングは、楕円曲線に限らず、超楕円曲線に ついても計算することができる。また、その他の一般的な代数曲線についても計算す ることができる。この実施の形態では、楕円曲線についてヴエイュペアリング、ティト ペアリングを計算する場合について説明するが、これは一例にすぎず、超楕円曲線 やその他の一般的な代数曲線におけるペアリングを用いる方式の暗号システムにつ いても、適用可能である。
[0046] 位数 qの有限体(Finite Field,ガロア体(Galois Field)とも!/、う)を、 GF (q)と表 す。有限体 GF(q)の要素の数 (位数) qは、 q = pn(pは、素数。 nは、自然数)である。
[0047] n=lの場合、すなわち、 qが素数 pと等しい場合、有限体 GF(p)は、 0〜p— 1の整 数の集合とみなせる。
[0048] 有限体 GF(p)における加算は、通常の整数の加算を用いることによって、計算され る。ただし、計算結果が pより大きくなつた場合は、 pで割った余りを計算結果とする。 すなわち、有限体 GF(p)の元 aと元 bとの加算は、(a+b)mod p(modは、法を表す )を計算することにより、コンピュータなどの演算装置を用いて計算することができる。
[0049] 有限体 GF (p)における減算は、加法における逆元の加算として定義される。ここで 、加法における逆元とは、足すと加法における単位元(0)になる元をいう。元 aの逆元 を一 aとすると、 a+ (-a) =0(mod p)であるから、 a = p— aである。したがって、 有限体 GF(p)の元 aから元 bを減じる減算は、(a + p— b)mod q (あるいは、もっと単 純に(a— b) mod p)を計算することにより、コンピュータなどの演算装置を用いて計 算することができる。
[0050] 有限体 GF(p)における乗算も、通常の整数の乗算を用いることによって、計算され る。加算のときと同様、計算結果が pより大きくなつた場合は、 pで割った余りを計算結 果とする。すなわち、有限体 GF(p)の元 aと元 bとの乗算は、(aXb)mod pを計算す ることにより、コンピュータなどの演算装置を用いて計算することができる。
[0051] 有限体 GF(p)における除算は、乗法における逆元の乗算として定義される。ここで 、乗法における逆元とは、加法のときと同様、掛けると乗法における単位元(1)になる 元をいう。元 aの逆元を a—1とすると、 aXa_1 = l(mod p)である。例えば、 q = 5の場 合、 2の逆元は 3(2X3 = 6 mod 5 = 1)、 4の逆元は 4(4X4=16 mod 5 = 1) である。したがって、有限体 GF(p)の元 aを元 bで除する除算は、(aXb_1)mod pを 計算することにより、コンピュータなどの演算装置を用いて計算することができる。 なお、有限体 GF(q)の 0以外の元には、必ず乗法における逆元が存在し (有限体 の定義による)、有限体 GF(q)の元の数は有限であるから、有限回の計算で逆元を 求めることができる。
[0052] n≥ 2の場合、すなわち、 qが素数 pのべき乗の場合、有限体 GF (pn)は、 n— 1次多 項式 f (X) =a xn_1 + a xn_2H ha x + a (xは、変数。 aは、 0〜p— 1の整数 。 iは、 0〜n— 1の整数)の集合とみなせる。
これをコンピュータ上で実現する場合、有限体 GF(pn)の元は、例えば、係数 は 、 0〜n— 1の整数)を n個の整数の配列 a[n]として記憶装置に記憶することにより、 実現可能である。
[0053] 有限体 GF(pn) (n≥2)における加算は、通常の多項式の加算を用いることにより、 計算される。すなわち、有限体 GF(pn)の元 f (X) =∑ax(iは、 0〜η—1の整数)と元 g(x) =∑bxi(iは、 0〜n— 1の整数)との加算は、∑ax +∑bx =∑ (a +b)xを計 算することにより、計算することができる。なお、 a +bが pより大きくなつた場合は、 n =1の場合と同様、 pで割った余りを計算結果とする。
これをコンピュータ上で実現する場合、有限体 GF(pn)の元は、 n個の整数の配列 a [n]として記憶装置に記憶されているので、配列 a[n]の i番目(iは、 0〜n— 1の整数 )の要素 a[i]と、配列 b[n]の i番目の要素 b[i]とを加算して (必要なら、 pで割った余り を求め)、新たな配列 c[n]の i番目の要素 c[i]として記憶装置に記憶することにより、 有限体 GF(pn)における加算を、コンピュータなどの演算装置を用いて計算すること ができる。
[0054] 有限体 GF(pn) (n≥2)における減算は、 n=lの場合と同様、加法における逆元の 加算である。
これをコンピュータ上で実現する場合、有限体 GF(pn)の元は、 n個の整数の配列 a [n]として記憶装置に記憶されているので、配列 a[n]の i番目(iは、 0〜n— 1の整数 )の要素 a[i]力 配列 b[n]の i番目の要素 b[i]を減じて (必要なら、 pで割った余りを 求め)、新たな配列 c[n]の i番目の要素 c[i]として記憶装置に記憶することにより、有 限体 GF(pn)における減算を、コンピュータなどの演算装置を用いて計算することが できる。
[0055] 有限体 GF(pn) (n≥2)における乗算は、通常の多項式の乗算を用いることにより、 計算される。すなわち、有限体 GF(pn)の元 f (X) =∑ax(iは、 0〜η—1の整数)と元 g(x) =∑bxj(jは、 0〜n— 1の整数)との乗算は、∑axX∑bxj=∑ (a Xb)x(i+j)を
j
計算することにより、計算することができる。なお、
Figure imgf000020_0001
n=lの場合と同様、 pで割った余りを計算結果とする。また、この計算結果は、最大 で 2 (n— 1)次多項式となる力 計算結果力 次以上の多項式となった場合は、 n次の 既約多項式 pol (x)で割った余りを求め、計算結果とする。
[0056] ここで、既約多項式 pol (x)は、 pol (x) =∑ax (xは、変数。 aは、 0〜p— 1の整数 。 iは、 0〜nの整数。 a≠0)の形をした多項式であり、既約(有限体 GF (pn)の元を po l (x)に代入した場合、 pol (x) =0となる元が存在しないこと)であることが必要である 数学的には、既約でありさえすれば、どのような既約多項式 pol (x)を選択しても同 型の有限体となることが知られている力 S、これをコンピュータ上で実現する場合には、 既約多項式として、 ρο1 (χ) =χη—γ ( γ ( = a )は、 0〜p— 1の整数)を用いることが
0
多い。 pol (x) =xn— yを既約多項式に用いることにより、乗算の結果を既約多項式 pol (X)で割った余りを求める演算が高速ィ匕できるからである。
[0057] すなわち、これをコンピュータ上で実現する場合、有限体 GF (pn)の元は、 n個の整 数の配列 a[n]として記憶装置に記憶されているので、配列 a[n]の i番目(iは、 0〜n 1の整数)の要素 a [i]と、配列 b [n]の j番目(jは、 0〜n— 1の整数)の要素 b [j]との 積をとり(必要なら、 pで割った余りを求め)、 i+j <nの場合は、新たな配列 c [n]の(i +j)番目の要素 c[i+j]に加算する(配列 c[n]は、 0で初期化しておく)。 i+j≥nの 場合は、更に a[i] X b[j]と γとの積をとり(必要なら、 ρで割った余りを求め)、配列 c [ n]の(i+j—n)番目の要素 c [i+j -n]に加算する(必要なら、 pで割った余りを求め る)。 これにより、有限体 GF (pn)における乗算を、コンピュータなどの演算装置を用 いて計算することができる。
[0058] 有限体 GF (pn) (n≥2)における除算は、 n= lの場合と同様、乗法における逆元の 乗算である。
これをコンピュータ上で実現するためには、有限体 GF (pn)の元の乗法における逆 元を求める必要がある。このため、有限体 GF (pn)上で定義される四則演算のうち、 除算が最も計算量が多ぐ時間がかかる。しかし、有限体 GF (q)の 0以外の元には、 必ず乗法における逆元が存在し (有限体の定義による)、有限体 GF (q)の元の数は 有限であるから、有限回の計算で逆元を求めることができる。したがって、有限体 GF (pn)における除算を、コンピュータなどの演算装置を用いて計算することができる。 [0059] 以上のようにして、有限体 GF (q)上で定義される四則演算はすべて、コンピュータ などの演算装置を用いて計算することができる。
[0060] 楕円曲線 Eとは、 Y2=X3 + aX+b (X, Yは、変数。 a, bは、定数)と表される方程式 を満たす点 (X, Y)の集合である。
有限体 GF (q)上における楕円曲線 Eとは、 X, Y, a, bを有限体 GF (q)の要素であ るとして、有限体 GF (q)上で定義された四則演算に基づいて、方程式 Y2=X3 + aX
+ bを満たす点 (X, Y)の集合である。ここで、有限体 GF (q)の位数 qは、 q = pn(pは
、 2でな 、素数。 nは自然数)である。
[0061] 有限体 K=GF (q)上における楕円曲線 E上の点の集合に無限遠点 Oを加えた集 合を、 E (K)と表す。
また、 E (K)には、加法が定義されている。
すなわち、 E (K)の元である点 Pと、同じく E (K)の元である点 Qとに基づいて、同じ く E (K)の元である点 Rを求める演算が定義されており、これを楕円曲線上の加法と 呼ぶ。
[0062] 楕円曲線上の加法は、以下のように定義されている。
楕円曲線上の加法の単位元 (零元)は、無限遠点 Oである。
£ (1 の元でぁる点13= ( , Y)について、楕円曲線上の加法の逆元— Pは、 P = (X, — Y)である。
楕円曲線上の加法 R=P + Qは、以下のようにして求める。
P≠Qの場合、点 Pと点 Qとを通る直線 1と、楕円曲線 Eとの交点 R'を求め、その逆元 R,を点、 Pと点、 Qの禾ロ R=P + Qとする。
P = Qの場合、点 Pにおける楕円曲線 Eの接線を、直線 1として、点 Rを求める。
[0063] 以上のように、楕円曲線上の加法を定義すると、 E (K)は加法についてァーベル群
(Abelian Group)となる。以下、これを加法群 E (K)と呼ぶ。
[0064] なお、ここでは、楕円曲線上の加法を幾何学的に定義したが、この定義を代数的な ものに変換することにより、有限体 K上で定義された四則演算を用いて、楕円曲線上 の加法を計算することができる。
[0065] これをコンピュータ上で実現するためには、 E (K)の元を、有限体 Kの元 Xと、有限 体 Kの元 Yの組 (2つの要素を持つ配列)として記憶装置に記憶する。有限体 K=G F (pn)の元は、 n個の整数の配列として記憶装置に記憶するので、 E (K)の元は、 n X 2 = 2n個の整数の配列として記憶装置に記憶される。
上記説明した通り、コンピュータなどの演算装置を用いて、有限体 K上で定義され た四則演算を計算することができるので、コンピュータなどの演算装置を用いて、楕 円曲線上の加法を計算することも可能である。
[0066] 加法群 E (GF (q) )を利用した公開鍵暗号を楕円暗号 (または楕円曲線暗号) t 、う 特に、加法群 E (GF (q) )の位数 (要素の数)が、大素数 rで割り切れる場合が暗号 的に重要である。
そのとき、 r | qk— l (qk— 1が rで割り切れること、すなわち、 qk— 1が rの倍数である ことを表す)となる最小の k (kは、自然数)に対し、有限体 GF (qk)に値をとるペアリン グ e (P, Q)が定義される。
このペアリングを利用した公開鍵暗号を楕円ペアリング暗号 (または楕円曲線ペアリ ング暗号)という。
[0067] 上記説明したように、有限体 GF (qk)の位数 qkのビット長が長 、ほど、一般的に、有 限体乗法群離散対数問題を解くことが難しくなるので、暗号が解読される危険は低く なる。
他方、 kが大きいと、暗号演算 (鍵の生成、平文の暗号化、暗号文の復号など)の演 算量が増加する。特に、ュビキタス社会においては、 ICカードなど、演算能力が低い 演算装置を備えた装置においても、暗号演算を行う必要があるため、あまり kを大きく することはできない。
[0068] このように、ペアリングを暗号に使用するためには、安全性と演算能力とのバランス( 実用的なコストで製造できる演算装置が、実用的な速度で暗号演算を行うことが可能 であり、かつ、事実上、暗号を第三者に解読される危険が極めて低いこと)を実現す るため、 kが適当な大きさであることが必要である。
その条件を満たすように、楕円曲線を選択することが従来の楕円曲線パラメータ生 成とは異なるペアリング暗号実現のための課題である。 [0069] 暗号の安全性は、解読のための演算量が膨大で、現存して!/、るコンピュータなどの 演算装置の演算能力では、解読に何十年、何百年も力かることにより、確保されてい る。しかし、コンピュータなどの演算装置の演算能力は、日々向上しているため、今日 まで安全であったもの力 明日には安全でなくなる可能'性もある。
そのため、安全性と演算能力とのバランス点も、 日々変化する。したがって、 kを適 当な大きさに設定したあとで、安全性を高くする必要が生じた場合に、 kを容易に変 更できるようにしておくことが望まれる。
[0070] また、従来の楕円暗号での主要な演算は、整数 aと点 Pに対し、スカラー倍点 aP (点 Pを a回加算したもの)を計算することであつたのに対し、楕円ペアリング暗号では、従 来のスカラー倍算に加えて、ペアリング e (P、 Q)の値を計算することも主要な演算と なる。したがって、ペアリング e (P, Q)の値を高速に計算することが必要になっている
[0071] 図 2は、この実施の形態における楕円曲線暗号演算装置 200の外観の一例を示す 図である。
図 2において、楕円曲線暗号演算装置 200は、システムユニット 910、 CRT(Cath ode Ray Tube)や LCD (液晶)の表示画面を有する表示装置 901、キーボード 90 2 (K/B)、マウス 903、 FDD904 (Flexible Disk Drive)、コンパクトディスク装置 905 (CDD)、プリンタ装置 906、スキャナ装置 907などのハードウェア資源を備え、 これらはケーブルや信号線で接続されて 、る。
システムユニット 910は、コンピュータであり、ファクシミリ機 932、電話器 931とケー ブルで接続され、また、ローカルエリアネットワーク 942 (LAN)、ゲートウェイ 941を 介してインターネット 940に接続されて 、る。
[0072] なお、ュビキタス社会においては、このようにコンピュータ然としたコンピュータばか りではなぐ ICカードなどに組み込まれたコンピュータも存在している。楕円曲線暗号 演算装置 200は、そのようなコンピュータでもよい。楕円曲線暗号演算装置 200は、 最低限、演算を行う演算装置と、情報を記憶する記憶装置と、外部と情報をやり取り する入出力装置とを備えて 、ればよ!/、。
[0073] 図 3は、この実施の形態における楕円曲線暗号演算装置 200のハードウェア資源 の一例を示す図である。
図 3において、楕円曲線暗号演算装置 200は、プログラムを実行する CPU911 (C entral Processing Unit、中央処理装置、処理装置、演算装置ともいう)を備えて 、る。 CPU911iま、ノ ス 912を介して ROM913、 RAM914,通信ボード 915、表示 装置 901、キーボード 902、マウス 903、 FDD904、 CDD905、プリンタ装置 906、ス キヤナ装置 907、磁気ディスク装置 920と接続され、これらのハードウェアデバイスを 制御する。磁気ディスク装置 920の代わりに、光ディスク装置、メモリカード読み書き 装置などの記憶装置でもよ!/、。
RAM914は、揮発性メモリの一例である。 ROM913、 FDD904、 CDD905、磁 気ディスク装置 920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装 置あるいは記憶部の一例である。
通信ボード 915、キーボード 902、スキャナ装置 907、 FDD904などは、入力部、 入力装置の一例である。
また、通信ボード 915、表示装置 901、プリンタ装置 906などは、出力部、出力装置 の一例である。
[0074] 通信ボード 915は、ファクシミリ機 932、電話器 931、 LAN942等に接続されている 。通信ボード 915は、 LAN942に限らず、インターネット 940、 ISDN等の WAN (ワイ ドエリアネットワーク)などに接続されて ヽても構わな ヽ。インターネット 940或 、は IS DN等の WANに接続されて!、る場合、ゲートウェイ 941は不用となる。
磁気ディスク装置 920には、オペレーティングシステム 921 (OS)、ウィンドウシステ ム 922、プログラム群 923、ファイル群 924が記憶されている。プログラム群 923のプ ログラムは、 CPU911、オペレーティングシステム 921、ウィンドウシステム 922により 実行される。
[0075] 上記プログラム群 923には、以下に述べる実施の形態の説明において「〜部」、「〜 手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、 CP U911により読み出され実行される。
ファイル群 924には、以下に述べる実施の形態の説明において、「〜の判定結果」 、「〜の計算結果」、「〜の処理結果」として説明するデータや信号値や変数値やパラ メータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の 部分は主としてデータや信号の入出力を示し、データや信号値は、 RAM914のメモ リ、 FDD904のフレキシブルディスク、 CDD905のコンパクトディスク、磁気ディスク 装置 920の磁気ディスク、その他光ディスク、ミニディスク、 DVD (Digital Versatile Disk)等の記録媒体に記録される。また、データや信号は、バス 912や信号線ゃケ 一ブルその他の伝送媒体によりオンライン伝送される。
[0076] また、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明する ものは、 ROM913に記憶されたファームウェアで実現されていても構わない。或いは 、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアと の組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。フ アームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、 光ディスク、コンパクトディスク、ミニディスク、 DVD等の記録媒体に記憶される。プロ グラムは CPU911により読み出され、 CPU911により実行される。すなわち、プロダラ ムは、以下に述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あ るいは、以下に述べる「〜部」、「〜手段」の手順をコンピュータに実行させるものであ る。
[0077] 図 4は、この実施の形態における楕円曲線暗号演算装置 200の内部ブロックの構 成の一例を示すブロック構成図である。
[0078] 楕円曲線暗号演算装置 200は、楕円曲線暗号パラメータ入力部 210、 m情報入 力部 221、平文入力部 222、暗号文入力部 223、秘密鍵入力部 224、暗号演算部 2 30、公開鍵算出部 241、暗号文生成部 242、暗号文復号部 243、暗号文出力部 25 2、平文出力部 253、秘密鍵記憶部 294などを有する。
[0079] 楕円曲線暗号パラメータ入力部 210は、入力装置を用いて、楕円曲線暗号演算に 必要なパラメータを入力し、記憶装置を用いて、入力したパラメータを記憶する。楕 円曲線暗号パラメータには、楕円曲線 E上の点 (X, Y)の座標 X, Yが値をとる有限 体 GF (q)の位数 q、ペアリング e ( · , -)が値をとる有限体 GF (qk)の位数 qkを定める拡 大次数 k (埋め込み次数 (Embedding Degree)ともいう)、楕円曲線 E :Y2=X3+a X+bの係数 a, b、加法群 E (K)の群位数 rなどがある。
楕円曲線暗号パラメータ入力部 210は、有限体位数入力部 211、拡大次数入力部 212、楕円曲線係数入力部 213、群位数入力部 214などを有する。
[0080] 有限体位数入力部 211は、入力装置を用いて、有限体 GF (q)の位数 qを入力する 。位数 qは、例えば、ビット長が 320ビットの整数 (素数 pまたは素数 pのべき乗)である 。したがって、位数 qを記憶装置に記憶するためには、 40バイトの記憶領域が必要で ある。有限体位数入力部 211は、記憶装置を用いて、入力した有限体 GF (q)の位数 qを記憶する。
[0081] 拡大次数入力部 212は、入力装置を用いて、拡大次数 kを入力する。拡大次数 kは 、例えば、 2〜20程度の整数である。したがって、拡大次数 kを記憶装置に記憶する ためには、 1バイトの記憶領域があれば十分である。拡大次数入力部 212は、記憶装 置を用いて、入力した拡大次数 kを記憶する。
なお、のちに述べるように、拡大次数 kが偶数の場合に、ペアリング e ( ', を求め る演算を高速ィ匕できるので、 kは偶数であることが好ま 、。
[0082] 楕円曲線係数入力部 213は、入力装置を用いて、楕円曲線 Eの係数 a, bを入力す る。係数 a, bは、有限体 GF (q)の元であるから、 qが素数 pである場合には、 0〜p— 1の整数である。したがって、係数 a, bを記憶装置に記憶するためには、位数 qと同じ 40バイトの記憶領域力 それぞれ必要である。楕円曲線係数入力部 213は、記憶装 置を用いて、入力した楕円曲線 Eの係数 a, bを記憶する。
[0083] 群位数入力部 214は、入力装置を用いて、加法群 E (K)の群位数 rを入力する。群 位数 rのビット長は、 qのビット数以下である。したがって、群位数 rを記憶装置に記憶 するためには、 40バイトの記憶領域があれば十分である。群位数入力部 214は、記 憶装置を用いて、入力した群位数 rを記憶する。
[0084] 情報入力部 221は、入力装置を用いて、暗号文を送信したい相手の 情報を 入力する。 情報には、例えば、メールアドレス、社員番号、装置の製造番号などが ある。 Iひ f青報入力部 221は、記憶装置を用いて、入力した Iひ f青報を記憶する。
[0085] 公開鍵算出部 241は、 情報入力部 221が入力した Iひ f青報を、記憶装置から読 み出す。公開鍵算出部 241は、楕円曲線ペアリング暗号アルゴリズムに基づいて、 読み出した 情報から、暗号文を送信したい相手の公開鍵を算出する。この過程に おいて、楕円曲線 E上の点の加算や、楕円曲線ペアリングの計算が必要となる。公 開鍵算出部 241は、暗号演算部 230を呼び出すことにより、これらの演算を行う。公 開鍵算出部 241は、記憶装置を用いて、算出した公開鍵を記憶する。
[0086] 平文入力部 222は、入力装置を用いて、第三者に見られることなく相手に送信した いデータ(平文)を入力する。平文入力部 222は、記憶装置を用いて、入力したデー タを記憶する。
[0087] 暗号文生成部 242は、平文入力部 222が入力したデータと、公開鍵算出部 241が 算出した公開鍵とを、記憶装置から読み出す。暗号文生成部 242は、楕円曲線ペア リング暗号アルゴリズムに基づいて、読み出したデータ及び公開鍵から、暗号文を生 成する。この過程において、楕円曲線 E上の点の加算や、楕円曲線ペアリングの計 算が必要となる。暗号文生成部 242も、暗号演算部 230を呼び出すことにより、これ らの演算を行う。暗号文生成部 242は、記憶装置を用いて、生成した暗号文を記憶 する。
なお、暗号文のもととなるデータ(平文)は、外部から入力したものでなぐ楕円曲線 暗号演算装置 200の内部で生成したものでもよい。例えば、楕円曲線暗号演算装置 200の状態を示すデータや、外部から入力した暗号文を復号して得たデータなどを 、記憶装置を用いて記憶しておいて、これに基づいて、暗号文生成部 242が暗号文 を生成してもよい。
[0088] 暗号文出力部 252は、暗号文生成部 242が生成した暗号文を、記憶装置から読み 出す。暗号文出力部 252は、出力装置を用いて、読み出した暗号文を出力する。例 えば、インターネットを介して、送信したい相手に対して、暗号文を送信する。あるい は、無線送信装置を用いて、送信したい相手あるいは中継装置に対して、暗号文を 送信する。
[0089] 秘密鍵入力部 224は、入力装置を用いて、楕円曲線暗号演算装置 200の秘密鍵 を入力する。これは、楕円曲線暗号演算装置 200の HD情報に基づいて、センタ 300 が生成し、楕円曲線暗号演算装置 200に対して、秘密裏に送信したものである。秘 密鍵入力部 224は、入力した秘密鍵を、秘密鍵記憶部 294に記憶する。 [0090] 秘密鍵記憶部 294は、秘密鍵入力部 224が入力した秘密鍵を、記憶装置を用いて 記憶する。秘密鍵は、第三者に知られないように保管する必要があるので、秘密鍵 記憶部 294が用いる記憶装置は、耐タンパ性を有するものであることが好ましい。
[0091] 暗号文入力部 223は、入力装置を用いて、他の楕円曲線暗号演算装置が楕円曲 線暗号演算装置 200に対して送信した暗号文を入力する。例えば、インターネットを 介して、暗号文を受信する。あるいは、無線受信装置を用いて、暗号文を受信する。 暗号文入力部 223は、記憶装置を用いて、入力した暗号文を記憶する。
[0092] 暗号文復号部 243は、暗号文入力部 223が入力した暗号文と秘密鍵記憶部 294 が記憶した秘密鍵とを、記憶装置から読み出す。暗号文復号部 243は、楕円曲線べ ァリング暗号アルゴリズムに基づいて、読み出した暗号文及び秘密鍵から、もとのデ ータ(平文)を復号する。この過程において、楕円曲線 E上の点の加算や、楕円曲線 ペアリングの計算が必要となる。暗号文復号部 243も、暗号演算部 230を呼び出すこ とにより、これらの演算を行う。暗号文復号部 243は、記憶装置を用いて、復号したデ ータ(平文)を記憶する。
[0093] 平文出力部 253は、暗号文復号部 243が復号したデータを、記憶装置から読み出 す。平文出力部 253は、出力装置を用いて、復号したデータを出力する。例えば、表 示装置を用いて、復号したデータから生成される画面を表示する。
なお、復号したデータ(平文)は、必ずしも外部に出力する必要はなぐ楕円曲線暗 号演算装置 200の内部で使用してもよい。例えば、楕円曲線暗号演算装置 200に 対するなんらかのコマンド (例えば、楕円曲線暗号パラメータの設定を変更する命令 など)として解釈し、それに基づく動作をしてもよい。
[0094] 暗号演算部 230は、楕円曲線 E上の点の加算や、楕円曲線ペアリングの計算など 、楕円曲線ペアリング暗号アルゴリズムに基づく暗号演算に必要な演算を行う。 暗号演算部 230は、有限体演算部 231、楕円曲線演算部 232、楕円曲線ペアリン グ演算部 233などを有する。
[0095] 有限体演算部 231は、演算装置を用いて、有限体 GF (q)あるいは有限体 GF (qk) 上で定義された加算、減算、乗算、除算などの四則演算を行う。
[0096] 楕円曲線演算部 232は、演算装置を用いて、有限体 GF (q)上における楕円曲線 E上の点の加算や、スカラー倍(同じ点を、整数回加算した点を求める演算)などの 演算を行う。なお、これらの演算を行うに際して、有限体上で定義された四則演算を 行う必要がある場合には、有限体演算部 231を呼び出すことにより、これらの演算を 行う。
[0097] 楕円曲線ペアリング演算部 233は、演算装置を用いて、有限体 GF (q)上における 楕円曲線 E上の 2点のペアリングの値を計算するなどの演算を行う。なお、これらの演 算を行うに際して、楕円曲線上の点の加算や有限体上で定義された四則演算を行う 必要がある場合には、楕円曲線演算部 232や有限体演算部 231を呼び出すことに より、これらの演算を行う。
[0098] なお、コンピュータなどの演算装置を用いて、これらの演算をすることができることは 、上記述べた通りである。
[0099] 図 5は、この実施の形態における楕円曲線ペアリング演算部 233の内部ブロックの 構成の一例を示すブロック構成図である。
楕円曲線ペアリング演算部 233は、点入力部 331、第一演算部 332、補助演算部 333、第二演算部 334、べき乗演算部 335、ペアリング出力部 336などを有する。
[0100] 点入力部 331は、ペアリングを求めるべき、有限体 GF (q)上における楕円曲線上 の点 P及び点 Qを、例えば暗号文生成部 242など、点 Pと点 Qとのペアリングの値を 計算したいブロックから、入力する。例えば、点入力部 331をプログラムによって実現 する場合には、点 P及び点 Qを示す整数の配列(またはその配列を示すポインタもし くは参照など)を、関数やサブルーチンの引数として受け取ることにより、点 P及び点 Qを入力する。点入力部 331は、記憶装置を用いて、入力した点 P及び点 Qを記憶 する。
[0101] 第一演算部 332は、点入力部 331が入力した点 P及び点 Qを、記憶装置から読み 出す。
第一演算部 332は、演算装置を用いて、読み出した点 P及び点 Qから、ペアリング 演算の前半部分を行い、途中経過 fを求める。なお、途中経過 fは、有限体 GF (qk) 上の値である。
第一演算部 332は、記憶装置を用いて、求めた途中経過 fを記憶する。 [0102] 補助演算部 333は、第一演算部 332から、有限体 GF (q)上における楕円曲線上 の点 3つと整数 iとを入力する。ここでは、入力した 3つの点を点 A,点 B,点 Qとする。 補助演算部 333は、記憶装置を用いて、点 A,点 B,点 Qおよび整数 iを記憶する。 補助演算部 333は、入力した点 A,点 B,点 Qおよび整数 iを記憶装置から読み出 す。
補助演算部 333は、演算装置を用いて、読み出した点 A,点 B,点 Qから、第一演 算部 332がペアリング演算をするのに必要な値 gと、第二演算部 334がペアリング演 算をするのに必要な値 sとを計算する。ここで、 g及び sは、 GF (qk)上の値である。 補助演算部 333は、記憶装置を用いて、計算した値 g及び sを記憶する。このとき、 s は、有限体 GF (qk)の元の配列の i番目の要素として、記憶する。
補助演算部 333は、記憶した gを、第一演算部 332に対して出力する。
[0103] 第二演算部 334は、第一演算部が求めた途中経過 fと、補助演算部 333が計算し た値 sとを記憶装置から読み出す。
第二演算部 334は、演算装置を用いて、読み出した途中経過 f及び値 sから、ペアリ ング演算の後半部分を行い、途中経過 f'を求める。なお、途中経過 f'は、有限体 GF (qk)上の値である。
第二演算部 334は、記憶装置を用いて、求めた途中経過 f'を記憶する。
[0104] べき乗演算部 335は、第二演算部 334が求めた途中経過 f'を、記憶装置から読み 出す。
べき乗演算部 335は、演算装置を用いて、途中経過 f 'の (qk— l) Zr乗を計算する 。なお、 qk—lは rの倍数なので、この演算は、 f,の整数乗を求めることになる。したが つて、 f'を有限回掛け合わせることにより計算できる。
べき乗演算部 335は、記憶装置を用いて、計算結果を記憶する。
[0105] ペアリング出力部 336は、べき乗演算部 335が計算した計算結果を、記憶装置から
BJCみ出す。
ペアリング出力部 336は、読み出した計算結果を、楕円曲線ペアリング演算部 233 を呼び出したブロックに対して、出力する。
[0106] 参考のため、ティトペアリングの高速ィ匕されていない計算方式について説明する。 図 6及び図 7は、高速ィ匕されていない計算方式におけるティトペアリングのペアリン グ値を演算する演算処理の流れの一例を示すフローチャート図である。
この演算処理は、ミラー(Miller)アルゴリズムと呼ばれるアルゴリズムを用いて!/、る ここで、 uは、加法群 E (GF (q) )の群位数 rのビット長を表す。 rの 2進展開を r - ·τ (rが最下位ビット)と記す。すなわち、 r=∑r 2 は、 0〜u— 1の整数。 r =0または
0 0 i i
1)である。
[0107] S101において、楕円曲線ペアリング演算部は、有限体 GF (qk)上における楕円曲 線 E上の点 Pおよび点 Qを入力する。ただし、点 Pの位数は、加法群 E (GF (q) )の群 位数 rと等しいものとする。すなわち、 rP = 0 (点 P 回加算すると、無限遠点 0 (カロ 法群 E (GF (q) )の単位元)になる)である。なお、有限体 GF (qk)は、有限体 GF (q) の拡大体であるから、有限体 GF (q)上における楕円曲線 E上の点は、有限体 GF (qk )上における楕円曲線 E上の点に含まれる。楕円曲線ペアリング演算部は、記憶装置 を用いて、入力した点 Pおよび点 Qを記憶する。
[0108] S102において、楕円曲線ペアリング演算部は、楕円曲線 Eの係数 a, bと、加法群 E (GF (q) )の群位数 rとを記憶装置力も読み出す。
[0109] S103において、楕円曲線ペアリング演算部は、演算装置を用いて、有限体 GF (qk )上における楕円曲線 E上の点をランダムに選ぶ。楕円曲線ペアリング演算部は、記 憶装置を用いて、有限体 GF (qk)上における楕円曲線 E上の点 Sを記憶するための 記憶領域を確保し、選択した点を点 Sとして記憶する。
[0110] S104において、楕円曲線ペアリング演算部は、演算装置を用いて、有限体 GF (qk )上における楕円曲線 E上の点 Qと点 Sとの和を計算する。楕円曲線ペアリング演算 部は、記憶装置を用いて、有限体 GF (qk)上における楕円曲線 E上の点 Q'を記憶す るための記憶領域を確保し、計算した点 Qと点 Sとの和を、点 Q'として記憶する。
[0111] S105において、楕円曲線ペアリング演算部は、有限体 GF (qk)上における楕円曲 線 E上の点 Pを記憶装置力 読み出す。楕円曲線ペアリング演算部は、記憶装置を 用いて、有限体 GF (qk)上における楕円曲線 E上の点 Aを記憶するための記憶領域 を確保し、読み出した点 Pを、点 Aとして記憶する。 [0112] S106において、楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF (qk
)上のペアリング値 fを記憶するための記憶領域を確保し、有限体 GF (qk)上の定数 1 を、ペアリング値 fとして記憶する。
[0113] S107において、楕円曲線ペアリング演算部は、記憶装置を用いて、整数 mを記憶 するための記憶領域を確保し、加法群 E (GF (q) )の群位数 rのビット長 uを、整数 mと して記憶する。
[0114] S108において、楕円曲線ペアリング演算部は、点 Aを記憶装置から読み出す。楕 円曲線ペアリング演算部は、演算装置を用いて、点 Aにおける楕円曲線 Eの接線の 方程式 l: cX+dY+e = 0 (X, Yは、有限体 GF (qk)に値をとる変数。 c, d, eは、有限 体 GF (qk)の元)を求める。
具体的には、点 A= (X , Y )とすると、方程式 1は、 (3X 2 + a) (X— X )— 2Y (Y
A A A A A
— Y ) =0であるから、これを変形し、 (3X 2 + a)X- 2Y Y+ (— 3X 3 + aX + 2Y
A A A A A A
2) =0となる。したがって、楕円曲線ペアリング演算部は、演算装置を用いて、 c = 3X 2 + a、 d=— 2Y 、 e=— 3X 3 + aX + 2Y 2)を計算する。
A A A A A
楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF (qk)の元 c, d, eを 記憶するための記憶領域を確保し、計算した方程式 1の係数 c, d, eを記憶する。
[0115] S109において、楕円曲線ペアリング演算部は、 S 108で計算した方程式 1の係数 c , d, eを記憶装置力 読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、 方程式 1で表される点 Aにおける楕円曲線 Eの接線と、楕円曲線 Eとの交点 R'を求め る。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF (qk)上における楕 円曲線 E上の点 R'を記憶するための記憶領域を確保し、求めた交点 R'を記憶する
[0116] S110において、楕円曲線ペアリング演算部は、 S109で求めた交点 R'を記憶装 置力 読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、交点 R'を通り 、 Xが一定の直線の方程式 v:X— u = 0 (Xは、有限体 GF (qk)に値をとる変数。 uは、 有限体 GF (qk)の元)を求める。
具体的には、交点 R' = (X , Y )とすると、方程式 Vは、 X— X =0である。したが
R, R, R,
つて、楕円曲線ペアリング演算部は、演算装置を用いて、 u=X を計算する。 楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF (qk)の元 uを記憶す るための記憶領域を確保し、計算した方程式 Vの係数 uを記憶する。
[0117] S111において、楕円曲線ペアリング演算部は、 S 110で計算した方程式 Vの係数 u を記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程 式 Vで表される点 R'を通り、 Xが一定の直線と、楕円曲線 Eとの交点(すなわち、点 R' の逆元 =点八を 2倍した点)を求める。楕円曲線ペアリング演算部は、記憶装置を用 V、て、求めた交点を新たな点 Aとして記憶する。
[0118] S112において、楕円曲線ペアリング演算部は、 S 108で計算した方程式 1の係数 c , d, eと、 S104で計算した点 Q'とを記憶装置力も読み出す。楕円曲線ペアリング演 算部は、演算装置を用いて、方程式 1の左辺 cX+dY+eに、点 Q'の座標 (X , Y
Q, Q,
)を代入した値 cX +dY +eを計算する。楕円曲線ペアリング演算部は、記憶装置
Q, Q,
を用いて、有限体 GF (qk)の元 l (Q' )を記憶するための記憶領域を確保し、計算した 値 cX +dY + 6を1 ')として記憶する。
Q, Q,
[0119] S113において、楕円曲線ペアリング演算部は、 S 108で計算した方程式 1の係数 c , d, eと、 S103で選択した点 Sとを記憶装置力も読み出す。楕円曲線ペアリング演算 部は、演算装置を用いて、方程式 1の左辺 cX+dY+eに、点 Sの座標 (X , Y )を代
S S
入した値 cX +dY +eを計算する。楕円曲線ペアリング演算部は、記憶装置を用い
S S
て、有限体 GF (qk)の元 1 (S)を記憶するための記憶領域を確保し、計算した値 cX
S
+ dY +eを 1 (S)として記憶する。
S
[0120] S114において、楕円曲線ペアリング演算部は、 S 110で計算した方程式 Vの係数 u と、 S104で計算した点 Q'とを記憶装置力も読み出す。楕円曲線ペアリング演算部 は、演算装置を用いて、方程式 Vの左辺 X—uに、点 Q'の座標 (X , Y )を代入し
Q, Q,
た値 X — uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体
Q'
GF (qk)の元 v(Q' )を記憶するための記憶領域を確保し、計算した値 X — uを v(Q
Q'
' )として記憶する。
[0121] S115において、楕円曲線ペアリング演算部は、 S 110で計算した方程式 Vの係数 u と、 S103で選択した点 Sとを記憶装置力も読み出す。楕円曲線ペアリング演算部は 、演算装置を用いて、方程式 Vの左辺 X—uに、点 Sの座標 (X , Y )を代入した値 X —uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF(qk) の元 v(S)を記憶するための記憶領域を確保し、計算した値 X — uを v(S)として記憶
S
する。
[0122] S116において、楕円曲線ペアリング演算部は、ペアリング値 fと、 S112〜S115で 計算した値 l(Q'), 1(S), v(Q'), v(S)とを記憶装置力も読み出す。楕円曲線ペアリ ング演算部は、演算装置を用いて、 (f2Xl(Q') Xv(S))/(v(Q') X1(S))を計算 する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値 (f2 XI (Q') Xv (S))/(v(Q') Xl (S) )を、新たなペアリング値 fとして記憶する。
[0123] S117において、楕円曲線ペアリング演算部は、演算装置を用いて、加法群 E(GF
(q))の群位数 rの mビット目のビット r 力^かどうかをチェックする。 r =1であれば、 S m m
118へ進む。 r =0であれば、 S 127へ進む。
[0124] SI 18において、楕円曲線ペアリング演算部は、点 Aと点 Pとを記憶装置から読み 出す。楕円曲線ペアリング演算部は、演算装置を用いて、点 Aと点 Pとを通る直線の 方程式 l:cX+dY+e = 0(X, Yは、有限体 GF(qk)に値をとる変数。 c, d, eは、有限 体 GF(qk)の元)を求める。
具体的には、点 A= (X , Y )、点!^= (X , Y )とすると、方程式 1は、(Y — Y ) (X
A A P P P A
-x ) - (X -X ) (Y-Y ) =0であるから、これを変形し、 (Y— Υ )Χ— (X—X
A Ρ A A P A P A
)Y+ (X Y -X Y ) =0となる。したがって、楕円曲線ペアリング演算部は、演算装
A P P A
置を用いて、 c=Y — Y、 d=X -X、 e=X Y -X Yを計算する。
P A P A A P P A
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した方程式 1の係数 c, d, e を記憶する。
[0125] S119において、楕円曲線ペアリング演算部は、 S 118で計算した方程式 1の係数 c , d, eを記憶装置力 読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、 方程式 1で表される点 Aと点 Pとを通る直線と、楕円曲線 Eとの交点 R'を求める。楕円 曲線ペアリング演算部は、記憶装置を用いて、求めた交点 R'を記憶する。
[0126] S120において、楕円曲線ペアリング演算部は、 S119で求めた交点 R'を記憶装 置力 読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、交点 R'を通り 、 Xが一定の直線の方程式 v:X— u = 0(Xは、有限体 GF(qk)に値をとる変数。 uは、 有限体 GF (qk)の元)を求める。
具体的には、交点 R' = (X , Y )とすると、方程式 Vは、 X— X =0である。したが
R, R, R,
つて、楕円曲線ペアリング演算部は、演算装置を用いて、 u=X
R,を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した方程式 Vの係数 Uを記 憶する。
[0127] S121において、楕円曲線ペアリング演算部は、 S 120で計算した方程式 Vの係数 u を記憶装置から読み出す。楕円曲線ペアリング演算部は、演算装置を用いて、方程 式 Vで表される点 R'を通り、 Xが一定の直線と、楕円曲線 Eとの交点(すなわち、点 R' の逆元 =点八と点 Pとの和)を求める。楕円曲線ペアリング演算部は、記憶装置を用 V、て、求めた交点を新たな点 Aとして記憶する。
[0128] S122において、楕円曲線ペアリング演算部は、 S 118で計算した方程式 1の係数 c , d, eと、 S104で計算した点 Q'とを記憶装置力も読み出す。楕円曲線ペアリング演 算部は、演算装置を用いて、方程式 1の左辺 cX+dY+eに、点 Q'の座標 (X , Y
Q, Q,
)を代入した値 cX +dY +e
Q, Q, を計算する。楕円曲線ペアリング演算部は、記憶装置 を用いて、計算した値 cX +dY + 6を1 ')として記憶する。
Q, Q,
[0129] S123において、楕円曲線ペアリング演算部は、 S 118で計算した方程式 1の係数 c , d, eと、 S103で選択した点 Sとを記憶装置力も読み出す。楕円曲線ペアリング演算 部は、演算装置を用いて、方程式 1の左辺 cX+dY+eに、点 Sの座標 (X , Y )を代
S S
入した値 cX +dY +eを計算する。楕円曲線ペアリング演算部は、記憶装置を用い
S S
て、計算した値 cX +dY +eを 1 (S)として記憶する。
S S
[0130] S124において、楕円曲線ペアリング演算部は、 S 120で計算した方程式 Vの係数 u と、 S104で計算した点 Q'とを記憶装置力も読み出す。楕円曲線ペアリング演算部 は、演算装置を用いて、方程式 Vの左辺 X—uに、点 Q'の座標 (X , Y )を代入し
Q, Q,
た値 X — uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体
Q'
GF (qk)の元 v(Q' )を記憶するための記憶領域を確保し、計算した値 X — uを v(Q
Q'
' )として記憶する。
[0131] S125において、楕円曲線ペアリング演算部は、 S 120で計算した方程式 Vの係数 u と、 S103で選択した点 Sとを記憶装置力も読み出す。楕円曲線ペアリング演算部は 、演算装置を用いて、方程式 Vの左辺 X—uに、点 Sの座標 (X , Y )を代入した値 X
S S S
—Uを計算する。楕円曲線ペアリング演算部は、記憶装置を用いて、有限体 GF(qk) の元 v(S)を記憶するための記憶領域を確保し、計算した値 X— uを v(S)として記憶
S
する。
[0132] S126において、楕円曲線ペアリング演算部は、ペアリング値 fと、 S122〜S125で 計算した値 l(Q'), 1(S), v(Q'), v(S)とを記憶装置力も読み出す。楕円曲線ペアリ ング演算部は、演算装置を用いて、 (fX l(Q') Xv(S))Z(v(Q') Xl(S))を計算 する。楕円曲線ペアリング演算部は、記憶装置を用いて、計算した値 (f Xl(Q') Xv( S) ) Z (v (Q ' ) X 1 (S) )を、新たなペアリング値 fとして記憶する。
[0133] S127において、楕円曲線ペアリング演算部は、整数 mを記憶装置から読み出す。
楕円曲線ペアリング演算部は、演算装置を用いて、整数 mから 1を減じ、整数 m— 1 を求める。楕円曲線ペアリング演算部は、記憶装置を用いて、求めた整数 m— 1を新 たな整数 mとして記憶する。
[0134] S128において、楕円曲線ペアリング演算部は、整数 mを記憶装置から読み出す。
楕円曲線ペアリング演算部は、演算装置を用いて、 mが 0以上であるかどうかをチェ ックする。 m≥0であれば、 S108に戻る。 m<0であれば、 S129へ進む。
[0135] S129において、楕円曲線ペアリング演算部は、ペアリング値 fを記憶装置から読み 出す。楕円曲線ペアリング演算部は、演算装置を用いて、 fの (qk—l)Zr乗を計算 する。
ここで、 qk— 1は rの倍数であるから、(qk— l)Zrは、整数である。したがって、楕円 曲線ペアリング演算部は、演算装置を用いて、 fを (qk— l)Zr回掛け合わせることに より、 fの (qk— l)Zr乗を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した fの (qk— l)Zr乗を、 新たな fとして記憶する。
[0136] S130において、楕円曲線ペアリング演算部は、 S 129で計算したペアリング値 fを 記憶装置から読み出す。楕円曲線ペアリング演算部は、読み出したペアリング値 fを 出力する。
[0137] なお、ヴエイュペアリングのペアリング値も、 S128までは同様の手順で求めることが できる。
[0138] 以上の計算手順を見てもわ力るように、加法群 E (GF (q) )の群位数 rのノ、ミング重 みが小さいほうが、ペアリング値の計算時間が短くなる。
ここで、ノ、ミング重みとは、ある整数を 2進表記した場合に、ビット値が 1であるビット の数をいう。
この計算手順によれば、群位数 rの mビット目のビット値 r力その場合には、 S118〜 S126を実行する力 r力^の場合は、 S118〜S126を実行しない。
したがって、群位数 rのノ、ミング重みが小さいほうが、全体的な処理のステップ数が 少なくなり、ペアリング値の計算時間が短くなる。
[0139] なお、この計算手順は、点 Pを r倍する演算を行 、、その過程で求められる直線の 方程式を用いて、ペアリング値を計算する計算手順である。
[0140] 次に、この実施の形態における楕円曲線ペアリング演算部 233が行う、高速化され た計算方式にっ 、て説明する。
図 8〜図 10は、この実施の形態における楕円曲線ペアリング演算部 233による、テ イトペアリングのペアリング値を演算する演算処理の流れの一例を示すフローチヤ一 ト図である。
この演算処理は、効率的に演算可能な準同型写像を活用したミラー ·ライト (Miller lite:軽量化されたミラー)アルゴリズムと呼ばれるアルゴリズムを用いて!/、る。
[0141] 前提として、加法群 E (GF (q) )の群位数 rは、ある整数えとの間に、 r =ぇ2+ λ + 1 という関係が成り立つものとする。
また、整数えは、 λ = 2cl + 2c2 (c , cは、 0以上の整数。 c >c )であるものとする。
1 2 1 2
すなわち、整数えのハミング重みは、 2である。
このとき、 r = λ 2+ λ + 1 = 22cl + 2cl+c2+1 + 22c2+ 2cl + 2c2+ 1であるから、 rのハミ ング重みは、 6以下となる。
[0142] また、補助演算部 333が計算した値 sを記憶しておくため、記憶装置を用いて、有 限体 GF (qk)上の値 sを記憶するための記憶領域 c個(配列 s [c ])が確保されている
2 2
ものとする。
[0143] S201において、点入力部 331は、有限体 GF (qk)上における楕円曲線 E上の点 P ,点 Qを入力する。点入力部 331は、記憶装置を用いて、点 P,点 Qを記憶するため の記憶領域を確保し、入力した点 P,点 Qを記憶する。
[0144] ここで、点 Pは、有限体 GF (qk)の部分体である有限体 GF (q)上における楕円曲線 E上の点である。すなわち、点 Pは、加法群 E (GF (q) )の元である。また、点 Qは、有 限体 GF (qk)の部分体である有限体 GF (qk/2)上における楕円曲線 E '上の点を、効 率的に演算可能な自己準同型写像 Φを用いて、写像した点である。すなわち、点 Q は、加法群 E (GF (qk/2) )の元である。
なお、この高速ィ匕手法を用いるためには、 kZ2が整数でなければならないことから 、拡大次数 kが偶数の場合に限られる。
[0145] 楕円曲線 E 'とは、楕円曲線 E : Y2=X3 + aX+bに対応するねじれ楕円曲線である 。ねじれ楕円曲線 E,は、 Y2=X3 + d2aX+ d3b (dは、有限体 GF (q)上の値であって 、平方非剰余)という方程式により与えられる。なお、平方非剰余とは、 d= a 2 (d, a は、有限体 GF (q)の元)を満たす αが存在しな 、dを 、う。
[0146] また、効率的に演算可能な自己準同型写像 φとは、加法群 E (GF (qk/2) )の元を、 同じ加法群 E (GF (qk/2) )の元に写像する写像であって、加法群 E (GF (qk/2) )の元 であるすベての点 Pについて、 φ (Ρ) = λ Ρ ( φ (Ρ)は、点 Ρを自己準同型写像 φに よって写像した点。 λは、整数。 λ Ρは、点 Ρをえ回加算した点)である写像をいう。 楕円曲線上の点をスカラー倍した点( λ Ρ)は、点 Ρを λ回加算したものとして定義 される。これを愚直に計算するなら、楕円曲線上の加算をえ回演算する必要がある。 多少効率的なアルゴリズムを用いても、楕円曲線上の加算を最大(21og λ )回演算
2 する必要がある。
[0147] 楕円曲線上の点をスカラー倍した点は、やはり楕円曲線上の点であるから、これを 自己準同型写像として捉えることができる。このような自己準同型写像を φとすると、 φ (Ρ) = λ Ρという関係が成り立つ。
したがって、 φ (Ρ)を求める演算力 楕円曲線上の点をスカラー倍した点 λ Ρを求 める演算よりも、演算量が少ないのであれば、 λ Ρを求める代わりに φ (Ρ)を求める演 算を行うことにより、楕円曲線上の点のスカラー倍を高速に計算することが可能にな る。 このように、 φ (Ρ)を求める演算の演算量が比較的少なくてすむような自己準同型 写像 Φを、効率的に演算可能な自己準同型写像という。
[0148] 任意の λについて、効率的に演算可能な自己準同型写像が存在するとは限らな い。
しかし、例えば、加法群 Ε (Κ)の群位数 r力^ = λ2+λ+ 1である場合には、自己準 同型写像 Φ: (X, y)→(j8x, y) (x, yは、楕円曲線 E: Y2=X3+b上の点の座標)が 、 φ (P) = λΡの関係を満たすことが知られている。ここで、 βは、有限体 GF(q)上に おける 1の原始 3乗根、すなわち、 β 3= 1かつ β≠ 1である有限体 GF(q)の元である
[0149] また、群位数 r力^ = λ2+1である場合には、自己準同型写像 φ: (X, y)→(-x, iy ) (x, yは、楕円曲線 E:Y2=X3 + aX上の点の座標)が、 φ (Ρ) = λΡの関係を満た すことが知られている。ここで、 iは、有限体 GF(q)上における 1の原始 4乗根、すなわ ち、 i4= 1かつ i≠士 1である有限体 GF (q)の元である。
一般的に、 2次多項式£ )=& 2+1«+(:(&, b, cは整数)に整数えを代入して得 た整数 f ( λ )=a 2+h +cが、群位数 rの倍数である場合、 φ (Ρ) = λ Ρの関係を 満たす効率的に演算可能な自己準同型写像 φが存在する。ただし、そのような写像 が自己準同型写像であるためには、楕円曲線 Εの係数 a, bの間に所定の関係がある ことが必要である。
[0150] また、このような自己準同型写像 φは、自己準同型写像 φがなす環の判別式 Dの 絶対値が小さいほど、効率的に演算可能であることが知られている。
ここで自己準同型写像 φがなす環の判別式 Dとは、有限体 GF (qk)上における楕 円曲線 E上の任意の点 Pについて、 &φ2(Ρ)+1)φ (P)+cP = 0(a, b, cは、整数。 φ 2 (Ρ)は、点 Ρを写像した点 φ (Ρ)を更に写像した点 φ ( φ (Ρ) )。 Οは、無限遠点) が成り立つとき、 D=b2—4acにより求められる整数である。一般的に、判別式 Dは負 の値をとる。
[0151] 例えば、自己準同型写像 φが、 φ : (X, γ)→(βχ, y)である場合、任意の点 Pにつ いて、 φ2(Ρ) + φ (P)+P = 0が成り立つ。したがって、自己準同型写像 φ : (χ, y) →(βχ, y)の判別式 Dは、 D=l2— 4X1X1 =— 3である。 また、自己準同型写像 φが、 φ: (X, y)→(-x, iy)である場合、任意の点 Pについ て、 φ2(Ρ)+Ρ = 0が成り立つ。したがって、自己準同型写像 φ : (x, y)→(-x, iy) の判別式 Dは、 D = 02— 4X1X1 =— 4である。
[0152] この実施の形態では、効率的に演算可能な自己準同型写像 φとして、 φ: (X, y) →(ι8χ, y)を用いる場合について説明する。
しかし、これは一例にすぎず、効率的に演算可能な自己準同型写像 φとして、 φ: ( X, y)→(-x, iy)を用いてもよい。あるいは、他の自己準同型写像を用いてもよい。 なお、自己準同型写像がなす環の判別式 Dの絶対値が小さい自己準同型写像 φ を用いるほうが、演算を高速ィ匕でき、好ましい。
[0153] S202において、第一演算部 332は、楕円曲線 Eの係数 a, bと、加法群 E(GF(q)) の群位数 rとを、記憶装置から読み出す。
[0154] S203において、第一演算部 332は、有限体 GF(qk)上における楕円曲線 E上の点 Pを読み出す。
第一演算部 332は、記憶装置を用いて、有限体 GF(qk)上における楕円曲線 E上 の点 Aを記憶するための記憶領域を確保し、読み出した点 Pを、点 Aとして記憶する
[0155] S204において、第一演算部 332は、記憶装置を用いて、有限体 GF (qk)上のペア リング値 fを記憶するための記憶領域を確保し、有限体 GF(qk)上の定数 1を、ペアリ ング値 fとして記憶する。
[0156] S205において、第一演算部 332は、記憶装置を用いて、整数 jを記憶するための 記憶領域を確保し、整数 1を、整数 jとして記憶する。
[0157] S206において、第一演算部 332は、記憶装置を用いて、整数 iを記憶するための 記憶領域を確保し、整数 1を、整数 iとして記憶する。
[0158] S207において、第一演算部 332は、点 A、点 Q、整数 jを記憶装置から読み出す。
第一演算部 332は、有限体 GF(qk)上における楕円曲線 E上の 3つの点(点 A、点
A、点 Q)と、整数 jとを、補助演算部 333に入力する。
[0159] S208において、補助演算部 333は、 S208で第一演算部 332が入力した有限体
GF(qk)上における楕円曲線 E上の 3つの点に基づいて、点 A、値 g、値 sを計算する 補助演算部 333は、記憶装置を用いて、計算した点 Aを、新たな点 Aとして記憶す る。
補助演算部 333は、記憶装置を用いて、値 gを記憶するための記憶領域を確保し、 計算した値 gを記憶する。
補助演算部 333は、記憶装置を用いて、値 sを記憶するためにあらかじめ確保され ている記憶領域の i番目(s[i])に、計算した値 sを記憶する。
[0160] 図 11は、この実施の形態における補助演算部 333によるティトペアリング補助演算 処理の流れの一例を示すフローチャート図である。
[0161] S281において、補助演算部 333は、有限体 GF (qk)上における楕円曲線 E上の 3 つの点と整数 iとを入力する。ここでは、入力した 3つの点を順に点 A、点 B、点 Qと呼 ぶことにする。このうち、点 A、点 Qには、第一演算部 332から点 A、点 Qが入力され る。また、点 Bには、第一演算部 332から点 Aが入力される場合と、点 Pが入力される 場合がある。
補助演算部 333は、記憶装置を用いて、有限体 GF (qk)上における楕円曲線 E上 の点 A、点 B、点 Qおよび整数 iを記憶するための記憶領域を確保し、入力した点 A、 点 B、点 Qおよび整数 iを記憶する。
[0162] S282において、補助演算部 333は、 S281で入力した点 A,点 Bを記憶装置から
BJCみ出す。
補助演算部 333は、演算装置を用いて、読み出した点 Aと点 Bとを通る直線の方程 式 l:Y=mX+cを求める。
具体的には、点 A= (X , Y )、点 = (X , Y )とすると、点八≠点 の場合、補助
A A B B
演算部 333は、演算装置を用いて、 A— B間の傾き m= (Y— Y
B A )Z(X— X )、 Y
B A
切片 c= (X
A Y B -x B Y A )/(x B -x A )を計算する。
また、点八=点 の場合、補助演算部 333は、演算装置を用いて、点 Aにおける楕 円曲線 Eの接線の方程式 l:Y=mX+cを求める。
補助演算部 333は、記憶装置を用いて、有限体 GF (qk)上における値 m, cを記憶 するための記憶領域を確保し、求めた方程式 1の係数 m, cを記憶する。 [0163] S283【こお!ヽて、ネ甫助演算咅 333ίま、 S282で求めた方程式 1の係数 m, c、および、 S 281で入力した点 A,点 Bを記憶装置から読み出す。
補助演算部 333は、演算装置を用いて、 S282で求めた方程式 1に基づいて、点 A と点 Bとの和を計算する。
補助演算部 333は、記憶装置を用いて、計算した点 Aと点 Bとの和を、新たな点 Aと して記憶する。なお、これにより、補助演算部 333を呼び出した第一演算部 332側の 点 Aも書き換えられ、新たな点 Aとなる。
[0164] S284において、補助演算部 333は、(S283で計算した点 Aではなく) S281で入 力した点 A,点 Q、 S282で求めた方程式 1の係数 mを記憶装置力も読み出す。
補助演算部 333は、演算装置を用いて、有限体 GF (qk)上の値— Y — Y ~m ( β
Q A
X —X )を計算する。ここで、(X , Y )は、点 Aの座標。(X , Y )は、点 Qの座標。
Q A A A Q Q
βは、有限体 GF (qk)上における 1の原始 3乗根である。
補助演算部 333は、 S281で入力した整数 iを記憶装置力も読み出す。 補助演算部 333は、記憶装置を用いて、有限体 GF (qk)上の値 sを記憶するために 確保した記憶領域のうち、 i番目の記憶領域 (s [i] )に、計算した Y — Y m ( |8 X
Q A
-X
Q A )を記憶する。
[0165] S285において、補助演算部 333は、(S283で計算した点 Aではなく) S281で入 力した点 A,点 Q、 S282で求めた方程式 1の係数 mを記憶装置力も読み出す。
補助演算部 333は、演算装置を用いて、有限体 GF (qk)上の値 Y — Y — m (X
Q A Q
—X )を計算する。ここで、(X , Y )は、点 Aの座標。(X , Y )は、点 Qの座標であ
A A A Q Q
る。
補助演算部 333は、記憶装置を用いて、有限体 GF (qk)上の値 gを記憶するための 記憶領域を確保し、計算した値 Y -Y — m (X —X )を、値 gとして記憶する。
Q A Q A
[0166] S286において、補助演算部 333は、 S285で計算した値 gを記憶装置から読み出 す。
補助演算部 333は、読み出した値 gを、呼び出し元である第一演算部 332に対して 出力する。
[0167] このように、補助演算部 333は、点 Aを移動させながら、第一演算部 332がペアリン グ演算を行うのに必要な値 gを計算する。また、それと並行して、あとで第二演算部 3 35がペアリング演算を行うのに必要な値 sを計算し、記憶装置に記憶しておく。
[0168] 図 8〜図 10に戻って、説明を続ける。
[0169] S209において、第一演算部 332は、ペアリング値 fと、 S208で補助演算部 333が 計算した値 gとを、記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、有限体 GF (qk)上の値 f2 X gを計算する。 第一演算部 332は、記憶装置を用いて、計算した値 f2 X gを、新たなペアリング値 f として記憶する。
[0170] S210において、第一演算部 332は、整数 jを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0171] S211において、第一演算部 332は、整数 iを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 iに 1を加え、整数 i+ 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 i+ 1を、新たな整数 iとして feす。。
[0172] S212において、第一演算部 332は、整数 iを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、整数 -c以下であるかどうかをチエツ
1 2
クする。 i≤c— cであれば、 S207に戻る。 i〉c— cであれば、 S213へ進む。
1 2 1 2
[0173] S213において、第一演算部 332は、点 A、点 P、点 Q、整数 jを記憶装置から読み 出す。
第一演算部 332は、有限体 GF (qk)上における楕円曲線 E上の 3つの点(点 A、点 P、点 Q)と、整数 jとを、補助演算部 333に入力する。
[0174] S214において、補助演算部 333は、 S213で第一演算部 332が入力した有限体 GF (qk)上における楕円曲線 E上の 3つの点に基づいて、点 A、値 g、値 sを計算する 補助演算部 333は、記憶装置を用いて、計算した点 A、値 g、値 sを記憶する。
[0175] S215において、第一演算部 332は、ペアリング値 fと、 S214で補助演算部 333が 計算した値 gとを、記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、有限体 GF (qk)上の値 f X gを計算する。 第一演算部 332は、記憶装置を用いて、計算した値 f x gを、新たなペアリング値 fと して記憶する。
[0176] S216において、第一演算部 332は、整数 jを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0177] S217において、第一演算部 332は、記憶装置を用いて、整数 1を、整数 iとして記 憶する。
[0178] S218において、第一演算部 332は、点 A、点 Q、整数 jを記憶装置から読み出す。
第一演算部 332は、有限体 GF (qk)上における楕円曲線 E上の 3つの点(点 A、点
A、点 Q)と、整数 jとを、補助演算部 333に入力する。
[0179] S219において、補助演算部 333は、 S218で第一演算部 332が入力した有限体
GF (qk)上における楕円曲線 E上の 3つの点に基づいて、点 A、値 g、値 sを計算する 補助演算部 333は、記憶装置を用いて、計算した点 A、値 g、値 sを記憶する。
[0180] S220において、第一演算部 332は、ペアリング値 fと、 S219で補助演算部 333が 計算した値 gとを、記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、有限体 GF (qk)上の値 f2 X gを計算する。
[0181] 第一演算部 332は、記憶装置を用いて、計算した値 f2 X gを、新たなペアリング値 f として記憶する。
[0182] S221において、第一演算部 332は、整数 jを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。 第一演算部 332は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0183] S222において、第一演算部 332は、整数 iを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 iに 1を加え、整数 i+ 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 i+ 1を、新たな整数 iとして feす。。
[0184] S223において、第一演算部 332は、整数 iを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、 iが c以下であるかどうかをチェックする。 i
2
≤cであれば、 S218に戻る。 i〉cであれば、 S224へ進む。
2 2
[0185] S224において、第一演算部 332は、点 A、点 P、点 Qを記憶装置から読み出す。
第一演算部 332は、有限体 GF (qk)上における楕円曲線 E上の 3つの点(点 A、点
P、点 Q)と、整数 0とを、補助演算部 333に入力する。
[0186] S225において、補助演算部 333は、 S224で第一演算部 332が入力した有限体
GF (qk)上における楕円曲線 E上の 3つの点に基づいて、点 A、値 g、値 sを計算する 補助演算部 333は、記憶装置を用いて、計算した点 A、値 g、値 sを記憶する。
[0187] S226にお!/、て、第一演算咅 332は、ペアリング値 fと、 S225でネ甫助演算咅 333力 S 計算した値 gとを、記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、有限体 GF (qk)上の値 f X gを計算する。 第一演算部 332は、記憶装置を用いて、計算した値 f X gを、新たなペアリング値 fと して記憶する。
[0188] S227において、第二演算部 334は、 S226で第一演算部 332が計算したペアリン グ値 fを読み出す。
第二演算部 334は、記憶装置を用いて、有限体 GF (qk)上の値 hを記憶するための 記憶領域を確保し、読み出したペアリング値 fを、ペアリング値 hとして記憶する。
[0189] S228において、第二演算部 334は、記憶装置を用いて、整数 1を、整数 jとして記 憶する。 [0190] S229において、第二演算部 334は、記憶装置を用いて、整数 1を、整数 iとして記 憶する。
[0191] S230において、第二演算部 334は、ペアリング値 fと、整数 jと、補助演算部 333が 計算した値 sのうち j番目のもの(s[j])を記憶装置力 読み出す。
第二演算部 334は、演算装置を用いて、有限体 GF (qk)上の値 f2 X s j]を計算する 第二演算部 334は、記憶装置を用いて、計算した値 f2 X s j]を、新たなペアリング値 fとして記憶する。
[0192] S231において、第二演算部 334は、整数 jを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0193] S232において、第二演算部 334は、整数 iを記憶装置から読み出す。
第一演算部 332は、演算装置を用いて、読み出した整数 iに 1を加え、整数 i+ 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 i+ 1を、新たな整数 iとして feす。。
[0194] S233において、第二演算部 334は、整数 iを記憶装置から読み出す。
第二演算部 334は、演算装置を用いて、読み出した整数 -c以下であるかど
1 2
うかをチェックする。 i≤c— cであれば、 S230に戻る。 i〉c— cであれば、 S234へ
1 2 1 2
進む。
[0195] S234において、第二演算部 334は、ペアリング値 fと、整数 jと、補助演算部 333が 計算した値 sのうち j番目のもの(s[j])を記憶装置力 読み出す。
第二演算部 334は、演算装置を用いて、有限体 GF (qk)上の値 f X s j]を計算する 第二演算部 334は、記憶装置を用いて、計算した値 f X s j]を、新たなペアリング値 fとして記憶する。 [0196] S235において、第二演算部 334は、整数 jを記憶装置から読み出す。 第一演算部 332は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第一演算部 332は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0197] S236において、第二演算部 334は、ペアリング値 fと、 S227で記憶したペアリング 値 hとを、記憶装置から読み出す。
第二演算部 334は、演算装置を用いて、有限体 GF (qk)上の値 f X hを計算する。 第二演算部 334は、記憶装置を用いて、計算した値 f x hを、新たなペアリング値 fと して記憶する。
[0198] S237において、第二演算部 334は、記憶装置を用いて、整数 1を、整数 iとして記 憶する。
[0199] S238において、第二演算部 334は、ペアリング値 fと、整数 jと、補助演算部 333が 計算した値 sのうち j番目のもの(s[j])を記憶装置力 読み出す。
第二演算部 334は、演算装置を用いて、有限体 GF (qk)上の値 f2 X s j]を計算する 第二演算部 334は、記憶装置を用いて、計算した値 f2 X s[j]を、新たなペアリング 値 fとして記憶する。
[0200] S239において、第二演算部 334は、整数 jを記憶装置から読み出す。
第二演算部 334は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第二演算部 334は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 して feす。。
[0201] S240にお 、て、第二演算部 334は、整数 iを記憶装置から読み出す。
第二演算部 334は、演算装置を用いて、読み出した整数 jに 1を加え、整数 j + 1を 計算する。
第二演算部 334は、記憶装置を用いて、計算した整数 i+ 1を、新たな整数 iとして feす ο [0202] S241にお 、て、第二演算部 334は、整数 iを記憶装置から読み出す。 第二演算部 334は、演算装置を用いて、読み出した整数 以下であるかどうか
2
をチェックする。 i≤cであれば、 S238に戻る。 i〉cであれば、 S242へ進む。
2 2
[0203] S242において、べき乗演算部 335は、ペアリング値 fを記憶装置から読み出す。
べき乗演算部 335は、演算装置を用いて、ペアリング値 fの (qk— l)Zr乗を計算す る。
ここで、 qk— 1は rの倍数であるから、(qk— l)Zrは、整数である。したがって、べき 乗演算部 335は、演算装置を用いて、ペアリング値 fを (qk—l)Zr回掛け合わせるこ とにより、ペアリング値 fの(qk— l)Zr乗を計算する。
楕円曲線ペアリング演算部は、記憶装置を用いて、計算した fの (qk— l)Zr乗を、 新たなペアリング値 fとして記憶する。
[0204] S243において、ペアリング出力部 336は、ペアリング値 fを記憶装置力も読み出す ペアリング出力部 336は、読み出したペアリング値 fを出力する。
[0205] この計算手順において、第一演算部 332による S207〜S223の処理と、第二演算 部 334による S230〜S241の処理とは、ほとんど同じである。これはどちらも、楕円曲 線 E上の点をえ倍する演算を行い、その過程で得られる値を用いて、ペアリング値を 計算している。
ここで、群位数 rは、 r = λ 2+ λ + 1であるから、 τΡ=(λ2+ λ+1)Ρ= λ (λ+1) Ρ + Ρである。
[0206] 図 6〜図 7で説明したペアリング演算処理では、 rPを求める演算を行っていたのに 対し、ここで説明したペアリング演算処理では、第一演算部 332が(λ +1)Ρ( = Ρ'と する)を求める演算を行い、第二演算部 334が λ Ρ' +Ρを求める演算を行うことにより 、 rPを求める演算を行ったのと同じ結果を得ている。
なお、実際には、第二演算部 334は、 λΡ' +Ρを求める演算を行っていない。ペア リング値を計算するためには、 λΡ'+Ρを求める過程で得られる値が必要となる。こ の値は、第一演算部 332が(λ +1)Ρを求める過程において、補助演算部 333が既 に計算して、値 sとして記憶している。したがって、第二演算部 334は、 λΡ + Ρを求め る演算を行う必要がない。
[0207] ここで、補助演算部 333は、(λ + 1) Pを求める過程において、効率的に演算可能 な自己準同型写像 φを用いて、 φ (Α) = λ Aについて、第二演算部 334が必要とす る値 sを計算している。
[0208] 楕円曲線上の点のスカラー倍を求める演算は、スカラー倍数のビット長にほぼ比例 した計算量が必要となる。
τ= λ 2+ λ + 1であるから、 λのビット長は、 rのビット長の約半分である。したがって
、 (え + 1) P (あるいは λ Ρ)を求める演算は、 rPを求める演算の約半分の計算量で 出来ることとなり、計算が高速ィ匕できる。
[0209] また、えのハミング重みは 2であるから、 λ Ρを求める演算は、えと同じビット長でハ ミング重みが 3以上の整数について、点 Ρのスカラー倍を求める演算よりも、高速に計 算できる。
[0210] 更に、ここで説明した計算手順を詳しくみると、例えば、第一演算部 332が行う処理
(S202〜S226)のうち、 S207〜S212の繰り返しと、 S218〜S223の繰り返しは、 同じ内容の処理をしている。
これは、図 6〜図 7で説明したペアリング演算処理の繰り返しループにおいて、 r = οの場合の処理に相当する処理である。
[0211] また、第一演算部 332力行う S213〜S215の処理は、図 6〜図 7で説明したペアリ ング演算処理の繰り返しループにおいて、 r = 1の場合の処理に相当する処理であ る。
すなわち、ここで説明した計算手順は、えのハミング重みが小さいことを利用して、 図 6〜図 7で説明したペアリング演算処理の繰り返しループを展開し、条件分岐(図 7 の S117)をなくすことにより、ペアリング演算処理を高速ィ匕したものである。
[0212] なお、ここでは λのハミング重みが 2である場合について説明した力 λのハミング 重みが 2以外の値であっても、この考え方を応用して、ペアリング演算処理を高速ィ匕 することができる。
しかし、えのハミング重みを 1とすると、群位数 rとして選択できる可能性のある整数 が限られてしまう。群位数 rは素数でなければならな ヽからである。 また、上述したように、えのノ、ミング重みが小さいほうが、ペアリング演算処理を高 速化できる。
したがって、えのノ、ミング重みは 2とすること力 好ましい。
[0213] なお、ここでは整数 c , cの取得方法については、特に説明しな力つた力 群位数
1 2
入力部 214が入力した群位数 rから、整数 c , cを求めることができる。この計算は、
1 2
コンピュータなどの演算装置を用いて、計算可能である。
[0214] また、逆に、群位数入力部 214は、群位数 rではなぐ整数 c , cを入力することとし
1 2
てもよい。その場合、群位数入力部 214は、演算装置を用いて、整数え = 2el + 2e2を 計算し、更に、群位数 r= λ 2+ λ + 1を計算することができる。
あるいは、群位数入力部 214は、群位数 rと、整数 c , cとを、両方入力することとし
1 2
てもよい。そのほうが、楕円曲線暗号演算装置 200における計算量が減るので、楕円 曲線暗号演算装置 200が、演算能力の低い演算装置を備えている場合には、好まし い。
[0215] なお、楕円曲線ペアリング演算部 233は、上述した動作をコンピュータにさせるプロ グラムを、コンピュータに実行させることにより、実現可能である。
しかし、ペアリング演算を高速ィ匕するためには、ソフトウェア的に実現するよりも、上 述した動作をするように組んだ専用の論理回路により、ハードウェア的に実現するほ うが、好ましい。
[0216] 上述したように、第一演算部 332力行う処理の繰り返し(S207〜S212、 S218〜S 223)の数 (第二演算部 334が行う処理の繰り返しの数も同様)は、 λのハミング重み と等しい。したがって、えのノ、ミング重みによって、繰り返しの数を変えるように、条件 分岐を設ければ、 λのノ、ミング重みが異なる群位数 rにも対応できるよう構成すること は可能である。
[0217] しかし、ペアリング演算処理を高速ィ匕するためには、条件分岐の数が少ないほうが よいので、えのハミング重みを固定するほうが、好ましい。
特に、楕円曲線ペアリング演算部 233をノヽードウエア的に実現する場合には、えの ノ、ミング重みを固定とするほうが、回路構成を簡略ィ匕できるので、更に、好ましい。
[0218] このように、群位数入力部 214が入力する群位数 rを、特定の形式を有する群位数 に限定することにより、ペアリング演算処理を高速ィ匕できる。
ここで、特定の形式を有する群位数 rとは、ハミング重みが一定 (例えば、 2)の整数 λについて、 ν= λ 2+ λ + 1という関係を有する群位数 rのことである。
更に一般化して 、えば、 r = λ 2 + λ + 1という関係に限らず、 r = λ 2 + 1、あるいは 、 r=f ( λ ) (f ( λ )は、係数が整数の 2次多項式 f (x)に整数えを代入した値)という関 係であってもよい。
[0219] このように、群位数入力部 214が入力する群位数 rを、特定の形式を有する群位数 に限定することにより、ペアリング演算処理を高速ィ匕した楕円曲線暗号演算装置 200 は、特定の形式を有する群位数に特化することにより高速化した楕円曲線ペアリング 演算により、楕円曲線ペアリング演算を行う楕円曲線暗号演算装置である。
[0220] 更にいえば、整数 c , cも固定とすれば、第一演算部 332が行う処理 (第二演算部
1 2
334が行う処理も同様)の繰り返しの繰り返し回数が固定となるので、更に、ペアリン グ演算を高速ィ匕できる。
その場合、整数え = 2cl + 2c2も固定されるので、群位数 r= λ 2+ λ + 1も一つの値 に固定される。
[0221] このように、群位数 rの値を特定の値に固定することにより、ペアリング演算処理を高 速化できる。
その場合、群位数 rはあらカゝじめ定められているので、群位数入力部 214は必要な い。
[0222] このように、群位数 rの値を特定の値に固定することにより、ペアリング演算処理を高 速化した楕円曲線暗号演算装置 200は、あらかじめ定めた特定の群位数 rに特ィ匕す ることにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行 う楕円曲線暗号演算装置である。
[0223] 前述したように、楕円曲線ペアリング暗号の安全性は、楕円曲線離散対数問題の 困難性と、有限体乗法群離散対数問題の困難性により、確保されている。
これらの困難性は、現存するコンピュータの計算能力によるものであるから、コンビ ユータの計算能力が向上すれば、安全性を確保するため、困難性のレベルを上げる 必要がある。 [0224] 楕円曲線離散対数問題の困難性は、加法群 E (GF (q) )の群位数 rのビット長と関 連している。
しかし、ここで説明したように、ペアリング演算を高速ィ匕するために群位数 rを固定し てしまうと、群位数 rのビット長を変えることはできな 、。
したがって、楕円曲線離散対数問題の困難性のレベルを上げることはできなくなる
[0225] 一方、有限体乗法群離散対数問題の困難性は、有限体 K' =GF (qk)の位数 qkの ビット長と関連している。
したがって、拡大次数 kを大きくすることにより、有限体乗法群離散対数問題の困難 性のレベルを上げることができる。
[0226] すなわち、あら力じめ定めた群位数 rに特ィ匕することにより高速ィ匕した楕円曲線ペア リング演算により、楕円曲線ペアリング演算を行う楕円曲線暗号演算装置は、拡大次 数 kをあとから変更できるよう構成することにより、安全性のレベルを上げることができ るよつになる。
[0227] そのためには、例えば、拡大次数 kを入力する拡大次数入力部 212を有することが 重要である。
また、有限体演算部 231は、拡大次数 kが変更になっても、有限体 GF (qk)上で定 義された四則演算を行うことができるよう構成しておくことが重要である。
[0228] 前述したように、有限体 GF (qk)の元は、例えば、 qが素数 pと等しい場合、 k個の 0 〜p— 1の整数の組 (配列)として、記憶装置が記憶する。
したがって、拡大次数 kを可変できるように構成するためには、有限体演算部 231 の構成を複雑にする必要がある。
しかし、楕円曲線暗号演算装置において、楕円曲線暗号の安全性を確保すること は、なによりも重要なことであるから、拡大次数 kを可変できるように有限体演算部 23 1を構成することは必要である。
[0229] また、群位数 rを固定しな 、場合であっても、拡大次数 kを可変できるよう構成する 必要があることは変わらない。それにより、柔軟な安全性変更が行える。
[0230] なお、拡大次数 kを比較的自由に変えられるようにするためには、群位数!:、有限体 K = GF (q)の位数 qの値を慎重に選択する必要がある。この実施の形態における楕 円曲線暗号演算装置は、そのように慎重に選択された群位数 rに特ィ匕することにより 楕円曲線ペアリング演算を高速ィ匕している点にも特徴がある。
そのような群位数!:、位数 qを選択する方法については、実施の形態 2で詳しく述べ る。
[0231] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、特定の形式を有する群位数に特化することに より高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、 演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速 に行うことができると 、う効果を奏する。
[0232] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、有限体 K上における楕円曲線 E上の自己準同 型写像 Φを利用することにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線 ペアリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線 ペアリング暗号の処理を高速に行うことができるという効果を奏する。
[0233] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、有限体 K上における楕円曲線 E上の自己準同 型写像 φとして、効率的に演算可能な自己準同型写像を利用することにより高速ィ匕 した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、演算装置 の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速に行うこと ができるという効果を奏する。
[0234] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、有限体 K上における楕円曲線 E上の自己準同 型写像 φとして、自己準同型写像がなす環の判別式 Dの絶対値が小さい自己準同 型写像を利用することにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線べ ァリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線べ ァリング暗号の処理を高速に行うことができるという効果を奏する。
[0235] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、有限体 K上における楕円曲線 E上の自己準同 型写像 φとして、 : (x, y)→( j8 x, y) (ただし、 βは、有限体 Κ上における 1の原始 3乗根)を利用することにより高速化した楕円曲線ペアリング演算により、楕円曲線べ ァリング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線べ ァリング暗号の処理を高速に行うことができるという効果を奏する。
[0236] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、有限体 Κ上における楕円曲線 Ε上の自己準同 型写像 φとして、 φ: (X, y)→ (— X, iy) (ただし、 iは、有限体 K上における 1の原始 4 乗根)を利用することにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペア リング演算を行うので、演算装置の演算能力が低い場合であっても、楕円曲線ペアリ ング暗号の処理を高速に行うことができるという効果を奏する。
[0237] この実施の形態における楕円曲線暗号演算装置 200によれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、あらかじめ定めた特定の群位数に特化するこ とにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うの で、演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を 高速に行うことができると 、う効果を奏する。
[0238] なお、以上説明した楕円曲線暗号演算装置 200は、コンピュータを、以上説明した 楕円曲線暗号演算装置として機能させるプログラムを、コンピュータに実行させること により、実現することができる。
[0239] この実施の形態における楕円曲線暗号演算プログラムによれば、楕円曲線ペアリン グ演算部 233が、演算装置を用いて、特定の形式を有する群位数に特化することに より高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行うので、 演算装置の演算能力が低い場合であっても、楕円曲線ペアリング暗号の処理を高速 に行うことができると 、う効果を奏する。
[0240] 実施の形態 2.
実施の形態 2を、図 12〜図 25を用いて説明する。
この実施の形態における楕円曲線暗号システム 800の全体構成は、実施の形態 1 において、図 1を用いて説明したものと同様であるので、ここでは説明を省略する。 また、この実施の形態における楕円曲線暗号パラメータ生成装置 100の外観及び ハードウェア資源は、実施の形態 1において図 2及び図 3を用いて説明した楕円曲線 暗号演算装置 200と同様であるので、ここでは説明を省略する。
[0241] なお、楕円曲線暗号パラメータ生成装置 100は、楕円曲線暗号演算装置 200と比 ベてはるかにその数が少なぐセンタ 300などに設置されるものであるから、楕円曲線 暗号パラメータ生成装置 100が有する演算装置は、楕円曲線暗号演算装置 200が 有する演算装置よりも、高性能であるものとする。
[0242] 図 12は、この実施の形態における楕円曲線暗号パラメータ生成装置 100の内部ブ ロックの構成の一例を示すブロック構成図である。
楕円曲線暗号パラメータ生成装置 100は、素数生成部 110、群位数適性判断部 1 20、群位数候補出力部 130、群位数選択部 140、群位数出力部 150、群位数入力 部 160、拡大次数入力部 170、有限体位数決定部 180、有限体位数出力部 190な どを有する。
[0243] 素数生成部 110は、演算装置を用いて、加法群 E (GF (q) )の群位数として使えそ うな素数 rを生成する。
素数生成部 110は、記憶装置を用いて、生成した素数 rを記憶する。
[0244] 群位数適性判断部 120は、素数生成部 110が生成した素数!:を記憶装置カゝら読み 出す。
群位数適性判断部 120は、演算装置を用いて、読み出した素数 rが、加法群 E (GF (q) )の群位数として適切である力否かを判断する。
群位数適性判断部 120は、記憶装置を用いて、判断結果を記憶する。
[0245] 群位数候補出力部 130は、素数生成部 110が生成した素数!:と、群位数適性判断 部 120が判断した判断結果とを、記憶装置から読み出す。
群位数候補出力部 130は、演算装置を用いて、群位数適性判断部 120が、加法 群 E (GF (q) )の群位数として適切であると判断した素数 rを選択する。
群位数候補出力部 130は、出力装置を用いて、選択した素数 rを、群位数候補とし て出力する。
[0246] 群位数選択部 140は、群位数候補出力部 130が出力した群位数候補のなかから、 加法群 E (GF (q) )の群位数として用いる群位数 rを選択する。
群位数選択部 140は、記憶装置を用いて、選択した群位数 rを記憶する。 例えば、群位数候補出力部 130が、表示装置 901 (出力装置の一例)を用いて、群 位数候補を表示し、管理者が表示された群位数候補のなカゝから選択した群位数 rを 入力することにより、群位数選択部 140が群位数!:を選択する。
あるいは、群位数選択部 140は、群位数候補出力部 130が出力した群位数候補の なかから、群位数 rをランダムに選択することとしてもょ 、。
[0247] 群位数出力部 150は、群位数選択部 140が選択した群位数!:を記憶装置カゝら読み 出す。
群位数出力部 150は、出力装置を用いて、読み出した群位数 rを出力する。
例えば、群位数出力部 150は、インターネットを介して、楕円曲線暗号演算装置 20
0に対して、群位数 rを送信する。
[0248] 群位数入力部 160は、入力装置を用いて、群位数選択部 140が選択した群位数!: を入力する。
群位数入力部 160は、記憶装置を用いて、入力した群位数 rを記憶する。
[0249] 拡大次数入力部 170は、入力装置を用いて、有限体 K=GF (q)の拡大体である 有限体 K, =GF (qk)の拡大次数 kを入力する。
拡大次数入力部 170は、記憶装置を用いて、入力した拡大次数 kを記憶する。
[0250] 有限体位数決定部 180は、群位数入力部 160が入力した群位数 rと、拡大次数入 力部 170が入力した拡大次数 kとを、記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した群位数 rと拡大次数 kと に基づ!/、て、有限体 GF (q)の位数 qを決定する。
有限体位数決定部 180は、記憶装置を用いて、決定した有限体 GF (q)の位数 qを feす。。
[0251] 有限体位数出力部 190は、有限体位数決定部 180が決定した有限体 GF (q)の位 数 qを記憶装置から読み出す。
有限体位数出力部 190は、出力装置を用いて、読み出した有限体 GF (q)の位数 q を出力する。 例えば、有限体位数出力部 190は、インターネットを介して、楕円曲線暗号演算装 置 200に対して、有限体 GF (q)の位数 qを送信する。
[0252] この実施の形態における楕円曲線暗号パラメータ生成装置 100は、実施の形態 1 で説明したように、楕円曲線ペアリング演算を高速ィ匕するために、特定の群位数 rま たは特定の形式を有する群位数 rに特ィ匕した楕円曲線暗号演算装置 200に設定す ることができる楕円曲線暗号パラメータを生成する装置である。
[0253] まず、群位数 rを一定のまま変更せずに、拡大次数 kを柔軟に変更することが可能 な群位数 rの条件について説明する。
有限体 GF (q)上における楕円曲線 E上の点のペアリングが有限体 GF (q)の k次拡 大体である有限体 GF (qk)に値をとるためには、 qk— 1が rの倍数である必要がある。 そのためには、有限体 GF (r)の乗法群 GF (r) *が 1の原始 k乗根を持つ必要がある ので、 r 1が kの倍数でなければならない。
[0254] したがって、群位数 rを固定して拡大次数 kを柔軟に変更するためには、 r 1がで きるだけ多くの約数を持つように群位数 rを選択すればよい。
実施の形態 1で説明したように、拡大次数 kが偶数である場合に、楕円曲線ペアリ ング演算を高速ィ匕できるので、拡大次数 kとして、例えば、 2、 4、 6、 · · ·を選択できる ようにする。
[0255] 図 13は、この実施の形態における群位数適性判断部 120による群位数適性判断 処理の流れの一例を示すフローチャート図である。
[0256] 前提として、拡大次数 kを変更する範囲を、 2≤k≤ 2k (k は、 2以上の整数)の
max max
偶数とする。整数 k は、あら力じめ所定の値を定めてぉ 、てもよ 、し、入力装置を
max
用 、て入力し、記憶装置に記憶してぉ 、てもよ 、。
[0257] S381において、群位数適性判断部 120は、素数生成部 110が生成した素数 rを入 力する。
群位数適性判断部 120は、記憶装置を用いて、入力した素数 rを記憶する。
[0258] S382において、群位数適性判断部 120は、 S381で入力した素数 rを記憶装置か ら み出す。
群位数適性判断部 120は、演算装置を用いて、整数 (r— 1) Z2を計算する。ここで 、 rは 3以上の素数であるから、(r— 1)Z2は整数となる。
群位数適性判断部 120は、記憶装置を用いて、整数 r'を記憶するための記憶領域 を確保し、計算した整数 (r— 1)Z2を、整数 r'として記憶する。
[0259] S383において、群位数適性判断部 120は、記憶装置を用いて、整数 kを記憶する ための記憶領域を確保し、整数 2を、整数 kとして記憶する。
[0260] S384において、群位数適性判断部 120は、整数 kと、 S382で計算した整数 r,とを 、記憶装置から読み出す。
群位数適性判断部 120は、演算装置を用いて、読み出した整数 r'が、読み出した 整数 kの倍数であるか否かをチェックする。 r'が kの倍数であれば、 S385へ進む。 r' カ¾の倍数でなければ、 S 388へ進む。
[0261] S385において、群位数適性判断部 120は、整数 kを記憶装置から読み出す。
群位数適性判断部 120は、演算装置を用いて、整数 kに 1を加えて、整数 k+1を 計算する。
群位数適性判断部 120は、記憶装置を用いて、計算した整数 k+1を、新たな整数 kとして記憶する。
[0262] S386において、群位数適性判断部 120は、 S385で計算した整数 kを記憶装置か ら み出す。
群位数適性判断部 120は、演算装置を用いて、整数 kが整数 k 以下であるか否
max
かを判断する。 k≤k である場合には、 S384に戻る。 k>k である場合には、 S3
max max
87へ進む。
[0263] S387において、群位数適性判断部 120は、素数 rが群位数として適切であると判 断する。すなわち、群位数適性判断部 120は、演算装置を用いて、素数 rが群位数と して適切であると 、う判断結果を示すデータ (例えば、文字列「OK」やブール値「1」 など)を生成する。
群位数適性判断部 120は、記憶装置を用いて、生成したデータ (判断結果)を記憶 する。
その後、 S389へ進む。
[0264] S388にお 、て、群位数適性判断部 120は、素数 rが群位数として適切でな 、と判 断する。すなわち、群位数適性判断部 120は、演算装置を用いて、素数 rが群位数と して適切でな 、と 、う判断結果を示すデータ (例えば、文字列「NG」やブール値「0」 など)を生成する。
群位数適性判断部 120は、記憶装置を用いて、生成したデータ (判断結果)を記憶 する。
[0265] S389において、群位数適性判断部 120は、判断結果を記憶装置から読み出す。
群位数適性判断部 120は、読み出した判断結果を出力する。
[0266] これにより、群位数適性判断部 120は、 r—1が 2k 以下のすべての偶数を約数に
max
持つ場合に、素数!:が群位数として適切であると判断し、それ以外の場合に、素数 rが 群位数として適切でな 、と判断する。
[0267] なお、この例では拡大次数 kの下限が 2であるもの仮定とし、 2k 以下のすべての
max
偶数を約数に持つ力否かを判断基準として ヽるが、暗号の安全性を最低限確保でき る拡大次数 kが 2k (k は、 2以上の整数。 k <k )である場合には、 2k 以上
mm mm mm max min
2k 以下のすべての偶数を約数に持つかを判断基準とすればよ!、。その場合は、 max
S283で整数 kの初期値として k を記憶すればょ 、。
mm
[0268] また、 S284において整数 r'が整数 kの倍数である力判断するため、あら力じめ整 数 r'を素因数分解しておいてもよい。
[0269] 図 14は、この実施の形態における楕円曲線暗号パラメータ生成装置 100による群 位数候補算出処理の流れの一例を示すフローチャート図である。
[0270] 前提として、整数 c (整数えのビット長— 1)と、整数 k とは、あら力じめ定められた
1 max
値であるものとする。あるいは、入力装置を用いて入力し、記憶装置を用いて記憶し ておいてもよい。
また、整数えのノ、ミング重みは、 2であるものとする。したがって、 λ = 2cl + 2c2 (c , cは、 0以上の整数。 c >c )である。し力し、これは一例に過ぎず、えのハミング重
2 1 2
みは 2以外の値であってもよい。また、えのノ、ミング重みを、入力装置を用いて入力し 、記憶装置を用いて記憶することにより、可変できるように構成してもよい。
[0271] S301において、素数生成部 110は、記憶装置を用いて、整数 cを記憶するための
2
記憶領域を確保し、整数 0を、整数 cとして記憶する。
2 [0272] S302において、素数生成部 110は、整数 cを記憶装置から読み出す。
2
素数生成部 110は、演算装置を用いて、整数 2el + 2e2を計算する。で
素数生成部 110は、記憶装置を用いて、整数えを記憶するための記憶領域を確 保し、計算した整数 ^ + 2を、整数えとして記憶する。
[0273] S303において、素数生成部 110は、 S302で生成した整数えを記憶装置力 読み 出す。
素数生成部 110は、演算装置を用いて、整数え 2+ λ + 1を計算する。 素数生成部 110は、記憶装置を用いて、整数 rを記憶するための記憶領域を確保 し、計算した整数 λ 2+ λ + 1を、整数 rとして記憶する。
[0274] S304において、素数生成部 110は、 S 303で生成した整数 rを記憶装置力も読み 出す。
素数生成部 110は、演算装置を用いて、読み出した整数 rが素数力どうかをチヱッ クする。整数 rが素数でない場合は、 S307へ進む。整数 rが素数であれば、 S305へ 進む。
[0275] S305において、群位数適性判断部 120は、 S303で素数生成部 110が生成した 整数 r (素数 r)を、記憶装置から読み出して入力する。
群位数適性判断部 120は、演算装置を用いて、入力した素数 rが群位数として適 切であるか否かを判断する。素数 rが群位数として適切でないと判断した場合は、 S3 07へ進む。素数 rが群位数として適切であると判断した場合は、 S306へ進む。
[0276] S306において、群位数候補出力部 130は、 S303で素数生成部 110が生成した 素数 rを、記憶装置から読み出す。
群位数候補出力部 130は、出力装置を用いて、読み出した素数 rを、群位数候補と して出力する。
[0277] S307において、素数生成部 110は、整数 cを記憶装置から読み出す。
2
素数生成部 110は、演算装置を用いて、整数 cに 1を加えて、整数 c + 1を計算す
2 2
る。
素数生成部 110は、記憶装置を用いて、計算した整数 c + 1を、新たな整数 cとし
2 2
" feす o [0278] S308において、素数生成部 110は、 S307で計算した整数 cを記憶装置から読み
2
出す。
素数生成部 110は、演算装置を用いて、読み出した整数 cが整数 cより小さいか
2 1
否かをチェックする。 c <cであれば、 S302に戻る。 c ≥cであれば、処理を終了す
2 1 2 1
る。
[0279] なお、この例では、 ν=λ2+λ+ 1である群位数 rの候補を算出する場合について 説明しているが、これは、そのような特定の形式の群位数 rに特ィ匕することにより楕円 曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 200に設定する群位数の 候補を算出するものだ力 である。
[0280] 楕円曲線暗号演算装置 200が他の形式の群位数 rに特ィ匕したものである場合には 、それに対応した rとえの関係式を用いて、整数 rを計算する。
すなわち、 rと λの関係式として、例えば、 ν=ί(λ) (ί(λ)は、 2次多項式 f (X) =ax 2+bx+c(a, b, cは、整数)に、整数えを代入した値。すなわち、 f( )=a 2+b + c)を用いるとすると、 S303で r= λ2+ λ + 1を計算する代わりに、以下の処理 S3 03aを行う。
[0281] S303aにおいて、素数生成部 110は、 S302で生成した整数えを記憶装置力 読 み出す。
素数生成部 110は、演算装置を用いて、整数 a 2+b +cを計算する。 素数生成部 110は、記憶装置を用いて、整数 rを記憶するための記憶領域を確保 し、計算した整数 a 2+b +cを、整数 rとして記憶する。
[0282] 二次多項式 f(x)の係数 a, b, cは、あらかじめ定められた定数であってもよい。ある いは、入力装置を用いて係数 a, b, cを入力し、記憶装置を用いて記憶しておいて、 S303において、素数生成部 110が、記憶した係数 a, b, cを記憶装置から読み出し 、読み出した係数 a, b, cに基づいて、整数 a 2 + b +cを計算してもよい。
[0283] 二次多項式 f (X)は、楕円曲線暗号演算装置 200が特化した群位数!:の形式に対 応して、例えば、 f (X) =x2+lであってもよい。あるいは、他の整数を係数とする二次 多項式であってもよい。
[0284] また、この例では、 ν=λ2+λ+ 1である群位数 rの候補を算出する場合にっ 、て 説明している力 rは、 + 1 (あるいは ί( λ ) )の素因数であってもよい。
その場合、 S304で rが素数であるかを判断する代わりに、例えば、以下の処理 S30 4aを行う。
[0285] S304aにおいて、素数生成部 110は、 S303で生成した整数 rを記憶装置力 読み 出す。
素数生成部 110は、演算装置を用いて、読み出した整数 rを素因数分解する。 素数生成部 110は、演算装置を用いて、整数 rの素因数分解のなかから、もっとも 大きい素数を選択する。
素数生成部 110は、記憶装置を用いて、選択した素数を、素数 rとして記憶する。
[0286] なお、 rが f ( λ )の素因数である場合、 ί ( λ )を rで割った商 n=f ( λ ) Zrは、小さい 整数であることが好ましい。
その場合、 S304の処理は、例えば、上記処理 S304aの次に、以下の処理 S304b
, S304cを加えたものとなる。
[0287] S304bにお!/ヽて、素数生成咅 I 10は、 S303で計算した整数又と、 S304aで選択 した素数 rとを、記憶装置から読み出す。
素数生成部 110は、演算装置を用いて、 f ( ) Zrを計算する。
素数生成部 110は、記憶装置を用いて、整数である商 nを記憶するための記憶領 域を確保し、計算した f ( ) Zrを、商 nとして記憶する。
[0288] S304cにおいて、素数生成部 110は、 S304bで計算した商 nを記憶装置力 読み 出す。
素数生成部 110は、演算装置を用いて、読み出した商 nが、所定の整数 n 以下
max であるか否かを判断する。
n≤n であると判断した場合には、 S305へ進む。 n>n であると判断した場合 max max
に ίま、 S307へ進む。
[0289] なお、 S304bにおいて、 f ( λ ) Zrを計算する代わりに、 S304aで求めた r以外の素 因数を掛け合わせることにより、商 nを計算してもよい。
また、 S304cにおける所定の整数 n は、あら力じめ定められた定数であってもよ
max
い。あるいは、入力装置を用いて n を入力し、記憶装置を用いて記憶しておいても よい。
[0290] 以上説明した群位数候補算出処理により、算出され、出力された群位数候補のな かから、実際に楕円曲線暗号演算装置 200に設定する群位数!:を、群位数選択部 1 40が選択する。
群位数選択部 140が選択した群位数!:は、群位数出力部 150が出力する。
[0291] 楕円曲線暗号演算装置 200は、入力装置を用いて、群位数出力部 150が出力し た群位数 rを入力し、記憶装置を用いて、楕円曲線暗号パラメータの一つとして記憶 し、演算装置を用いて、記憶した群位数 rに基づいて、楕円曲線上の点の加算や、楕 円曲線ペアリングの計算を行う。
あるいは、群位数出力部 150が出力した群位数 rに基づいて、その群位数 rに特ィ匕 することにより楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 200を 製造してもよい。その場合には、あとから群位数 rを変更することができなくなるが、拡 大次数 kを変更することにより、暗号の安全性のレベルを、あとから変更することがで きる。
[0292] 次に、楕円曲線暗号パラメータの一つである、有限体 GF (q)の位数 qを、楕円曲線 暗号パラメータ生成装置 100が生成する処理について説明する。
[0293] 上記説明した処理により、群位数 rを定めたのち、楕円曲線暗号演算装置 200が用 V、る楕円曲線暗号の安全性のレベルに基づ 、て、拡大次数 kを定める。
拡大次数入力部 170は、入力装置を用いて、拡大次数 kを入力する。
拡大次数 kは、楕円曲線暗号の管理者が定め、拡大次数入力部 170に入力しても よい。あるいは、楕円曲線暗号に対する攻撃の危険性を検知する危険性検知装置を 設け、危険性検知装置が、攻撃の危険性が高まったと判断した場合に、拡大次数 k を変更して、拡大次数入力部 170に入力する装置を設けてもよい。
[0294] 図 15は、この実施の形態における有限体位数決定部 180による有限体位数決定 処理の流れの一例を示すフローチャート図である。
ここで説明する処理の流れは、コックス 'ピンチ (Cocks -Pinch)法と呼ばれるアル ゴリズムを用いている。
[0295] 前提として、拡大次数 k、群位数!:、整数 Dが、記憶装置に記憶されて!、る。ただし、 整数 Dは、群位数 rを法とした平方剰余であって、 4で割った余りが 1であるものとする
。また、群位数 rは、素数であり、群位数 rを kで割った余りが 1であるものとする。また、 拡大次数 kは、 2以上の偶数であるものとする。
[0296] S401において、有限体位数決定部 180は、演算装置を用いて、有限体 GF (r)の 乗法群 GF (r) *上における 1の原始 k乗根を求める。
有限体位数決定部 180は、記憶装置を用いて、有限体 GF (r)上の値 gを記憶する ための記憶領域を確保し、求めた 1の原始 k乗根を、値 gとして記憶する。
[0297] なお、乗法群 GF (r) *の位数 r— 1は、 kの倍数であるから、乗法群 GF (r) *上に、 1 の原始 k乗根が必ず存在する。また、乗法群 GF (r) *上の k個の 1の k乗根のうち、 1 の原始 k乗根は複数存在するが、複数の 1の原始 k乗根のうち、どれを選択してもよ い。
[0298] S402において、有限体位数決定部 180は、 S401で求めた値 gを記憶装置力も読 み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した値 gを 2で除して、有限 体 GF (r)上の値 gZ2を計算する。
有限体位数決定部 180は、記憶装置を用いて、整数 ωを記憶するための記憶領 域を確保し、計算した有限体 GF (r)上の値 gZ2を、整数 ωとして記憶する。
ここで、群位数 rは素数であるから、有限体 GF (r)上の値は、整数として扱うことが できる。
[0299] S403において、有限体位数決定部 180は、整数 Dと、 S402で計算した整数 ωと を、記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、有限体 GF (r)上の値 (2 ω—1) Ζ を計算する。
ここで、整数 Dは、群位数 rを法とした平方剰余であるから、 Dは、有限体 GF (r) 上の値であり、有限体 GF (r)上の四則演算を用いて、値 (2 ω— 1) Z Dを計算す ることがでさる。
有限体位数決定部 180は、記憶装置を用いて、整数 f を記憶するための記憶領域
0
を確保し、計算した有限体 GF (r)上の値 (2 ω— 1)Z Dを、整数 f として記憶する。 [0300] S404において、有限体位数決定部 180は、記憶装置を用いて、整数 jを記憶する ための記憶領域を確保し、整数 1を、整数 jとして記憶する。
[0301] S405において、有限体位数決定部 180は、記憶装置を用いて、群位数 rと、整数
Dと、整数 jと、 S402で計算した整数 ωと、 S403で計算した整数 f とを、記憶装置か
0
ら み出す。
有限体位数決定部 180は、演算装置を用いて、整数 ω 2+ ω + (1一(f +j Xr) 2 X o
D) Z4を計算する。
ここで、 Dを 4で割った余りは 1であるから、(1— (f +j Xr) 2 X D) Z4は整数となる。
0
有限体位数決定部 180は、記憶装置を用いて、整数 pを記憶するための記憶領域 を確保し、計算した整数 ω 2 + ω + (1— (f +j Xr) 2 X D) /4^整数 pとして記憶す
0
る。
[0302] S406において、有限体位数決定部 180は、 S405で計算した整数 pを記憶装置か ら み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した整数 pが素数力どうかを チェックする。整数 pが素数でないなら、 S408へ進む。整数 pが素数であるなら、 S4 07へ進む。
[0303] S407にお 、て、有限体位数決定部 180は、 S405で計算した整数 p (素数 を記 憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した素数 pが高速演算に適 している力否かを判断する。素数 pが高速演算に適していないと判断したなら、 S408 へ進む。素数 pが高速演算に適していると判断したなら、 S409へ進む。
なお、判断の詳細については、後述する。
[0304] S408において、有限体位数決定部 180は、整数 jを記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した整数 jに 1を加えて、整 数 j + 1を計算する。
有限体位数決定部 180は、記憶装置を用いて、計算した整数 j + 1を、新たな整数 j として記憶する。
その後、 S405に戻る。 [0305] S409において、有限体位数決定部 180は、素数 pを有限体 GF (q)の位数 qに決 定する。
有限体位数決定部 180は、記憶装置を用いて、有限体 GF (q)の位数 qを記憶する ための記憶領域を確保し、素数 pを、有限体 GF (q)の位数 qとして記憶する。
[0306] S410にお 、て、有限体位数決定部 180は、 S402で計算した整数 ωを記憶装置 から読み出す。
有限体位数決定部 180は、演算装置を用いて、整数 ωを 2倍して、整数 2 ωを計算 する。
有限体位数決定部 180は、記憶装置を用いて、整数 tを記憶するための記憶領域 を確保し、計算した整数 2 ωを、整数 tととして記憶する。
[0307] なお、この例では、整数 jを 1から始めて徐々に大きくしているので、条件を満たす 最小の Pを、位数 qとして決定する。しかし、楕円曲線暗号の安全性設計の観点から、 位数 qのビット数を所定のビット数に近 、ビット数にした 、場合には、整数 jの初期値 を適切な値とすることにより、所望のビット数に近いビット数を有する pを、位数 qとして 決定することができる。
[0308] また、この例では、素数 pを、有限体 GF (q)の位数 qとして決定した力 有限体 GF ( q)の位数 qは、素数 pのべき乗(pn。 nは、 2以上の整数)であってもよい。
[0309] また、この例では、コックス ピンチ法によって、有限体 GF (q)の位数 qを決定した 力 他のアルゴリズムに基づいて、有限体 GF (q)の位数 qを決定してもよい。
[0310] 次に、 S407において、素数 pが高速演算に適している力否かを判断する処理につ いて、詳しく説明する。
実施の形態 1で説明したように、有限体 GF (qk)における乗算を高速に演算するた め、既約多項式として、 pol (x) =xk- yを用いる。
ここで、既約多項式 pol(x)は、有限体 GF (q)上で既約でなければならない。すな わち、 pol(x) =xk- y =0となる有限体 GF (q)の元 xが存在しないことが条件となる
[0311] 有限体 GF (q)の元 γの乗法における位数を Lとすると、 xk— yが有限体 GF (q)に おいて既約であるための必要十分条件は、以下の通りである。 (1)拡大次数 kのすベての素因数が、 γの位数 Lの約数であること。
(2)拡大次数 kのすベての素因数が、(q— 1) ZLの約数でな 、こと。
(3)拡大次数 k力 の倍数である場合には、 q— 1も 4の倍数であること。 以上 3つの条件をすベて満たす場合に、 xk- yが有限体 GF (q)において既約とな る。
[0312] そのため、有限体位数決定部 180は、以上の 3つの条件を満たす有限体 GF (q)の 元 γが存在する力否かを判定することにより、素数 ρが高速演算に適している力否か を判断する。
[0313] 図 16は、この実施の形態における有限体位数決定部 180による高速演算適性判 定処理の流れの一例を示すフローチャート図である。
[0314] S481において、有限体位数決定部 180は、拡大次数 kを記憶装置から読み出す 有限体位数決定部 180は、演算装置を用いて、拡大次数 kを素因数分解し、拡大 次数 kのすベての素因数を求める。すなわち、 k=n ( π ai) (iは、 0〜v—lの整数。 v は、 1以上の整数。 πは、素数。 aは、 1以上の整数)となる πを求める。
有限体位数決定部 180は、記憶装置を用いて、整数 Vと V個の整数 πとを記憶する ための記憶領域を確保し、求めた素因数の数 Vと求めた素因数 πとを記憶する。 なお、拡大次数 kは偶数であるから、 kの素因数には 2が含まれる。ここでは、 π =
0
2であるものとする。
[0315] S482において、有限体位数決定部 180は、 S481で求めた素因数の数 νと、 ν個の 素因数 πとを記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、拡大次数 kの素因数 πの積 Π ( π ) (iは、 0〜ν—1の整数)を計算する。
有限体位数決定部 180は、記憶装置を用いて、整数 Πを記憶するための記憶領 域を確保し、計算した積 Π ( π )を、整数 Πとして記憶する。
[0316] S483において、有限体位数決定部 180は、拡大次数 kを記憶装置から読み出す 有限体位数決定部 180は、演算装置を用いて、拡大次数 k力 の倍数である力否 かを判断する。拡大次数 k力 の倍数である場合には、 S484へ進む。拡大次数 kが 4 の倍数でない場合には、 S485へ進む。
[0317] S484において、有限体位数決定部 180は、 S482で計算した整数 Πを記憶装置 から読み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した整数 Πを 2倍し、整数 2 Πを計算する。
有限体位数決定部 180は、記憶装置を用いて、計算した整数 2Πを、新たな整数 Πとして記憶する。
[0318] S485において、有限体位数決定部 180は、素数 pを記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した素数 pから 1を減じて、 整数 P— 1を計算する。
有限体位数決定部 180は、記憶装置を用いて、整数 p'を記憶するための記憶領 域を確保し、計算した整数 p— 1を、整数 p'として記憶する。
[0319] S486において、有限体位数決定部 180は、整数 Πと、 S485で計算した整数 P'と を、記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、整数 p'を整数 Πで割り、商 Nと余り
Mとを計算する。すなわち、 ρ,= Π Χ Ν + Μ (Ν, Μは、整数。 0≤M<N)となる Ν,
Μを求める。
有限体位数決定部 180は、記憶装置を用いて、整数 Ν, Μを記憶するための記憶 領域を確保し、計算した商 Νと余り Μとを記憶する。
[0320] S487において、有限体位数決定部 180は、 S486で計算した余り Μを記憶装置か ら み出す。
有限体位数決定部 180は、演算装置を用いて、読み出した余り Μが 0である力否か を判断する。余り Μが 0である場合は、 S488へ進む。余り Μが 0でない場合は、 S49 3へ進む。
[0321] S488において、有限体位数決定部 180は、記憶装置を用いて、整数 iを記憶する ための記憶領域を確保し、整数 0を、整数 iとして記憶する。
[0322] S489において、有限体位数決定部 180は、整数 iと、 S481で計算した素因数のう ち i番目の素因数 と、 S486で計算した商 Nとを、記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、商 Nが素因数 πの倍数であるか 否かを判断する。 Νが πの倍数である場合には、 S493へ進む。 Νが πの倍数でな ヽ場合に【ま、 S490へ進む。
[0323] S490において、有限体位数決定部 180は、整数 iを記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、整数 iに 1を加えて、整数 i+ 1を計 算する。
有限体位数決定部 180は、記憶装置を用いて、計算した整数 i+ 1を、新たな整数 i として記憶する。
[0324] S491にお!/、て、有限体位数決定咅 は、 S481で求めた素因数の数 vと、 S490 で計算した整数 iとを、記憶装置から読み出す。
有限体位数決定部 180は、演算装置を用いて、整数 iが素因数の数 Vより小さいか 否かを判断する。 i<vの場合には、 S489〖こ戻る。 i≥vの場合には、 S492へ進む。
[0325] S492において、有限体位数決定部 180は、演算装置を用いて、素数 pが高速演 算に適していると判断する。すなわち、素数 pが高速演算に適しているという判断結 果を示すデータ (例えば、文字列「OK」やブール値「1」など)を生成する。
有限体位数決定部 180は、記憶装置を用いて、判断結果を示すデータを記憶する その後、高速演算適性判定処理を終了する。
[0326] S493において、有限体位数決定部 180は、演算装置を用いて、素数 ρが高速演 算に適していないと判断する。すなわち、素数 ρが高速演算に適していないという判 断結果を示すデータ (例えば、文字列「NG」やブール値「0」など)を生成する。
有限体位数決定部 180は、記憶装置を用いて、判断結果を示すデータを記憶する その後、高速演算適性判定処理を終了する。
[0327] 以上の処理のうち、 S487において、上記説明した条件(1):拡大次数 kのすベての 素因数が、 γの乗法における位数 Lの約数であることをチェックしている。
乗法群 GF (q) *の元の位数 Lは、乗法群 GF (q) *の位数 q— 1の約数である。また、 乗法群 GF (q) *の位数 q—lの約数すべてについて、その約数を位数とする乗法群 GF (q) *の元が存在する。
したがって、整数 p,( = p— 1)を整数 Πで割った余り Mが 0である場合には、整数 Π を位数とする乗法群 GF (q) *の元 γが存在する。
ここで、整数 Πは、拡大次数 kのすベての素因数の積であるから、拡大次数 kのす ベての素因数が、乗法群 GF (q) *の元 γの位数 L ( = Π)の約数である。
[0328] また、拡大次数 k力 の倍数である場合には、 S484で整数 Πを 2倍して 、る。その 場合、整数 Πは 4の倍数となる。
したがって、整数 p,を整数 Πで割った余り Mが 0である場合には、整数 p,(=p— 1 )は、 4の倍数である。
すなわち、 S487において、上記説明した条件(3):拡大次数 kが 4の倍数である場 合には、 q—lも 4の倍数であることも、同時にチェックしていることとなる。
[0329] S488〜S491の処理は、上記説明した条件(2):拡大次数 kのすベての素因数が 、(q— 1)ZLの約数でないことのチェックである。
すなわち、 S487で存在を確認した、位数 Lが Πである乗法群 GF (q) *の元 γにつ いて、拡大次数 kのすベての素因数が、商 Ν (= (ρ— 1) ΖΠ)の約数でないことを確 認している。
[0330] 以上の処理により、有限体位数決定部 180は、上記説明した 3つの条件のすべて が満たされている場合に、有限体 GF (q)の位数 qとして、素数 pが、高速演算に適し ていると判断する。
[0331] 上記説明した 3つの条件のすべてが満たされている場合、 xk- yが有限体 GF (q) において既約となるので、有限体 GF (qk)における乗算を高速ィ匕できる。
楕円曲線ペアリング演算において、例えば、図 10の S242の処理にあるように、有 限体 GF (qk)上の値のべき乗演算が必要である。べき乗演算は、コンピュータなどの 演算装置で実現する場合、有限体 GF (qk)上の乗算の繰り返しによって、実現される したがって、有限体 GF (qk)上の乗算を高速ィ匕できれば、楕円曲線ペアリング演算 を、大幅に高速ィ匕することができる。 [0332] なお、ここで説明した高速演算適性判定処理は、一例に過ぎな 、。上記説明した 3 つの条件を満たす GF (q)の元 γが存在するカゝ否かを判断することにより、素数 が 高速演算に適している力否かを判定するのであれば、他の処理方式であっても構わ ない。
[0333] また、この例では、有限体 GF (q)の位数の候補 qが素数 pである場合につ!、て説明 したが、有限体 GF (q)の位数の候補 qは、素数 pのべき乗 (pn)であってもよい。
[0334] また、この例では、有限体 GF (q)の元 γの存在を確認するに留まっている力 有限 体 GF (q)の元 γが小さいほうが、有限体 GF (qk)における乗算を高速ィ匕できる。した がって、有限体 GF (q)の元 γを求めて、その係数が小さいか否かを判断し、小さい 場合に、高速演算に適して 、ると判断することとしてもよ 、。
[0335] 以上、楕円曲線暗号パラメータ生成装置 100が、有限体 GF (q)の位数 qを生成す る処理について説明した。
[0336] 楕円曲線暗号パラメータ生成装置 100は、このほか、例えば、楕円曲線 Eの係数 a
, bなどの楕円曲線暗号パラメータを生成する。
これらの楕円曲線暗号パラメータを、有限体 GF (q)の位数 q、加法群 E (GF (q) )の 群位数 rに基づいて算出する方式については、既存の方式があるので、ここでは説 明しない。
[0337] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が素数!:を生成し、群位数適性判断部 120が、有限体 K = GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数として、素数生成部 110が生成 した素数 rが適切であるカゝ否かを判断し、群位数候補出力部 130が、適切であると判 断した素数 rを群位数候補として出力するので、楕円曲線暗号の安全性のレベルを、 容易に変更することが可能な群位数の候補を求めることができると 、う効果を奏する
[0338] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、自然数 r —1が所定の範囲内の自然数 kすべてを約数として持つ場合に、素数 rが有限体 K= GF (q)上における楕円曲線 E上の点力もなる加法群 E (K)の群位数として適切であ ると判断するので、楕円曲線暗号演算装置 200に、有限体 Kの拡大体 K' =GF (qk) の拡大次数 kとして、上記所定の範囲内の自然数 kを設定することができ、楕円曲線 暗号の安全性のレベルを、容易に変更することが可能な群位数の候補を求めること ができるという効果を奏する。
[0339] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、自然数 r
1が 2以上、所定の閾値 2k 以下の偶数の範囲内にある自然数 kすべてを約数と
max
して持つ場合に、素数 rが有限体 K= GF (q)上における楕円曲線 E上の点力もなる 加法群 E (K)の群位数として適切であると判断するので、楕円曲線暗号演算装置 20 0に、有限体 Kの拡大体 K' = GF (qk)の拡大次数 kとして、楕円曲線ペアリング演算 を高速ィ匕することが可能な拡大次数を設定することができ、楕円曲線暗号の安全性 のレベルを、容易に変更することが可能な群位数の候補を求めることができると 、う 効果を奏する。
[0340] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、ハミング 重みが所定の値以下である素数 rを、群位数候補として出力するので、楕円曲線暗 号演算装置 200における楕円曲線ペアリング演算を高速ィ匕できるという効果を奏す る。
[0341] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、所定の 2次多項式 f (x) = ax2 + bx+ c (a, b, cは整数)に自然数えを代入して求めた整数 f ( X ) = a X 2 + b X + cの素因数である素数 rを、群位数候補として出力するので、上記 2次多項式 f (X)に対応する形式の群位数に特化することにより、楕円曲線ペアリング 演算を高速ィ匕した楕円曲線暗号演算装置 200に設定することが可能な群位数の候 補を求めることができると 、う効果を奏する。
[0342] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、上記整 数 f ( λ )を素数 rで割った商 ηが所定の整数以下である素数!:を、群位数候補として出 力するので、上記 2次多項式 f (X)に対応する形式の群位数に特化することにより、楕 円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 200に設定することが可 能な群位数の候補を求めることができるという効果を奏する。
[0343] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、上記 2 次多項式 f (X)として、 x2 + x+ lまたは x2 + lを用いて算出した素数 rを、群位数候補 として出力するので、上記 2次多項式 f (X)に対応する形式の群位数に特化すること により、楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 200に設定す ることが可能な群位数の候補を求めることができるという効果を奏する。
[0344] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、上記自 然数えとしてノ、ミング重みが小さい自然数を生成し、それに基づいて算出した素数 r を、群位数候補として出力するので、上記 2次多項式 f (X)に対応する形式の群位数 に特ィ匕することにより、楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装 置 200に設定することが可能な群位数の候補を求めることができるという効果を奏す る。
[0345] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、特定の形式を有する群位数に特化することにより、楕円曲線ペアリング 演算を高速化した楕円曲線暗号演算装置 200に、群位数として設定することが可能 な素数 rを生成するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング 演算を、上記特定の形式を有する群位数に特化させて、高速化することができるとい う効果を奏する。
[0346] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、有限体 K上における楕円曲線 E上の自己準同型写像 φを利用すること により、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置 200に、群位 数として設定することが可能な素数 rを生成するので、楕円曲線暗号演算装置 200に おける楕円曲線ペアリング演算を、上記自己準同型写像 φを利用することにより、高 速ィ匕することができるという効果を奏する。
[0347] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、有限体 K上における楕円曲線 E上の自己準同型写像として、効率的に 演算可能な自己準同型写像 φを利用することにより、楕円曲線ペアリング演算を高 速化した楕円曲線暗号演算装置 200に、群位数として設定することが可能な素数 rを 生成するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング演算を、上 記自己準同型写像 φを利用することにより、高速ィ匕することができると 、う効果を奏 する。 [0348] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、有限体 K上における楕円曲線 E上の自己準同型写像として、自己準同 型写像がなす環の判別式 Dの絶対値が小さ 、自己準同型写像 φを利用することに より、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置 200に、群位数 として設定することが可能な素数 rを生成するので、楕円曲線暗号演算装置 200にお ける楕円曲線ペアリング演算を、上記自己準同型写像 φを利用することにより、高速 化することができるという効果を奏する。
[0349] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、有限体 K上における楕円曲線として、 Y2=X3+bを用い、上記楕円曲 線 E上の自己準同型写像として、 : (x, y)→( j8 x, y) (ただし、 βは、有限体 Κ上 における 1の原始 3乗根)を利用することにより、楕円曲線ペアリング演算を高速化し た楕円曲線暗号演算装置 200に、群位数として設定することが可能な素数 rを生成 するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング演算を、上記自 己準同型写像 φを利用することにより、高速ィ匕することができるという効果を奏する。
[0350] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、素数生 成部 110が、有限体 K上における楕円曲線として、 E :Y2=X3 + aXを用い、上記楕 円曲線 E上の自己準同型写像として、 φ: (x, y)→(-x, iy) (ただし、 iは、有限体 K 上における 1の原始 4乗根)を利用することにより、楕円曲線ペアリング演算を高速ィ匕 した楕円曲線暗号演算装置 200に、群位数として設定することが可能な素数 rを生成 するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング演算を、上記自 己準同型写像 φを利用することにより、高速ィ匕することができるという効果を奏する。
[0351] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、楕円曲 線ペアリング演算における有限体 K=GF (q)の拡大体 K' =GF (qk)の拡大次数 kを 、所定の範囲内で変化させた場合でも、同一の形式を有する群位数を設定すること ができる素数 rを、群位数候補として出力するので、特定の形式を有する群位数に特 化することにより楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 200 であっても、容易に暗号の安全性のレベルを変更できるという効果を奏する。
[0352] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、楕円曲 線ペアリング演算における有限体 K=GF (q)の拡大体 K' =GF (qk)の拡大次数 kを 、所定の範囲内で変化させた場合でも、設定した群位数を変更しなくてよい素数 rを 、群位数候補として出力するので、特定の群位数に特化することにより楕円曲線ペア リング演算を高速ィ匕した楕円曲線暗号演算装置 200であっても、容易に暗号の安全 性のレベルを変更できるという効果を奏する。
[0353] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、楕円曲 線ペアリング演算における有限体 K=GF (q)の拡大体 K' =GF (qk)の拡大次数 kを 、 2以上、所定の閾値 k 以下の偶数の範囲内で変化させた場合でも、設定した群
max
位数を変更しなくてよい素数 rを、群位数候補として出力するので、特定の群位数に 特ィ匕することにより楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置 20 0であっても、容易に暗号の安全性のレベルを変更できるという効果を奏する。
[0354] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、有限体 K = GF (q)上における楕円曲線 E上の点力もなる加法群 E (K)の群位数 rと、楕円曲 線ペアリング演算における有限体 Kの拡大体 K, =GF (qk)の拡大次数 kとに基づい て、有限体 Kの位数 qを決定するので、楕円曲線暗号演算装置に設定する群位数 r を固定としても、容易に暗号の安全性のレベルを変更することができるという効果を 奏する。
[0355] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、所定の 既約多項式 pol (X)を用いて有限体 K= GF (q)を拡大体 GF (qk)に拡大することによ り、楕円曲線絵ペアリング演算を高速ィ匕した楕円曲線暗号演算装置に設定すること ができる有限体 Kの位数 qを決定するので、楕円曲線暗号演算装置 200における楕 円曲線ペアリング演算を、上記既約多項式 pol (X)を用いることにより高速ィ匕すること ができるという効果を奏する。
[0356] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、既約多 項式として、 pol (x) =xk- yを用いて有限体 K = GF (q)を拡大体 GF (qk)に拡大す ることにより、楕円曲線ペアリング演算を高速ィ匕した楕円曲線暗号演算装置に設定 することができる有限体 Kの位数 qを決定するので、楕円曲線暗号演算装置 200に おける楕円曲線ペアリング演算を高速ィ匕することができるという効果を奏する。 [0357] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、 xk— γ が有限体 K=GF (q)において既約である条件を満たす γが存在する有限体 Kの位 数 qを決定するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング演算 を、既約多項式として pol (x) =xk- yを利用することにより、高速ィ匕することができる という効果を奏する。
[0358] この実施の形態における楕円曲線暗号パラメータ生成装置 100によれば、 xk— γ が有限体 K=GF (q)において既約である条件を満たす γが存在するか否かを、 y を求めずに判定するので、楕円曲線暗号演算装置 200における楕円曲線ペアリング 演算を、既約多項式として pol (x) =xk- γを利用することにより、高速化することが できる有限体 Κの位数 qを容易に決定することができると!/、う効果を奏する。
[0359] なお、以上説明した楕円曲線暗号パラメータ生成装置 100は、コンピュータを、以 上説明した楕円曲線暗号パラメータ生成装置として機能させるプログラムを、コンビュ ータに実行させることにより、実現することができる。
[0360] この実施の形態における楕円曲線暗号パラメータ生成プログラムによれば、素数生 成部 110が素数!:を生成し、群位数適性判断部 120が、有限体 K = GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数として、素数生成部 110が生成 した素数 rが適切であるカゝ否かを判断し、群位数候補出力部 130が、適切であると判 断した素数 rを群位数候補として出力するので、楕円曲線暗号の安全性のレベルを、 容易に変更することが可能な群位数の候補を求めることができると 、う効果を奏する
[0361] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 p、 rが、高速ィ匕 可能な群位数 rで、多くの整数 kに対し、 k I r—1と選ばれていることを特徴とする。
[0362] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
rが Hamming重みが小さく選ばれていることを特徴とする。
[0363] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
rがある整数えに対し、整数係数の λの 2次多項式を小さい整数で割った素数に選 ばれて ヽることを特徴とする。
[0364] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
rがある整数えに対し、 λ ζ+ λ + 1を小さい整数で割った素数に選ばれている ことを特徴とする。
[0365] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0366] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0367] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 kを変更しても、 高速性を保持することを特徴とする。
[0368] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使 用して、楕円曲線ペアリングパラメータの一部 kを変更しても、高速性を保持すること を特徴とする。
[0369] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
[0370] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
自己準同型環の判別式 Dの絶対値が小さい楕円曲線を用いたことを特徴とする。 [0371] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
楕円曲線に E : Y2=X3 +bを、準同型写像に (x、 y)→( j8 x、 y) ( j8は 1の 3乗根)を 用いたことを特徴とする。
[0372] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
楕円曲線に E : Y2=X3 + aXを、準同型写像に (x、 y)→ (— x、 iy) (iは 1の 4乗根) を用いたことを特徴とする。
[0373] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
拡大体 GF (qk)が高速に計算可能である qを用いたことを特徴とする。
[0374] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
多くの kに対して、
( 1) kの各素因数は、 0でない GF (q)の元 γの乗法的位数 Lを割り、(q— 1)ZLを 割り切らない
(2)もし、 kが 4で割り切れるなら、 q— 1は 4で割り切れる
という 2条件を満たすように、 qが選ばれたことを特徴とする。
[0375] 以上説明した楕円曲線ペアリング暗号パラメータ生成装置 (楕円曲線暗号パラメ一 タ生成装置)は、更に、
π ( = 2)、 π 、…、 π を kの素因数の集合とした時、 4 | kなら、 q≡l mod π
1 2 ν
2 π . . . π 、そうでないなら、 q≡l mod π π . . . π となるようにが k、 qが選ば
1 2 v 1 2 v
れたことを特徴とする。
[0376] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、 楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 p、 rが、高速ィ匕 可能な群位数 rで、多くの整数 kに対し、 k I r—1と選ばれていることを特徴とする。
[0377] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に rが Hamming重みが小さく選ばれていることを特徴とする。
[0378] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
rがある整数えに対し、整数係数の λの 2次多項式を小さい整数で割った素数に選 ばれて ヽることを特徴とする。
[0379] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
rがある整数えに対し、 λ Ζ+ λ + 1を小さい整数で割った素数に選ばれていること を特徴とする。
[0380] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0381] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0382] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、 楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 kを変更しても、 高速性を保持することを特徴とする。
[0383] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、 楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使 用して、楕円曲線ペアリングパラメータの一部 kを変更しても、高速性を保持すること を特徴とする。
[0384] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
[0385] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
自己準同型環の判別式 Dの絶対値が小さい楕円曲線を用いたことを特徴とする。 [0386] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
楕円曲線に E : Y2=X3 +bを、準同型写像に (x、 y)→( j8 x、 y) ( j8は 1の 3乗根)を 用いたことを特徴とする。
[0387] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
楕円曲線に E : Y2=X3 + aXを、準同型写像に (x、 y)→ (— x、 iy) (iは 1の 4乗根) を用いたことを特徴とする。
[0388] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
拡大体 GF (qk)が高速に計算可能である qを用いたことを特徴とする。
[0389] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
請求項 22で、多くの kに対して、
( 1) kの各素因数は、 0でない GF (q)の元 γの乗法的位数 Lを割り、(q— 1) ZLを 割り切らない
(2)もし、 kが 4で割り切れるなら、 q— 1は 4で割り切れる
という 2条件を満たすように、 qが選ばれたことを特徴とする。
[0390] 以上説明した楕円曲線ペアリング暗号演算装置 (楕円曲線暗号演算装置)は、更 に、
π ( = 2)、 π 、…、 π を kの素因数の集合とした時、 4 | kなら、 q≡l mod π
1 2 ν
2 π . . . π 、そうでないなら、 q≡l mod π π . . . π となるようにが k、 qが選ば
1 2 v 1 2 v
れたことを特徴とする。
[0391] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 p、 rが、高速ィ匕 可能な群位数 rで、多くの整数 kに対し、 k I r—1と選ばれていることを特徴とする。
[0392] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
rが Hamming重みが小さく選ばれていることを特徴とする。
[0393] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
rがある整数えに対し、整数係数の λの 2次多項式を小さい整数で割った素数に選 ばれて ヽることを特徴とする。
[0394] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
rがある整数えに対し、 λ Ζ+ λ + 1を小さい整数で割った素数に選ばれていること を特徴とする。
[0395] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0396] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0397] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 kを変更しても、 高速性を保持することを特徴とする。
[0398] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使 用して、楕円曲線ペアリングパラメータの一部 kを変更しても、高速性を保持すること を特徴とする。
[0399] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。 [0400] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
自己準同型環の判別式 Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
[0401] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
楕円曲線に E : Y2=X3 +bを、準同型写像に (x、 y)→( j8 x、 y) ( j8は 1の 3乗根)を 用いたことを特徴とする。
[0402] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
楕円曲線に E : Y2=X3 + aXを、準同型写像に (x、 y)→ (— x、 iy) (iは 1の 4乗根) を用いたことを特徴とする。
[0403] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
拡大体 GF (qk)が高速に計算可能である qを用いたことを特徴とする。
[0404] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
多くの kに対して、
( 1) kの各素因数は、 0でない GF (q)の元 γの乗法的位数 Lを割り、(q— 1) ZLを 割り切らない
(2)もし、 kが 4で割り切れるなら、 q— 1は 4で割り切れる
という 2条件を満たすように、 qが選ばれたことを特徴とする。
[0405] 以上説明した楕円曲線ペアリング暗号パラメータ生成プログラム (楕円曲線暗号パ ラメータ生成プログラム)は、更に、
π ( = 2)、 π 、…、 π を kの素因数の集合とした時、 4 | kなら、 q≡l mod π
1 2 ν
2 π . . . π 、そうでないなら、 q≡l mod π π . . . π となるようにが k、 qが選ば
1 2 v 1 2 v
れたことを特徴とする。
[0406] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、 楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 p、 rが、高速ィ匕 可能な群位数 rで、多くの整数 kに対し、 k I r—1と選ばれていることを特徴とする。
[0407] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
rが Hamming重みが小さく選ばれていることを特徴とする。
[0408] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
rがある整数えに対し、整数係数の λの 2次多項式を小さい整数で割った素数に選 ばれて ヽることを特徴とする。
[0409] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
rがある整数えに対し、 λ Ζ+ λ + 1を小さい整数で割った素数に選ばれていること を特徴とする。
[0410] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0411] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
整数 λの Hamming重みが小さく選ばれて 、ることを特徴とする。
[0412] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
楕円曲線ペアリング演算で、楕円曲線ペアリングパラメータの一部 kを変更しても、 高速性を保持することを特徴とする。
[0413] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
楕円曲線ペアリング演算で、楕円曲線上の準同型写像を利用した高速演算法を使 用して、楕円曲線ペアリングパラメータの一部 kを変更しても、高速性を保持すること を特徴とする。 [0414] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
効率的に計算可能な準同型写像を用いたことを特徴とする。
[0415] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
自己準同型環の判別式 Dの絶対値が小さい楕円曲線を用いたことを特徴とする。
[0416] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
楕円曲線に E : Y2=X3 +bを、準同型写像に (x、 y)→( j8 x、 y) ( j8は 1の 3乗根)を 用いたことを特徴とする。
[0417] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
楕円曲線に E : Y2=X3 + aXを、準同型写像に (x、 y)→ (— x、 iy) (iは 1の 4乗根) を用いたことを特徴とする。
[0418] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
拡大体 GF (qk)が高速に計算可能である qを用いたことを特徴とする。
[0419] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
多くの kに対して、
( 1) kの各素因数は、 0でない GF (q)の元 γの乗法的位数 Lを割り、(q— 1) ZLを 割り切らない
(2)もし、 kが 4で割り切れるなら、 q— 1は 4で割り切れる
という 2条件を満たすように、 qが選ばれたことを特徴とする。
[0420] 以上説明した楕円曲線ペアリング暗号演算プログラム (楕円曲線暗号演算プロダラ ム)は、更に、
π ( = 2)、 π 、…、 π を kの素因数の集合とした時、 4 | kなら、 q≡l mod π
1 2 ν
2 π . . . π 、そうでないなら、 q≡l mod π π . . . π となるようにが k、 qが選ば れたことを特徴とする。
[0421] 楕円暗号ペアリング演算を高速かつ安全に行うためには、適切なパラメータ設定法 を用いることが重要である。これまでペアリング演算を高速に行う方法の提案と共に、 高速ィ匕が可能なパラメータ設定方法が提案されてきた。また、ペアリング応用技術は 、超楕円曲線を含む一般の代数曲線を用いても実現できる。
[0422] 近年の高度情報通信技術の実用化に伴い、楕円暗号を含む公開鍵暗号も既に実 用化段階に入っている力 従来、公開鍵証明の必要性力も PKI (Public Key Infr astructure)というインフラストラクチャが必要であり、それが公開鍵暗号技術の多方 面への展開の妨げとなってきた。非特許文献 3により、名前や機器番号のような識別 名(ID)を公開鍵に用いることで PKIを不要化する公開鍵暗号が実現された。その実 現には、楕円曲線上のペアリング演算が本質的に重要である。
[0423] "ペアリングの IDベース暗号への応用"の発見以来、ペアリングを用いて、短署名、 グループ署名、トレータートレーシング等、幅広い暗号応用技術が実現可能になるこ とが認識されてきた。それにより、ペアリングをより高速に計算することへの必要性が 高まると共に、高速かつ安全なペアリングパラメータを計算する方法に関しても、新規 提案が相次いだ。
[0424] また、暗号の危殆化に対し、昨今注目度が集まって 、ることが挙げられる。これは、 例えば、これまで標準的に使用されてきたハッシュ関数 SHA— 1への現実的攻撃可 能性の高まりや、 RSA— 1024から 2048への移行必要性を指す。このため、適切な 新パラメータへの移行法を考慮した暗号設計が強く求められている。この実施の形態 は、そのような移行をスムースに行える柔軟なパラメータ設定法に関するものである。
[0425] ペアリング高速化研究に関しては、従来は、 supersingular (スーパーシンギュラー )楕円曲線を用いた場合の研究が先行してきた力 supersingular楕円曲線を用い ると、得られる曲線の範囲に制限が多ぐ柔軟な安全性変更という点からは ordinary (オーディナリー:非 supersingular)楕円曲線を用いた方が望ま 、ことが認識され てきた。よって、例えば、非特許文献 1にあるように ordinary楕円曲線上でのペアリン グ演算の高速化も進展してきた。その結果、 supersingular楕円曲線と同等以上の 性能が達成可能であることが報告されて 、る。 [0426] ペアリングパラメータ生成法には様々なものがある力 安全性レベル変更を重視し た非特許文献 2等では、 Cocks— Pinch法が適した方法となっている。これまでは、 o rdinary楕円曲線上でのペアリング演算であっても、高速性を保持したまま、安全性 を変更する方法が知られていなかった。この実施の形態では、 Cocks— Pinch法を 用いて、高速性を保持したまま、スムースにパラメータ変更が行えるペアリングパラメ ータ設定法に関して提案して!/ヽる。
[0427] 楕円曲線ペアリングパラメータの一部 p、 r、 kに着目する。それらパラメータは、いく つかの数学的な関係を満たすように設定される。パラメータ kを様々に設定できること が安全性変更には重要である。特に、高速ィ匕演算法を実現するためには、 rをある程 度限定して kを柔軟に変更できるようにすることが必要である。その時、 r、 kは、 k|r— 1という関係を満たす必要があり、また、多くの kに対して、 k|r— 1を満たす rを選択し ておくことが重要である。また、ペアリング応用技術は、超楕円曲線を含む一般の代 数曲線を用 、ても実現できる。
[0428] そのようなペアリングパラメータ生成法として、 Cocks— Pinch法を用いる。 Cocks — Pinch法は、 r、 kと pのビット長を入力すると、適切な pを出力する。その際、事前に rを安全性変更という観点力 適当かどうか判定する。
[0429] これにより、高速性と柔軟な安全性変更を兼ね備えたペアリング暗号実装が実現さ れるだけでなぐ非特許文献 1にあるような特殊な rを用いることで高速ィ匕してある場 合にも、 P、 kをパラメータ変更してやるだけで、安全性変更を容易に行うことが可能に なる。
[0430] 以上説明した楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置につ いて、数学的背景を、更に説明する。
なお、以下で引用する文献は、次に示す参考文献番号によって示す。
[0431] [1] P. S. L. M. Barreto, S. Galbraith, C. Ό h'Eigeartaigh, an d M. Scott, "Efficient pairing computation on supersingular abeli an varieties, " available at http: / Z eprint. iacr. org.
[2] P. S. L. M. Barreto, H. Y. Kim, B. Lynn, and M. Scott, "Efficient algorithms for pairing— based crypto systems , Crypto 2 002, LNCS No. 2442, 354— 368, Springer Verlag, 2002.
[3] P. S. L. M. Barreto, B. Lynn, and M. Scott, "Constructing elliptic curves with prescribed embedding degrees", SCN 2002, LNCS No. 2576, 263- 273, Springer Verlag, 2002.
[4] P. S. L. M. Barreto, B. Lynn, and M. Scott, "On the sele ction of pairing -friendly groups", SAC 2003, LNCS No. 3006,
17- 25, Springer Verlag, 2004.
[5] P. S. L. M. Barreto and M. Naehrig, "Pairing― friendly ellipti c curves of prime order, availaole at http : ZZeprint. iacr. org.
[6] I. F. Blake, G. Seroussi and N. P. Smart, Advances in Elli ptic Curve Cryptography, LMS Lecture Note Series 317, 2004. 」 D. Boneh and M. Franklin, "Identity based encryption from the Weil pairing, " Crypto 2001, LNCS No. 2139, 213— 229, Springer Verlag, 2002.
[8] D. Boneh, H. Shacham and B. Lynn, "Short signatures fr om theWeil pairing, " Journal of Cryptology, vol. 17 (4) , 2004, 297- 319.
[9] F. Brezing and A. Weng, "Elliptic curves suitable for pairm g based cryptography, Designs, Codes and Cryptography, vol. 37 (1) , 133— 141.
[10] R. Dupont, A. Enge and F. Morain, "Building curves wit h arbitrary small MOV degree over finite prime fields, Journal o f Cryptology, vol. 18 (2) , 2005, 129— 141.
[11] S. D. Galbraith, K. Harrison and D. Soldera, "Implementi ng the Tate pairing", ANTS V, LNCS No. 2369, 324— 337, S pringer Verlag, 2002.
[12] S. D. Galbraith, J. McKee and P. Valen, ca, "Ordinary ab elian varieties having small embedding degree, " Proceedings of a workshop on Mathematical Problems and Techniques in Cryptology , 46— 58, 2005, available at http: / Z eprint. iacr. org.
[13] R. P. Gallant, J. L. Lambert and S. A. Vanstone, "Faster point multiplication on elliptic curves with efficient endomorphisms ,,, Crypto 2001, LNCS No. 2139, Springer Verlag, 190— 200, 2001.
[14] T. Izu and T. Takagi, Efficient computations of the Tate pairing for the large MOV degrees,,, ICISC 2002, LNCS No. 2587, 283- 297, 2003.
[15] T. Kobayashi, K. Aoki and H. Imai, "Efficient algorithms for Tate pairing,,, in preproceedings of WISA 2005, 291— 306, 2005.
[lb] N. Koblitz and A. Menezes, 'Pairing— based cryptography at high security level,,, Cryptography and Coding: 10th IMA Inte rnational Conference, LNCS No. 3796, 13— 36, Springer Verlag , 2005.
[17] R. Lidl and H. Niederreiter, Finite Fields, 2nd ed. Cambr idge University Press, 1997.
[18] The Magma Computational Algebra System, v. 2.丄 1, http : Z / magma, maths, usyd. edu. au/.
[19] A. Miyaji, M. Nakabayashi, and S. Takano, "New explici t conditions of elliptic curve traces for FRreduction", IEICE Tran sactions on Fundamentals, E84— A(5), 1234—1243, 2001.
[20] D. Page, N. P. Smart and F. Vercauteren, A comparison of MNT curves and supersingular curves, available at http : / / eprint. iacr. org.
[21] R. Sakai, K. Ohgishi and M. Kasahara, "Crypto systems b ased on pairing,,, SCIS 2000. [22] R. Sakai, K. Ohgishi and M. Kasahara, "Cryptographic sc hemes based on pairing over elliptic curve, " 7B— 2, SCIS 2001 (In Japanese) .
[23] M. Scott, "Computing the Tate pairing, " CT-RSA 2005,
293- 304, Springer Verlag, 2005.
[24] M. Scott, "Scaling security in pairing— based protocols, " av ailable at http: / / eprint. iacr. org.
[25] M. Scott, Faster pairings using an elliptic curve with an efficient endomorphism, " to appear in Indocrypt 2005, available at http: / / eprint. iacr. org.
[26] M. Scott and P. S. L. M. Barreto, "Compressed pairings",
Crypto 2004, 140—156, Springer Verlag, 2004.
[27] M. Scott and P. S. L. M. Barreto, "Generating more MNT elliptic curves , to appear in Designs, Codes and Cryptography,
2005, available at http : ZZeprint. iacr. org.
[28] J. Solinas, "ID— based digital signature algorithms , availabl e at http : / Z www. cacr. math, uwaterloo. ca/ conferences/ 2003/ ec c2003.
[0432] 楕円曲線上のペアリングを利用した暗号系は、 IDベース暗号など多様な応用を有 する。
Scottは、 IDベース暗号等の安全性レベル変更を、埋め込み次数 kの変更で実現 することを提案して 、る( [24] )。
また一方で、 Scottは、大標数素体 Fp上の ordinary楕円曲線上での効率的なぺ ァリング演算法を提案して 、る( [25] )。
[0433] 本記載では、 kの変更による安全性変更と上述の高速かつ少メモリ演算法を共に実 現するパラメータ設定法を述べる。
具体的には、用いる巡回群の位数 r (素数)を、より多くの kに対し k I r— 1を満たす ように選択することが安全性変更という観点力 重要であること等を指摘し、 p、 r、 kの 有効なパラメータ例も示す。
[0434] 従来の楕円曲線暗号では、例えば、定義体を標数 2とするか大標数とするかという 選択があつたが、ペアリング暗号の実装には、より多くの選択が必要である。
標数 3も含む標数選択の他に、 supersingular曲線か ordinary曲線力、 Weilペア リング力 Tateペアリング力、安全性を増すのに埋め込み次数 kの変更によるか定義 体サイズの変更によるかというような選択がある。
[0435] 本記載では、そのような選択に関し、大標数素体 F上の ordinary楕円曲線 Tateぺ
P
ァリングを用いて、安全性変更に kの変更を重視した。
kの柔軟な変更を想定することで、パラメータ生成法には Cocks— Pinch法を用い た。
特にデータ長の観点からは、 p ( : =log p/log r)を小さくできる く 2) MNT法
2 2
等の曲線生成法が重要である力 それらの方法には、適用可能な kに厳しい制限が ある。
[0436] 一方、 p > 2となることが現時点では避けられない Cocks— Pinch法では (rを固定 しなければ)適用可能な kに制限がな ヽので、本記載 (及び [24] )で採用した。
Cocks— Pinch法では、また、 [25]の高速化可能な r (素数)を一つ固定した時に は、適用可能な kが決まってくるので、本記載では、その場合に、より多くの kに対応 できる rの選択法を述べ、そして、更なる高速ィ匕が可能な pの選択法に関しても述べる
[0437] [25]では、例えば、標数 p (≡lmod3)の楕円曲線 E : Y2=X3+b (b E F *)上で、
P
準同型写像 、 )→( )8 、 )を用ぃた高速ィ匕が提案された。ここで、 β (≡F *)は 1
P
の 3乗根である。
そして実際に、 k= 2の場合に、 supersingular曲線よりも高速になったことが報告 された。
その高速ィ匕では特殊な rを用いることが必要である力 例えば、素数 r= λ 2+ λ + 1 ( = 2cl + 2C c > c )に、その手法は適用できる。
1 2
[0438] その rが、 k I r— 1を満たせば、拡大次数 kを有する楕円曲線 E s. t. r | # E (F
P
)が存在するので、 kの柔軟な変更という観点から、できるだけ多くの k¾r— 1の因数 に持つ rを選択することが推奨される。
例えば、(c , c ) = (80, 16)の場合は、 r—1が 5を素因数に持たないので、 k= 10
1 2
を有する楕円曲線 Eを選択できない。
同様に、(c , c ) = (96, 83)の場合は、 k= 14の Eがない。
1 2
しかし、(c , c ) = ( 128, 22)の rは、 14以下の偶数 k全てに対応できる。
1 2
[0439] また、拡大体演算を効率的に行える pの選択法も考慮した。
例えば、 π ( = 2) , π , · · · , πを kの素因数とすると、 4 | kなら p≡l mod π 2 ·
1 2 ν 1 π π 、4 I /k (4 I kでない)なら ρ≡1 mod π · π π となるように ρを
2 ν 1 2 ν
選べばよい。
上記選択法によって得られた p、 r、 k、 bのパラメータ例も示す。
[0440] 楕円曲線上のペアリングを利用した暗号系は、 IDベース暗号など多様な応用を有 する。
Scott [24]は、 [22、 7]での IDベース暗号等の安全性レベル変更を、埋め込み次 数 kの変更で実現することを提案して ヽる。
一方で、 [25]では、大標数素体 F上の ordinary楕円曲線上での効率的なペアリ
P
ング演算法が提案されている。
[0441] 以下では、 [24]での安全性変更と [25]での高速かつ少メモリ演算法を共に実現 するパラメータ設定法を述べる。
具体的には、用いる巡回群の位数 r (素数)を、より多くの kに対応できるように選択 する方法等を述べる。
[0442] 1.はじめに
ペアリング演算は通常の楕円曲線スカラー倍算より計算量を要するため、これまで 多くの高速化研究がなされてきた (例えば、 [ 11、 15]等)。
また、安全性変更に対応したパラメータ設定が要求されるようになった。 ペアリング暗号の場合には、埋め込み次数 kによって安全性を変更できる。 本記載では、 [25]の高速実装性を保持したまま kによる安全性変更を実現するパ ラメータを提示する。
[0443] ペアリングに適した楕円曲線としては、 supersingular曲線がこれまでパラメータ生 成のしゃすさ、高速な演算法の可能性、 distortion写像の存在の面力 よく提案さ れてきた (例えば、 [1]参照)。
一方で、多くのペアリング暗号系では、必ずしも distortion写像を必要としないこと や、 ordinary曲線に対しても十分実用に適した高速ィ匕がなされるようになった(5節 参照)。
例えば、 [22、 7]の IDベース公開鍵暗号は、 distortion写像がなくても構成できる [20]。
また、 F (p > 3)上定義された supersingular曲線は k= 2に限られ、 k= 3、 4、 6を
P
持つ supersingular曲線は標数ゃ同型類の個数に強い制限が課される。
よって、 ordinaryで大標数素体 F上の楕円曲線ペアリングパラメータは実用的に
P
重要であり、本記載はその場合を扱う。
[0444] 本記載では、ペアリングパラメータ生成に Cocks— Pinch法 (4. 2節)を用いる。
それにより、用いる巡回群位数 r (又は!:の形、 6節参照)を固定して、 pのビット長を 同程度にしたまま p、 kを変更できる。
[0445] 本記載では、 HZW実装での利点に着目した [24]でのパラメータ変更法に限定す ることなく、 [25]の高速ィヒ手法に必要な特定の r (の形)に対して柔軟に p、 kの変更 を行うことができることに主に着目して、ペアリング暗号系の安全性変更法を論じる。 そして、より多くの kに対応できる!:の選択法を述べると共に、高速化可能な pの選択 法に関しても述べる。
[0446] 2節ではペアリング計算法を、 3節ではペアリング曲線パラメータの安全性基準を述 ベ、 4節では、現時点で利用可能なパラメータ生成法を、 5節では、 [25]での高速演 算法を述べる。
6節で適切な r、 pの設定法とその例を示した。
本記載での計算には全て Magma [ 18]を用いた。
[0447] 2.楕円曲線上ペアリングの計算法
本節の記法及び内容の詳細に関しては [6] IX章を参照。
[0448] 本記載では、有限素体 Fp上の ordinary楕円曲線 E : Y2=X3+aX+b (a, b^F )
P
及び r≠p、r I /p— 1かつ r | # E (F )である素数 rを固定して考える。 その rに対し、 : = {uEFp* I u=l}とする。
また、 kを r I pk— 1となる最小の k(>0)として、 K:=Fkとすると cK*、E[r]c
P r
E(K)となる。
Weilペアリング (·, 及び Tateペアリングく ·, ·> ^ま、非退ィ匕双線形写像 er(-, : E[r]XE[r]→ CK)
く', .〉: E[r] XE(K)/rE(K)→KV(K*)r
である。
[0449] Tateペアリングの値域は同値類であるので、実際の計算では、 <·, · >を (pk— 1 )Zr乗したく ·, ·> (Pk_1)/rを求める。
これを本記載では Tateペアリング値と呼び、それを e (·, : E [r] X E (K)→K*と 書くことにする。
[0450] [28]に従い、 PEE[r]、 QEE(K)に対し、 Millerアルゴリズム([6]アルゴリズム IX
. 1)で計算される値を M(P, Q)と表すことにする。
[Q]が E(K)ZrE(K)の元を表すとすると、 M(P, Q)はく P, [Q] >という類のあ る代表であり、 e(P, Q) =M(P, Q) (pk_1)/rであり、 QEE[r]の時には、 e (P, Q) =
M(P, Q)/M(Q, P)である。
[0451] 本記載では、以降、 Tateペアリング値計算に特ィ匕して記述する(5.2節ァルゴリズ ム 3、 4、 5)。
これまで、 Tateペアリング値計算の方が Weilペアリング値計算より効率的に計算可 能とされてきた力 最近 [16、 24]、大きい偶数 kに対しては、 Weilペアリング値の pk/ 2—1乗値 e (P, Q)pk/2_1の方が、ある条件を満たせば Tateペアリング値より効率的 又は同程度に計算可能であると指摘されていることを注意しておく。
[0452] 3.ペアリング曲線パラメータの安全性
以降、 [25]に従い、 Fを pのサイズ(〜log p)、 Gを rのサイズ(〜log r)とする記法
2 2
を用い、また、しばしば使用されているように p :=FZGとする([16、 5]等)。
[0453] 3. 1 p、 r、 kのサイズ
F *の DLPの安全性は kFにより、 ECDLPの安全性は Gによって規定されるので、 k
ペアリング曲線の安全性を 2数対 (kFZG)で表す。 そのマッチングは、 [16]では、 (1024/160) , (3072/256) , (8192,384)で あるのに対し、 [25]では、 (1024/160) , (2048/192) , (4096,224)であり、 必ずしも一定でない。
F *の DLPに対する数体ふる!/、法の計算時間見積もり力 ECDLPに対する Pollar d 法のように確定的でないこと力 その一因である。
[0454] 3. 2 p、 rの Hamming重み
ペアリングを利用しない従来の素体上楕円曲線暗号では、その高速化のために Ha mming重みの小さ 、素数 pを用いることが一般的であった。
[16]では、ペアリング暗号用途で、 p、 r共に Hamming重みが小さいパラメータが 例示された。
一方で、 [16]は、ペアリング曲線の場合には、 F *上の DLPに関し、そのような特 k
殊な素数を用いることによって、特殊数体ふるい法に対して脆弱になる可能性が生じ ることち旨摘している。
本記載では、その危険性を考慮して、法 pの Hamming重みは一般に選択した (表 2 (図 23)参照)。
一方で、巡回群位数 rの Hamming重みは小さくして高速ペアリング演算を実現し た。
[0455] 3. 3 DSA、 DHドメインパラメータ設定法との違い
DSA、 DHのドメインパラメータ p, q (s. t. q | p— 1)もペアリングパラメータ(の一 部) p, k, r (s. t. r I pk—l)と同様の安全性根拠 (F *上の DLPに対する数体ふる
P
V、法への耐性と位数 q巡回群上の DLPに対する Pollard 法への耐性)を有して いるが、 FIPS等での DSA、 DHの p、 q生成法はそれらパラメータができるだけランダ ムになるような方式であり、安全性変更に関して特段の注意はなされていないようで あることを指摘しておく。
[0456] 4.ペアリング曲線パラメータ設定法
ペアリング曲線の構成法は、小さい kを実現するために CM法が用いられる。
そして、 kを固定した場合でも、 と rに対する条件設定によって、大きく 2通りのパラ メータ生成法が考えられる。 それらを 4. 1、 4. 2各小節で振り返る。
4. 3節では、安全性変更という点から述べる。
[0457] 4. 1 MNT法、 BW法、 BN法
MNT法 [19]、 BW法 [9]、 BN法 [5]は、 p < 2を実現するパラメータ生成法であ る。
その特'性を表 1にまとめる(図 17)。
素数 rを任意に設定するのが簡単でないことと表 1のように全ての kに適用できない 方法であることから本記載ではパラメータ生成法として採用しな 、 (4. 3節参照)。 しかし、 [24]にも述べられているように、例えば、 [8]での短署名にペアリングを用 いるような場合には、;0〜1であることが非常に重要であるので、 4. 1節の各方法が 重要であることに注意しておく。
[0458] 4. 2 Cocks— Pinch法
4. 1節の方法と異なり、 Cocks— Pinch法([3]、 [6] Algorithm IX. 4)を用いる と、任意の素数 rを設定可能である。
し力し、一般に Cocks— Pinch法では、 p > 2である。
[6]p. 211では、判別式 Dが D≡0 mod 4の場合のアルゴリズムが記述されてい る力 本記載では、 5節以降、 D=— 3の場合を主に扱うので D≡l mod 4の場合 のァノレゴリズムを記述する(ァノレゴリズム 1) (図 18)。
また、 [25]では、アルゴリズム 1を k= 2に特ィ匕した場合が記述されている。
[0459] 4. 3 Cocks— Pinch法を用いた安全性変更法
4. 3. 1 実装環境に依存した各想定
[24]では、 p、 k、 rを pのビット長 Fを同程度(512ビット)にしたまま変更することを目 的としている。
この方式によれば、例えば、 Gが 160、 192、 224と変更されても Fを 512と固定化し てパラメータ変更を行えるので ICカード等の小型機器で暗号コプロセッサ小型化に 寄与できるとして、そのような安全性変更を念頭にぉ 、て 、る。
[0460] しかし、本記載では SZW実装も考慮した 、ので、必ずしもこの状況を想定しな!ヽ。
例えば、特定の素数 r (の形)に対して、 Fを 2Gに十分近づけてパラメータ生成する ことで、 [25]の高速ィ匕が適用できて、かつ Fをできるだけ小さくすることも想定する。 つまり、 G= 160、 192、 224に対して F〜320、 384、 448として、 S/W実装など 多くの実装環境で高速性を目指す状況も想定する。
[0461] 4. 3. 2 Cocks— Pinch法を用いる利点
Cocks— Pinch法を用いれば、特に、 r (又は rの形、 6節参照)は不変にして、 pと k を変更することができる。
この変更法に関して、 2点指摘する。
1点目は、 5節で見るように、 [25]の高速ィ匕手法は rに大きく依存している力 r (又 は rの形)を固定できれば、 pと kを新たに暗号モジュールに与えるだけで高速性ゃ少 メモリ性を生力したまま、 kFに関する安全性変更ができる。
2点目は、 3. 1節に述べたように、パラメータ Gと比べて安全な kFの設定は、攻撃 手法の特性上流動性が高 、。
よって、 kを容易に変更可能な Cocks— Pinch法は安全性変更という面力 4. 1節 の方法より望ましい変更法と言える。
[0462] 5. Scottの高速演算法 [25]
5. 2節で、 [25]にある効率的な準同型写像を用いた高速 Tateペアリング値計算 法を述べる。
その演算法のアイデアは、ペアリングの入力 P、 Qが一般の場合にも有効である力 5. 1節で述べる特別な P、 Qに対する Miller liteアルゴリズムの場合に、より効果を 発揮するので、 5. 2節では、 Miller liteアルゴリズムに準同型写像を活用することを 述べる(アルゴリズム 3、 4、 5) (図 20、図 21、図 22)。
特に、以降では、 kは偶数とする。
[0463] 5. 1 Miller liteアルゴリズム
Miller liteアルゴリズムは、 P ( EE (F ) )、 Q ( E φ (E,(F ) ) cE (F ) )に適用 p k 2 pk される。
ここで、 E'は Eの quadratic twistと呼ばれるものであり、平方非剰余 dEF *を用
P
いて Y2=X3 + d2aX+d3bで与えられる。
また、() : E,(F )→E (F )は、 a 2 = dとなる a EF を用いて、(x,,y,)→(x, y) = (d_1x,、 a _3y,)で与えられる。
このようにして得られた点 (x、 y)を Qに用いることで、分母計算消去法等、幾つかの 高速ィ匕手法が適用できる。
その詳細に関しては、 [4]が詳しい。
[0464] [28、 16]では、上記の Miller liteアルゴリズムに対し、一般の P、 Q EE (F )に 用いるアルゴリズム([6]アルゴリズム IX. 1)を full Millerアルゴリズムと呼んでいる
[0465] 5. 2 高速準同型写像を用いた高速ィ匕
[25]では、 [13]での方法の類似として、ペアリング演算での高速準同型の活用法 を提案した。
[25]では、 D=— 3、 一 4の CMを持つ楕円曲線
Y2=X3+b、 p≡l mod 3 (1)
Y2=X3+aX、 p≡l mod 4 (2)
上の高速ペアリング演算が提案された。
以降では、曲線(1)に関し述べる力 その議論は曲線(2)や I D Iが小さい CM楕 円曲線に適用可能である。
[0466] [25]では、楕円曲線(1)の群位数 r = ( λ 2+ λ + 1) /73 ( λ = 287)と r = λ Ζ+
1 2
Figure imgf000098_0001
cl >c2)が高速ィ匕可能な群位数として挙げられている。 本記載では、 Hamming重みが i (≥ 2)のえにより r= λ 2+ λ + 1で与えられる素数 rを rと表す。
[25]では特に 161ビット素数 r2 ( λ = 280 + 216)を用いて!/、る。
[0467] アルゴリズム 2 (図 19)は、曲線(1)に対するもので、 [25]では、その gを用いた高速 かつ少メモリーな e (P, Q)計算法が示された(アルゴリズム 3、 4、 5) (図 20、図 21、 図 22)。アルゴリズム 2内の j8 (≡F *)は 1の 3乗根である。
P
[0468] 一般にペアリング演算で、 Pが固定点である場合には、アルゴリズム 2ステップ 1、 3 の rのビット長個の x、 y、 mを固定値として事前に計算しておける。
[25]の方式 (アルゴリズム 3、 4、 5)では、そのような工夫を施す場合に約半分のテ 一ブル値を事前に保持しておけばよ!ヽ。 アルゴリズム 5は、テーブル保持 s [ · ]を削減しメモリが制限された環境で [25]の高 速化手法を適用した方法である。
アルゴリズム 2、 3、 4、 5は全て、 Jacobian座標を使用すれば (通常の楕円曲線スカ ラー倍算同様)除算なしにできる。
詳細は、例えば [24]参照。
[0469] 5. 3 Tateペアリング計算での最終べき乗算
また、定理 1に基づきアルゴリズム 3、 4、 5最終ステップの F 内べき乗算の高速ィ匕 が可能である素数 Pを選択する( [ 16] 5節)。
[ 16] 5節定理 2では、 1^= 2 という形に特ィ匕した定理となっている力 本記載では 、元の一般的な [ 17]定理 3. 75を引用する。
[0470] 定理 1 k≥2、 y≡F *とする。多項式 xk— y (≡F [x] )が既約となる必要十分条件 q q
は、以下の 2条件が成立することである。
i. kの各素因数は、 γ≡F *の位数を割り切り、(q—l) /lを割り切らない。
q
ii.もし、 k≡0 mod 4であれば、 q≡l mod 4。
[0471] 定理 1により、高速ィ匕可能な素数 pを kの分解に応じて選択することが可能となる。
つまり、 π ( = 2) , π , · · · , π を kの素因数とすると、例えば、素数 ρを 4 | kなら ρ
1 2
≡1 mod π · π π とし、 4 | /kなら ρ≡1 mod π · π π となるよつ
1 2 ν 1 2 ν に選べばよい。
[ 16]にあるように、 2項多項式を体拡大の定義式に選ぶことで、 F 乗算回数を削 p- 減できると共に、定理 1内の γを小さい要素に選ぶことで、拡大体内の還元計算での 計算量を削減することが可能となる。
また、 kが偶数であるので、 Lucas数列を利用した高速ィ匕が適用できる([26、 24] )
[0472] 6.有効な p、 rの選択法
素数 r力 埋め込み次数 kの楕円曲線 EZFpに関し r | # E (F )となるためには、 F
P r
*が 1の k乗根を有する(i. e.、r I pk—l)ために、 k I r—lとなることが必要十分であ る。
5. 2節で述べた rに関しては、 r -1 = 23·32·5·72·13·29·43·ϋ
1 0
である。
ここで Cは素因数が 50以上の r 1の因数を表す。
0 1
よって、 rに関しては、偶数 k=2、 4、 6、 8、 10、 12、 14、…を埋め込み次数とする Eを得ることがでさる。
[0473] 表 3(図 24)にえ =2cl + 2c2(cl = 80、 96、 128、cl>c2)で r力素数になる cを一
2 2 覧し、 r—1の素因数分解を示した。
2
え =2112+2c2では素数 rが存在しなかったので、 =2112+2c2+2c3(112>c >
2 2 c )で素数!:を探索した所、 93個存在した。
3 3
表 4(図 25)には、その中で 23·32·5·7 | r 1であるものを示した。
3
表 3、 4での各 Cは、 50以上の素因数の積を表す。
また、 =2cl + 2c2+2c3(cl〉c2〉c3)力 得られる rに対してアルゴリズム 4、 5を
3
適当に補正するのは容易である。
[0474] rに関し、 k=4、 6、 8に対して、素数 pを一覧した (表 2)。
2
これらパラメータを使用すれば、同じ (効率的な)アルゴリズム 4、 5を用いて、異なる pに対してペアリング演算を実行することができる。
これによつて、パラメータ p以外は置き換えることなく安全性を高めたペアリングパラメ ータに更新することができる。
[0475] 5.3節で述べたように、 pが適当な合同関係式を満たすかどうかチェックすることで 、拡大体 F 内での乗算を効率的に演算可能な pを選別することができる。
表 2の pはそのように選別された。
また、今回より最適化された Cocks— Pinch法計算ルーチンを用いれば pのビット 長を、より 322に近づけることが可能と思われる。
[0476] 7.まとめ
本記載では、 [24]と同様に、 IDベース公開鍵暗号などのペアリング暗号の安全性 を埋め込み次数 kの変更により実現することを扱った。
[25]で提案された高速性ゃ少メモリ性を有する演算法と両立する上記変更法を提 案し、その際に重要な巡回群位数 r (素数)の条件を示し、それに基づいて安全性変 更に適した具体的な rも提示した。
本記載では、主に Tateペアリングの場合を扱ったが、 [16、 24]にあるように、 kが 大きくなると、 Weilペアリング (の pk/2— 1乗)の方が効率的に計算可能であることが 指摘されているので、そのことを考慮したパラメータ設定法、演算法の効率化が今後 の課題 (の一つ)である。
図面の簡単な説明
[図 1]実施の形態 1における楕円曲線暗号システム 800の全体構成の一例を示すシ ステム構成図。
[図 2]実施の形態 1における楕円曲線暗号演算装置 200の外観の一例を示す図。
[図 3]実施の形態 1における楕円曲線暗号演算装置 200のハードウェア資源の一例 を示す図。
[図 4]実施の形態 1における楕円曲線暗号演算装置 200の内部ブロックの構成の一 例を示すブロック構成図。
[図 5]実施の形態 1における楕円曲線ペアリング演算部 233の内部ブロックの構成の 一例を示すブロック構成図。
[図 6]高速ィ匕されて 、な 、計算方式におけるティトペアリングのペアリング値を演算す る演算処理の流れの一例を示すフローチャート図(1)。
[図 7]高速化されて 、な 、計算方式におけるティトペアリングのペアリング値を演算す る演算処理の流れの一例を示すフローチャート図(2)。
[図 8]実施の形態 1における楕円曲線ペアリング演算部 233による、ティトペアリング のペアリング値を演算する演算処理の流れの一例を示すフローチャート図(1)。
[図 9]実施の形態 1における楕円曲線ペアリング演算部 233による、ティトペアリング のペアリング値を演算する演算処理の流れの一例を示すフローチャート図(2)。
[図 10]実施の形態 1における楕円曲線ペアリング演算部 233による、ティトペアリング のペアリング値を演算する演算処理の流れの一例を示すフローチャート図(3)。
[図 11]実施の形態 1における補助演算部 333によるティトペアリング補助演算処理の 流れの一例を示すフローチャート図。
[図 12]実施の形態 2における楕円曲線暗号パラメータ生成装置 100の内部ブロック の構成の一例を示すブロック構成図。
[図 13]実施の形態 2における群位数適性判断部 120による群位数適性判断処理の 流れの一例を示すフローチャート図。
[図 14]実施の形態 2における楕円曲線パラメータ生成装置 100による群位数候補算 出処理の流れの一例を示すフローチャート図。
[図 15]実施の形態 2における有限体位数決定部 180による有限体位数決定処理の 流れの一例を示すフローチャート図。
[図 16]実施の形態 2における有限体位数決定部 180による高速演算適性判定処理 の流れの一例を示すフローチャート図。
[図 17] 重視パラメータ生成法の特性比較表。
[図 18]D= 1 mod 4時の Cocks— Pinchアルゴリズム。
[図 19]補助関数 gのアルゴリズム。
[図 20]群位数 rに対する Tateペアリング値(の 73乗)を求めるアルゴリズム。
[図 21]群位数 rに対する Tateペアリング値を求めるアルゴリズム。
2
[図 22]群位数 rに対する Tateペアリング値を求めるアルゴリズム (ストレージなし)。
2
[図 23]D=— 3、 l = 28°+ 216 (r = λ 2+ λ + 1)に対するパラメータ p、 bを示す表。
2
[図 24]r— 1の分解 (D=— 3)を示す表。
2
[図 25]r— 1の分解 (D=— 3)を示す表。
3
符号の説明
100 楕円曲線暗号パラメータ生成装置、 110 素数生成部、 120 群位数適性判 断部、 130 群位数候補出力部、 140 群位数選択部、 150 群位数出力部、 160 群位数入力部、 170 拡大次数入力部、 180 有限体位数決定部、 190 有限体位 数出力部、 200, 200a, 200b 楕円曲線暗号演算装置、 210 楕円曲線暗号パラメ ータ入力部、 211 有限体位数入力部、 212 拡大次数入力部、 213 楕円曲線係 数入力部、 214 群位数入力部、 221 Iひ f青報入力部、 222 平文入力部、 223 暗 号文入力部、 224 秘密鍵入力部、 230 暗号演算部、 231 有限体演算部、 232 楕円曲線演算部、 233 楕円曲線ペアリング演算部、 241 公開鍵算出部、 242 暗 号文生成部、 243 暗号文復号部、 252 暗号文出力部、 253 平文出力部、 294 秘密鍵記憶部、 300 センタ、 510 楕円曲線暗号パラメータ、 521 HD情報、 531 秘密鍵、 601 平文、 651 暗号文、 800 楕円曲線暗号システム、 901 表示装置、 902 キーボード、 903 マウス、 904 FDD, 905 CDD、 906 プリンタ装置、 907 スキャナ装置、 910 システムユニット、 911 CPU, 912 ノ ス、 913 ROM, 914 RAM, 915 通信ボード、 920 磁気ディスク装置、 921 OS、 922 ウィンドウシス テム、 923 プログラム群、 924 ファイル群、 931 電話器、 932 ファクシミリ機、 94 0 インターネット、 941 ゲートウェイ、 942 LAN。

Claims

請求の範囲
[1] 情報を記憶する記憶装置と、
情報を出力する出力装置と、
演算を行う演算装置と、
上記演算装置を用いて、素数 rを生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する素数生成部と、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、楕円曲線暗号演算における有限体 K= GF (q)上における楕円曲線 E上の 点からなる加法群 E (K)の群位数として上記素数 rが適切であるカゝ否かを判断する群 位数適性判断部と、
楕円曲線暗号演算における有限体 K上の楕円曲線 E上の点力 なる加法群 E (K) の群位数として上記素数 rが適切であると、上記群位数適性判断部が判断した場合 に、
上記素数生成部が生成した素数 rを上記記憶装置から読み出し、上記出力装置を 用いて、上記素数 rを群位数候補として出力する群位数候補出力部と、
を有することを特徴とする楕円曲線暗号パラメータ生成装置。
[2] 上記群位数適性判断部は、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、上記素数 rから 1を減じて、自然数 r 1を求め、上記記憶装置を用いて、求 めた上記自然数 r 1を記憶し、
上記演算装置を用いて、所定の範囲内の自然数 kを生成し、上記記憶装置を用い て、生成した上記自然数 kを記憶し、
求めた上記自然数 r 1と、生成した上記自然数 kとを上記記憶装置から読み出し、 上記演算装置を用いて、上記自然数 kが上記自然数!: 1の約数であるか否かを判 断し、
上記所定の範囲内のすべての上記自然数 kが上記自然数 r 1の約数であると判 断した場合に、
上記演算装置を用いて、楕円曲線暗号演算における有限体 K上の楕円曲線 E上 の点からなる加法群 E (K)の群位数として上記素数 rが適切であると判断する ことを特徴とする請求項 1に記載の楕円曲線暗号パラメータ生成装置。
[3] 上記群位数適性判断部は、
上記演算装置を用いて、 2以上、所定の閾値 2k 以下の偶数の範囲内で上記自
max
然数 kを生成し、上記記憶装置を用いて、生成した上記自然数 kを記憶する ことを特徴とする請求項 2に記載の楕円曲線暗号パラメータ生成装置。
[4] 上記素数生成部は、
上記演算装置を用いて、上記素数 rのハミング重みが所定の値以下である素数 rを 生成し、上記記憶装置を用いて、生成した上記素数 rを記憶する
ことを特徴とする請求項 1に記載の楕円曲線暗号パラメータ生成装置。
[5] 上記素数生成部は、
上記演算装置を用いて、自然数えを生成し、上記記憶装置を用いて、生成した上 記自然数えを記憶し、
生成した上記自然数 λを上記記憶装置から読み出し、上記演算装置を用いて、所 定の 2次多項式 f (X) =ax2 + bx + c (ただし、 a、 b、 cは整数、 xは変数)に、上記自然 数えを代入して、整数 f ( ) =a 2+b +cを求め、上記記憶装置を用いて、求め た上記整数 ί( λ )を記憶し、
求めた上記整数 ί( λ )を上記記憶装置力 読み出し、上記演算装置を用いて、上 記整数 ί ( λ )の素因数 rを求め、上記記憶装置を用いて、求めた上記素因数 rを記憶 し、
求めた上記素因数 rを上記記憶装置から読み出し、上記出力装置を用いて、上記 素因数 rを素数!:として出力する
ことを特徴とする請求項 1に記載の楕円曲線暗号パラメータ生成装置。
[6] 上記素数生成部は、
求めた上記整数 ί( λ )と、求めた上記素因数 rとを上記記憶装置から読み出し、上 記演算装置を用いて、上記整数 ί ( λ )を上記素因数 rで除して、商 n=f ( ) Zrを求 め、上記記憶装置を用いて、求めた上記商 nを記憶し、
求めた上記商 nを上記記憶装置から読み出し、上記演算装置を用いて、上記商 n が所定の整数以下であるか否かを判断し、
上記商 nが所定の整数以下であると判断した場合に、
求めた上記素因数 rを上記記憶装置から読み出し、上記出力装置を用いて、上記 素因数 rを素数!:として出力する
ことを特徴とする請求項 5に記載の楕円曲線暗号パラメータ生成装置。
[7] 上記素数生成部は、
上記所定の 2次多項式 f (x)として、 x2+x+ lまたは x2+ lを用い、上記演算装置を 用いて、上記整数 ί ( λ )を求め、上記記憶装置を用いて、求めた上記整数 ί( λ )を記 憶する
ことを特徴とする請求項 5に記載の楕円曲線暗号パラメータ生成装置。
[8] 上記素数生成部は、
上記演算装置を用いて、上記自然数えのハミング重みが所定の値以下である自然 数 λを生成し、上記記憶装置を用いて、生成した上記自然数えを記憶する ことを特徴とする請求項 5に記載の楕円曲線暗号パラメータ生成装置。
[9] 上記素数生成部は、
特定の形式を有する群位数に特化することにより、楕円曲線ペアリング演算を高速 化した楕円曲線暗号演算装置に、群位数として設定することができる素数 rを、上記 演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素数 rを記憶する ことを特徴とする請求項 1に記載の楕円曲線暗号パラメータ生成装置。
[10] 上記素数生成部は、
有限体 K上の楕円曲線 E上の自己準同型写像 φを利用することにより、楕円曲線 ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定すること ができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した 上記素数 rを記憶する
ことを特徴とする請求項 9に記載の楕円曲線暗号パラメータ生成装置。
[11] 上記素数生成部は、
上記自己準同型写像 φとして、効率的に演算可能な自己準同型写像を利用する ことにより、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数 として設定することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置 を用いて、生成した上記素数 rを記憶する
ことを特徴とする請求項 10に記載の楕円曲線暗号パラメータ生成装置。
[12] 上記素数生成部は、
上記自己準同型写像 φとして、上記自己準同型写像 φがなす環の判別式 Dの絶 対値が所定の値よりも小さい自己準同型写像を利用することにより、楕円曲線ペアリ ング演算を高速化した楕円曲線暗号演算装置に、群位数として設定することができ る素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する
ことを特徴とする請求項 10に記載の楕円曲線暗号パラメータ生成装置。
[13] 上記素数生成部は、
上記楕円曲線 Eとして、 Y2=X3+bを用い、上記自己準同型写像 として、 (x, y) →( j8 x, y) (ただし、 βは有限体 Κ上における 1の原始 3乗根)を利用することにより、 楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定 することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、 生成した上記素数 rを記憶する
ことを特徴とする請求項 10に記載の楕円曲線暗号パラメータ生成装置。
[14] 上記素数生成部は、
上記楕円曲線 Eとして、 Y2=X3 + aXを用い、上記自己準同型写像 φとして、(X, y )→(-x, iy) (ただし、 iは有限体 K上における 1の原始 4乗根)を利用することにより、 楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、群位数として設定 することができる素数 rを、上記演算装置を用いて生成し、上記記憶装置を用いて、 生成した上記素数 rを記憶する
ことを特徴とする請求項 10に記載の楕円曲線暗号パラメータ生成装置。
[15] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを 所定の範囲内で変化させた場合に、上記楕円曲線暗号演算装置が特化した群位数 の形式と、同一の形式を有する素数 rを、上記出力装置を用いて、上記群位数候補と して出力する
ことを特徴とする請求項 9に記載の楕円曲線暗号パラメータ生成装置。
[16] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを 所定の範囲内で変化させた場合に、同一の群位数として設定することができる素数 r を、上記出力装置を用いて、上記群位数候補として出力する
ことを特徴とする請求項 9に記載の楕円曲線暗号パラメータ生成装置。
[17] 上記群位数候補出力部は、
楕円曲線ペアリング演算における有限体 Kの拡大体 K' =GF (qk)の拡大次数 kを 2以上、所定の閾値 2k 以下の偶数の範囲内で変化させた場合に、同一の群位数
max
として設定することができる素数 rを、上記出力装置を用いて、上記群位数候補として 出力する
ことを特徴とする請求項 9に記載の楕円曲線暗号パラメータ生成装置。
[18] 上記楕円曲線暗号パラメータ生成装置は、更に、
情報を入力する入力装置と、
上記入力装置を用いて、楕円曲線ペアリング演算における有限体 Kの拡大体 K' = GF (qk)の拡大次数 kを入力し、上記記憶装置を用いて、入力した上記拡大次数 k を記憶する拡大次数入力部と、
上記入力装置を用いて、上記群位数候補出力部が出力した群位数候補のなかか ら選択した素数 rを群位数!:として入力し、上記記憶装置を用いて、入力した上記群 位数 rを記憶する群位数入力部と、
上記群位数入力部が入力した群位数 rと、上記拡大次数入力部が入力した拡大次 数 kとを上記記憶装置から読み出し、上記演算装置を用いて、上記群位数 rと、上記 拡大次数 kとに基づいて、上記楕円曲線暗号演算における有限体 Kの位数 qを定め 、上記記憶装置を用いて、定めた上記有限体 Kの位数 qを記憶する有限体位数決定 部と、
定めた上記有限体 Kの位数 qを上記記憶装置から読み出し、上記出力装置を用い て、上記有限体 Kの位数 qを出力する有限体位数出力部と、 を有することを特徴とする請求項 1に記載の楕円曲線暗号パラメータ生成装置。
[19] 上記有限体位数決定部は、
所定の既約多項式 pol (X)を用いて有限体 Kを拡大体 K 'へ拡大することにより、楕 円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体 Kの位数とし て設定することができる位数 qを、上記演算装置を用いて定め、上記記憶装置を用い て、定めた上記有限体 Kの位数 qを記憶する
ことを特徴とする請求項 18に記載の楕円曲線暗号パラメータ生成装置。
[20] 上記有限体位数決定部は、
既約多項式 pol (X)として、 pol (x) =xk- γ (ただし、 χは有限体 Κ上における変数 、 Ύは有限体 Κの乗法群 Κ*の元)を用いて有限体 Κを拡大体 K'へ拡大することによ り、楕円曲線ペアリング演算を高速化した楕円曲線暗号演算装置に、有限体 Κの位 数として設定することができる位数 qを、上記演算装置を用いて定め、上記記憶装置 を用いて、定めた上記有限体 Kの位数 qを記憶する
ことを特徴とする請求項 18に記載の楕円曲線暗号パラメータ生成装置。
[21] 上記有限体位数決定部は、
上記演算装置を用いて、上記有限体 Kの位数として設定することができる位数の候 補 qを生成し、上記記憶装置を用いて、生成した上記位数の候補 qを記憶し、 上記拡大次数入力部が入力した拡大次数 kと、上記位数の候補 qとを上記記憶装 置力 読み出し、上記演算装置を用いて、以下の 3つの条件:
(1)拡大次数 kのすベての素因数が、上記有限体 Kの元 γの位数 Lの約数である こと。
(2)拡大次数 kのすベての素因数が、(q— 1) ZLの約数でな 、こと。
(3)拡大次数 k力 の倍数である場合には、 q— 1も 4の倍数であること。 のすベてを満たす有限体 Kの元 γが存在するか否かを判断し、
上記演算装置を用いて、上記 3つの条件すベてを満たす有限体 Κの元 γが存在 すると判断した場合に、
上記演算装置を用いて、求めた上記位数の候補 qを、上記有限体 Kの位数として 設定することができると判断する ことを特徴とする請求項 18に記載の楕円曲線暗号パラメータ生成装置。
上記有限体位数決定部は、
上記演算装置を用いて、上記有限体 Kの位数として設定することができる位数の候 補 qを生成し、上記記憶装置を用いて、生成した上記位数の候補 qを記憶し、 上記拡大次数 kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大 次数 kを素因数分解して、すべての素因数 πを求め、記憶装置を用いて、求めたす ベての素因数 πを記憶し、
求めた上記すベての素因数 πを記憶装置力 読み出し、上記演算装置を用いて、 上記すベての素因数 πの積 Πを計算し、上記記憶装置を用いて、計算した積 Πを し feし、
上記拡大次数 kを上記記憶装置から読み出し、上記演算装置を用いて、上記拡大 次数 k力 の倍数であるカゝ否かを判断して、上記拡大次数 kが 4の倍数であると判断 した場合に、計算した上記積 Πを上記記憶装置力 読み出し、上記演算装置を用い て、上記積 Πを 2倍して、積 2Πを計算し、上記記憶装置を用いて、計算した積 2Πを 、新たな積 Πとして記憶し、
生成した上記位数の候補 qを上記記憶装置から読み出し、上記演算装置を用いて 、上記位数の候補 qから 1を減じて、整数 q— 1を計算し、上記記憶装置を用いて、計 算した上記整数 q— 1を記憶し、
計算した上記整数 q— 1と、計算した上記積 Πとを記憶装置力 読み出し、上記演 算装置を用いて、上記整数 q—1が上記積 Πの倍数である力否かを判断し、 上記整数 q— 1が上記積 Πの倍数であると判断した場合に、
計算した上記整数 q— 1と、計算した上記積 Πとを上記記憶装置力 読み出し、上 記演算装置を用いて、上記整数 q— 1を上記積 Πで除して、商 N= (q— 1) ZLを計 算し、上記記憶装置を用いて、求めた上記商 Nを記憶し、
計算した上記商 Nと、求めた上記すベての素因数 πとを上記記憶装置から読み出 し、上記演算装置を用いて、上記商 Νが上記素因数 πの倍数である力否かを判断し 上記すベての素因数 πについて、上記商 Νが上記素因数 πの倍数でないと判断 した場合に、
上記演算装置を用いて、生成した上記位数の候補 qを、上記有限体 Kの位数として 設定することができると判断する
ことを特徴とする請求項 18に記載の楕円曲線暗号パラメータ生成装置。
[23] 情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数であって、特定の形式を有する 群位数 rを入力し、上記記憶装置を用いて、入力した上記群位数 rを記憶する群位数 入力部と、
上記有限体位数入力部が入力した位数 qと、上記群位数入力部が入力した群位数 rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数 qと、上記群位 数入力部が入力した群位数 rとに基づ ヽて、特定の形式を有する群位数に特化する ことにより高速ィ匕した楕円曲線ペアリング演算により、楕円曲線ペアリング演算を行う 楕円曲線ペアリング演算部と、
を有することを特徴とする楕円曲線暗号演算装置。
[24] 上記楕円曲線ペアリング演算部は、
有限体 K上における楕円曲線 E上の自己準同型写像 φを利用することにより高速 化した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング 演算を行う
ことを特徴とする請求項 23に記載の楕円曲線暗号演算装置。
[25] 上記楕円曲線ペアリング演算部は、
上記自己準同型写像 φとして、効率的に演算可能な自己準同型写像を利用する ことにより高速ィ匕した楕円曲線ペアリング演算により、上記演算装置を用いて、楕円 曲線ペアリング演算を行う
ことを特徴とする請求項 24に記載の楕円曲線暗号演算装置。
[26] 上記楕円曲線ペアリング演算部は、
上記自己準同型写像 φとして、上記自己準同型写像 φがなす環の判別式 Dの絶 対値が所定の値よりも小さい自己準同型写像を利用することにより高速ィ匕した楕円曲 線ペアリング演算により、上記演算装置を用いて、楕円曲線ペアリング演算を行う ことを特徴とする請求項 24に記載の楕円曲線暗号演算装置。
[27] 上記楕円曲線ペアリング演算部は、
上記楕円曲線 Eとして、 Y2=X3+bを用い、
上記自己準同型写像 として、(X, γ)→( β χ, y) (ただし、 |8は有限体 K上におけ る 1の原始 3乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上 記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする請求項 24に記載の楕円曲線暗号演算装置。
[28] 上記楕円曲線ペアリング演算部は、
上記楕円曲線 Eとして、 Y2=X3+aXを用い、
上記自己準同型写像 φとして、(X, y)→(-x, iy) (ただし、 iは有限体 K上におけ る 1の原始 4乗根)を利用することにより高速化した楕円曲線ペアリング演算により、上 記演算装置を用いて、楕円曲線ペアリング演算を行う
ことを特徴とする請求項 24に記載の楕円曲線暗号演算装置。
[29] 情報を入力する入力装置と、
情報を記憶する記憶装置と、
演算を行う演算装置と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記有限体位数入力部が入力した位数 qを上記記憶装置から読み出し、上記演算 装置を用いて、上記位数 qと、楕円曲線暗号演算における有限対 K=GF (q)上にお ける楕円曲線 E上の点力もなる加法群 E (K)の群位数として、あら力じめ定めた特定 の群位数 rとに基づいて、上記特定の群位数 rに特化することにより高速化した楕円 曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算 部と、
を有することを特徴とする楕円曲線暗号演算装置。
[30] 情報を記憶する記憶装置と、情報を出力する出力装置と、演算を行う演算装置とを 有するコンピュータを、
上記演算装置を用いて、素数 rを生成し、上記記憶装置を用いて、生成した上記素 数 rを記憶する素数生成部と、
上記素数生成部が生成した素数 rを上記記憶装置力 読み出し、上記演算装置を 用いて、楕円曲線暗号演算における有限体 K=GF (q)上における楕円曲線 E上の 点からなる加法群 E (K)の群位数として上記素数 rが適切であるカゝ否かを判断する群 位数適性判断部と、
楕円曲線暗号演算における有限体 K上の楕円曲線 E上の点力 なる加法群 E (K) の群位数として上記素数 rが適切であると、上記群位数適性判断部が判断した場合 に、
上記素数生成部が生成した素数 rを上記記憶装置から読み出し、上記出力装置を 用いて、上記素数 rを、群位数候補として出力する群位数候補出力部と、
を有する楕円曲線暗号パラメータ生成装置として機能させることを特徴とする楕円曲 線暗号パラメータ生成プログラム。
[31] 情報を入力する入力装置と、情報を記憶する記憶装置と、演算を行う演算装置とを 有するコンピュータを、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)の位数 qを 入力し、上記記憶装置を用いて、入力した上記位数 qを記憶する有限体位数入力部 と、
上記入力装置を用いて、楕円曲線暗号演算における有限体 K=GF (q)上におけ る楕円曲線 E上の点からなる加法群 E (K)の群位数であって、特定の形式を有する 群位数 rを入力し、上記記憶装置を用いて、入力した群位数 rを記憶する群位数入力 部と、 上記有限体位数入力部が入力した位数 qと、上記群位数入力部が入力した群位数 rとを上記記憶装置から読み出し、上記演算装置を用いて、上記位数 qと、上記群位 数 rとに基づいて、特定の形式を有する群位数に特化することにより高速化した楕円 曲線ペアリング演算により、楕円曲線ペアリング演算を行う楕円曲線ペアリング演算 部と、
を有する楕円曲線暗号演算装置として機能させることを特徴とする楕円曲線暗号演 算プログラム。
PCT/JP2006/300223 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム WO2007080633A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2006/300223 WO2007080633A1 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム
EP06711568A EP1993086B1 (en) 2006-01-11 2006-01-11 Elliptical curve encryption parameter generation device, elliptical curve encryption calculation device, elliptical curve encryption parameter generation program, and elliptical curve encryption calculation program
US12/085,587 US8111826B2 (en) 2006-01-11 2006-01-11 Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph
JP2007553794A JP4688886B2 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/300223 WO2007080633A1 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム

Publications (1)

Publication Number Publication Date
WO2007080633A1 true WO2007080633A1 (ja) 2007-07-19

Family

ID=38256048

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/300223 WO2007080633A1 (ja) 2006-01-11 2006-01-11 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム

Country Status (4)

Country Link
US (1) US8111826B2 (ja)
EP (1) EP1993086B1 (ja)
JP (1) JP4688886B2 (ja)
WO (1) WO2007080633A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011082662A (ja) * 2009-10-05 2011-04-21 Mitsubishi Electric Corp 通信装置及び情報処理方法及びプログラム
US11431496B2 (en) 2018-05-15 2022-08-30 Mitsubishi Electric Corporation Secret search device and secret search method

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1775880A1 (en) * 2005-10-11 2007-04-18 STMicroelectronics S.r.l. Method of processing information to be confidentially transmitted
JP4663497B2 (ja) * 2005-12-01 2011-04-06 株式会社日立製作所 情報処理システムおよび情報処理装置の割当管理方法
US8290146B2 (en) * 2007-01-19 2012-10-16 Mitsubishi Electric Corporation Ciphertext generating apparatus, cryptographic communication system, and group parameter generating apparatus
US7978846B2 (en) * 2007-06-30 2011-07-12 Intel Corporation Scale-invariant barrett reduction for elliptic-curve cyrptography
US7986779B2 (en) * 2007-06-30 2011-07-26 Intel Corporation Efficient elliptic-curve cryptography based on primality of the order of the ECC-group
JP4649456B2 (ja) * 2007-09-26 2011-03-09 株式会社東芝 べき乗計算装置、べき乗計算方法及びプログラム
US8144864B2 (en) * 2007-12-28 2012-03-27 Intel Corporation Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
CN101925942B (zh) * 2008-02-20 2013-11-27 三菱电机株式会社 验证装置
JP2010049213A (ja) * 2008-08-25 2010-03-04 Toshiba Corp 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
US20100150340A1 (en) * 2008-12-02 2010-06-17 Electronics And Telecommunications Research Institute Device and method for elliptic curve cryptosystem
JP5549018B2 (ja) * 2009-04-21 2014-07-16 国立大学法人 岡山大学 ペアリング演算装置、ペアリング演算方法、及びペアリング演算プログラムを記録した記録媒体
US8488780B2 (en) * 2009-04-24 2013-07-16 Nippon Telegraph And Telephone Corporation Finite field calculation apparatus, finite field calculation method and recording medium
WO2010123112A1 (ja) * 2009-04-24 2010-10-28 日本電信電話株式会社 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
TWI416347B (zh) * 2009-06-22 2013-11-21 Realtek Semiconductor Corp 處理有限域運算之方法與運算電路
US8499158B2 (en) * 2009-12-18 2013-07-30 Electronics And Telecommunications Research Institute Anonymous authentication service method for providing local linkability
RU2452111C1 (ru) * 2010-11-17 2012-05-27 ЗАО Институт инфокоммуникационных технологий Способ пороговой генерации ключей для системы защиты информации на основе идентификационных данных
US9049023B2 (en) 2011-05-24 2015-06-02 Zeutro Llc Outsourcing the decryption of functional encryption ciphertexts
US8782420B2 (en) 2011-07-22 2014-07-15 Netflix, Inc System and method for obfuscation initiation values of a cryptography protocol
US9154302B2 (en) * 2012-01-25 2015-10-06 CertiVox Ltd. System and method for secure two-factor authenticated ID-based key exchange and remote login using an insecure token and simple second-factor such as a PIN number
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
GB201309702D0 (en) 2013-05-30 2013-07-17 Certivox Ltd Security
US8971540B2 (en) 2013-05-30 2015-03-03 CertiVox Ltd. Authentication
US9106644B2 (en) 2013-05-30 2015-08-11 CertiVox Ltd. Authentication
US9800407B2 (en) * 2013-08-30 2017-10-24 Qualcomm Incorporated Methods and apparatuses for prime number generation and storage
CN104579661B (zh) * 2013-10-21 2018-05-01 航天信息股份有限公司 基于身份的电子签章的实现方法和装置
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US9680647B2 (en) * 2014-03-24 2017-06-13 Infineon Technologies Ag Method of using a token in cryptography
JP6610277B2 (ja) * 2016-01-15 2019-11-27 富士通株式会社 共有鍵生成プログラム、共有鍵生成方法および情報処理端末
US11601263B2 (en) 2018-05-16 2023-03-07 Lg Electronics Inc. Systems and methods for efficient key management in a vehicular intranet
US20220085998A1 (en) * 2020-09-11 2022-03-17 Cryptography Research, Inc. System and method to generate prime numbers in cryptographic applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212457A (ja) * 1998-01-28 1999-08-06 Fujitsu Ltd 楕円曲線のパラメータ安全性高速判定装置および記録媒体
JPH11305660A (ja) * 1997-10-10 1999-11-05 Certicom Corp エルガマル・ライクなプロトコルのためのセッション・パラメータ生成方法
JP2001066987A (ja) * 1999-08-27 2001-03-16 Nec Corp 代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
JP2004177673A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd ペアリング暗号装置、ペアリング暗号演算プログラム
JP2005241898A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 楕円曲線ペアリング高速演算方法及び装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442707A (en) * 1992-09-28 1995-08-15 Matsushita Electric Industrial Co., Ltd. Method for generating and verifying electronic signatures and privacy communication using elliptic curves
US6337909B1 (en) 1996-10-10 2002-01-08 Certicom Corp. Generation of session keys for El Gamal-like protocols from low hamming weight integers
JPH11242434A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd 楕円曲線暗号実行方法及び暗号処理システム
CA2257008C (en) 1998-12-24 2007-12-11 Certicom Corp. A method for accelerating cryptographic operations on elliptic curves
JP2000293101A (ja) * 1999-04-07 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 楕円暗号安全性評価装置、その方法及びプログラム記録媒体
JP4450969B2 (ja) 2000-05-02 2010-04-14 村田機械株式会社 鍵共有システム,秘密鍵生成装置,共通鍵生成システム,暗号通信方法,暗号通信システム及び記録媒体
US7239701B1 (en) 2000-05-02 2007-07-03 Murata Machinery Ltd. Key sharing method, secret key generating method, common key generating method and cryptographic communication method in ID-NIKS cryptosystem
JP3892229B2 (ja) * 2001-01-18 2007-03-14 三菱電機株式会社 超楕円曲線暗号パラメータ生成方法及び超楕円曲線暗号パラメータ生成装置
ATE465571T1 (de) 2001-08-13 2010-05-15 Univ Leland Stanford Junior Systeme und verfahren zur verschlüsselung auf identitätsbasis und damit zusammenhängende kryptografische techniken
JP4316246B2 (ja) * 2003-01-23 2009-08-19 三菱電機株式会社 楕円暗号安全性強度評価方法及び楕円暗号安全性強度評価装置及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP4184120B2 (ja) 2003-03-07 2008-11-19 日本電信電話株式会社 楕円曲線上スカラー倍演算装置、及び楕円曲線上スカラー倍演算プログラム
JP2005283674A (ja) 2004-03-26 2005-10-13 Nec Corp 楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法及びそのプログラム
EP1815635B9 (en) * 2004-11-11 2014-01-15 Certicom Corp. Custom static diffie-hellman groups

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11305660A (ja) * 1997-10-10 1999-11-05 Certicom Corp エルガマル・ライクなプロトコルのためのセッション・パラメータ生成方法
JPH11212457A (ja) * 1998-01-28 1999-08-06 Fujitsu Ltd 楕円曲線のパラメータ安全性高速判定装置および記録媒体
JP2001066987A (ja) * 1999-08-27 2001-03-16 Nec Corp 代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
JP2004177673A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd ペアリング暗号装置、ペアリング暗号演算プログラム
JP2005241898A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 楕円曲線ペアリング高速演算方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011082662A (ja) * 2009-10-05 2011-04-21 Mitsubishi Electric Corp 通信装置及び情報処理方法及びプログラム
US11431496B2 (en) 2018-05-15 2022-08-30 Mitsubishi Electric Corporation Secret search device and secret search method

Also Published As

Publication number Publication date
EP1993086A1 (en) 2008-11-19
US20090285386A1 (en) 2009-11-19
JPWO2007080633A1 (ja) 2009-06-11
EP1993086A4 (en) 2011-02-23
EP1993086B1 (en) 2012-09-05
JP4688886B2 (ja) 2011-05-25
US8111826B2 (en) 2012-02-07

Similar Documents

Publication Publication Date Title
JP4688886B2 (ja) 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム
JP5190142B2 (ja) 楕円曲線上の新しいトラップドア1方向性関数と、その、より短い署名及び非対称暗号化への応用
CA2984390A1 (en) Elliptic curve isogeny-based cryptographic scheme
Dawahdeh et al. A new modification for menezes-vanstone elliptic curve cryptosystem
Vidhya et al. Hybrid key generation for RSA and ECC
Yassein et al. A comparative performance analysis of NTRU and its variant cryptosystems
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
Beullens et al. Proving knowledge of isogenies: a survey
Shankar et al. Cryptography with elliptic curves
Tahat et al. Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems
Stogbauer Efficient Algorithms for pairing-based cryptosystems
Fouotsa et al. x-superoptimal pairings on elliptic curves with odd prime embedding degrees: BW 13-P 310 and BW 19-P 286
Frey et al. Fast bilinear maps from the Tate-Lichtenbaum pairing on hyperelliptic curves
JP5097137B2 (ja) 暗号通信システム、端末装置、秘密鍵生成方法及びプログラム
Mohapatra Signcryption schemes with forward secrecy based on elliptic curve cryptography
JP2002023626A (ja) 公開鍵暗号方法および公開鍵暗号を用いた通信システム
Sarma et al. Public key cryptosystem based on Pell's equation using the Gnu Mp library
Goo et al. Reconfigurable real number field elliptic curve cryptography to improve the security
Musa et al. Hybrid Cloud Storage Techniques Using Rsa And Ecc
JP4230162B2 (ja) 公開鍵暗号通信方法
Edoh Elliptic curve cryptography on pocketpcs
Huang et al. FleS: A Compact and Parameter-Flexible Supersingular Isogeny Based Public Key Encryption Scheme
Goswami et al. XTR Algorithm: Efficient and Compact Subgroup Trace Representation
Abirami et al. Comparative Analysis of Elliptic Curve Cryptography Methods and Survey of Its Applications
Kalita et al. A new cryptosystem using generalized Mersenne primes

Legal Events

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

Ref document number: 2007553794

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 12085587

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2006711568

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE