Trusted Control Flow Enforcement via Derived Encryption Keys

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current information handling systems face challenges in ensuring trusted control flow enforcement, as existing verification methods are vulnerable to time-of-check, time-of-use race conditions and return-oriented programming attacks, which allow malicious software to introduce changes in verified code segments, leading to potential exploits within the control flow graph.

Innovation Solution

The system employs a communication channel monitor to calculate hash values of encrypted code segments, deriving encryption keys based on the sequence of execution, ensuring that only correctly sequenced code segments can be decrypted and executed, thereby enforcing control flow integrity without requiring access to source code or debug information.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If existing verification methods are used to verify code segments, then code execution can proceed, but the system becomes vulnerable to time-of-check time-of-use race conditions and return-oriented programming attacks

Engineering Contradiction:
Improvecontrol flow integrityVSAvoidsecurity vulnerabilities
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The system performs preliminary encryption of code segments before execution, where each code segment is encrypted with a key derived from the previous segment. This preliminary cryptographic binding ensures that verification and protection are built into the execution flow itself, preventing race conditions and return-oriented programming attacks by making unauthorized code modifications detectable through decryption failures

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces cryptographic keys as an intermediary mechanism between code segments. Each key acts as a mediator that connects the verification of one segment to the execution of the next, creating a chained trust relationship that prevents harmful factors from compromising control flow integrity

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If code segments are encrypted and decrypted in sequence, then control flow integrity is enforced, but system complexity increases

Engineering Contradiction:
Improvecontrol flow enforcementVSAvoidencryption/decryption overhead
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system employs dynamic key derivation where encryption keys are generated on-the-fly based on the execution state and previous segment verification. This dynamic approach allows the complexity to be distributed across execution steps rather than requiring a complex static encryption infrastructure, enabling control flow enforcement while managing system complexity through adaptive cryptographic operations

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11876900B2System and method for trusted control flow enforcement using derived encryption keys
Publication Date: 2024.01.16 DELL PROD LP
  • US11876900B2 patent drawing
  • US11876900B2 patent drawing
  • US11876900B2 patent drawing

AI summary

A system includes a communication channel monitor configured to calculate a hash value of a first encrypted code segment based on a measurement. A security module may derive a first encryption key using a key decryption function operation from the hash value of the first encrypted code segment. A processor decrypts the first encrypted code segment with a seed key retrieved from a storage device, and if the decryption is successful then executes the first decrypted code segment. The processor may retrieve a second one of the encrypted code segments, wherein the second encrypted code segment is a next encrypted code segment for execution after the first encrypted code segment according to a sequence of execution, decrypt the second encrypted code segment with the first encryption key, and if the decryption is successful then execute the second decrypted code segment.