Microcontroller Program Block Control for Execution Integrity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Microcontrollers are vulnerable to external disturbances that can cause unintended program execution, leading to unauthorized access and release of confidential information, as existing solutions do not adequately verify the legitimacy of instruction execution and block transitions.

Innovation Solution

The method involves separating the program into blocks with integrated input and output control areas, implementing verification tests for adherence to these conditions, and taking countermeasures if deviations occur, ensuring that the program follows authorized block transitions and access rules.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the program is not separated into blocks with control areas, then the device complexity is reduced, but the reliability of program execution is worsened due to vulnerability to external disturbances

Engineering Contradiction:
Improveprogram execution reliabilityVSAvoidprogram structure complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The program is divided into multiple blocks, each containing a plurality of instructions that can be executed by the microcontroller. Each block is equipped with input control areas (CTRL-E) and output control areas (CTRL-S) that define authorized entry points and exit conditions. This segmentation allows verification tests to be performed at block boundaries, ensuring that only legitimate program transitions occur and preventing unauthorized jumps caused by external disturbances.

Inventive Principle:
Principle #1Segmentation

2Reliability

If verification tests are implemented at every block transition, then the security against unauthorized access is improved, but the processing time is increased

Engineering Contradiction:
Improveaccess control securityVSAvoidprogram execution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The input control areas (CTRL-E) and output control areas (CTRL-S) are pre-configured with reference addresses and conditions that define authorized program transitions. By preparing these control structures in advance, the verification tests can quickly check whether the current program counter position matches an authorized entry point without requiring complex runtime analysis, thus minimizing time loss while maintaining security.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If the program counter is allowed to jump to any memory position, then the program flexibility is improved, but the vulnerability to disturbance attacks is worsened

Engineering Contradiction:
Improveprogram execution flexibilityVSAvoiddisturbance attack vulnerability
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The input control areas (CTRL-E) and output control areas (CTRL-S) act as intermediary structures between program blocks. These control areas contain reference addresses that mediate the transition between blocks, allowing the program to maintain flexibility in jumping between authorized locations while preventing unauthorized jumps caused by external disturbances. The intermediary control structures verify that any jump originates from an authorized position before allowing execution to continue.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8141145B2Method to control the execution of a program by a microcontroller
Publication Date: 2012.03.20 NAGRAVISION SA
  • US8141145B2 patent drawing
  • US8141145B2 patent drawing
  • US8141145B2 patent drawing

AI summary

The aim of the present invention is to propose a method and a device with the aim of avoiding problems which could ensue following the de-synchronization of a program counter during the execution of a program.This aim is achieved by a method for controlling the execution of a program involving separating the program into a number of blocks of instructions and adding an input control section and an output control section to each block. The control sections have conditions for entry to the block and conditions for exit from the block. This can be used to check the validity of the execution of a program by verifying the execution history of the program. Action can be taken in the case that any anomaly is found in the program execution compared to the expected execution.