Stack Integrity Check for Fault Injection Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for protecting electronic devices from fault injection attacks require significant additional memory resources, which is undesirable for devices with limited memory capacity, such as chip cards.

Innovation Solution

A method that calculates an integrity check datum by applying predetermined functions (like addition, subtraction, multiplication, or logical operations) to integrity variables stored in the execution stack, reducing the need for duplicate memory storage by comparing the calculated result with an expected value to detect faults.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a backup stack is implemented to duplicate execution stack contents for fault detection, then reliability against fault injection attacks is improved, but memory consumption increases

Engineering Contradiction:
Improveprotection against fault injection attacksVSAvoidmemory consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent merges the backup stack functionality into the existing execution stack by using the same memory space. Instead of allocating separate memory for backup, the system uses temporal redundancy - storing backup values temporarily in registers or cache during critical operations and comparing them immediately, then overwriting them. This combining approach maintains fault detection capability while eliminating the need for duplicate persistent memory storage.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent implements dynamic protection by activating backup and comparison mechanisms only when needed during specific operations, rather than maintaining static backup storage throughout. The system dynamically allocates temporary storage resources during vulnerable operations and releases them afterward, adapting memory usage to actual protection requirements rather than maintaining constant overhead.

Inventive Principle:
Principle #15Dynamics

2Measurement precision

If two independent stacks (execution stack and check stack) are allocated for integrity verification, then measurement precision of variable integrity is improved, but device complexity increases

Engineering Contradiction:
Improveintegrity verification accuracyVSAvoidstack management complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent makes the execution stack multi-functional by having it serve both as the primary data storage structure and as the backup/integrity verification structure. The same stack memory is used for storing variable values, and through temporal duplication and comparison mechanisms, it also performs integrity verification functions. This eliminates the need for a separate check stack and reduces overall system complexity while maintaining verification accuracy.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent segments the integrity verification process into distinct temporal phases within the single stack operation - the original value is stored, then a backup is created temporarily, comparison is performed, and finally the backup is discarded. This temporal segmentation allows one stack to perform multiple functions sequentially rather than requiring simultaneous separate structures.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP3422233B1Method for protecting an electronic device running a program against fault-injection attacks
Publication Date: 2021.06.09 IDEMIA IDENTITY & SECURITY FRANCE SAS
  • EP3422233B1 patent drawingFigure 1~2
  • EP3422233B1 patent drawingFigure 3
  • EP3422233B1 patent drawingFigure 4

AI summary

The invention relates to a method of protecting an electronic device executing a program against fault injection attacks of the type likely to affect the program, the execution of the program implementing a stack in which variables used by the program are read and/or stored, the method comprising, during the execution of said program, a step of calculating an integrity check data by applying at least one predetermined function to at least one integrity variable, the integrity variable and the integrity check data having a value stored in the stack, the calculation of the integrity data being implemented at random intervals during the execution of the program.