IP Library Granted Patent US 8,411,855
Granted Patent B1
US 8,411,855 · App. 12/633,400 · Granted Apr 2, 2013

Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables

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 8,411,855
App. No.
12/633,400
Granted
Apr 2, 2013
Kind
B1
Abstract

A computer program product and method are provided for optimizing the size of an Elliptic Curve Cryptography (ECC) scalar multiplication table. Steps include (a) receiving, from a user interface, a set of integer multipliers, (b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function, and (c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function. Additional steps are also included depending on the embodiment.

Claims (151)

1. A computer program product comprising a non-transitory computer-readable storage medium, the computer readable storage medium storing a set of instructions, which, when performed by a computer, cause the computer to perform the following steps:

(a) receiving, from a user interface, a set of integer multipliers and an integer degree greater than 1, d;

(b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function;

(d) after modifying the index set, outputting, to the user interface, the index set;

(e) before outputting the index set, for some integer n, modifying the index set by replacing n elements with n−1 elements such that, after the modification, elements of the index set still generate all elements of the given set of target integers using the target generation function; and

(f) before outputting the index set, repeating steps c and e in succession until no further elements can be removed or replaced from the index set; and

wherein step f includes the following ordered sub-steps:

(1) performing step c repeatedly until no further elements can be removed from the index set;

(2) attempting to perform step e for n=2 until n=d or until step e is performed successfully, whichever occurs first; and

(3) looping back to sub-step 1 if step e was successfully performed in sub-step 2, but terminating step f if step e was not successfully performed in sub-step 2.

2. A computer program product as in claim 1 wherein:

the set of instructions, when performed by the computer, cause the computer to further perform the step of receiving, from the user interface, an integer window size, w; and

the given set of target integers consists of all integers between 1 and 2 w −1, inclusive.

3. A computer program product as in claim 2 wherein the set of instructions, when performed by the computer, cause the computer to, when performing step (b), perform the following sub-steps:

(1) creating an index mask array, A, A being an array of 2 w -bit bit masks with integer indices ranging from 1 to 2 w−1 such that for each index, i, the corresponding bit mask is set to represent a set of integers which can be generated from that index using the target generation function;

(2) sequentially, for each index j of A:

logically bitwise OR-ing a best mask, B, B being a 2 w -bit bit mask, with A[j] to form a temporary mask T; and

if a number of set bits in T exceeds a number of set bits in B, then setting B=T and storing j as a best index, b;

(3) after completing sub-step 2, adding b to the index set; and

(4) repeating sub-steps 2 and 3 sequentially until every element of B having an index from 1 to 2 w−1 , inclusive, is set to 1.

4. A computer program product as in claim 2 wherein the set of instructions, when performed by the computer, cause the computer to, when performing step (b), select a set containing the integer 1 and the odd prime integers less than 2 w−1 .

5. A computer program product as in claim 2 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1}; and

(iii) if the chosen value is −1, then adding the product of step ii to 2 w .

6. A computer program product as in claim 2 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1};

(iii) if the chosen value from step ii is −1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {1, 2}; and

(iv) if the chosen value from step ii is 1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {−1, 0}.

7. A computer program product as in claim 1 wherein the set of instructions, when performed by the computer, cause the computer to further perform the steps of:

(g) after modifying the index set, generating an ECC scalar multiplication table having a plurality of sub-tables, each sub-table having one entry for each element of the index set; and

(h) storing the ECC scalar multiplication table on a non-transitory computer-readable storage medium to be used in accelerating ECC scalar multiplication for cryptographic processing.

8. A method for creating an acceleration table for an Elliptic Curve Cryptography (ECC) scalar multiplication table, the method comprising:

(a) receiving, from user interface circuitry, a set of integer multipliers and an integer degree greater than 1, d;

(b) in a microprocessor, choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) in the microprocessor, modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function;

(d) in the microprocessor, after modifying the index set, generating an ECC scalar multiplication table having a plurality of sub-tables, each sub-table having one entry for each element of the index set; and

(e) storing the ECC scalar multiplication table on a non-transitory computer-readable storage medium;

(f) before generating the ECC scalar multiplication table, for some integer n, modifying the index set by replacing n elements with n−1 elements such that, after the modification, elements of the index set still generate all elements of the given set of target integers using the target generation function; and

(g) before generating the ECC scalar multiplication table, repeating steps c and f in succession until no further elements can be removed or replaced from the index set;

wherein step g includes the following ordered sub-steps:

(1) performing step c repeatedly until no further elements can be removed from the index set;

(2) attempting to perform step f for n=2 until n=d or until step f is performed successfully, whichever occurs first; and

(3) looping back to sub-step 1 if step f was successfully performed in sub-step 2, but terminating step g if step f was not successfully performed in sub-step 2.

9. A method as in claim 8 wherein:

receiving includes further receiving, from the user interface, an integer window size, w; and

the given set of target integers consists of all integers between 1 and 2 w −1, inclusive.

10. A method as in claim 9 wherein choosing the subset of the given set of target integers includes performing the following sub-steps:

(1) creating, in memory, an index mask array, A, A being an array of 2 w -bit bit masks with integer indices ranging from 1 to 2 w−1 such that for each index, i, the corresponding bit mask is set to represent a set of integers which can be generated from that index using the target generation function;

(2) sequentially, for each index j of A:

logically bitwise OR-ing a best mask, B, B being a 2 w -bit bit mask, with A[j] to form a temporary mask T; and

if a number of set bits in T exceeds a number of set bits in B, then setting B=T and storing j as a best index, b;

(3) after completing sub-step 2, adding b to the index set; and

(4) repeating sub-steps 2 and 3 sequentially until every element of B having an index from 1 to 2 w−1 , inclusive, is set to 1.

11. A method as in claim 9 wherein choosing the subset of the given set of target integers includes selecting a set containing the integer 1 and the odd prime integers less than 2 w−1 .

12. A method as in claim 9 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1}; and

(iii) if the chosen value is −1, then adding the product of step ii to 2 w .

13. A method as in claim 9 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1};

(iii) if the chosen value from step ii is −1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {1, 2}; and

(iv) if the chosen value from step ii is 1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {−1, 0}.

14. A computer program product comprising a non-transitory computer-readable storage medium, the computer readable storage medium storing a set of instructions, which, when performed by a computer, cause the computer to perform the following steps:

(a) receiving, from a user interface, a set of integer multipliers;

(b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function; and

(d) after modifying the index set, outputting, to the user interface, the index set;

wherein:

the set of instructions, when performed by the computer, cause the computer to further perform the step of receiving, from the user interface, an integer window size, w;

the given set of target integers consists of all integers between 1 and 2 w −1, inclusive; and

the set of instructions, when performed by the computer, cause the computer to, when performing step (b), perform the following sub-steps:

(1) creating an index mask array, A, A being an array of 2 w -bit bit masks with integer indices ranging from 1 to 2 w−1 such that for each index, i, the corresponding bit mask is set to represent a set of integers which can be generated from that index using the target generation function;

(2) sequentially, for each index j of A:

logically bitwise OR-ing a best mask, B, B being a 2 w -bit bit mask, with A[j] to form a temporary mask T; and

if a number of set bits in T exceeds a number of set bits in B, then setting B=T and storing j as a best index, b;

(3) after completing sub-step 2, adding b to the index set; and

(4) repeating sub-steps 2 and 3 sequentially until every element of B having an index from 1 to 2 w−1 , inclusive, is set to 1.

15. A computer program product as in claim 14 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1}; and

(iii) if the chosen value is −1, then adding the product of step ii to 2 w .

16. A computer program product as in claim 14 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1};

(iii) if the chosen value from step ii is −1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {1, 2}; and

(iv) if the chosen value from step ii is 1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {−1, 0}.

17. A method for creating an acceleration table for an Elliptic Curve Cryptography (ECC) scalar multiplication table, the method comprising:

(a) receiving, from user interface circuitry, a set of integer multipliers;

(b) in a microprocessor, choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) in the microprocessor, modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function;

(d) in the microprocessor, after modifying the index set, generating an ECC scalar multiplication table having a plurality of sub-tables, each sub-table having one entry for each element of the index set; and

(e) storing the ECC scalar multiplication table on a non-transitory computer-readable storage medium;

wherein:

receiving includes further receiving, from the user interface circuitry, an integer window size, w;

the given set of target integers consists of all integers between 1 and 2 w −1, inclusive; and

choosing the subset of the given set of target integers includes performing the following sub-steps:

(1) creating, in memory, an index mask array, A, A being an array of 2 w -bit bit masks with integer indices ranging from 1 to 2 w−1 such that for each index, i, the corresponding bit mask is set to represent a set of integers which can be generated from that index using the target generation function;

(2) sequentially, for each index j of A:

logically bitwise OR-ing a best mask, B, B being a 2 w -bit bit mask, with A[j] to form a temporary mask T; and

if a number of set bits in T exceeds a number of set bits in B, then setting B=T and storing j as a best index, b;

(3) after completing sub-step 2, adding b to the index set; and

(4) repeating sub-steps 2 and 3 sequentially until every element of B having an index from 1 to 2 w−1 , inclusive, is set to 1.

18. A method as in claim 17 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1}; and

(iii) if the chosen value is −1, then adding the product of step ii to 2 w .

19. A method as in claim 17 wherein the target generation function is configured to generate an element of the given set of target integers if that element can be calculated from an input element by:

(i) multiplying the input element by one multiplier of the set of integer multipliers;

(ii) multiplying the product of step i by a value chosen from the set {−1, 1};

(iii) if the chosen value from step ii is −1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {1, 2}; and

(iv) if the chosen value from step ii is 1, then adding the product of step ii to 2 w multiplied by a value chosen from the set {−1, 0}.

20. An apparatus comprising:

user interface circuitry;

a non-transitory computer-readable storage medium;

a microprocessor; and

memory, the memory storing instructions, which, when performed by the microprocessor, cause the microprocessor to perform the following steps:

(a) receiving, from the user interface circuitry, a set of integer multipliers;

(b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function;

(d) after modifying the index set, generating an ECC scalar multiplication table having a plurality of sub-tables, each sub-table having one entry for each element of the index set; and

(e) storing the ECC scalar multiplication table on the non-transitory computer-readable storage medium;

wherein:

receiving includes further receiving, from the user interface circuitry, an integer window size, w;

the given set of target integers consists of all integers between 1 and 2 w −1, inclusive; and

choosing the subset of the given set of target integers includes performing the following sub-steps:

(1) creating, in memory, an index mask array, A, A being an array of 2 w -bit bit masks with integer indices ranging from 1 to 2 w−1 such that for each index, i, the corresponding bit mask is set to represent a set of integers which can be generated from that index using the target generation function;

(2) sequentially, for each index j of A:

 logically bitwise OR-ing a best mask, B, B being a 2 w -bit bit mask, with A[j] to form a temporary mask T; and

 if a number of set bits in T exceeds a number of set bits in B, then setting B=T and storing j as a best index, b;

(3) after completing sub-step 2, adding b to the index set; and

(4) repeating sub-steps 2 and 3 sequentially until every element of B having an index from 1 to 2 w−1 , inclusive, is set to 1.

21. An apparatus comprising:

user interface circuitry;

a non-transitory computer-readable storage medium;

a microprocessor; and

memory, the memory storing instructions, which, when performed by the microprocessor, cause the microprocessor to perform the following steps:

(a) receiving, from the user interface circuitry, a set of integer multipliers and an integer degree greater than 1, d;

(b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function;

(c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function;

(d) after modifying the index set, generating an Elliptic Curve Cryptography (ECC) scalar multiplication table having a plurality of sub-tables, each sub-table having one entry for each element of the index set; and

(e) storing the ECC scalar multiplication table on the non-transitory computer-readable storage medium;

(f) before generating the ECC scalar multiplication table, for some integer n, modifying the index set by replacing n elements with n−1 elements such that, after the modification, elements of the index set still generate all elements of the given set of target integers using the target generation function; and

(g) before generating the ECC scalar multiplication table, repeating steps c and f in succession until no further elements can be removed or replaced from the index set;

wherein step g includes the following ordered sub-steps:

(1) performing step c repeatedly until no further elements can be removed from the index set;

(2) attempting to perform step f for n=2 until n=d or until step f is performed successfully, whichever occurs first; and

(3) looping back to sub-step 1 if step f was successfully performed in sub-step 2, but terminating step g if step f was not successfully performed in sub-step 2.

Assignments (14)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL USA L.P.; ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2010
From: RSA SECURITY HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 023975/0151 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2010
From: RSA SECURITY LLC
To: RSA SECURITY HOLDING, INC.
Reel/Frame 023975/0453 →
MERGER Recorded Jan 27, 2010
From: RSA SECURITY INC
To: RSA SECURITY LLC
Reel/Frame 023852/0644 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2010
From: RSA SECURITY LLC
To: RSA SECURITY HOLDING, INC.
Reel/Frame 023824/0729 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2010
From: RSA SECURITY HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 023825/0109 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2010
From: ROBINSON, PETER ALAN; MAKEPEACE, DAVID PAUL; PARKINSON, SEAN; HIBBERD, MARK
To: RSA SECURITY, INC.
Reel/Frame 023764/0148 →