Cryptographic enforcement of borrow checking

US12008374B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-12008374-B2
Application numberUS-202217696153-A
CountryUS
Kind codeB2
Filing dateMar 16, 2022
Priority dateMar 16, 2022
Publication dateJun 11, 2024
Grant dateJun 11, 2024

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.

The technology includes allocating an object in a memory and setting an ownership identifier (ID) in the allocated object, the allocated object being associated with a first variable in a program and setting a matching ownership ID in a pointer to the allocated object. When the allocated object is accessed during execution of the program by a processor, an exception is generated when the ownership ID in the allocated object does not match the ownership ID in the pointer, and execution of the program is continued when the ownership ID in the allocated object does match the ownership ID in the pointer.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus comprising: a memory to store an object; and a processor to allocate the object in the memory and set an ownership identifier (ID) in the allocated object, the allocated object being associated with a first variable in a program; set a matching ownership ID in a pointer to the allocated object; when the allocated object is accessed during execution of the program, generate an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continue execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer; when the allocated object is associated with a second variable in the program, update the ownership ID in the allocated object and set a matching updated ownership ID in the pointer to the allocated object; and when the allocated object is accessed during execution of the program, generate an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continue execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer. 2. The apparatus of claim 1 , comprising the processor to update the ownership ID in the allocated object by executing a transfer ownership instruction. 3. The apparatus of claim 1 , comprising the processor to set the matching updated ownership ID in the pointer to the allocated object by executing a transfer ownership instruction. 4. The apparatus of claim 3 , wherein the processor implements the transfer ownership instruction by randomizing the ownership ID for the allocated object and generating a new pointer with the updated ownership ID after checking that a pointer as an operand to the transfer ownership instruction has an ownership ID matching the allocated object. 5. The apparatus of claim 1 , comprising the processor to set the matching ownership ID in the pointer to the allocated object by executing an encrypt pointer instruction. 6. The apparatus of claim 1 , wherein the matching ownership ID is stored in a tag field in the pointer. 7. The apparatus of claim 1 , wherein the allocated object is immutable. 8. The apparatus of claim 7 , comprising the processor to set the allocated object as immutable by executing a mark immutable instruction. 9. The apparatus of claim 8 , comprising the processor to set an immutable flag in metadata of the allocated object during executing the mark immutable instruction. 10. The apparatus of claim 7 , comprising the processor to determine if the allocated object is immutable by executing an assert immutable instruction. 11. The apparatus of claim 1 , wherein the allocated object is allocated in the memory to a best-fitting, power-of-two-aligned slot. 12. The apparatus of claim 1 , wherein the ownership ID of the allocated object is stored in metadata inline with the allocated object. 13. The apparatus of claim 1 , comprising the processor to locate the ownership ID in constant time. 14. A method comprising: allocating an object in a memory and setting an ownership identifier (ID) in the allocated object, the allocated object being associated with a first variable in a program; setting a matching ownership ID in a pointer to the allocated object; when the allocated object is accessed during execution of the program by a processor, generating an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continuing execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer; when the allocated object is associated with a second variable in the program, updating the ownership ID in the allocated object and setting a matching updated ownership ID in the pointer to the allocated object; and when the allocated object is accessed during execution of the program, generating an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continuing execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer. 15. The method of claim 14 , comprising updating the ownership ID in the allocated object is performed by executing a transfer ownership instruction by the processor. 16. The method of claim 14 , comprising setting the matching updated ownership ID in the pointer to the allocated object by executing a transfer ownership instruction by the processor. 17. The method of claim 16 , wherein the transfer ownership instruction is implemented by randomizing the ownership ID for the allocated object and generating a new pointer with the updated ownership ID after checking that a pointer as an operand to the transfer ownership instruction has an ownership ID matching the allocated object. 18. The method of claim 14 , comprising setting the matching ownership ID in the pointer to the allocated object by executing an encrypt pointer instruction by the processor. 19. The method of claim 14 , wherein the matching ownership ID is stored in a tag field in the pointer. 20. The method of claim 14 , wherein the allocated object is immutable. 21. The method of claim 20 , comprising setting the allocated object as immutable by executing a mark immutable instruction by the processor. 22. The method of claim 21 , comprising setting an immutable flag in metadata of the allocated object during executing the mark immutable instruction. 23. At least one non-transitory machine-readable storage medium comprising instructions that, when executed, cause a processor to at least: allocate an object in a memory and set an ownership identifier (ID) in the allocated object, the allocated object being associated with a first variable in a program; set a matching ownership ID in a pointer to the allocated object; when the allocated object is accessed during execution of the program, generate an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continue execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer; when the allocated object is associated with a second variable in the program, update the ownership ID in the allocated object and set a matching updated ownership ID in the pointer to the allocated object; and when the allocated object is accessed during execution of the program, generate an exception when the ownership ID in the allocated object does not match the ownership ID in the pointer, and continue execution of the program when the ownership ID in the allocated object does match the ownership ID in the pointer. 24. The at least one non-transitory machine-readable storage medium of claim 23 , comprising instructions for the processor to update the ownership ID in the allocated object by executing a transfer ownership instruction. 25. The at least one non-transitory machine-readable storage medium of claim 23 , comprising instructions for the processor to set the matching updated ownership ID in the pointer to the allocated object by executing a transfer ownership instruction. 26. The at least one non-transitory machine-readable storage medium of claim 25 , comprising instructions to implement the transfer ownership instruction by randomizing the ownership ID for the allocated object and generating a new point

Assignees

Inventors

Classifications

  • the resource being the memory · CPC title

  • Providing cryptographic facilities or services · CPC title

  • in semiconductor storage media, e.g. directly-addressable memories · CPC title

  • to perform operations on memory · CPC title

  • by runtime analysis (performance monitoring G06F11/3466) · 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 US12008374B2 cover?
The technology includes allocating an object in a memory and setting an ownership identifier (ID) in the allocated object, the allocated object being associated with a first variable in a program and setting a matching ownership ID in a pointer to the allocated object. When the allocated object is accessed during execution of the program by a processor, an exception is generated when the owners…
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/30178. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 11 2024 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 4 related publications on this page (citations in our corpus or others sharing the same primary CPC).