WO2004070681A2 - 楕円曲線スカラー倍計算方法および装置 - Google Patents

楕円曲線スカラー倍計算方法および装置 Download PDF

Info

Publication number
WO2004070681A2
WO2004070681A2 PCT/JP2003/015253 JP0315253W WO2004070681A2 WO 2004070681 A2 WO2004070681 A2 WO 2004070681A2 JP 0315253 W JP0315253 W JP 0315253W WO 2004070681 A2 WO2004070681 A2 WO 2004070681A2
Authority
WO
WIPO (PCT)
Prior art keywords
scalar
elliptic curve
calculation
unit
calculating
Prior art date
Application number
PCT/JP2003/015253
Other languages
English (en)
French (fr)
Other versions
WO2004070681A1 (ja
Inventor
Katsuyuki Okeya
Tsuyoshi Takagi
Original Assignee
Hitachi Ltd
Katsuyuki Okeya
Tsuyoshi Takagi
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 Hitachi Ltd, Katsuyuki Okeya, Tsuyoshi Takagi filed Critical Hitachi Ltd
Priority to JP2004567900A priority Critical patent/JP4502817B2/ja
Priority to AU2003284481A priority patent/AU2003284481A1/en
Publication of WO2004070681A1 publication Critical patent/WO2004070681A1/ja
Publication of WO2004070681A2 publication Critical patent/WO2004070681A2/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

Definitions

  • the present invention relates to security technology, and more particularly to a message processing method using an elliptic curve operation.
  • Elliptic curve cryptography is a type of public key cryptography proposed by N. Koblitz and VS Miller.
  • public key cryptography there are information that can be made public, called a public key, and secret information that must be kept secret, called a secret key.
  • a public key is used to encrypt a given message and verify a signature, and a private key is used to decrypt a given message and create a signature.
  • the secret key in elliptic curve cryptography is scalar.
  • the security of elliptic curve cryptography stems from the difficulty of solving discrete logarithm problems on elliptic curves.
  • the discrete logarithm problem on an elliptic curve is a problem of finding a scalar value d given a point P on the elliptic curve and a point that is a scalar multiple thereof.
  • a point on an elliptic curve is a set of numbers that satisfy the definition equation of the elliptic curve, and all points on the elliptic curve are calculated using the virtual point of infinity as a unit element, that is, on the elliptic curve. Addition (or addition) is defined. The addition on the elliptic curve by the same points is called doubling on the elliptic curve.
  • Addition of two points on an elliptic curve is calculated as follows. If you draw a line that passes through two points, the line intersects the elliptic curve at another point. The point of intersection and the point symmetrical with respect to the X axis are defined as the result of the addition. For example, in the case of a Weierstrass-form elliptic curve, the points (, y x ) and the points (x 2 , y 2 ) are added.
  • ⁇ 3 (( ⁇ 2— yi) Z (3 ⁇ 4— ⁇ ⁇ )) — ⁇ ⁇ — 3 ⁇ 4 (formula i)
  • Equation 3 Given by That is, when Xi , yi , 3) are substituted for x and y in Equation 3, respectively, the equation of Equation 3 holds.
  • the doubling of a point on an elliptic curve is calculated as follows. If you draw a tangent at a point on the elliptic curve, the tangent will intersect at another point on the elliptic curve. A point symmetrical with respect to the X-coordinate with the intersection point is defined as a point obtained by performing doubling. For example, in the case of Waie Rushutorasu form elliptic curve, doubling of the point (X have Yl)
  • elliptic curve cryptography encryption, decryption, signature creation or verification of a given message must be performed using elliptic curve arithmetic.
  • a scalar multiplication on an elliptic curve is used for cryptographic processing using a scalar value that is secret information.
  • the present invention provides an elliptic curve calculation method capable of preventing a side channel attack and using a small amount of memory.
  • the present invention further provides an encryption processing method, a decryption processing method, a signature creation method, a signature verification method, and a data sharing method using the above-mentioned elliptic curve calculation method.
  • the present invention provides a method for calculating a scalar multiple from a scalar value and a point on an elliptic curve in an elliptic curve operation, the method comprising encoding the scalar value into a numerical sequence. And generating a pre-calculation table from the points on the elliptic curve; and calculating a scalar multiple from the encoded numerical sequence and the pre-calculation table.
  • the present invention may also be configured such that the numerical sequence output in the encoding step is composed of 0 and odd numbers.
  • the step of calculating the scalar multiple includes a step of executing the first operation a predetermined number of times, and a step of executing a second operation different from the first operation. You may comprise so that it may contain.
  • the present invention also provides a scalar value and an odd number of points on the elliptic curve.
  • a scalar multiplication method for calculating a scalar single point from a pre-calculation table storing multiple points comprising the steps of: encoding the scalar value into a numerical sequence; and calculating the scalar value from the encoded numerical sequence and the pre-calculation table. Calculating the scalar single point, and the numerical sequence output by the encoding step may be composed of 0 and odd numbers.
  • FIG. 1 is a system configuration diagram in an embodiment.
  • FIG. 2 is a sequence diagram illustrating information transfer in each embodiment.
  • FIG. 3 is a configuration diagram of a scalar multiplication unit according to the embodiment.
  • FIG. 4 is a flowchart showing an encoding method performed by the encoding unit.
  • FIG. 5 is a flowchart showing a pre-calculation method performed by the pre-calculation unit.
  • FIG. 6 is a flowchart illustrating an actual calculation method performed by the actual calculation unit.
  • FIG. 7 is a configuration diagram of the signature verification system in the embodiment.
  • FIG. 1 shows a system configuration in which a computer A101 and a computer B121 to which the elliptic curve calculation method according to the present invention connected by a network 142 is applied, are connected by a network 142.
  • P m is a message
  • k is a random number
  • a is a constant indicating a secret key
  • Q is a fixed point
  • aQ is a point indicating a public key.
  • a computer A101 is equipped with arithmetic devices such as a CPU 113 and a coprocessor 114, storage devices such as a RAM 103, a ROM 106, and an external storage device 107, and an input / output interface 110 for inputting and outputting data to and from the outside of the computer.
  • a display 108 for operating the computer A101 by a user, a keyboard 109, a detachable portable storage medium read / write device, and the like are connected to the outside.
  • the computer A101 realizes the storage unit 102 by the storage device such as the RAM 103, the ROM 106, and the external storage device 107, and the arithmetic unit such as the CPU 113 and the coprocessor 114 executes the program stored in the storage unit 102.
  • the storage device such as the RAM 103, the ROM 106, and the external storage device 107
  • the arithmetic unit such as the CPU 113 and the coprocessor 114 executes the program stored in the storage unit 102.
  • a data processing unit 112 and a scalar multiplication unit 115 are realized.
  • the data processing unit 112 functions as the encryption processing unit 112, and encrypts an input message.
  • the scalar multiplication unit 115 calculates parameters necessary for the encryption processing unit 112 to perform encryption.
  • the storage unit 102 stores a constant 104 (for example, a definition equation of an elliptic curve or a Is a point. ) And secret information 105 (for example, a secret key).
  • Computer B 121 has the same hardware configuration as computer A 101. Further, the computer B 121 realizes the storage unit 122 by using storage devices such as the RAM 123, the ROM 126, and the external storage device 107, and the arithmetic unit such as the CPU 133 and the coprocessor 134 stores the program stored in the storage unit 122. By executing the above, the data processing unit 1:32 and the scalar multiplication unit 135 are realized.
  • the data processing unit 132 functions as the decryption processing unit 132, and decrypts the ciphertext 141, which is an encrypted message.
  • the scalar multiplication unit 135 calculates parameters necessary for the decryption processing unit 132 to perform decoding.
  • the storage unit 122 stores a constant 124 (for example, a definition formula of an elliptic curve or a fixed point on the elliptic curve), secret information 125 (for example, a secret key), and the like.
  • the above programs may be stored in advance in a storage unit in the computer, or when necessary, may be stored in another medium via a medium that can be used by the input / output interface 110 and the computer 721. It may be introduced from the device to the storage unit.
  • the medium refers to, for example, a storage medium detachable from the input / output interface 110 or a communication medium (ie, a network or a carrier propagating through the network).
  • FIG. 2 shows a state of information exchange performed by each processing unit of the computer A101 and the computer B121.
  • the message only needs to be digitized data, and any type of text, image, video, sound, etc. can be used.
  • the encryption processing unit 112 generates a random number k. Then, the public keys aQ and Q read out from the constant 104 stored in the storage unit 102 (205 in FIG. 2) and the obtained y coordinate values and the random number k are sent to the scalar multiplication unit 115 (205). (Fig. 2, 206).
  • the encryption processing unit 112 performs an encryption process using the transmitted scalar multiple. For example, for a Weierstrass-form elliptic curve, calculate P m + k (aQ) and kQ. That is,
  • Computer A101 assembles an encrypted output message from one or more partial messages encrypted by encryption processing section 112 (208 in FIG. 2).
  • the computer A101 outputs the decoded output message as data 141 from the input / output interface 110, and transfers it to the computer B121 via the network 142.
  • information may be read from the storage unit 102 in FIG. 2 before sending the information to the scalar calculation unit 115 or before receiving an input message.
  • the decryption processing unit 132 receives the input. It is determined whether the bit length of the encrypted data 141 is a predetermined bit length. If the bit length is longer than the predetermined bit length, it is encrypted to the predetermined bit length. Separated data.
  • the partial data also simply referred to as data
  • a predetermined bit length will be described.
  • the value represented by the bit string of the data 141 is used to calculate the value of the y coordinate on the elliptic curve using the X coordinate.
  • the y-coordinate value (y el ) is
  • the decryption processing unit 132 reads the secret key a (205 in FIG. 2) read from the secret information 125 stored in the storage unit 122 (102 in FIG. 2) and the X-coordinate and y-coordinate values (x el , y el ) is sent to the scalar multiplication unit 135 (115 in FIG. 2) (206 in FIG. 2).
  • Scalar multiplication unit 135, X-coordinate, the y-coordinate value of the scalar multiplied point from the secret information al25 (x d3, y d3) calculates the a (Xe2, y e2).
  • the scalar multiplication unit 135 sends the calculated scalar multiplication to the decoding processing unit 132 (207 in FIG. 2).
  • the decryption processing unit 132 performs a decryption process using the transmitted scalar multiple.
  • the encrypted message is a bit string of x el , x e2 , and a Weierstrass-type elliptic curve
  • the computer B 121 assembles a plaintext message from the partial message decrypted by the decryption processing unit 132 (208 in FIG. 2) and outputs it from the display 108 via the input / output interface 110.
  • FIG. 3 shows a functional block of the scalar multiplication unit used in each embodiment.
  • the scalar multiplication unit II 5 (135 in Fig. 1) has an encoding unit 302, a pre-calculation unit 303, It consists of an arithmetic unit 304.
  • the encoding unit 302 includes a remainder acquisition unit 321, a remainder conversion determination unit 322, a remainder conversion unit 323, a repetition determination unit 324, and a storage unit 325.
  • the pre-calculation unit 303 includes an addition unit 331, a doubling unit 332, and a repetition determination unit 333 .
  • the actual calculation unit 304 includes a bit value determination unit 341, an addition unit 342, a doubling unit 343, and a return determination unit 344.
  • the encoding unit 302 encodes the input scalar value d into a numerical sequence djj]. . That is,
  • w is a predetermined small positive integer, called the window width. If calculation time is prioritized, set w to a large value. To reduce the memory usage, set w to a small value.
  • the pre-calculation unit 303 creates a pre-calculation table from the input point P on the elliptic curve. Precalculation table P, 3P, - composed of (2 W 1) P.
  • the actual calculation unit 304 calculates a single point dP using the encoded scalar value and the pre-calculation table.
  • the encoding process performed by the encoding unit 302 may be performed after receiving the scalar value d and before the actual calculation unit 304 calculates the scalar multiple. That is, the calculation may be performed before the pre-calculation unit 303 creates the pre-calculation table or after.
  • the pre-calculation table creating process performed by the pre-calculation unit 303 only needs to be performed once. That is, once the pre-calculation table is created, there is no need to re-create the pre-calculation table for subsequent scalar multiplications.
  • the initial value 0 is substituted for the variable i and the scalar value d is substituted for the variable d '(401).
  • the remainder obtaining unit 321 stores the remainder of the scalar td 'by 2 W in u [i] (402).
  • the remainder obtaining unit 321 calculates (d′ ⁇ u [i]) / 2 w and sets it as a new d ′ (411).
  • the repetition determination unit 324 determines whether the variables i and k match.
  • step 421 If they match, go to step 421. If not, go to step 414 (413).
  • Remainder acquisition unit 321 stores d, the remainder by 2 W of the u [i] (414).
  • the remainder conversion determining unit 322 determines whether u [i] is even or odd.
  • step 416 If u [i] is an even number, go to step 416. If it is odd, go to step 417 (415).
  • the remainder transforming unit 323 calculates u [i] to be an odd number
  • sign (u) is a function that extracts the sign of u, and is 1 when u is positive and -1 when u is negative.
  • the storage unit 325 is
  • the storage unit 325 stores u [k], 0, ⁇ , in [kw], d kw + l], ..., d kw + wl, respectively. 0 is stored (421).
  • the encoding unit 302 outputs d n], d n ⁇ 1],..., D 0] to the real calculation unit 304 (422).
  • Point P is doubled by ECDBL, and the result is stored in point 2P (501).
  • the initial value 1 is assigned to the variable j (502).
  • ECADD and ECDBL represent addition and doubling on an elliptic curve, respectively. Addition is calculated using Equations 1 and 2, and doubling is calculated using Equations 4 and 5, respectively.
  • doubling is calculated using Equations 4 and 5, respectively.
  • pre-calculation table creation process performed by the pre-calculation unit 303 only requires that the points P, 3P,..., ( 2W -1) P be calculated. Therefore, by using Montgomery tricks, the calculation of the inverse operation required for the elliptic curve operation can be standardized, thereby achieving higher speed.
  • the initial value n is substituted for the variable c (601).
  • step 603. If it is not 0, go to step 611 (602). Decrement the variable c by 1 and return to step 602 (603). If dc] is not 0 in step 602, dJc] P is substituted for the point Q (611).
  • the initial value c-1 is assigned to the variable j (612).
  • step 621 Determines whether j is less than 0. If j is smaller than 0, go to step 621. If it is 0 or more, go to step 614 (613).
  • Point Q is doubled by ECDBL and stored again at point Q (614).
  • djj] is 0 or not.
  • step 617 If djj] is 0, go to step 617. If not 0, go to step 61 6 1 5 ).
  • step 615 if the [j] force is not SO, the point Q and [j] P are added by ECADD. However, when djj] is negative, the addition is performed using the inverted y-coordinate of (-cUj]) P. The result is stored at point Q, and the procedure goes to step 617 (616). If it is not dj] force, dj] is odd. Therefore, either dj] P or (-cUj]) P always exists in the pre-calculation tape.
  • step 613 If j is smaller than 0 in step 613, the point Q is output (621).
  • Equation 12 the right side of Equation 12 is
  • Equation 12 is satisfied. Also, in the conversion of step 416,
  • Equation 13 is satisfied.
  • the scalar value d may be an odd number. Therefore, if the input color value d is even, d + 1 is encoded as a scalar value d '. That is, d is converted to an odd number. Then, the scalar multiple d'P is calculated.
  • Equation 21 (d w [c] 2 c- (j + 1) + d w [cl] 2 ( ° -1) - (j + 1) + ... + d w [j + l] 2 (j + 1) - (j + 1) ) P (Equation 21).
  • the point Q indicates that Equation 21 is satisfied the next time step 613 is reached.
  • Equation 22 ([c] 2 + [cl] 2 (c— ..HCj + 1) 2 ( j + 1) — j + [j] 2 j — j ) P (Equation 22).
  • djj] 0
  • the point Q satisfies Equation 22. Since j is decreased by 1 in Step 617, substituting j + 1 for j in Equation 22 results in Equation 21. The point Q still satisfies Equation 21 when it comes to step 613.
  • the scalar doubling method is also effective for defense against side-channel attacks. The reason is as follows.
  • the scalar value d is encoded by the encoding unit 302 into a numerical sequence [j]. This sequence of numbers dj j] is a fixed pattern
  • each X is a non-zero value and corresponds to djiw]. Therefore, when the actual calculation unit 3 04 calculates a scalar multiplied point, Oite the repeated processing of steps 613- 617,
  • D represents ECDBL and A represents ECADD. Therefore, for every scalar value, the elliptic curve operation performed is
  • the scalar multiplication may be performed by using the randomized projection coordinates of Reference 1. Then, even if the same point P is input, it is converted to a different value each time it is executed The attacker cannot predict the intermediate value.
  • the points may be re-randomized and written in the pre-calculation table. Then, since the same data is not reused, the number of side channel attacks is further increased.
  • the above calculation method does not provide useful information for a side channel attack, it is resistant to a side channel attack. Also, since only odd-numbered points are stored as the pre-computation table, the memory usage is small.
  • the Weierstrass-type elliptic curve was used as the elliptic curve in the above calculation method, the elliptic curve defined on a finite field of characteristic 2 and the elliptic curve defined on 0EF (0 P timal Extension Field) A curve or a Montgomery-form elliptic curve may be used.
  • 0EF see DV Bailey, C. Paar, Optimal Extension Fields for Fast Arithmetic in Public-Key Algorithms, Advances in Crypto logy Crypto '98, LNCS 1462, (1998), 472-485. Has been described.
  • the scalar multiplication unit 115 of the computer A101 calculates the point Q on the elliptic curve described above, the scalar multiplication kQ using the random number k, and the scalar single point k (aQ) using the public key aQ and the random number k. Is output.
  • the scalar value d described in the above calculation method is used as a random number Elliptic curve point P, elliptic curve point Q, and public key aQ, and the same process is performed to find each scalar equal point. it can.
  • the signature verification system of FIG. 7 includes a smart card 701 and a computer 721 for performing a signature verification process.
  • the smart card 701 has a function similar to that of the computer A 101, and an arithmetic device such as an ICP U 113 or a coprocessor 114 executes a program stored in the storage unit 102.
  • the signature generation processing unit 712 is realized. However, there is no external storage device, display, and keyboard. No.
  • the computer 721 has a configuration similar to that of the computer A101, but realizes the signature verification processing unit 732 instead of the data processing unit 112 when the CPU 113 executes a program.
  • Scalar haploid calculation unit 715 and 735 is provided with the like function as Waals forces La haploid calculating unit II 5 or I 35 as shown in FIG.
  • each program in the computer 721 may be stored in advance in the storage unit in the computer, or another program may be transmitted to the computer 721 via a medium that can be used when necessary. It may be introduced from the device to the storage unit.
  • each program in the smart card may be stored in advance in the storage unit in the smart card, or a computer connected via an input / output interface or a computer can be used when necessary. It may be introduced into the storage unit via a simple medium.
  • the medium refers to, for example, a storage medium detachable from the computer, or a communication medium (ie, a network or a carrier wave propagating through the network).
  • the computer 721 transfers the numerical value selected at random as the challenge code 743 to the smart card 701 via the interface 742.
  • the signature generation processing unit 712 (112 in FIG. 2) receives the challenge code 743, takes the hash value of the challenge code 743, and converts it into a numerical value f having a predetermined bit length.
  • the signature generation processing unit 712 generates a random number u, reads out from the constant 704 stored in the storage unit 702 (102 in FIG. 2) (205 in FIG. 2), and the scalar multiplication unit 715 together with the fixed point Q on the elliptic curve. (115 in Fig. 2) (206 in Fig. 2).
  • the scalar multiple calculator 5 calculates a scalar multiple (x u , y u ) based on the fixed point Q and the random number u, and sends the calculated scalar multiple to the signature generation processor 712 (207 in FIG. 2).
  • the signature (s, t) corresponding to the challenge code 743 is obtained by calculating (208 in FIG. 2).
  • q is the order of the fixed point Q, that is, q times the fixed point Q, qQ becomes the point at infinity, and m times the fixed point Q for the numerical value m smaller than q, raQ does not become the point at infinity. It is a numerical value.
  • ECDSA signature is described in ANSI X9.62 Public Key Cryptography for the Financial Services Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA), (1999) (Reference 6).
  • the smart card 701 outputs the signature 741 created by the signature generation processing unit 712 from the input / output interface 710 and transfers it to the computer 721 via the interface 742.
  • the signature verification processing unit 732 (112 in FIG. 2) of the computer 721 receives the signature 741 (204 in FIG. 2), the numerical value s, t of the signature 741 is within an appropriate range, that is, l ⁇ s, t ⁇ q. Check if it is.
  • the storage unit 722 has been read out from the constant 724 is stored in the (102 in FIG. 2) (13 ⁇ 4 calculated with 2 03 ⁇ 4 public key aQ and the fixed point Q in FIG. 2, h 2 a scalar haploid calculation unit 735 (FIG. 2 to 115) (Fig. 2, 206).
  • the scalar multiplication unit 735 calculates the scalar multiplication point 13 ⁇ 4Q by the fixed point Q and the scalar single point h 2 aQ by the public keys aQ and h 2 , and calculates the calculated scalar single point by the signature verification processing unit 732 (Fig. 2, 207).
  • the signature verification processing unit 732 performs a signature verification process using the transmitted scalar multiple. For example, for ECDSA signature verification, point R
  • the scalar multiplication units 715 and 735 of the above embodiment have the same functions as the scalar multiplication units 115 and 135 in FIG. 1, so that it is possible to prevent side channel attacks and execute scalar multiplication with small memory usage.
  • the data processing units 112 and 132 in FIG. 1 function as the key exchange processing units 112 and 132, respectively.
  • the data processing unit 132 (112 in FIG. 2) of the computer B 121 reads the secret key b from the constant 125 of the storage unit 122 (102 in FIG. 2) and calculates the public key bQ of the computer B 121. Then, the public link bQ is transferred as data 143 to the computer A101 via the network 142.
  • the key exchange processing unit 112 of the computer A 101 When the key exchange processing unit 112 of the computer A 101 (112 in FIG. 2) receives the input of the public key bQ of the computer B 121 (204 in FIG. 2), the key exchange processing unit 112 reads out from the storage unit 102 (FIG. Send 2 205) and private key a computer A101 is a secret information 105, and the public key bQ of Konbyu over data B 1 2 1 to scalar multiplication unit 115 (206 in FIG. 2).
  • Scalar multiplication unit II 5 includes a private key a, the scalar-multiplied point abQ public key bQ calculates, and sends the calculated scalar-multiplied point to the key exchange processing unit 112 (207 in FIG. 2).
  • the exchange processing unit 112 derives shared information using the transmitted scalar single point, and stores it as secret information 105 in the storage unit 102. For example, the X coordinate of the scalar multiple point abQ is used as shared information.
  • the data processing unit 112 of the computer A 101 reads the secret key a from the constant 105 of the storage unit 102 and calculates the public key aQ of the computer A 101. Then, via the network I 42, and transfers the public key aQ as data 141 to the computer B 121.
  • the key exchange processing unit 132 (112 in FIG. 2) of the computer B 121 receives the input of the public key aQ of the computer A101 (204 in FIG. 2), the key exchange processing unit 132 stores in the storage unit 122 (102 in FIG. 2).
  • the secret key b of the computer B 1 and the public key aQ of the computer A 101 which are the secret information 125 read out from the constant 125 of FIG. 2 (205 in FIG. 2), are sent to the scalar multiplication unit 135 (115 in FIG. 2). 2 of 206).
  • the scalar multiple calculator 135 calculates a scalar multiple baQ using the secret key b and the public key aQ, and sends the calculated scalar multiple to the key exchange processor 132 (207 in FIG. 2).
  • the key exchange processing unit 132 derives the shared information using the transmitted scalar multiple, and stores it as the secret information 125 in the storage unit 122.
  • the X coordinate of the scalar multiple point baQ is used as shared information.
  • the point aQ and the point bQ are transmitted to the network 142, and the secret key a or the secret key b must be used to calculate the point abQ (or the point baQ). That is, the shared information cannot be obtained without knowing the secret key a or the secret key b.
  • the shared information obtained in this way can be used as a secret key for common key encryption.
  • the scalar multiplication units 115 and 135 have the above-described features, side channel attacks can be prevented, and the key exchange processing can be performed with a small memory usage.
  • the encryption processing unit, the decryption processing unit, the signature creation unit, the signature verification unit, and the key exchange processing unit in each of the above embodiments may be performed using dedicated hardware.
  • the scalar multiplication unit may be realized by a coprocessor or other dedicated hardware.
  • the data processing unit may be configured to perform any one or more of the above-described encryption processing, decryption processing, signature creation processing, signature verification processing, and key exchange processing.

Landscapes

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

Description

明細書
楕円曲線ス力ラ一倍計算方法およぴ装置 技術分野
本発明はセキュリティ技術に係り、 特に楕円曲線演算を用いたメッセージ処理 方法に関する。 背景技術
楕円曲線暗号は N. Koblitz, V. S. Millerにより提案された公開鍵暗号の一種 である。 公開鍵暗号には、 公開鍵と呼ばれる一般に公開してよい情報と、 秘密鍵 と呼ばれる秘匿しなければならない秘密情報がある。 与えられたメッセージの喑 号化や署名の検証には公開鍵を用い、 与えられたメッセージの復号化や署名の作 成には秘密鍵を用いる。
楕円曲線暗号における秘密鍵は、 スカラー値が担っている。 また、 楕円曲線暗 号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。 楕円曲線上の離散対数問題とは、 楕円曲線上のある点 Pとそのスカラー倍の点 が与えられた時、 スカラー値 dを求める問題である。
楕円曲線上の点とは、 楕円曲線の定義方程式をみたす数の組をいい、 楕円曲線 上の点全体には、 無限遠点という仮想的な点を単位元とした演算、 すなわち楕円 曲線上の加法 (乃至は加算) が定義される。 そして、 同じ点同士による楕円曲線 上の加法のことを、 特に楕円曲線上の 2倍算という。
楕円曲線上の 2点の加法は次のようにして計算される。 2点を通る直線を引くと その直線は楕円曲線と他の点において交わる。 その交わった点と X軸に関して対 称な点を、 加法を行った結果の点とする。 例えば、 ワイエルシュトラス型楕円曲 線の場合には、 点 ( , yx)と点 (x2, y2)の加算
3, y3) = (x1, y!) + 2, y2) ¾
χ3= ( (Υ2— yi) Z (¾— χι) )— χι— ¾ (式 i)
y3= ( (y2-yi) I (χ2 - χι) ) (χι- ¾) ~Υι (式 2)
を計算することにより得られる。 ここで、 ワイエルシュトラス型楕円曲線の定義 式は
y2=x3+Ax+B (式 3)
で与えられる。 すなわち、 式 3の x,yに各々 Xiyi , 3) を代入した場合に、 式 3の等式が成り立つ。
楕円曲線上の点の 2倍算は次のようにして計算される。 楕円曲線上の点におけ る接線をひくと、 その接線は楕円曲線上の他の点において交わる。 その交わった 点と X座標に関して対称な点を、 2倍算を行った結果の点とする。 例えば、 ヮイエ ルシュトラス型楕円曲線の場合には、 点 (Xい Yl)の2倍算
(x3, y3) =2 (xv y = (x1; yx) + (x yx)
x3= ( (3Xl 2+A) / (2Yl) ) 2-2Xl (式 4)
y3= ( (3¾ 2+A) I (2Yl) ) (x厂 ¾) -Yl (式 5)
を計算することにより得られる。 ' ある点に対し、 特定の回数だけ加法を行うことをスカラー倍といい、 その結果 をスカラー倍点、 その回数のことをスカラー値という。
楕円曲線上の離散対数問題の求解の困難性が理論的に確立されてきている一方 で、 実際の実装においては秘密鍵等の秘密情報に関連する情報 (計算時間や電力 消費量など) が暗号処理において漏洩する場合があり、 その漏洩情報をもとに秘 密情報を復元するといつた、 サイドチヤネノレ攻撃という攻撃法が提案されている。 楕円曲線暗号に対するサイドチャネル攻撃が、 J. Coron, Resistance against Differentia丄 Power Analysis for Elliptic Curve Cryptosystems, Cryptographic Hardware and Embedded Systems : Proceedings of CHES'99, LNCS 1717, Springer-Verlag, (1999) pp. 292-302. (文献 1 ) に記載されている。 楕円曲線暗号においては、 与えられたメッセージの暗号化、 復号化、 署名の作 成またはその検証は、 楕円曲線演算を用いて行う必要がある。 特に楕円曲線上の スカラ一倍の計算は、 秘密情報であるスカラ一値を用いた暗号処理にぉレ、て用い られる。
楕円曲線喑号に対するサイドチャネル攻撃の防御法が、 B. Moeller, Securing Elliptic Curve Point Multiplication against Sioe-Channel Attacks, Information Security (ISC2001) , LNCS 2200, Springer-Verlag, (2001), pp. 324-334. (文献 2 ) に記載されている。 発明の開示 情報通信ネットワークの進展と共に電子情報に対する秘匿や認証の為に暗号技 術は不可欠な要素となってきている。 そこでは暗号技術の安全性とともにメモリ 等の使用リソースの削減が望まれている。 楕円曲線上の離散対数問題が非常に困 難である為に、 素因数分解の困難性を安全性の根拠にしている暗号と比べて、 楕 円曲線暗号は鍵長を比較的短くすることができる。 そのため比較的少ないリソー スで暗号処理を行うことが可能である。 しかしながら、 備えているメモリ量が少 ないスマートカード (ICカードともいう) 等においては、 必ずしも満足できると は限らない。 それゆえに少ないメモリで実行できる暗号処理が必要となる。 上記技術は、 サイドチャネル攻撃を防ぐ方法としては有効であるが、 メモリ使 用量の削減という点は考慮されていない。
本発明は、 サイドチヤネノレ攻撃を防ぐことができる、 かつメモリ使用量の少な レ、、 楕円曲線演算方法を提供する。
本発明は更に、 上記楕円曲線演算方法を用いた、 暗号化処理方法、 復号化処理 方法、 署名作成方法、 署名検証方法、 データ共有方法を提供する。
本発明は、 楕円曲線演算において、 スカラー値と楕円曲線上の点からスカラー 倍点を計算するス力ラ一倍計算方法であつて、 上記ス力ラ一値を数値列にェンコ 一ドするステップと、 上記楕円曲線上の点から前計算テーブルを作成するステッ プと、 上記ェンコ一ドした数値列及び上記前計算テーブルからスカラー倍点を計 算するステップとを有する。
本宪明は、 また、 上記エンコードするステップの出力する数値列を 0と奇数か らなるように構成してもよい。
本発明は、 また、 上記スカラー倍点を計算するステップは、 第 1の演算を予め 定められた回数を実行するステップと、 第 1の演算とは異なる第 2の演算を実行す るステップとを含むように構成してもよい。
本発明は、 また、 楕円曲線演算において、 スカラー値と楕円曲線上の点の奇数 倍点を格納した前計算テーブルからスカラ一倍点を計算するスカラ一倍計算方法 であって、 上記スカラー値を数値列にエンコードするステップと、 上記ェンコ一 ドした数値列と上記前計算テーブルからスカラ一倍点を計算するステップとを有 し、 上記ェンコードするステップの出力する数値列は 0と奇数からなるように構 成してもよい。
以上のように本発明のスカラー倍計算方法によれば、 奇数倍の点のみを前計算 テーブルに格納し、 スカラー値を奇数倍の点のみを用いるようにエンコードする ことにより、 サイドチヤネノレ攻撃を防ぐことができ、 メモリ使用量が少ないスカ ラ一倍計算方法が利用可能になる。 図面の簡単な説明 図 1は、 実施形態におけるシステム構成図である。
図 2は、 各実施形態における情報の受け渡しを示すシーケンス図である。
図 3は、 実施形態におけるスカラー倍計算部の構成図である。
図 4は、 エンコード部の行うェンコ一ド方法を示すフローチャート図である。 図 5は、 前計算部の行う前計算方法を示すフローチヤ一ト図である。
図 6は、 実計算部の行う実計算方法を示すフローチャート図である。
図 7は、 実施形態における署名検証システム構成図である。
発明を実施するための最良の形態 以下、 本発明の実施例を図面により説明する。
図 1はネットワーク 142によつて接続された本発明による楕円曲線演算方法を適 用したコンピュータ A101、 コンピュータ B 121がネットワーク 142により接続さ れたシステム構成を示すものである。
図 1の暗号通信システムにおけるコンピュータ A 101でメッセージの暗号化を行 うには、 Pm+k (aQ)及び kQを計算して出力し、 コンピュータ B 121で暗号文の復号 化を行うには、 秘密鍵 a及び kQより- a (kQ)を計算し、
(Pra+k (aQ) ) -a (kQ) (式 6)
を計算して出力すればよい。 ここで Pmはメッセージ、 kは乱数、 aは秘密鍵を示す 定数、 Qは定点、 aQは公開鍵を示す点である。
ネットワーク 142には、 Pm+k (aQ),kQのみ送信され、 メッセージ Pmを復元するた めには、 kaQ、 すなわち kQの a倍を計算する必要がある。 ところが、 秘密鍵 aはネ ットワーク 142には送信されないため、 秘密鍵 aを保持しているものだけが、 Pmを 復元できることになる。
図 1において、 コンピュータ A101は、 C P U113やコプロセッサ 114などの演算 装置、 R AM103、 R OM106や外部記憶装置 107などの記憶装置、 コンピュータ 外部とのデータ入出力を行う入出力インタフェース 110を装備しており、 外部に はコンピュータ A101をユーザが操作するためのディスプレイ 108、 キーボード 109、 着脱可能な可搬型記憶媒体の読み書き装置などが接続されている。
更にコンピュータ A101は、 RAM103、 R OM106や外部記憶装置 107などの記 憶装置によって、 記憶部 102を実現し、 C P U113やコプロセッサ 114などの演算 装置が、 記憶部 102に格納されたプログラムを実行することにより、 データ処理 部 112、 スカラー倍計算部 115を実現する。
データ処理部 112は、 本実施形態においては、 暗号ィ匕処理部 112として機能し、 入力されたメッセージの暗号化を行う。
スカラー倍計算部 115は、 暗号処理部 112で暗号化を行うのに必要なパラメタを 計算する。 記憶部 102は、 定数 104 (例えば、 楕円曲線の定義式や楕円曲線上の定 点である。 ) 、 秘密情報 105 (例えば、 秘密鍵である。 ) などを記憶している。 コンピュータ B 121は、 コンピュータ A101と同様のハードウエア構成を備える。 更にコンピュータ B 121は、 R AM123、 R OM126や外部記憶装置 107などの記 憶装置によって、 記憶部 122を実現し、 C P U133やコプロセッサ 134などの演算 装置が、 記憶部 122に格納されたプログラムを実行することにより、 データ処理 部 1:32、 スカラー倍計算部 135を実現する。
データ処理部 132は、 本実施形態においては、 複号化処理部 132として機能し、 暗号化されたメッセージである暗号文 141の復号化を行う。
スカラー倍計算部 135は、 複号化処理部 132で復号ィ匕を行うのに必要なパラメタ を計算する。 記憶部 122は、 定数 124 (例えば、 楕円曲線の定義式や楕円曲線上の 定点である。 ) 、 秘密情報 125 (例えば、 秘密鍵である。 ) などを記憶している。 なお、 上記各プログラムは、 あらかじめ、 上記コンピュータ内の記憶部に格納 されていても良いし、 必要なときに、 入出力インタフェース 110と上記コンビュ ータ 721が利用可能な媒体を介して、 他の装置から上記記憶部に導入されてもよ い。 媒体とは、 たとえば、 入出力インタフェース 110に着脱可能な記憶媒体、 ま たは通信媒体 (すなわちネットワークまたはネットワークを伝搬する搬送波) を 指す。
図 2は、 コンピュータ A101、 コンピュータ B 121の各処理部が行う情報の受け 渡しの様子を示したものである。
次に、 図 1のコンピュータ A101が、 入力されたメッセージを暗号化する場合の 動作について説明する。 メッセージはディジタノレ化されたデータであれば良く、 テキスト、 画像、 映像、 音などの種類は問わない。
暗号化処理部 112は、 入出力インタフェース 110を介して、 平文メッセージ (図 2 の入カメッセージ 204)を受け取ると、 入力された平文メッセージのビット長が予 め定めたビット長力否かを判断する。 予め定めたビット長より長い場合には、 予 め定めたビット長となるように平文メッセージを区切る。 以下、 所定のビット長 に区切られている部分メッセージ (単にメッセージともいう)について説明する。 次に、 暗号化処理部 112は、 メッセージのビット列によって表される数値を X座 標 ( )にもつ楕円曲線上の点 Pmの y座標の値 を計算する。 例えば、 ュトラス型楕円曲線は、 A,Bをそれぞれ定数とするとき、 y1 2=x1 3+Axt+B (式 7)
で表されるので、 これより y座標の値を求めることができる。
次に、 暗号化処理部 112は、 乱数 kを生成する。 そして、 記憶部 102に格納され ている定数 104から読み出した(図 2の 205)公開鍵 aQと Qの x座標と、 求めた y座標の 値と乱数 kとをスカラー倍計算部 115へ送る(図 2の 206)。
スカラー倍計算部 115は、 Qの X座標、 y座標の値、 乱数 kによるスカラー倍点 (xdl,ydl) =kQと、 公開鍵 aQの X座標、 y座標の値、 乱数によるスカラー倍点 (Xd2yd2) =k (aQ)とを計算し、 計算されたスカラー倍点を暗号化処理部 II2へ送る (図 2の 207)。
暗号ィ匕処理部 112は、 送られたスカラー倍点を用いて、 暗号化処理を行う。 例 えば、 ワイエルシュトラス型の楕円曲線については、 Pm+k (aQ)と kQを計算する。 すなわち、
( ΥάΓΥι) I (Xd厂 Xi) ) 2_Xi一 Xdi, 8)
Xe2 =xd2 (式9)
を計算し、 暗号化されたメッセージ xel, を得る。
コンピュータ A101は暗号化処理部 112で暗号化された 1つ以上の部分メッセー ジから暗号ィヒされた出カメッセージを組み立てる(図 2の 208)。
コンピュータ A101は、 喑号化された出カメッセージをデータ 141として入出力 インタフェース 110より出力し、 ネットワーク 142を介してコンピュータ B 121へ 転送する。
なお、 図 2の記憶部 102からの情報読み出しは、 スカラー計算部 115へ当該情報 を送る前で有れば、 入カメッセージを受け付ける前であっても良い。
次に、 コンピュータ B 121が、 暗号化されたメッセージ 141を復号化する場合の 動作について、 図 2を参照しつつ説明する。
複号化処理部 132 (図 2のデータ処理部 112)は、 入出力ィンタフェース 110を介し て、 暗号化されたデータ 141 (図 2の入力メッセージ 204) が入力されると、 入力さ れた暗号化されたデータ 141のビット長が予め定めたビット長力否かを判断する。 予め定めたビット長より長い場合には、 予め定めたビット長となるように暗号化 されたデータを区切る。 以下、 所定のビット長に区切られている部分データ (単 にデータともいう) について説明する。
データ 141のビット列によって表される数値を X座標にもっ楕円曲線上の y座標 の値を計算する。
暗号化されたメッセージが xel, xe2のビット列であり、 ワイエルシュトラス型楕 円曲線の場合、 y座標の値 (yel)は
yel 2=xel 3+Axel+B (式 10)
(ただし、 A, Bはそれぞれ定数である)
から得ることができる。
復号ィヒ処理部 132は、 記憶部 122 (図 2の 102)に格納されている秘密情報 125から 読み出した(図 2の 205)秘密鍵 aと、 X座標、 y座標の値 (xel,yel)を、 スカラー倍計 算部 135 (図 2の 115)へ送る(図 2の 206)。
スカラー倍計算部 135は、 X座標、 y座標の値、 秘密情報 al25からスカラー倍点 (xd3,yd3) =a (Xe2,ye2)を計算する。 スカラー倍計算部 135は、 計算されたスカラー倍 点を復号化処理部 132へ送る(図 2の 207)。 復号化処理部 132は、 送られたスカラー 倍点を用いて、 複号化処理を行う。
例えば、 暗号化されたメッセージが、 xel, xe2のビット列であり、 ワイエルシュ トラス型の楕円曲線の場合は、
(Pm+k (aQ) ) -a (kQ) = (xel, yel) - ( , yd3)
を計算することにより達成する。 すなわち、
Xfi= ( (yei+yd3^ I (xei_Xd3) ) 2— xe厂 X<B (式 11)
を計算し、 暗号化される前の部分メッセージ に相当する ¾を得る。
コンピュータ B 121は、 復号化処理部 132で復号化された部分メッセージから平 文メッセージを組み立て(図 2の 208)、 入出力インタフェース 110を介して、 ディ スプレイ 108などから出力する。
次に、 コンピュータ B 121が、 復号化処理を行う場合の、 スカラー倍計算部 135 の処理を詳細に説明する。
図 3は、 各実施例で用いるスカラー倍計算部の機能プロックを示したものであ る。 スカラー倍計算部 II5 (図 1の 135)は、 エンコード部 302、 前計算部 303、 実計 算部 304からなる。 エンコード部 302は、 剰余取得部 321、 剰余変換判定部 322、 剰 余変換部 323、 繰り返し判定部 324、 格納部 325からなる。 前計算部 303は、 加算部 331、 2倍算部 332、 繰り返し判定部333からなる。 実計算部 304は、 ビット値判定 部 341、 加算部 342、 2倍算部 343、 操り返し判定部 344からなる。
スカラー倍計算部 115がスカラー値 d及び楕円曲線上の点 Pから、 楕円曲線にお けるスカラ一倍点 dPを計算する方法を説明する。
スカラ一倍計算部 115が複号化処理部 132からスカラ一値 dと楕円曲線上の点 Pを 受け取ると、 エンコード部 302は、 入力されたスカラー値 dを数値列 djj]にェン コードする。 すなわち、
ά=< [n] 2n+d, [n-1] 2n-'+..Λά, [ j] 2j+... + [0] (式 12)
-2"≤^ ≤2" (式 13)
をみたす djj]に、 スカラー値 dを変換する。 ここで、 wはあらかじめ定めた小さ な正整数で、 ウィンドウ幅と呼ばれる。 計算時間を優先する場合は wを大きな値 とする。 メモリ使用量を小さくする場合は wを小さな値にする。 前計算部 303は、 入力された楕円曲線上の点 Pから前計算テーブルを作成する。 前計算テーブルは P, 3P, (2W- 1) Pにより構成される。 実計算部 304は、 エンコードされたスカラー 値と前計算テーブルを用いてス力ラ一倍点 dPを計算する。
なお、 エンコード部 302の行うエンコード処理は、 スカラー値 dを受け取った後、 および実計算部 304がスカラー倍点を計算する前であればよレ、。 すなわち、 前計 算部 303が前計算テーブルを作成する前に行っても、 後に行なってもよい。
また、 点 Pが固定点である場合、 前計算部 303の行う前計算テーブルの作成処理 は、 ただ一度行えばよい。 すなわち、 一旦前計算テーブルを作成すれば、 それ以 降のスカラー倍計算では前計算テーブルを再作成する必要はない。
次にエンコード部 302、 前計算部 303、 実計算部 304の行なう各処理について詳 細に説明する。
まず、 図 4を用いて、 エンコード部 302がスカラー値 dをエンコードする方法を 説明する。
変数 iに初期値 0を、 変数 d'にスカラー値 dをそれぞれ代入する(401)。
剰余取得部 321は、 スカラー td'の 2Wによる剰余を u[i]に格納する(402)。 剰余取得部 321は、 (d' - u[i])/2wを計算し、 それを新たな d'とする(411)。
変数 iを 1増加させる(412)。
繰り返し判定部 324は、 変数 iと kがー致するかどうかを判定する。
一致すればステップ 421へ行く。 一致しなければステップ 414へ行く(413)。
剰余取得部 321は、 d,の 2Wによる剰余を u[i]に格納する(414)。
剰余変換判定部 322は、 u[i]が偶数力、奇数かを判定する。
u[i]が偶数の場合はステップ 416へ行く。 奇数の場合はステップ 417へ行く (415)。
剰余変換部 323は、 u [i]が奇数となるように、
u[i], u[i_l]を変換する(416)。 これは、
b— sign(u[i— 1]) (式 14)
u[i]^u[i]+b (式 15)
u[i-l]— u[i- l]-b2w (式 16)
の操作を行なうことにより達成される。 ここで、 sign (u)は uの符号を取り出す関 数であり、 uが正の時は 1、 uが負の時は- 1となる。
格納部 325は、
(i-l ], cU(i_l)W+l], …, dj(i- l)+w- 1]にそれぞれ、 u[i-l], 0, ···, 0 を格納し、 ステップ 411へ戻る(417)。
ステップ 413で変数 iと kがー致した場合、 格納部 325は [kw], d kw+l], ..., d kw+w-l]にそれぞれ、 u[k], 0, ···, 0を格納する(421)。
エンコード部 302は、 d n], d n- 1], …, d 0]を実計算部 304へ出力する (422)。
次に、 図 5を用いて、 前計算部 303が楕円曲線上の点から、 前計算テーブルを作 成する方法を説明する。
点 Pを ECDBLにより 2倍し、 その結果を点 2Pに格納する(501)。
変数 jに初期値 1を代入する(502)。
jが 2^より小さいかどうかを判定する。 jが より小さい場合はステップ 50 4へ行く。 2rt以上の場合はステップ 511へ行く(503)。
ステップ 503で jが 2W—1より小さい場合、 点 2Pと点(2j_l)Pを ECADDにより加算し、 その結果を点(2j+l) Pに格鈉する(504)。
変数 jを 1増加させ、 ステツプ 503へ戻る(505)。
ステップ 503で jが 2W—1以上の場合、 P, 3P, (2W- 1)Pを前計算テーブルとし て出力する(511)。
ただし、 ECADD, ECDBLはそれぞれ楕円曲線における加算、 2倍算を表す。 加算 は式 1, 2を用いて、 2倍算は式 4, 5を用いてそれぞれ計算される。 なお、 加算、 2倍 算の計算には式 1, 2、 および式 4, 5を用いる以外にも、 射影座標やヤコビアン座標 における計算公式があり、 Cohen, H. , Miyaji, A., Ono, T. , Efficient Elliptic Curve Exponentiation Using Mixed Coordinates, Advances in Cryptology - ASIACRYPT 1998, LNCS 1514, Springer- Verlag, (1998) , pp. 51- 65. (文献 3 ) に記載されている。
また、 楕円曲線上の点 Q= (x,y)に対して、 楕円曲線加算に関する逆元の点- Qは、 - Q=(x,_y)と表されるため、 点 Qの座標が与えられていれば容易に計算できる。 そ のため、 点 P, 3P, ···, (2W- 1)Pのみを前計算テーブルとして格納する。 その後の 実計算部 304が行う計算で必要となる点- P, - 3P, · · ·, - (2 ) Pは、 それらから導 出すればよく、 前計算テーブルには格納する必要はない。
なお、 前計算部 303の行う前計算テーブルの作成処理は、 点 P, 3P, ···, (2W- 1)Pが計算されればよレ、。 そのため、 モンゴメリ トリックを用いて、 楕円曲線演 算で必要となる逆元演算の計算の共通化を行うことにより、 高速化をはかつても よい。
モンゴメリ トリックによる逆元演算共通化方法が Cohen, H. , A course in computational algebraic number theory, GTM138, Springer -Verlag, (1993) . (文献 4 ) の 481ページに記載されている。
最後に、 図 6を用いて、 実計算部 304がエンコードされたスカラー値と楕円曲線 上の点から、 楕円曲線におけるスカラー倍点を計算する方法を説明する。
変数 cに初期値 nを代入する(601)。
d,v[c]が 0か 0でないかを判定する。
[c]が 0の場合はステップ 603へ行く。 0でなければステップ 611へ行く(602)。 変数 cを 1減少させ、 ステツプ 602へ戻る(603)。 ステップ 602で d c]が 0でない場合、 点 Qに dJc]Pを代入する(611)。
変数 jに初期値 c-1を代入する(612)。
jが 0より小さいかどうかを判定する。 jが 0より小さい場合はステップ 621へ行 く。 0以上の場合はステップ 614へ行く(613)。
点 Qを ECDBLにより 2倍し、 点 Qに再び格納する(614)。
djj]が 0か 0でないかを判定する。
djj]が 0の場合はステップ 617へ行く。 0でなければステップ 616へ行く 15)。 ステップ 615で [j]力 SOでなレ、場合、 点 Qと [ j] Pとを ECADDにより加算する。 ただし、 djj]が負の場合は (- cUj])Pの y座標を反転したものを用いて加算を行 う。 その結果を点 Qに格納し、 ステップ 617へ行く(616)。 なお、 d j]力 でない 場合は、 d j]は奇数である。 そのため、 d j]Pもしくは (- cUj]) Pのいずれかが、 前計算テープノレに必ず存在する。
変数 jを 1減少させ、 ステップ 613へと戻る(617)。
ステップ 613で jが 0より小さい場合、 点 Qを出力する(621)。
エンコード部 302が行う処理により出力される d j]は、 式 12, 式 13をみたす。 この理由は次の通りである。
djj]は jが wで割り切れる時は u[j/w]に等しく、 割り切れない場合は 0に等しい。 そのため、 式 12の右辺は、
u [k] 2^ [k-1] 2(k— ..+u [i] 2iw+
u [i- l] 2(i-1)w+〜+u[0] (式 17)
と等しい。 ただし、 k=n/wである。 一方、 ステップ 416の変換では、
u [i] 2lw+u[i-l] 2(i-1)w (式 18)
の値は不変である。 したがって、 ステップ 416の変換で、 式 17の値は不変である。 他方、 スカラー値 dを 2W-進展開したものが u[i]の初期状態であるので、 式 17は d に等しい。 ゆえに式 12がみたされる。 また、 ステップ 416の変換では、
-2w≤u[i]≤2ff (式 19)
をみたす u[i]は、 変換後も式 19をみたす。 したがって、 式 13がみたされる。
エンコード部 302が行う処理で計算される u [i]は i=0を除き全て奇数となる。 こ の理由は次の通りである。 ステップ 415で u [i]が奇数であれば、 u[i]の値はその まま保持されるので、 u[i]は奇数である。 ステップ 415で u [i]が偶数であれば、 ステップ 416で u [i], 11 [:1-1]は式15,16にょり変換される。 式 14により bの値が計 算されるため、 bは 1もしくは- 1である。 そのため、 式 15の変換で、 u [i]は奇数に 変換される。 また、 式 16の変換では、 u [i_l]の偶奇性は変化しない。 ステップ 415に初めて来る時の iは 1である。 そのため、 u [0]は奇数とは限らない。 結果と して、 i=0を除き、 u [i]は全て奇数である。
なお、 u [0]も奇数とするためには、 スカラー値 dが奇数であればよい。 そのた めには、 入力されたすカラー値 dが偶数の時は、 d+1を改めてスカラー値 d'として エンコードする。 すなわち、 dを奇数に変換する。 そして、 スカラー倍点 d' Pを計 算する。
d' P= (d+l)P=dP+P (式 20)
であるので、 d' Pから点 Pを引き、 その値をスカラー倍点 dPとして出力すればよい。 実計算部 304が出力する点 Qはスカラー倍点 dPに等しい。 この理由は次の通りで ある。
ステップ 613において点 Qが
(dw [c] 2c-(j+1)+dw[c-l] 2(°-1)-(j+1)+...+ dw [j+l] 2(j+1)-(j+1)) P (式 21) と表されるとする。 このとき、 次にステップ 613に来る時も点 Qは式 21をみたすこ とを示す。
点 Qはステツプ 614で 2倍され、 [j]が 0でなければステップ 616で [j ] Pが加え られる。 そのためステップ 616の直後では、 点 Qの ί直は
( [c] 2 + [c-l] 2 (c— ..HCj+1] 2(j+1)j+ [j] 2jj) P (式 22) となる。 したがって djj] =0の時も含めて、 ステップ 617の直前で、 点 Qは式 22を みたす。 ステップ 617で jが 1減少するので、 式 22の jに j+1を代入すると式 21にな る。 すなわち、 次にステップ 613に来る時も点 Qは式 21をみたす。
j>cに対する d j]の値は 0であるので、 ステップ 621で出力される点 Qの値は ( [η] 2α+ά, [n-1] 2n"I+...+dw [0] ) Ρ (式 23)
に等しい。 実計算部 304に入力されるスカラー値は、 エンコード部 302によりェン コードされた d j]であるので、 その djj]は式 12をみたす。 したがって、 Q=dPで あ 。 上記ス力ラ一倍におけるメモリ使用量は、 前計算部 303の前計算テーブルの大 きさにより定まる。 上記スカラー倍計算方法では、 前計算テーブルは P,3P, …,(2W- 1)Pのみ、 すなわち奇数倍の点のみを格納すればよいので、 その点の数は 2rt個である。 文献 2の方法では、 ウィンドウ幅 wに対して、 2W個の点を格納する 必要がある。 そのため、 上記スカラー倍計算方法は、 文献 2の方法と比べて格納 する点の数が少なく、 メモリ使用量が小さくてすむ。
さらに、 いかなる方法をもってしても、 前計算テーブルに格納する点の数をこ れ以上削減することができないという意味で、 メモリ使用量は最小である。 この 理由は次の通りである。
m個の点からなる前計算テーブルを用いた場合、 k+1個の u[i]を用いて、 ェンコ ードされたスカラー値として表すことのできる数は (2m)k+1個である。 他方、 nビ ット以下のスカラー値は全部で 2i§あり、 各々のスカラー ί直はそれぞれ異なる数 値列にエンコードされなければならない。 そのため、 (2m)w≥2nが成り立つ。 k+l=n/wであるので、 m となる。 実際、 上記スカラー倍計算方法における前 計算テーブルの点の個数は 2rtであり、 最小である。
また、 上記スカラー倍方法は、 サイドチャネル攻撃に対する防御法に関しても 有効である。 この理由は次の通りである。
エンコード部 302によりスカラ一値 dは数値列 [j]にエンコードされる。 この 数値列 dj j]は固定されたパターン
|0···0χ|0···0χ|···|0···0χ| (式 24)
をもつ。 ここで各 Xは各々非 0の値であり、 それぞれ djiw]に対応する。 そのため、 実計算部 304がスカラー倍点を計算する際に、 ステップ 613- 617の繰り返し処理に おいて、 |0···0χ|のブロックに対応する楕円曲線演算は、 lD〜DA|、 すなわち w回 の Dの後に Aとなる。 ただし、 Dは ECDBLを、 Aは ECADDをそれぞれ表す。 したがって、 全てのスカラー値に対して、 実行する楕円曲線演算は、
|D---DA|D---DA|---|D---DA| (式 25)
となり、 必ず楕円加算が実行されるので、 スカラー値との依存関係がない。
なお、 文献 1のランダム化射影座標を併用してスカラー倍計算を行ってもよい。 そうすると、 同じ点 Pを入力しても実行毎に異なる値に変換してス力ラ一倍計算 を行うので、 攻撃者が中間値の値を予測できなくなる。
また、 前計算テーブルに格納されている点が読み出されるたびに、 再びランダ ム化して、 前計算テーブルに書き込んでもよい。 そうすると、 同じデータの再使 用がなくなるため、 より一層、 サイドチャネル攻撃への 1Μ·生が増す。
以上の通り、 上記計算方法は、 サイドチャネル攻撃に有用な情報を与えないの で、 サイドチャネル攻撃に対して耐性がある。 また、 奇数倍の点のみを前計算テ 一ブルとして格納するため、 メモリ使用量が小さくてすむという特徴がある。 なお、 上記計算方法では楕円曲線としてワイエルシュトラス型楕円曲線を用い たが、 標数 2の有限体上で定義された楕円曲線や、 0EF (0Ptimal Extension Field)上で定義された楕円曲線、 もしくはモンゴメリ型楕円曲線を用いてもよい。 0EFにつレヽては、 D. V. Bailey, C. Paar, Optimal Extension Fields for Fast Arithmetic in Public-Key Algorithms, Advances in Crypto logy Crypto ' 98, LNCS 1462, (1998) , 472-485. (文献 5 ) に記載されている。
以上、 コンピュータ B 121が、 暗号化されたデータ 141を復号化する場合のスカ ラー倍計算部 135の動作を説明したが、 コンピュータ A101が入カメッセージを暗 号化する場合も同様である。
その場合には、 コンピュータ A101のスカラー倍計算部 115は、 既に説明した楕 円曲線上の点 Q、 乱数 kによるスカラー倍点 kQと、 公開鍵 aQと乱数 kによるスカラ 一倍点 k (aQ)を出力する。 このとき、 上記計算方法で説明したスカラー値 dを乱数 楕円曲線上の点 Pを楕円曲線上の点 Q、 公開鍵 aQとして同様の処理を行うこと により、 それぞれのスカラ一倍点を求めることができる。
次に本発明を署名検証システムに適用する実施例を、 図 7と図 2を用いて説明す る。
図 7の署名検証システムは、 スマートカード 701と署名検証処理を行うコンビュ ータ 721とから成る。
スマートカード 701は、 機能としてはコンピュータ A101と類似の構成を備える I C P U113やコプロセッサ 114などの演算装置とが記憶部 102に格納されてい るプログラムを実行することにより、 データ処理部 112ではなく、 署名生成処理 部 712を実現する。 ただし、 外部記憶装置、 ディスプレイ、 キーボードを備えな い。
コンピュータ 721は、 コンピュータ A101と同様の構成を備えるが、 C P U113 がプログラムを実行することによりデータ処理部 112ではなく、 署名検証処理部 732を実現する。
スカラ一倍計算部 715と 735は、 図 1に示すス力ラ一倍計算部 II5または I35と同 様の機能を備える。
なお、 本実施例において、 コンピュータ 721内の各プログラムは、 あらかじめ、 上記コンピュータ内の記憶部に格納されていても良いし、 必要なときに、 コンビ ユータ 721が利用可能な媒体を介して他の装置から上記記憶部に導入されてもよ レ、。
さらに、 スマートカード内の各プログラムは、 あらかじめ、 上記スマートカー ド内の記憶部に格納されていても良いし、 必要なときに、 入出力インタフェース を介して接続するコンピュータ、 または当該コンピュータが利用可能な媒体を介 して上記記憶部に導入されてもよい。
媒体とは、 たとえば当該コンピュータに着脱可能な記憶媒体、 または通信媒体 (すなわちネットワークまたはネットワークを伝搬する搬送波) を指す。
図 7の署名検証システムにおける署名作成と署名検証動作を、 図 2を参照して説 明する。
コンピュータ 721は、 ランダムに選んだ数値をチヤレンジコード 743として、 ィ ンタフェース 742を介してスマートカード 701に転送する。
署名生成処理部 712 (図 2の 112)は、 チャレンジコード 743を受け付け、 チヤレン ジコード 743のハッシュ値をとり、 所定のビット長の数値 fに変換する。
署名生成処理部 712は、 乱数 uを生成し、 記憶部 702 (図 2の 102)に格納されてい る定数 704から読み出した(図 2の 205)楕円曲線上の定点 Qとともにスカラー倍計算 部 715 (図 2の 115)へ送る(図 2の 206)。
スカラー倍計算部 5は、 定点 Q、 乱数 uによるスカラー倍点 (xu,yu)を計算し、 計算されたスカラー倍点を署名生成処理部 712へ送る(図 2の 207)。
署名生成処理部 712は、 送られたスカラー倍点を用いて署名の生成を行う。 例 えば、 ECDSA署名であれば、 s = xu mod q (式 26)
t = u一1 (f+ds) mod q (式 27)
を計算することによりチヤレンジコード 743に対応する署名(s, t)を得る(図 2の 208)。
ここで、 qは定点 Qの位数、 すなわち定点 Qの q倍点 qQが無限遠点になり、 qより 小さな数値 mに対する定点 Qの m倍点 raQは無限遠点にはならない、 というような数 値のことである。
ECDSA署名については、 ANSI X9. 62 Public Key Cryptography for the Financial Services Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA) , (1999) (文献 6 ) に記載されている。
スマートカード 701は、 署名生成処理部 712で作成した署名 741を入出力ィンタ フェース 710より出力し、 インタフェース 742を介してコンピュータ 721へ転送す る。
コンピュータ 721の署名検証処理部 732 (図 2の 112)は、 署名 741が入力される(図 2の 204)と、 署名 741の数値 s, tが適切な範囲内すなわち l≤s, tく qであるかを調べ る。
数値 s, tが上記範囲内になければチヤレンジコード 743に対する署名の検証結 果として 「無効」 を出力し、 スマートカード 701を拒絶する。 数 ;S, tが上記範 囲内にあれば、 署名検証処理部 732は、
h = t"1 mod q (式 28)
hx = fh mod q (式 29)
h2 = sh mod q (式 30)
を計算する。 そして、 記憶部 722 (図 2の 102)に格納されている定数 724から読み出 した(図 2の 20¾公開鍵 aQ及び定点 Qと計算した 1¾, h2をスカラ一倍計算部 735 (図 2 の 115)へ送る(図 2の 206)。
スカラー倍計算部 735は、 定点 Qと によるスカラー倍点 1¾Qと、 公開鍵 aQと h2に よるスカラ一倍点 h2aQとを計算し、 計算されたスカラ一倍点を署名検証処理部 732へ送る(図 2の 207)。
署名検証処理部 732は、 送られたスカラー倍点を用いて、 署名検証処理を行う。 例えば、 ECDSAの署名検証であれば、 点 R
R^h^+h^Q (式 31)
を計算し、 その X座標を ¾としたとき、
s = „ mod q 32)
を計算し、 s' =sであればチャレンジコード 743に対する署名の検証結果として 「有効」 を出力し、 スマートカード 701を認証し、 受け入れる(図 2の 208)。
s,=sでなければ 「無効」 を出力し、 スマートカードを拒絶する(図 2の 208)。 上記実施形態のスカラー倍計算部 715、 735は、 図 1のスカラー倍計算部 115また は 135と同様の機能を備えるので、 サイドチャネル攻撃を防ぎ且つメモリ使用量 の少ないスカラー倍計算を実行できる。
そのためスマートカード 701は署名作成処理を行う際に、 コンピュータ 721は署 名検証処理を行う際に、 サイドチャネル攻撃を防ぎ、 その上少ないメモリ使用量 で実行できる。
次に本発明を鍵交換システムに適用する例を説明する。 本実施形態においては、 図 1のシステム構成が応用できる。
図 1のデータ処理部 112、 132は、 本実施形態においては、 それぞれ鍵交換処理 部 112、 132として機能する。
鍵交換システムのコンピュータ A 101が、 入力されたデータ 143から共有情報の 導出を行う場合の動作について図 1、 図 2を参照して説明する。
コンピュータ B 121のデータ処理部 132 (図 2の 112)は、 記憶部 122 (図 2の 102)の 定数 125から秘密鍵 bを読み出しコンピュータ B 121の公開鍵 bQを計算する。 そし て、 ネットワーク 142を介して、 公開鏈 bQをデータ 143としてコンピュータ A101 に転送する。
コンピュータ A101の鍵交換処理部 112 (図 2の 112)はコンピュータ B 121の公開 鍵 bQの入力を受け付ける(図 2の 204)と、 鍵交換処理部 112は、 記憶部 102から読み 出した(図 2の 205)秘密情報 105であるコンピュータ A101の秘密鍵 aと、 コンビュ ータ B 121の公開鍵 bQとをスカラー倍計算部 115へ送る(図 2の 206)。
スカラー倍計算部 II5は、 秘密鍵 aと、 公開鍵 bQによるスカラー倍点 abQを計算 し、 計算されたスカラー倍点を鍵交換処理部 112へ送る(図 2の 207)。 键交換処理部 112は、 送られたスカラ一倍点を用いて共有情報の導出を行い、 記憶部 102に秘密情報 105として格納する。 例えば、 スカラー倍点 abQの X座標を、 共有情報とする。
次に、 コンピュータ 121が、 入力されたデータ 141から共有情報の導出を行う場 合の動作について説明する。
コンピュータ A 101のデータ処理部 112は、 記憶部 102の定数 105から秘密鍵 aを 読み出しコンピュータ A 101の公開鍵 aQを計算する。 そして、 ネットワーク I42を 介して、 公開鍵 aQをデータ 141としてコンピュータ B 121に転送する。
コンピュータ B 121の鍵交換処理部 132 (図 2の 112)はコンピュータ A101の公開 鍵 aQの入力を受け付ける(図 2の 204)と、 鍵交換処理部 132は、 記憶部 122 (図 2の 102)の定数 125から読み出した(図 2の 205) 秘密情報 125であるコンピュータ B 1 の秘密鍵 bと、 コンピュータ A 101の公開鍵 aQとをスカラー倍計算部 135 (図 2の 115)へ送る(図 2の 206)。
スカラー倍計算部 135は、 秘密鍵 bと、 公開鍵 aQによるスカラー倍点 baQを計算 し、 計算されたスカラー倍点を鍵交換処理部 132へ送る(図 2の 207)。
鍵交換処理部 132は、 送られたスカラー倍点を用いて共有情報の導出を行い、 記憶部 122に秘密情報 125として格納する。 例えば、 スカラー倍点 baQの X座標を、 共有情報とする。
ここで、 数 abと数 baは数値として同じなので、 点 abQと点 baQは同じ点となり、 同じ情報が導出されたことになる。
ネットワーク 142には、 点 aQと点 bQが送信されるが、 点 abQ (もしくは点 baQ)を 計算するには秘密鍵 aもしくは秘密鍵 bを用いなければならない。 すなわち、 秘密 鍵 aもしくは秘密鍵 bを知らなければ、 共有情報を得ることができない。 このよう にして得られた共有情報は、 共通鍵暗号の秘密鍵として利用できる。
本実施形態においても、 スカラー倍計算部 115、 135は、 上述の特徴を備えるの で、 サイドチャネル攻撃を防ぎ、 そのうえ少ないメモリ使用量で鍵交換処理が可 能になる。
また、 上記各実施形態における暗号化処理部、 復号化処理部、 署名作成部、 署 名検証部、 鍵交換処理部は、 専用のハードウェアを用いて行ってもよい。 また、 スカラー倍計算部をコプロセッサまたはそれ以外の専用ハードウェアで実現して あ良い。
また、 データ処理部は、 上記暗号化処理、 復号化処理、 署名作成処理、 署名検 証処理、 鍵交換処理のうち、 任意の一つ以上の処理を行えるように構成してもよ い。
本発明によれば、 サイドチャネル攻撃に対して安全で、 かつメモリ使用量の少 ない、 楕円曲線演算を用いたメッセージ処理が可能になる。

Claims

請求の範囲
1 . 楕円曲線暗号における楕円曲線において、 スカラー値及び楕円曲線上の点か らスカラ一倍点を計算するスカラ一倍計算方法であつて、
前記スカラ一値を数値列にエンコードするステップと、
前記楕円曲線上の点から前計算テーブルを作成するステツプと、
前記ェンコードした数値列及び前記前計算テーブルからスカラ一倍点を計算す るステップと、 を有するスカラー倍計算方法。
2. 請求項 1記載のスカラー倍計算方法であって、
前記ェンコードするステップが出力する数値列は 0と奇数からなるスカラー倍 計算方法。
3 . 請求項 2記載のスカラー倍計算方法であって、
前記ス力ラ一倍点を計算するステツプは、
第 1の演算を予め定められた回数を実行するステップと、
第 1の演算とは異なる第 2の演算を実行するステツプとを含むス力ラ一倍計算 方法。
4. 楕円曲線暗号における楕円曲線において、 スカラー値及び楕円曲線上の点の 奇数倍点を格納した前計算テーブルからスカラ一倍点を計算するスカラ一倍計算 方法であって、
前記ス力ラ一値を数値列にエンコードするステップと、
前記ェンコードした数値列及び前記前計算テーブルからスカラ一倍点を計算す るステップとを有し、
前記ェンコードするステップが出力する数値列は 0と奇数からなるスカラー倍 計算方法。
5 . 請求項 3記載のスカラ一倍計算方法であって、
楕円曲線としてワイエルシュトラス型楕円曲線を用いるスカラー倍計算方法。
6 . 請求項 3記載のスカラ一倍計算方法であって、
楕円曲線としてモンゴメリ型楕円曲線を用いるスカラー倍計算方法。
7. 請求項 3記載のスカラー倍計算方法であって、
楕円曲線として標数 2の有限体上で定義された楕円曲線を用いるスカラ一倍計 算方法。
8 . 請求項 3記載のスカラ一倍計算方法であつて、
楕円曲線として OEF上で定義された楕円曲線を用いるスカラ一倍計算方法。
9 . 第 1のデータから第 2のデータを生成するデータ生成方法であって、
請求項 3に記載のスカラー倍計算方法を用いてスカラー倍を計算するステップ を有するデータ生成方法。
1 0. データから署名データを生成する署名作成方法であって、
請求項 3に記載のスカラ一倍計算方法を用いてスカラ一倍を計算するステツプ を有する署名作成方法。
1 1 . 暗号化されたデータから復号化されたデータを生成する復号化方法であつ て、
請求項 3に記載のスカラ一倍計算方法を用いてスカラ一倍を計算するステツプ を有する複号化方法。
1 2. 楕円曲線暗号における楕円曲線において、 スカラー値及び楕円曲線上の点 からスカラ一倍点を計算するス力ラ一倍計算装置であつて、
前記ス力ラ一値を数値列にエンコードするエンコード部と、
前記楕円曲線上の点から前計算テーブルを作成する前計算部と、
前記ェンコードした数値列及び前記前計算テーブルからスカラ一倍点を計算す る実計算部とを有するスカラ一倍計算装置。
1 3 . 第 1のデータから第 2のデータを生成するデータ変換部と、 前記データ変 換部より依頼されてスカラ一倍を計算するス力ラ一倍計算部とを有するデータ生 成装置であって、
前記スカラー倍計算部は、 請求項 3に記載のスカラー倍計算方法を用いてスカ ラ一倍を計算するデータ生成装置。
1 4. データから署名データを生成する署名部と、 前記署名部より依頼されてス 力ラ一倍を計算するス力ラ一倍計算部とを有する署名作成装置であって、 前記スカラー倍計算部は、 請求項 3に記載のスカラー倍計算方法を用いてスカ ラー倍を計算する署名作成装置。
1 5 . 暗号化されたデータから復号ィヒされたデータを生成する復号部と、 前記復 号部より依頼されてスカラ一倍を計算するス力ラ一倍計算部とを有する複号化装 置であって、
前記スカラー倍計算部は、 請求項 3に記載のスカラー倍計算方法を用いてスカ ラ一倍を計算する複号化装置。
1 6 . 請求項 3に記載のスカラー倍計算方法を計算機に実行させるプログラム。
1 7 . 請求項 1 0記載の署名作成方法を計算機に実行させるプログラム。
1 8 . 請求項 1 1記載の復号化方法を計算機に実行させる:
PCT/JP2003/015253 2003-02-06 2003-11-28 楕円曲線スカラー倍計算方法および装置 WO2004070681A2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004567900A JP4502817B2 (ja) 2003-02-06 2003-11-28 楕円曲線スカラー倍計算方法および装置
AU2003284481A AU2003284481A1 (en) 2003-02-06 2003-11-28 Elliptic curve scalar multiple calculation method and device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003028996 2003-02-06
JP2003-28996 2003-02-06

Publications (2)

Publication Number Publication Date
WO2004070681A1 WO2004070681A1 (ja) 2004-08-19
WO2004070681A2 true WO2004070681A2 (ja) 2004-08-19

Family

ID=32844222

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2003/015253 WO2004070681A2 (ja) 2003-02-06 2003-11-28 楕円曲線スカラー倍計算方法および装置

Country Status (3)

Country Link
JP (1) JP4502817B2 (ja)
AU (1) AU2003284481A1 (ja)
WO (1) WO2004070681A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005020735A (ja) * 2003-06-26 2005-01-20 Sharp Corp データ処理装置におけるサイドチャネル攻撃防止
JP2006243690A (ja) * 2005-02-04 2006-09-14 Renesas Technology Corp 楕円曲線暗号におけるスカラー倍計算装置、署名生成装置、復号化装置、データ生成装置、及び、それらのプログラム
US7940936B2 (en) 2006-12-15 2011-05-10 Samsung Electronics Co., Ltd. Public key generation method in elliptic curve cryptography and public key generation system executing the method
JP2018514809A (ja) * 2015-05-06 2018-06-07 クアルコム,インコーポレイテッド 固定実行フロー乗数再コーディングおよびスカラ乗算のための方法およびデバイス

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3797808B2 (ja) * 1998-10-27 2006-07-19 富士通株式会社 スカラー倍算方法およびその装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005020735A (ja) * 2003-06-26 2005-01-20 Sharp Corp データ処理装置におけるサイドチャネル攻撃防止
JP2006243690A (ja) * 2005-02-04 2006-09-14 Renesas Technology Corp 楕円曲線暗号におけるスカラー倍計算装置、署名生成装置、復号化装置、データ生成装置、及び、それらのプログラム
US7940936B2 (en) 2006-12-15 2011-05-10 Samsung Electronics Co., Ltd. Public key generation method in elliptic curve cryptography and public key generation system executing the method
JP2018514809A (ja) * 2015-05-06 2018-06-07 クアルコム,インコーポレイテッド 固定実行フロー乗数再コーディングおよびスカラ乗算のための方法およびデバイス

Also Published As

Publication number Publication date
AU2003284481A1 (en) 2004-08-30
JPWO2004070681A1 (ja) 2006-05-25
JP4502817B2 (ja) 2010-07-14

Similar Documents

Publication Publication Date Title
US7308096B2 (en) Elliptic scalar multiplication system
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
US7961873B2 (en) Password protocols using XZ-elliptic curve cryptography
US6049610A (en) Method and apparatus for digital signature authentication
EP0997016B1 (en) Method and apparatus for fast elliptical encryption with direct embedding
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
US6876745B1 (en) Method and apparatus for elliptic curve cryptography and recording medium therefore
US8184803B2 (en) Hash functions using elliptic curve cryptography
US7379546B2 (en) Method for XZ-elliptic curve cryptography
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
US7483533B2 (en) Elliptic polynomial cryptography with multi x-coordinates embedding
EP0952697B1 (en) Elliptic curve encryption method and system
EP1296224B1 (en) Elliptic scalar multiplication system
KR100699836B1 (ko) 스칼라 곱에서 dfa 대책을 위한 장치 및 방법
US6772184B2 (en) Method for efficient modular division over prime integer fields
JP2007041461A (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
KR100817048B1 (ko) 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
JP2003255831A (ja) 楕円曲線スカラー倍計算方法及び装置
Nedjah et al. Efficient parallel modular exponentiation algorithm
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
US20070121935A1 (en) Method for countermeasuring in an electronic component
JP2005316038A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置
Multiplications Efficient Algorithms for Multi-Scalar Multiplications

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

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

AL Designated countries for regional patents

Kind code of ref document: A2

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

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
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: 2004567900

Country of ref document: JP

122 Ep: pct application non-entry in european phase