IP Library Granted Patent US 10,691,620
Granted Patent B2
US 10,691,620 · App. 16/004,663 · Granted Jun 23, 2020

Encryption of executables in computational memory

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 10,691,620
App. No.
16/004,663
Granted
Jun 23, 2020
Kind
B2
Abstract

The present disclosure is related to encryption of executables in computational memory. Computational memory can traverse an operating system page table in the computational memory for a page marked as executable. In response to finding a page marked as executable, the computational memory can determine whether the page marked as executable has been encrypted. In response to determining that the page marked as executable is not encrypted, the computational memory can generate a key for the page marked as executable. The computational memory can encrypt the page marked as executable using the key.

Claims (72)

1. A method, comprising:

traversing, by computational memory, an operating system page table in the computational memory for any page that is stored in the computational memory and marked as executable;

in response to finding a page marked as executable, determining whether the page marked as executable has been encrypted;

in response to determining that the page marked as executable is not encrypted, generating a key for the page marked as executable; and

encrypting the page marked as executable using the key.

2. The method of claim 1 , wherein traversing the operating system page table comprises traversing the operating system page table in response to receiving an instruction from a host in association with a page access.

3. The method of claim 1 , wherein the method includes granting access to a page marked as read, write, or read/write in the operating system page table without regard to encryption.

4. The method of claim 1 , wherein the method includes, in response to a request for the page marked as executable:

generating a new key; and

re-encrypting the page marked as executable using the new key; and

storing the re-encrypted page to replace the page marked as executable.

5. The method of claim 4 , wherein the method includes, in response to the request for the page marked as executable:

decrypting the re-encrypted page; and

storing the decrypted page in cache of the computational memory for transfer to satisfy the request.

6. The method of claim 1 , wherein the method includes:

receiving a new page, comprising executables;

generating a new key for the new page;

encrypting the new page using the new key;

storing the new page in the computational memory; and

creating an entry in the operating system page table for the new page, including marking the new page as executable and encrypted.

7. A method, comprising:

traversing, by computational memory, an operating system page table in the computational memory for any page that is stored in the computational memory and marked as executable;

in response to finding a first page marked as executable, determining whether the first page marked as executable has been encrypted;

in response to determining that the first page marked as executable is not encrypted, generating a first key for the first page marked as executable;

encrypting the first page marked as executable using the first key;

in response to finding a second page marked as executable, determining whether the second page marked as executable has been encrypted;

in response to determining that the second page marked as executable is not encrypted, generating a second key for the second page marked as executable; and

encrypting the second page marked as executable using the second key.

8. The method of claim 7 , wherein the method includes:

receiving a third page, comprising executables;

generating a third key for the third page;

encrypting the third page using the third key; and

storing the third page in the computational memory.

9. The method of claim 8 , wherein the method includes creating an entry in the operating system page table for the third page, including:

marking the third page as executable and encrypted; and

storing the third key in the entry.

10. A non-transitory computer readable medium storing instructions executable by computational memory to:

determine whether a requested page stored in the computational memory and marked as executable has been encrypted;

in response to determining that the requested page is not encrypted:

store the requested page in cache of the computational memory;

generate a key;

encrypt the requested page using the key; and

store the encrypted page to replace the requested page in the computational memory; and

in response to determining that the requested page is encrypted:

generate a new key;

re-encrypt the requested page using the new key;

store the re-encrypted page to replace the requested page in the computational memory; and

decrypt the requested page and store the decrypted page in the cache of the computational memory.

11. The medium of claim 10 , wherein the instructions are executable to transfer the requested page or the decrypted page from the cache to a source of the request.

12. The medium of claim 10 , wherein the instructions are executable to, in response to a subsequent request for the requested page, transfer the requested page or the decrypted requested page from the cache to a source of the request.

13. The medium of claim 10 , wherein the cache comprises a non-addressable area of the computational memory.

14. The medium of claim 10 , wherein the instructions to determine whether the requested page has been encrypted comprise instructions to reference an operating system page table in the computational memory that indicates whether pages are encrypted and whether pages are executable.

15. An apparatus, comprising:

a computational memory configured to:

encrypt a first page in response to the first page not being encrypted and in response to the first page being stored in the computational memory and marked as executable according to a traversal of an operating system page table in the computational memory by the computational memory;

encrypt a second page stored in the computational memory and marked as executable in response to the second page not being encrypted and in response to the second page being requested; and

re-encrypt a third page stored in the computational memory and marked as executable with a unique key and store the re-encrypted third page in the computational memory to replace the third page in response to the third page being encrypted and in response to the third page being requested.

16. The apparatus of claim 15 , wherein the computational memory is configured to use unique keys generated with an entropy source in the computational memory to encrypt or re-encrypt pages in the computational memory.

17. The apparatus of claim 16 , wherein the entropy source comprises at least one of the group of entropy sources including a phase-locked loop frequency, a serial number of the apparatus, and a timer.

18. The apparatus of claim 15 , wherein the computational memory is configured to store the second page in a cache in the computational memory, prior to encrypting the second page, for transfer according to the request.

19. The apparatus of claim 18 , wherein the computational memory is configured to transfer the second page from the cache in response to a subsequent request for the second page.

20. The apparatus of claim 15 , wherein the computational memory is configured to decrypt the third page and store the decrypted third page in cache for transfer according to the request.

21. A method, comprising:

receiving a request for a page stored in a computational memory;

determining whether the requested page stored in the computational memory has been marked as executable in an operating system page table in the computational memory;

determining whether the requested page has been indicated as encrypted in the operating system page table in the computational memory; and

in response to determining that the requested page is executable and encrypted:

generating a new key;

re-encrypting the requested page using the new key;

storing the re-encrypted page to replace the requested page in the computational memory;

decrypting the requested page and storing the decrypted page in the cache of the computational memory; and

transferring the decrypted requested page from the cache to satisfy the request.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 11, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050713/0001 →
SUPPLEMENT NO. 9 TO PATENT SECURITY AGREEMENT Recorded Aug 9, 2018
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 047282/0463 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2018
From: LEA, PERRY V.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 046041/0864 →