IP Library Granted Patent US 9,772,821
Granted Patent B2
US 9,772,821 · App. 14/762,010 · Granted Sep 26, 2017

Cryptography method comprising an operation of multiplication by a scalar or an exponentiation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,772,821
App. No.
14/762,010
Granted
Sep 26, 2017
Kind
B2
Abstract

A cryptographic data processing method, implemented in an electronic device including a processor, the method including steps of providing a point of an elliptic curve in a Galois field, and a whole number, and of calculating a scalar product of the point by the number, the coordinates of the point and the number having a size greater than the size of words that may be processed directly by the processor, the scalar multiplication of the point by the number including steps of: storing scalar multiples of the point multiplied-by the number 2 raised to a power belonging to a series of whole numbers, setting a resulting point for each non-zero bit of the first number, adding the resulting point and one of the stored multiple points, and providing at the output of the processor the resulting point as result of the scalar product.

Claims (51)

1. A cryptographic data processing method comprising:

receiving, by a processor in an electronic device, a point of an elliptic curve in a Galois field and a first integer number, the first integer number being a private encryption key; and

performing, by the processor, a cryptographic operation including a scalar multiplication calculation of the point by the first integer number, the point being defined by coordinates, the coordinates of the point and the first integer number having a size greater than a size of words that can be processed, by the processor, without being divided into smaller words,

the scalar multiplication calculation of the point by the first integer number including:

storing a set of multiple points each resulting from a scalar product of the point by 2 raised to a power belonging to a set of integer numbers,

initializing a resulting point belonging to the elliptic curve,

performing several iterations to take into account each of the bits of the first integer number only once, each iteration including:

a calculation of a bit combination of several bits of the first integer number, and

when the bit combination is non-zero, modifying the resulting point by performing an addition between a prior value of the resulting point and one of the stored multiple points corresponding to ranks of bits in the bit combination, and

providing, by the processor, the resulting point as result of the scalar multiplication calculation of the point by the integer first number, the resulting point including a public encryption key corresponding with the private encryption key.

2. The method according to claim 1 , wherein the bits of the first integer number are taken into account in a random or pseudo-random order when calculating the resulting point.

3. The method according to claim 1 , wherein additions between prior values of the resulting point and the stored multiple points are performed in affine coordinates.

4. The method according to claim 1 , wherein the additions between prior values of the resulting point and the stored multiple points are performed in projective coordinates.

5. The method according to claim 4 , wherein the scalar products of the point are stored in affine coordinates, which are transformed into projective coordinates by adding, to the affine coordinates, a third coordinate having a value set to 1.

6. The method according to claim 1 , wherein the first integer number and the coordinates of the point are non-adjacent-form (NAF) coded, the method further comprising, for each of the bit combinations of the first integer number less than or equal to −1, performing an adding calculation between the resulting point and an opposite of one of the stored multiples corresponding to a rank in the first number of the bit combination.

7. The method according to claim 1 , further comprising:

randomly choosing the first integer number as the private encryption key; and

choosing the resulting point of the scalar multiplication of the point by the first integer number or one of the coordinates of the resulting point as the public encryption key corresponding to the private encryption key.

8. The method according to claim 1 , further comprising signing a message, the signing including:

randomly choosing a second integer number;

applying a hashing function to the message to be signed; and

calculating a signature of the message from the following equations:

x=i mod n

y=k −1 ( H ( m )+ s·x )mod n,

in which x and y represent the signature of the message m, i being the public encryption key, k being the second integer number, H(m) being the hashing function applied to the message m, s being the private encryption key, and n being a smallest positive integer number such that the scalar product of n by the point is equal to a point at infinity of the elliptic curve.

9. An electronic device comprising a processor configured to:

receive a point of an elliptic curve in a Galois field and a first integer number, the first integer number being a private encryption key; and

perform a cryptographic operation including a scalar multiplication calculation of the point by the first integer number, the point being defined by coordinates, the coordinates of the point and the first integer number having a size greater than a size of words that can be processed, by the processor, without being divided into smaller words,

the scalar multiplication calculation of the point by the first integer number including:

storing a set of multiple points each resulting from a scalar product of the point by 2 raised to a power belonging to a set of integer numbers;

initializing a resulting point belonging to the elliptic curve;

performing several iterations to take into account each of the bits of the first integer number only once, each iteration including:

a calculation of a bit combination of several bits of the first integer number; and

when the bit combination is non-zero, modifying the resulting point by performing an addition between a prior value of the resulting point and one of the stored multiple points corresponding to ranks of bits in the bit combination; and

providing, by the processor, the resulting point as result of the scalar multiplication calculation of the point by the first integer number, the resulting point including a public encryption key corresponding with the private encryption key.

10. The device according to claim 9 , wherein the device is portable and autonomous, or is of a smart card type.

11. The device according to claim 9 , wherein the bits of the first integer number are taken into account in a random or pseudo-random order when calculating the resulting point.

12. The device according to claim 9 , wherein additions between prior values of the resulting point and the stored multiple points are performed in affine coordinates.

13. The device according to claim 9 , wherein the additions between prior values of the resulting point and the stored multiple points are performed in projective coordinates.

14. The device according to claim 13 , wherein the scalar products of the point are stored in affine coordinates, which are transformed into projective coordinates by adding, to the affine coordinates, a third coordinate having a value set to 1.

15. The device according to claim 9 , wherein the first integer number and the coordinates of the point are non-adjacent-form (NAF) coded, the processor being further configured to, for each of the bit combinations of the first integer number, less than or equal to −1, performing an adding calculation between the resulting point and an opposite of one of the stored multiples corresponding to a rank in the first integer number of the bit combination.

16. The device according to claim 9 , wherein the processor is further configured to:

randomly choose the first integer number as the private encryption key, and

choose the resulting point of the scalar multiplication of the point by the first integer number or one of the coordinates of the resulting point as a public encryption key corresponding to the private encryption key.

17. The device according to claim 9 , wherein the processor is configured to sign a message, by:

randomly choosing a second integer number,

applying a hashing function to the message to be signed, and

calculating a signature of the message from the following equations:

x=i mod n

y=k −1 ( H ( m )+ s·x )mod n,

in which x and y represent the signature of the message m, i being the public encryption key, k being the second integer number, H(m) being the hashing function applied to the message m, s being the private encryption key, and n being a smallest positive integer number such that the scalar product of n by the point is equal to a point at infinity of the elliptic curve.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2020
From: RAMBUS INC.
To: CRYPTOGRAPHY RESEARCH, INC.
Reel/Frame 054539/0109 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2019
From: VERIMATRIX
To: RAMBUS INC.
Reel/Frame 051262/0413 →
PARTIAL RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 21, 2019
From: GLAS SAS, AS AGENT
To: INSIDE SECURE
Reel/Frame 051076/0306 →
CHANGE OF ADDRESS Recorded Oct 16, 2019
From: VERIMATRIX
To: VERIMATRIX
Reel/Frame 050733/0003 →
CHANGE OF NAME Recorded Oct 7, 2019
From: INSIDE SECURE
To: VERIMATRIX
Reel/Frame 050647/0428 →
SECURITY INTEREST Recorded Feb 27, 2019
From: INSIDE SECURE
To: GLAS SAS, AS SECURITY AGENT
Reel/Frame 048449/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2015
From: FEIX, BENOÎT; VERNEUIL, VINCENT; CLAVIER, CHRISTOPHE
To: INSIDE SECURE
Reel/Frame 036664/0436 →