Hardware Securing Module for Machine Code Integrity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for executing machine code of secure functions by microprocessors are complex and do not effectively control the integrity of both basic blocks and control flow, making them vulnerable to fault injection attacks that can disrupt the execution of critical systems.

Innovation Solution

A method that generates binary code with machine code for secure functions, using a compiler to automatically convert source code into machine code with a hardware securing module that constructs and verifies signatures for each basic block, ensuring integrity by comparing constructed and expected values, and triggering fault signaling upon discrepancies.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If known methods for executing machine code of secure functions are used, then fault detection capability is provided, but the method complexity increases and effectiveness in controlling both basic block and control flow integrity is insufficient

Engineering Contradiction:
Improvefault detection capabilityVSAvoidmethod complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges the control flow verification and basic block integrity verification into a single unified mechanism. The hardware securing module combines the function of verifying control flow instructions (branch instructions, return addresses) and verifying basic block signatures (instruction integrity) into one integrated module that operates simultaneously for both purposes, thereby reducing overall system complexity while maintaining comprehensive security coverage.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The hardware securing module is designed with multi-functionality to handle multiple security verification tasks: control flow integrity verification, basic block instruction integrity verification, and fault detection. This universal module performs all verification functions using a unified approach, eliminating the need for separate complex verification mechanisms for each function and thereby reducing overall method complexity.

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

2Reliability

If hardware securing module with signature verification is implemented, then control flow and basic block integrity are controlled, but the execution time increases due to additional verification steps

Engineering Contradiction:
Improveintegrity controlVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements preliminary action by pre-calculating and storing expected signature values for each basic block during the compilation or code generation phase. These expected signatures are embedded in the machine code or stored in a lookup table, so that during execution, the hardware securing module only needs to compute the actual signature and compare it with the pre-prepared expected value, rather than performing complex verification calculations during runtime, thus minimizing execution time overhead.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent replaces complex software-based verification mechanisms with a dedicated hardware securing module that performs signature verification through specialized circuitry. This hardware implementation executes verification operations in parallel and at higher speeds compared to software implementations, significantly reducing the time penalty associated with integrity checks while maintaining comprehensive control flow and basic block verification.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Object-affected harmful factors

If fault injection attacks are allowed to occur, then system vulnerability is exposed, but implementing comprehensive protection increases device complexity

Engineering Contradiction:
Improvefault injection vulnerabilityVSAvoidprotection mechanism complexity
Core Design Contradiction:
Object-affected harmful factorsVSDevice complexity

Solution Approach 1:

The hardware securing module implements self-service by autonomously performing verification of control flow instructions and basic block signatures without requiring external intervention or complex external verification systems. The module independently computes signatures, compares them with expected values, and triggers fault signals when discrepancies are detected, thereby providing robust protection against fault injection attacks through a relatively simple self-contained mechanism.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent implements feedback mechanisms where the hardware securing module continuously monitors execution flow and instruction integrity, and immediately provides feedback by triggering fault signals or interrupting execution when verification failures are detected. This real-time feedback loop enables the system to respond rapidly to fault injection attempts without requiring complex external monitoring systems, achieving effective vulnerability protection with minimal added complexity.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11442738B2Method for executing a machine code of a secure function
Publication Date: 2022.09.13 COMMISSARIAT A LENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES
  • US11442738B2 patent drawing

AI summary

An execution method comprises the following operations: —every time an instruction to be protected of a preceding basic block is loaded, constructing a new value of a signature of this preceding basic block from the value of this instruction to be protected and the preceding value of the signature. The method further includes loading an initialization vector contained in a subsequent basic block and calculating, from said loaded initialization vector, a value reached for signing the preceding basic block. The method also includes comparing the constructed value of the signature with the expected value of this signature, and—only if these values do not match, triggering the signaling of a fault during the execution of the machine code.