IP Library › Granted Patent US 12,562,918
Granted Patent B2
US 12,562,918 · App. 18/326,910 · Granted Feb 24, 2026

Pointer authentication

Inventors: Yin Zin Mark Lam (Milpitas, CA); Jeff Gonion (Campbell, CA)
Assignee: Apple Inc.
H04L9/3247G06F21/52
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 12,562,918
App. No.
18/326,910
Granted
Feb 24, 2026
Kind
B2
Abstract

In an embodiment, a processor includes hardware circuitry which may be used to detect that a return address has been modified since it was generated. In response to detecting the modification, the processor may be configured to signal an exception or otherwise initiate error handling to prevent execution at the modified return address. In an embodiment, the processor may perform a cryptographic signature operation on the return address to generate a signed return address, and the signature may be verified before the address is used as a return target.

Claims (42)

1 . A processor comprising:

one or more registers; and

an execution core coupled to the one or more registers, wherein:

the execution core is configured to execute an instruction to perform a signature operation on a first value to generate a signed value and to store the signed value to a storage location for subsequent use; and

to generate the signed value, the execution core is further configured to perform the signature operation based on a cryptographic key, the value of a stack pointer stored in one of the one or more registers, and an address at which the instruction is stored.

2 . The processor as recited in claim 1 wherein the signature operation is based on the address and an offset specified by the instruction.

3 . The processor as recited in claim 1 wherein the storage location is one of the one or more registers.

4 . The processor as recited in claim 1 wherein the storage location is indicated by the value of the stack pointer.

5 . The processor as recited in claim 1 wherein to store the signed value to the storage location the execution core is configured to store the signed value using a subset of bits of the storage location.

6 . The processor as recited in claim 1 wherein the signed value is a partial portion of an encryption generated from the signature operation on the first value.

7 . The processor as recited in claim 1 wherein the signature operation is based on a block cipher algorithm.

8 . The processor as recited in claim 7 wherein the block cipher algorithm includes one of: advanced encryption standard (AES), data encryption standard (DES), international data encryption algorithm (IDEA), or PRINCE.

9 . The processor as recited in claim 1 wherein to perform the signature operation the execution core is further configured to:

perform a combination or concatenation operation on the first value, the value of the stack pointer, and the address of the instruction to generate a combined value; and

perform the signature operation on the combined value to generate the signed value based on the cryptographic key.

10 . The processor as recited in claim 9 wherein the combination operation is based on an exclusive-OR function.

11 . The processor as recited in claim 1 wherein prior to performing the signature operation the execution core is configured to:

perform a combination operation on the address of the instruction and an offset to generate a combined value; and

perform the signature operation on the combined value to generate the signed value based on the cryptographic key.

12 . The processor as recited in claim 1 wherein the execution core is configured to perform an authenticate operation using the signed value for the subsequent use.

13 . The processor as recited in claim 12 wherein to perform the authenticate operation the execution core is configured to:

obtain a value from the storage location for the subsequent use;

perform a second signature operation on the obtained value to generate a second signed value;

authenticate the obtained value based on the signed value and the second signed value.

14 . The processor as recited in claim 13 wherein to authenticate the obtained value the execution core is configured to determine whether the signed value matches the second signed value based on comparison of the signed value and the second signed value.

15 . The processor as recited in claim 13 wherein the obtained value is a return address for a call to a subroutine that is terminated by one or more return instructions.

16 . The processor as recited in claim 15 wherein the second signature operation is based on the cryptographic key, the value of the stack pointer, and an address of an initial instruction in the subroutine.

17 . The processor as recited in claim 13 wherein the second signature operation is based on the cryptographic key, the value of the stack pointer, and an address at which an instruction corresponding to the authentication operation is stored.

18 . A method comprising:

generating a return address for a call to a subroutine that is terminated by a return instruction;

performing a signature operation on the return address to generate a signed return address, wherein the signature operation is based on a cryptographic key, a value of a stack pointer, and an address of an initial instruction in the subroutine;

detecting an attempt to use the signed return address by the return instruction;

authenticating the return instruction based on the signed address responsive to detecting the attempt; and

preventing the return due to a failure in authenticating the return instruction.

19 . The method as recited in claim 18 wherein authenticating the signed address responsive to detecting the attempt comprises:

obtaining an address for the return instruction;

performing a second signature operation on the obtained address to generate a second signed return address, wherein the second signature operation is based on the cryptographic key, the value of a stack pointer, and an address of the return instruction; and

authenticating the return instruction based on comparison of the signed address and the second signed address.

20 . The method as recited in claim 18 further comprising:

prior to performing the signature operation,

performing a combination operation on the return address, the value of the stack pointer, and the address of the initial instruction to generate a combined value; and

performing the signature operation on the combined value to generate the signed value based on the cryptographic key.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2023
From: LAM, YIN ZIN MARK; GONION, JEFF
To: APPLE INC.
Reel/Frame 064257/0289 →
Continuity (2)
Provisional Application 63354611 · Jun 22, 2022
Related Publication 20230421354A1 · Dec 28, 2023
References Cited (43)
US 7308576B2 · Glew et al. · 2007 [cited by applicant]
US 7720939B1 · Leroy · 2010 [cited by applicant]
US 8635406B2 · Greenhalgh · 2014 [cited by applicant]
US 9122873B2 · Ghose · 2015 [cited by applicant]
US 9514305B2 · Acar et al. · 2016 [cited by applicant]
US 10275365B1 · Gonion · 2019 [cited by applicant]
US 10409600B1 · Sierra et al. · 2019 [cited by applicant]
US 10831484B1 · Sierra · 2020 [cited by examiner]
US 11176243B2 · Shanbhogue et al. · 2021 [cited by applicant]
US 11514159B2 · Vandergeest · 2022 [cited by applicant]
US 20040064457A1 · Zimmer · 2004 [cited by applicant]
US 20050188214A1 · Worley et al. · 2005 [cited by applicant]
US 20070016832A1 · Weiss · 2007 [cited by applicant]
US 20080244114A1 · Schluessler · 2008 [cited by applicant]
US 20080250217A1 · Kershaw et al. · 2008 [cited by applicant]
US 20120233612A1 · Beckett · 2012 [cited by applicant]
US 20140082329A1 · Ghose · 2014 [cited by applicant]
US 20140096245A1 · Fischer · 2014 [cited by applicant]
US 20140122846A1 · Vasekin · 2014 [cited by applicant]
US 20150040224A1 · Litva et al. · 2015 [cited by applicant]
US 20150046690A1 · Eickemeyer · 2015 [cited by applicant]
US 20160094552A1 · Durham · 2016 [cited by examiner]
US 20160170769A1 · LeMay · 2016 [cited by applicant]
US 20160171211A1 · Chen et al. · 2016 [cited by applicant]
US 20160188874A1 · Oxford · 2016 [cited by applicant]
US 20160378499A1 · Burger · 2016 [cited by applicant]
US 20170024559A1 · Hughes · 2017 [cited by applicant]
US 20180183574A1 · Ghosh · 2018 [cited by examiner]
US 20180307838A1 · Sharma et al. · 2018 [cited by applicant]
US 20190087566A1 · Hosie · 2019 [cited by examiner]
US 20200082070A1 · Semeria · 2020 [cited by examiner]
US 20220191020A1 · Moreira · 2022 [cited by examiner]
US 20230088081A1 · Lin · 2023 [cited by examiner]
US 20230259605A1 · Larri · 2023 [cited by examiner]
US 20240386094A1 · Hornung · 2024 [cited by examiner]
International Search Report from PCT/US2023/025420, dated Sep. 27, 2023, pp. 1-11. [cited by applicant]
Law, et al., “Survey and Benchmark of Block Ciphers for Wireless Sensory Networks,” ACM Transactions on Sensor Networks (TOSN): ACM New York, NY, USA; vol. 2, Issue 1, Feb. 2006, pp. 65-93. [cited by applicant]
Borghoff, et al., “PRINCE: a Low-Latency Block Cipher for Pervasive Computing Applications,” Asiacrypt'12 Proceedings of the 18th International Conference on the Theory and Application of Cryptology and Information Secu… [cited by applicant]
Jean, et al., “Security Analysis of PRINCE,” FSE 2013, Mar. 2013, Singapore, Singapore. 2013, pp. 1-12. [cited by applicant]
Watson, Robert NM, et al., “CHERI: a research platform deconflating hardware virtualization and protection” Workshop paper, Runtime Environmeents, Systems, Layering and Virtualized Environments (RESoLVE 2012), 2012, pp.… [cited by applicant]
Kui Xu, et al., “Probabilistic Program Modeling for High-Precision Anomaly Classification,” IEEE, 2015, pp. 1-15. [cited by applicant]
Tyler Bletsch, et al., “Jump-Oriented Programming: A New Class of Code-Reuse Attack,” ACM 2011, pages. [cited by applicant]
International Preliminary Report from PCT/US2023/025420, dated Jan. 2, 2025, pp. 1-7. [cited by applicant]