# US 12,010,211 B2 · Encrypting data units with a memristor array

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,010,211 B2
- Document ID: US12010211B2
- Status: Granted
- Kind: B2
- Application number: 17/563,814
- Filed: 2021-12-28
- Published: 2023-06-29
- Granted: 2024-06-11
- Earliest claimed: 2021-12-28
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Amit S. Sharma
- Web page: https://patentgrep.com/patent/US12010211B2

## CPC

- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- G09C 1/00: Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system (cryptographic typewriters G09C3/00)
- H04L 2209/12: Details relating to cryptographic hardware or logic circuitry
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G09C: CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY

## Abstract

Systems and methods are provided for encrypting data in a memristor array. The data may be scrambled by multiplying an input data unit by another data unit, by multiplying each element of a first data unit by a different instance of a second data unit. The process continues until all elements of the first data unit are multiplied by a different instance of the second data unit. The elements of the data units may be represented by resistive values of a memristor array. The result of all of the above multiplication of different instances of the second data unit are a new set of data units. All of the resulting data units are added together by adding the currents associated with values of the memristors representing the resulting data units. The operation may be performed as a finite field computation, with the memristor array.

## Claims

### Claim 1

A method of encrypting data, comprising:
multiplying a first term of a first polynomial representing a first data unit by a first instance of a second polynomial representing a second data unit, resulting in a first resultant polynomial, the first resultant polynomial being represented by a first set of memristors, the first data unit or the second data unit being a data unit of the data being encrypted;
multiplying a second term of the first polynomial by a second instance of the second polynomial, resulting in a second resultant polynomial, the second resultant polynomial being represented by a second set of memristors; and
adding the first resultant polynomial to the second resultant polynomial by adding respective currents associated with the first and second sets of memristors.

### Claim 2 (depends on 1)

The method of claim 1, further comprising adding an encryption key polynomial representing a data unit of an encryption key to a result of adding the first resultant polynomial to the second resultant polynomial, by adding currents of encryption key polynomial to currents resulting from adding the first resultant polynomial to the second resultant polynomial.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving an input state;
applying information from a first group of data elements of a data unit to rows of a first group of memristors;
applying information from a second group of data elements of the data unit to columns of the first group of memristors;
the first group of memristors representing a first lookup table of a substitution box, and the applying of the information to the rows and the applying of the information to the columns selects a first coordinate of a location in a substitution box where a replacement value is found for the data unit;
applying the information from the first group of data elements of the data unit to rows of a second group of memristors; and
applying the information from the second group of data elements of the data unit to columns of the second group of memristors;
the second group of memristors representing a second lookup table of the substitution box, and the applying of the information to the rows and the applying of the information to the columns selects a second coordinate of the location in a substitution box where the replacement value is found for the data unit.

### Claim 4 (depends on 1)

The method of claim 1, further comprising interpreting a current resulting from adding the first resultant polynomial to the second resultant polynomial as an exclusive OR operation.

### Claim 5 (depends on 4)

The method of claim 4, further comprising determining whether a current from the adding causes a threshold corresponding to twice a current representing one bit has been crossed;
if the threshold has been crossed inverting a voltage output to a value corresponding to bit value corresponding to an exclusive OR of two bits.

### Claim 6 (depends on 4)

The method of claim 4, the threshold being a first threshold, the method further comprising determining whether the current from the adding causes a second threshold corresponding to three times a current representing one bit to bit crossed;
if the second threshold has been crossed inverting a voltage output to a value corresponding to bit value corresponding to an exclusive OR of the exclusive OR of two bits.

### Claim 7 (depends on 1)

The method of claim 1, further the adding the first resultant polynomial to the second resultant polynomial forming a third polynomial,
adding a fourth polynomial to the third polynomial, by adding currents in a memristor array, to form a polynomial with that has the highest power term that is less than a highest power term of the third polynomial.

### Claim 8 (depends on 1)

The method of claim 1, wherein the encrypting of the data being performed as a finite element computation.

### Claim 9

A system comprising:
a set of memristors upon which a method is performed, the method comprising:
encrypting data by:
multiplying a first element of a first data unit by a first instance of a second data unit, resulting in a first resultant data unit, the first resultant data unit being represented by a first set of memristors, the first element of the first data unit representing a multiple of a first power of a base value, the first data unit or the second data unit being a data unit of the data being encrypted;
multiplying a second element of the first data unit by a second instance of the second data unit, resulting in a second resultant data unit, the second data unit being represented by a second set of memristors, the second element of the first data unit representing a multiple a second power of the base value, that is different than the first power of the base value; and
adding the first resultant data unit to the second resultant data unit by adding respective currents associated with the first and second sets of memristors.

### Claim 10 (depends on 9)

The system of claim 9 further comprising:
a reference current in parallel with a current resulting from adding the respective currents;
a first threshold device to cause the current resulting from the adding to flow to ground, when the current is above a threshold;
a second threshold device to cause the reference current to flow ground when the resulting from adding is above the threshold; and
an inverter that has a first output and a second output, the first output occurs when the adding respective currents is less than the threshold.

### Claim 11 (depends on 10)

The system of claim 10, the second threshold device comprising a field effect transistor having:
a source;
a drain;
a gate connected to a third memristor array and to one of the source and drain; and
another of the source and the drain being connected to ground.

### Claim 12 (depends on 11)

The system of claim 11, the first threshold device comprising a field effect transistor having:
a source;
a drain; and
a gate connected to the gate of the first threshold device;
one of the source and the drain of the second threshold device being connected to the reference current; and
another of the source and the drain of the second threshold device being connected to ground.

### Claim 13 (depends on 10)

The system of claim 10, the threshold is a first threshold, the system further comprising:
a threshold module associated with a second threshold, the inverter producing the second output when the adding of respective currents is below the second threshold and greater than the first threshold.

### Claim 14 (depends on 13)

The system of claim 13, the threshold module being a first threshold module, the system further comprising:
a second threshold module associated with a third threshold, the inverter producing the first output when the adding respective of currents is below a third threshold and greater than the second threshold.

### Claim 15 (depends on 14)

The system of claim 14, the inverter producing the first output when the adding of the respective of currents is above the third threshold.

### Claim 16

A method of encrypting data, comprising:
receiving a first data block, the first data block including a first plurality of data units, each data unit having a different location within the first data block;
substituting data units of a substitution box for the data units of the first data block to form a second block of data, representing the second block by memristors within a first array of memristors; wherein a location of each memristor is arranged to represent rows and columns of an of array data units within the second block of data;
shifting locations of data units along rows of the second data block by shifting positions of values stored by memristors to form a third data block;
multiplying each column of data units of the third data block by a block of data units having fixed values to form a fourth data block;
the multiplying of each column of the data units of the third data block by the block of data units having fixed values being performed by:
multiplying a first element of a first data unit by a first instance of a second a second data unit, resulting in a first resultant data unit, the first resultant data unit being represented by a first set of memristors, the first element of the first data unit representing a multiple of a first power of a base value,
one of the first data unit and the second data unit being a data unit of the third block of data and another of the first data unit and the second data unit being a data unit of a block of data units having fixed values;
multiplying a second element of the first data unit by a second instance of the second data unit, resulting in a second resultant data unit, the second data unit being represented by a second set of memristors, the second element of the first data unit representing a multiple of a second power of the base value, the first power and second power being different; and
adding the first resultant data unit to the second resultant data unit by adding respective currents associated with the first and second sets of memristors; and
adding values of an encryption key to the data units of the third data block by adding currents of memristors representing values of the encryption key with currents of memristors representing the data units of the fourth data block.

### Claim 17 (depends on 16)

The method of claim 16, the encrypting of data units of the first data block, based on a substitution box, comprising:
determining a value for a memristor of the memristors representing the second data block, based on a memristor based lookup table.

### Claim 18 (depends on 16)

The method of claim 16, the encrypting of data units of the first data block, based on a substitution box, comprising:
encrypting, by a memristor based substitution box, results of the adding of the values of the encryption key to the data units of the fourth data block; and
adding results of the encrypting for one data unit to results of the adding of the values of the encryption key of another data unit.

### Claim 19 (depends on 17)

The method of claim 17, further comprising:
shifting positions of the data units within a group of data units prior to encrypting a result of the adding of the values of the encryption key to the data units of the fourth data block.

### Claim 20 (depends on 16)

The method of claim 16, the memristors representing the data units of the fourth block being arranged in rows and columns;
a given memristor of the data units of the fourth block, being addressable by a signal on a row electrode and a signal on a column electrode, where the given memristor is electrically connected to the column electrode and the row electrode;
the multiplying of the first element of the first data unit by the first instance of the second a second data unit, being performed by shifting memristor values associated with the first instance of the second data unit along a row by a number of positions that is determined by power of the base value of the first element of the first data unit.
