System and method for big number hardware multiplication for cryptography
AssigneeSanDisk Technologies LLC
InventorsItzchak Harel, Roy Naor, Ishai Ilani
Life of this patent
Estimating the term…
Abstract
A system performs big number multiplication during a cryptographic process. This can occur, for example, when a controller in a storage system encrypts data for storage in its memory or decrypts data read from its memory. To perform the multiplication of these big input numbers quickly, the system uses a modified Toom-Cook algorithm comprising a plurality of levels of coefficient vectors for each of the input numbers. This involves performing a sample extraction process, a point multiplication process, and an interpolation (synthesis) process.
Claims18
A storage system comprising:
- a memory;
- and
- a controller comprising a processor and a plurality of hardware multipliers, wherein the controller is configured to:
- receive data from a host to store in the memory;
- transform the data received from the host to encrypted data by performing a cryptographic process to encrypt the data by:
- using the processor to:
- receive input numbers x and y for multiplication;
- and
- generate a plurality of levels of coefficient vectors for x and for y;
- and
- using the plurality of hardware multipliers to:
- perform a sample extraction process by multiplying the plurality of levels of coefficient vectors for x by a first decomposition matrix to yield a first result vector and by multiplying the plurality of levels of coefficient vectors for y by a second decomposition matrix to yield a second result vector;
- perform a point multiplication process by multiplying the first and second result vectors to yield a third result vector;
- and
- perform an interpolation process by multiplying the third result vector by a synthesis matrix to yield a result and dividing the result by a constant to yield a final result by accessing small, fast memory at algorithm concatenations with iterations done in a single clock cycle;
- and
- store the encrypted data in the memory.
In a data storage device comprising a memory and a controller comprising a processor and a plurality of hardware multipliers, a method comprising:
- receiving data from a host to store in the memory;
- transforming the data received from the host to encrypted data by performing a cryptographic process to encrypt the data by:
- using the processor to:
- receive input numbers x and y for multiplication;
- and
- generate a plurality of levels of coefficient vectors for x and for y;
- and
- using the plurality of hardware multipliers to:
- perform a sample extraction process by multiplying the plurality of levels of coefficient vectors for x by a first decomposition matrix to yield a first result vector and by multiplying the plurality of levels of coefficient vectors for y by a second decomposition matrix to yield a second result vector;
- perform a point multiplication process by multiplying the first and second result vectors to yield a third result vector;
- and
- perform an interpolation process by multiplying the third result vector by a synthesis matrix to yield a result and dividing the result by a constant to yield a final result by accessing small, fast memory at algorithm concatenations with iterations done in a single clock cycle;
- and
- storing the encrypted data in the memory.
A data storage device comprising:
- a memory;
- and
- means for transforming data received from a host to store in the memory to encrypted data by performing a cryptographic process to encrypt the data by:
- using a processor to:
- receive input numbers x and y for multiplication;
- and
- generate a plurality of levels of coefficient vectors for x and for y;
- and
- using the plurality of hardware multipliers to:
- perform a sample extraction process by multiplying the plurality of levels of coefficient vectors for x by a first decomposition matrix to yield a first result vector and by multiplying the plurality of levels of coefficient vectors for y by a second decomposition matrix to yield a second result vector;
- perform a point multiplication process by multiplying the first and second result vectors to yield a third result vector;
- and
- perform an interpolation process by multiplying the third result vector by a synthesis matrix to yield a result and dividing the result by a constant to yield a final result by accessing small, fast memory at algorithm concatenations with iterations done in a single clock cycle;
- and
- means for storing the encrypted data in the memory.
Dependencies are inferred from the claim text.