IP Library › Granted Patent US 11,783,094
Granted Patent B2
US 11,783,094 · App. 17/270,967 · Granted Oct 10, 2023

System and method for providing protected data storage in data memory

Inventors: Tuomas Kärkkäinen (Turku, FI); Jouni Laine (Turku, FI)
Assignee: Gurulogic Microsystems Oy
G06F21/78G06F21/54G06F21/602G06F21/6209G06F21/75G06F2221/0751
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 11,783,094
App. No.
17/270,967
Granted
Oct 10, 2023
Kind
B2
Abstract

A system for protected data storage in a data memory of a computing device includes an encoder and a decoder. The encoder encrypts unencrypted data using encryption information to generate encrypted data, and stores the encrypted data and the encryption information in data memory. The decoder accesses the encrypted data and the encryption information from the data memory, and decrypts the encrypted data using the encryption information to re-generate the unencrypted data. Each time the unencrypted data is read from data memory or the unencrypted data is to be written to the data memory, the encoder re-encrypts the unencrypted data using newer encryption information to generate newer encrypted data, and replaces previous encrypted data and previous encryption information with the newer encrypted data and the newer encryption information, respectively, in the data memory. The encoder and the decoder are integrated, to operate in a single thread of execution.

Claims (34)

1. A system that, when in operation, provides protected data storage in a first data memory of a computing device, wherein the system comprises:

an encoder executing on a processing hardware of the computing device, wherein the encoder, when in operation:

generates encryption information from at least one initialization value according to an encryption algorithm, wherein the at least one initialization value is used only internally in the encryption algorithm to generate the encryption information,

encrypts unencrypted data using the encryption information to generate encrypted data, and

stores the encrypted data in an allocated portion of a first data memory and the encryption information in an allocated portion of a second data memory of the computing device, wherein the second data memory is different from the first data memory; and

a decoder executing on the processing hardware of the computing device, wherein the decoder, when in operation:

accesses the encrypted data and the encryption information from the allocated portion of the first data memory and the allocated portion of the second data memory, respectively, and

decrypts the encrypted data using the encryption information to re-generate the unencrypted data;

wherein the encoder, when in operation:

generates new encryption information according to the encryption algorithm,

re-encrypts the unencrypted data using the new encryption information to generate new encrypted data, and

replaces the encrypted data and the encryption information with the new encrypted data and the new encryption information in the allocated portion of the first data memory and the allocated portion of the second data memory, respectively,

wherein the unencrypted data is re-encrypted using newer encryption information to generate newer encrypted data each time the unencrypted data is read from the allocated portion of the first data memory or the unencrypted data is to be written to the allocated portion of the first data memory, wherein previous encrypted data and previous encryption information are to be replaced with the newer encrypted data and the newer encryption information in the allocated portion of the first data memory and the allocated portion of the second data memory, respectively,

further wherein the encoder and the decoder are integrated, such that the decoder and the encoder, when in operation, decrypt the previous encrypted data into the unencrypted data and re-encrypt the unencrypted data into the newer encrypted data, respectively, in a single thread of execution, and wherein the encoder and the decoder are implemented by way of a low-level code in an inline configuration, such that a cycle of decryption and encryption is not interrupted.

2. The system of claim 1 , wherein the encoder, when in operation, generates the encryption information initially from at least one initialization value, and the system further comprises an obfuscation module executing on the processing hardware of the computing device, wherein the obfuscation module, when in operation, obfuscates the at least one initialization value stored in its corresponding allocated portion of the first data memory or the second data memory prior to releasing the corresponding allocated portion of the first data memory or the second data memory.

3. The system of claim 1 , wherein the unencrypted data comprises unencrypted data values of at least one protected variable that are to be utilized during a runtime execution of a program, and the encryption information comprises at least one key to be used to encrypt the unencrypted data values to generate encrypted data values and/or to decrypt the encrypted data values to re-generate the unencrypted data values.

4. The system of claim 1 , wherein the unencrypted data comprises unencrypted data values of at least one protected variable that are to be utilized during a runtime execution of a program, and the encryption information comprises an index of at least one key to be used to encrypt the unencrypted data values to generate encrypted data values and/or to decrypt the encrypted data values to re-generate the unencrypted data values, wherein the at least one key is to be generated by or accessed from a key store using the index.

5. The system of claim 4 , wherein the encryption information further comprises a unique identifier of the key store from which the at least one key is to be generated or accessed.

6. The system of claim 1 , wherein the encoder, when in operation, generates the encryption information randomly.

7. A method for providing protected data storage in a first data memory of a computing device, the method being implemented by a system comprising an encoder and a decoder, wherein the method comprises:

generating, via the encoder, encryption information from at least one initialization value according to an encryption algorithm, wherein the at least one initialization value is used only internally in the encryption algorithm to generate the encryption information to generate the encryption information;

encrypting, via the encoder, unencrypted data using the encryption information to generate encrypted data and storing the encrypted data in an allocated portion of a first data memory and the encryption information in an allocated portion of a second data memory of the computing device wherein the second data memory is different from the first data memory;

accessing, via the decoder, the encrypted data and the encryption information from the allocated portion of the first data memory and the allocated portion of the second data memory, respectively, and decrypting the encrypted data using the encryption information to re-generate the unencrypted data;

generating, via the encoder, new encryption information according to the encryption algorithm; and

re-encrypting, via the encoder, the unencrypted data using the new encryption information to generate new encrypted data and replacing the encrypted data and the encryption information with the new encrypted data and the new encryption information in the allocated portion of the first data memory and the allocated portion of the second data memory, respectively,

wherein the steps of generating newer encryption information, re-encrypting the unencrypted data to generate newer encrypted data and replacing previous encrypted data and previous encryption information with the newer encrypted data and the newer encryption information in the allocated portion of the first data memory and the allocated portion of the second data memory, respectively, are repeated each time the unencrypted data is read from the allocated portion of the first data memory or the unencrypted data is to be written to the allocated portion of the first data memory,

further wherein the encoder and the decoder are integrated, such that the steps of decrypting the previous encrypted data into the unencrypted data, re-encrypting the unencrypted data into the newer encrypted data and replacing the previous encrypted data and the previous encryption information with the newer encrypted data and the newer encryption information, respectively, are performed in a single thread of execution and wherein the encoder and the decoder are implemented by way of a low-level code in an inline configuration, such that a cycle of decryption and encryption is not interrupted.

8. The method of claim 7 , wherein the method further comprises:

generating initially, via the encoder, the encryption information from at least one initialization value; and

obfuscating the at least one initialization value stored in its corresponding allocated portion of the first data memory or the second data memory prior to releasing the corresponding allocated portion of the first data memory or the second data memory.

9. The method of claim 7 , wherein the unencrypted data comprises unencrypted data values of at least one protected variable that are to be utilized during a runtime execution of a program, and the encryption information comprises at least one key to be used to encrypt the unencrypted data values to generate encrypted data values and/or to decrypt the encrypted data values to re-generate the unencrypted data values.

10. The method of claim 7 , wherein the unencrypted data comprises unencrypted data values of at least one protected variable that are to be utilized during a runtime execution of a program, and the encryption information comprises an index of at least one key to be used to encrypt the unencrypted data values to generate encrypted data values and/or to decrypt the encrypted data values to re-generate the unencrypted data values, wherein the method further comprises generating by or accessing from a key store the at least one key using the index.

11. The method of claim 7 , wherein the encryption information is generated randomly.

12. A computer program product comprising a non-transitory computer-readable storage medium having computer-readable instructions stored thereon, the computer-readable instructions being executable by a computerized device comprising processing hardware to execute a method as claimed in claim 7 .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2021
From: KARKKAINEN, TUOMAS; LAINE, JOUNI
To: GURULOGIC MICROSYSTEMS OY
Reel/Frame 055388/0277 →
Priority Claims (1)
GB 1814149 · Aug 31, 2018 · national
Continuity (1)
Related Publication 20210319142A1 · Oct 14, 2021