IP Library Granted Patent US 11,748,468
Granted Patent B2
US 11,748,468 · App. 17/497,826 · Granted Sep 5, 2023

Dynamic switching between pointer authentication regimes

Inventors: Bernard J. Semeria (Palo Alto, CA); Devon S. Andrade (Santa Clara, CA); Jeremy C. Andrus (Sunnyvale, CA); Ahmed Bougacha (San Jose, CA); Peter Cooper (San Jose, CA); Jacques Fortier (San Francisco, CA); Louis G. Gerbarg (San Francisco, CA); James H. Grosbach (San Jose, CA); Robert J. McCall (New York, NY); Daniel A. Steffen (San Francisco, CA); Justin R. Unger (San Jose, CA)
Assignee: Apple Inc.
G06F21/44G06F12/109G06F15/7807G06F21/125G06F21/54G06F21/565G06F21/78H04L9/0861H04L9/3236H04L9/3247H04L63/06
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,748,468
App. No.
17/497,826
Granted
Sep 5, 2023
Kind
B2
Abstract

Embodiments described herein enable the interoperability between processes configured for pointer authentication and processes that are not configured for pointer authentication. Enabling the interoperability between such processes enables essential libraries, such as system libraries, to be compiled with pointer authentication, while enabling those libraries to still be used by processes that have not yet been compiled or configured to use pointer authentication.

Claims (41)

1. A method performed by an execution core of a processor coupled to a memory, the method comprising:

determining that a first mode of the execution core is enabled for a first process, wherein the first process supports pointer authentication;

authenticating, while in the first mode, a first memory address via a signature associated with the first memory address, the authenticating occurring before execution of an instruction associated with the first memory address;

switching from the first mode to a second mode in response to execution of an instruction of a second process fetched from the memory, wherein the second process does not support pointer authentication; and

bypassing, while in the second mode, authentication of a second memory address for the second process.

2. The method according to claim 1 , further comprising:

determining that the first mode of the execution core is enabled for a third process; and

after determining that the first mode is enabled for the third process, enabling a key for generating a signature for the third process that is different from a key for generating a signature for the first process.

3. The method according to claim 1 , further comprising, prior to switching between the first mode to the second mode, toggling a key enable setting.

4. The method according to claim 3 , wherein toggling the key enable setting enables memory address signing or disables memory address signing.

5. The method according to claim 1 , further comprising:

in response to determining that the first mode is enabled for the first process, generating the signature associated with the first memory address.

6. The method according to claim 5 , further comprising, after generating the signature, enabling a key to authenticate the signature associated with the first memory address.

7. The method according to claim 1 , wherein the second mode is for a process that does not support memory address signing.

8. The method according to claim 1 , further comprising:

in response to determining that the second mode is enabled for the second process, disabling a key to authenticate the signature associated with the second memory address.

9. The method according to claim 1 , wherein the execution core is configured to switch between the first mode and the second mode at a boundary between execution of the first process and execution of the second process.

10. The method according to claim 1 , wherein the first mode enables use of a system library compiled with pointer authentication, and wherein the second mode enables use of a system library that is not compiled with pointer authentication.

11. The method according to claim 1 , wherein the execution core is an operating system kernel of the processor.

12. A system comprising:

a memory to store data and instructions; and

a processor coupled to the memory, the processor including an execution core, wherein the execution core is switchable between a first mode and a second mode,

wherein, in the first mode that is enabled for a first process, the execution core is configured to authenticate a first memory address via a signature associated with the first memory address, before execution of an instruction associated with the first memory address, and

wherein, in the second mode, the execution core is configured to bypass authentication of a second memory address for a second process without support for pointer authentication, and wherein the processor is configured to switch between the first mode and the second mode in response to execution of an instruction fetched from the memory.

13. The system according to claim 12 , wherein the processor is further configured to:

determine that the first mode of the execution core is enabled for a third process; and

after determining that the first mode is enabled for the third process, enable a key for generating a signature for the third process that is different from a key for generating a signature for the first process.

14. The system according to claim 12 , wherein the processor is further configured to, prior to switching between the first mode to the second mode, toggle a key enable setting.

15. The system according to claim 14 , wherein toggling the key enable setting enables memory address signing or disables memory address signing.

16. The system according to claim 12 , wherein the processor is further configured to:

in response to determining that the first mode is enabled for the first process, generate the signature associated with the first memory address.

17. The system according to claim 16 , wherein the processor is further configured to, after generating the signature, enable a key to authenticate the signature associated with the first memory address.

18. The system according to claim 12 , wherein the processor is further configured to:

in response to determining that the second mode is enabled for the second process, disable a key to authenticate the signature associated with the second memory address.

19. The system according to claim 12 , wherein the execution core is configured to switch between the first mode and the second mode at a boundary between execution of the first process and execution of the second process.

20. The system according to claim 12 , wherein the first mode enables use of a system library compiled with pointer authentication, and wherein the second mode enables use of a system library that is not compiled with pointer authentication.

21. A non-transitory machine readable medium storing instructions which, when executed, cause one or more processors to perform operations comprising:

determining that a first mode of an execution core is enabled for a first process, wherein the first process supports pointer authentication;

authenticating, while in the first mode, a first memory address via a signature associated with the first memory address, the authenticating occurring before execution of an instruction associated with the first memory address;

switching from the first mode to a second mode in response to execution of an instruction of a second process fetched from a memory, wherein the second process does not support pointer authentication; and

bypassing, while in the second mode, authentication of a second memory address for the second process.

Continuity (3)
Continuation 16539356 · Aug 13, 2019
Provisional Application 62729958 · Sep 11, 2018
Related Publication 20220027452A1 · Jan 27, 2022