Physical address randomization for secure encrypted memory

US10810137B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10810137-B2
Application numberUS-201715443745-A
CountryUS
Kind codeB2
Filing dateFeb 27, 2017
Priority dateFeb 27, 2017
Publication dateOct 20, 2020
Grant dateOct 20, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An operating system (OS) receives a request to allocate a physical memory page to an address space of an application. The OS maintains a data structure that stores references to a plurality of physical memory pages that are available to be allocated, and generates a random index into the data structure, wherein the random index comprises a random number, and wherein the random index corresponds to a first reference for a first physical memory page of the plurality of physical memory pages. The OS selects the first physical memory page of the plurality of memory pages from the data structure using the random index, and maps the first physical memory page to the address space of the application.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: maintaining, by a computing device executing an operating system, a first data structure that stores references to a first plurality of physical memory pages that are available to be allocated to a first processor, and a second data structure that stores references to a second plurality of physical memory pages that are available to be allocated to a second processor and; detecting, by the computing device, a page fault generated in response to an attempt by an application to access a virtual memory address associated with a memory address space of the application; determining, responsive to detecting the page fault, whether the application has been executed on the first processor or the second processor; invoking, by the computing device, responsive to determining that the application has been executed on the first processor, a random index generator to generate a random index into the first data structure, wherein the random index comprises a random number, and wherein the random index corresponds to a first reference for a first physical memory page of the first plurality of physical memory pages; selecting, by the computing device, the first physical memory page of the first plurality of physical memory pages from the first data structure using the random index; and mapping the first physical memory page to the memory address space of the application. 2. The method of claim 1 , wherein the application is a virtual machine application. 3. The method of claim 1 , wherein generating the random index comprises generating a random number that corresponds to an item in the first data structure. 4. The method of claim 1 , wherein the random index is generated when the operating system initializes. 5. The method of claim 1 , wherein the random index is generated when the application initializes. 6. The method of claim 1 , wherein the random index is generated when the page fault is detected. 7. The method of claim 1 , wherein generating the random index comprises: starting a timer to expire after a first time period; and responsive to determining that the first time period has expired, generating the random index. 8. The method of claim 1 , further comprising: removing a reference to the first physical memory page from the first data structure. 9. The method of claim 1 , further comprising: receiving a request from the application to write data to the first physical memory page; encrypting the data in view of location information associated with the first physical memory page to generate an encrypted data; and writing the encrypted data to the first physical memory page. 10. A system comprising: a memory; a computing device, operatively coupled to the memory, wherein the computing device comprises a first processor and a second processor, and wherein the computing device is to execute an operating system to: maintain a first data structure that stores references to a first plurality of physical memory pages that are available to be allocated, wherein the first plurality of physical memory pages is apportioned to the first processor; maintain a second data structure that stores references to a second plurality of physical memory pages that are available to be allocated, wherein the second plurality of physical memory pages is apportioned to the second processor; receive a request to allocate a physical memory page to an address space of an application; determine, responsive to receiving the request to allocate the physical memory page, whether the application has been executed on the first processor or the second processor; generate, responsive to determining that the application has been executed on the first processor, a random index into the first data structure, wherein the random index comprises a random number, and wherein the random index corresponds to a first reference for a first physical memory page of the first plurality of physical memory pages; select, by the computing device executing the operating system, the first physical memory page of the first plurality of physical memory pages from the first data structure using the random index; and map the first physical memory page to the address space of the application. 11. The system of claim 10 , wherein to receive the request, the computing device is to: detect a page fault generated by the application responsive to an attempt by the application to access a virtual memory address associated with the address space of the application. 12. The system of claim 10 , wherein the first data structure comprises a list of references to available physical memory pages associated with the first processor, and wherein to generate the random index, the computing device is to generate a random number that corresponds to an item on the list of references. 13. The system of claim 10 , wherein the random index is generated when the operating system initializes. 14. The system of claim 10 , wherein to maintain the first data structure, the computing device is to: identify the first plurality of physical memory pages for the first processor; store the references to the first plurality of physical memory pages in the first data structure; and remove, responsive to selecting the first physical memory page, the reference to the first physical memory page from the first data structure. 15. The system of claim 10 , wherein to generate the random index, the computing device is to: start a timer to expire after a first time period; and responsive to determining that the first time period has expired, generate the random index. 16. A non-transitory computer readable storage medium, having instructions stored therein, which when executed by a computing device, cause the computing device to execute a hypervisor to: maintain a first data structure that stores references to a first plurality of physical memory pages that are available to be allocated to a first processor, and a second data structure that stores references to a second plurality of physical memory pages that are available to be allocated to a second processor and; detect a page fault generated in response to an attempt by an application to access a virtual memory address associated with a memory address space of a virtual machine; determining, responsive to detecting the page fault, whether the application has been executed on the first processor or the second processor; invoke, responsive to determining that the application has been executed on the first processor, a random index generator to generate a random index into the first data structure, wherein the random index comprises a random number, and wherein the random index corresponds to a first reference for a first physical memory page of the first plurality of physical memory pages; select the first physical memory page of the first plurality of physical memory pages from the first data structure using the random index; and map the first physical memory page to the memory address space of the virtual machine. 17. The non-transitory computer readable storage medium of claim 16 , wherein the application is a virtual machine application. 18. The non-transitory computer readable storage medium of claim 16 , wherein to generate the random index the hypervisor is to generate a random number that corresponds to an item in the first data structure. 19. The non-transitory computer readable storage medium of claim 16 , wherein the random index is generated when the hypervisor initializes.

Assignees

Inventors

Classifications

  • Emulated environment, e.g. virtual machine · CPC title

  • in hierarchically structured memory systems, e.g. virtual memory systems · CPC title

  • Memory management, e.g. access or allocation · CPC title

  • by using cryptography (for digital transmission H04L9/00) · CPC title

  • Security improvement · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10810137B2 cover?
An operating system (OS) receives a request to allocate a physical memory page to an address space of an application. The OS maintains a data structure that stores references to a plurality of physical memory pages that are available to be allocated, and generates a random index into the data structure, wherein the random index comprises a random number, and wherein the random index corresponds…
Who is the assignee on this patent?
Red Hat Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/1408. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 20 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).