Variable Integrity Check Data Storage in Execution Stack

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for protecting electronic devices against fault injection and type confusion attacks are inefficient due to high memory consumption, particularly in devices like smart cards where resources are limited.

Innovation Solution

A method that calculates integrity check data dependent on both the value and type of a variable, storing it in a single control stack and using a unique addressing datum to locate it, reducing memory usage by eliminating the need for multiple index registers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If three different stacks (execution stack, control stack, backup stack) are used to protect against both fault injection and type confusion attacks, then security protection level is improved, but memory consumption increases

Engineering Contradiction:
Improvesecurity protection levelVSAvoidmemory consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent merges the backup stack and control stack into a single unified stack structure. Instead of maintaining separate execution stack P1, control stack P2, and backup stack P3 as in prior art, the invention uses a single execution stack that stores both variable values and their integrity check data in an interleaved manner. This combining of previously separate memory structures reduces memory consumption while maintaining protection against both fault injection and type confusion attacks.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The execution stack is designed to serve multiple functions simultaneously: it stores variable values for program execution, stores integrity check data for security verification, and provides both fault injection protection and type confusion protection. By making the execution stack multi-functional, the patent eliminates the need for separate dedicated backup and control stacks, thereby reducing overall memory requirements while maintaining comprehensive security.

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

2Ease of operation

If three different index registers are used to locate data in three different stacks, then data locating capability is improved, but device complexity increases

Engineering Contradiction:
Improvedata locating capabilityVSAvoidnumber of index registers
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent reduces the number of index registers from three (ind1 for execution stack, ind2 for control stack, ind3 for backup stack) to two (ind1 for execution stack, ind2 for integrity check data within the same execution stack). The index registers now point to locations within a single unified stack structure rather than three separate stacks, simplifying the device architecture while maintaining the ability to locate and verify data efficiently.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The index registers are enhanced to serve multiple purposes: ind1 locates variable values in the execution stack, while ind2 locates integrity check data within the same execution stack. This multi-functional use of index registers eliminates the need for separate index registers for backup and control stacks, reducing device complexity while preserving complete data locating capability for security verification.

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

Data Source

PatentUS10747877B2Method for protecting an electronic device executing a program against fault injection and type confusion attacks
Publication Date: 2020.08.18 IDEMIA FRANCE SAS
  • US10747877B2 patent drawing
  • US10747877B2 patent drawing
  • US10747877B2 patent drawing

AI summary

A method for protecting an electronic device executing a program against fault injection and type confusion attacks likely to affect a variable (Z) intended to be used by the program. The method includes calculating integrity check data (X, Y) of variable (Z), dependent on a type (T) of the variable (Z), and a value (V) of the variable (Z) stored in an execution stack (P1) and/or of a first addressing datum (A) stored in a first index register (ind1). The first addressing datum (A) adapted to locate the value (V) stored in the execution stack (storing the integrity check data (X, Y) on the variable (Z) in at least one control stack (P2, P3) different to the execution stack (P1). Storing in a second index register (ind2), a unique second addressing datum (A2) adapted to locate the integrity check data (X, Y) in the or each control stack (P2, P3).