IP Library Granted Patent US 10,552,602
Granted Patent B2
US 10,552,602 · App. 15/507,800 · Granted Feb 4, 2020

System and method for protecting a device against attacks on processing flow using a code pointer complement

Inventor: Lance Hannen-Williams (Meudon, FR)
Assignee: Thales Dis France SA
G06F21/52G06F21/55G06F21/566G06F21/57G06F21/577G06F2221/033
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,552,602
App. No.
15/507,800
Granted
Feb 4, 2020
Kind
B2
Abstract

A system, method and computer-readable storage medium with instructions for operating a processor of an electronic device to protect against unauthorized manipulation of the code pointer by maintaining and updating a code pointer complement against which the code pointer may be verified. Other systems and methods are disclosed.

Claims (21)

1. A method for operating a processor to protect the processor from attacks targeting a software code pointer of the processor, comprising:

setting a fixed initial value of a software code pointer complement;

setting the software code pointer complement to the fixed initial value of the software code pointer complement;

executing an instruction pointed to by the software code pointer;

updating the software code pointer by adding an offset such that the updated software code pointer points to a next instruction to be executed by the processor;

updating the software code pointer complement by subtracting the offset added to the software code pointer from the software code pointer complement;

performing a verification calculation using a function that accepts both the software code pointer and the software code pointer complement to produce a verification result indicative of a correct update of the software code pointer wherein the performing of a verification calculation comprises adding the software code pointer complement and software code pointer and verifying that the result corresponds to the fixed initial value of the software code pointer complement; and

taking a corrective action if the verification calculation is indicative of a manipulation of the software code pointer.

2. The method for operating a processor to protect the processor from attacks targeting a software code pointer of the processor of claim 1 wherein the corrective action includes taking one or more actions selected from the set including alerting of a potential attack, disabling the processor, halting operation of the processor, and resetting the code pointer to a safe location.

3. The method of claim 1 , further comprising setting the code pointer complement to a value with an irregular bit pattern.

4. The method of claim 1 , wherein the code pointer is updated using a first operation and the code pointer complement is updated using a second operation distinct from the first operation.

5. An electronic device having a processor and memory containing program instructions, the electronic device having a mechanism for protecting the electronic device against attacks targeting a software code pointer maintained by the electronic device, comprising:

the processor of the electronic device programmed by instructions stored in the memory of the electronic device to cause the processor to:

set a fixed initial value of a software code pointer complement;

set the software code pointer complement to the fixed initial value of the software code pointer complement;

execute an instruction pointed to by the software code pointer;

update the software code pointer by adding an offset such that the updated software code pointer points to a next instruction to be executed by the processor;

update the software code pointer complement by subtracting the offset added to the software code pointer from the software code pointer complement;

perform a verification calculation using a function that accepts both the software code pointer and the software code pointer complement to produce a verification result indicative of a correct update of the software code pointer wherein the processor performs a verification calculation comprises taking an exclusive-OR of the software code pointer complement and software code pointer and verifying that the result corresponds to the fixed initial value of the software code pointer complement; and

take a corrective action if the verification calculation indicates manipulation of the software code pointer.

6. The electronic device with a mechanism for protecting the electronic device against attacks targeting a software code pointer maintained by the electronic device according to claim 5 wherein the corrective action includes taking one or more actions selected from the set including alerting of a potential attack, disabling the processor, halting operation of the processor, and resetting the code pointer to a safe location.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2023
From: THALES DIS FRANCE SA
To: THALES DIS FRANCE SAS
Reel/Frame 064792/0790 →
CHANGE OF NAME Recorded Aug 25, 2023
From: GEMALTO SA
To: THALES DIS FRANCE SA
Reel/Frame 064716/0634 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2018
From: HANNEN-WILLIAMS, LANCE
To: GEMALTO SA
Reel/Frame 044631/0603 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2017
From: HANNEN-WILLIAMS, LANCE
To: GEMALTO SA
Reel/Frame 041419/0889 →
Priority Claims (1)
EP 14306351 · Sep 2, 2014 · regional
Continuity (1)
Related Publication 20170242999A1 · Aug 24, 2017