Dynamic Code Verification via Hash Comparison

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional methods for detecting and eliminating malicious or faulty code are typically reactive and rely on up-to-date virus definitions, which can be late in identifying threats, and do not guarantee the validity of currently executing code, especially on architectures without hardware support for access control bits.

Innovation Solution

A dynamic verification system that uses a verification engine to compare the identifying value of a memory block containing an instruction with reference values from a white list or black list, allowing or blocking execution based on validation conditions, and can operate on various hardware architectures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional reactive detection methods are used, then virus definitions can be updated to identify known threats, but detection is too late as viruses may infect millions of computers before being identified

Engineering Contradiction:
Improvecode validity guaranteeVSAvoiddetection delay
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary verification of code integrity by computing hash values of code pages before execution. This proactive approach ensures that only verified, unmodified code is executed, preventing viral infection from spreading while maintaining timely detection capability.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If hardware access control bits are used for isolation, then execution of code on given memory pages can be prevented, but malicious code in boot loader or operating system components can affect these bits and defeat the security

Engineering Contradiction:
Improvesecurity guaranteeVSAvoidhardware dependency
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system introduces an intermediary verification layer that computes and checks hash values of code pages. This intermediary mechanism provides security without relying on hardware access control bits, making it architecture-independent and resistant to attacks that target hardware security features.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If cryptographic techniques are used for boot-time verification, then validity of code can be attested before execution, but validity of currently executing code is not guaranteed as code may be compromised after boot

Engineering Contradiction:
Improvecode validity verificationVSAvoidverification coverage time
Core Design Contradiction:
ReliabilityVSDuration of action of moving object

Solution Approach 1:

The system continuously verifies code integrity throughout execution by checking hash values of code pages before each execution. This continuous verification ensures that code remains unmodified throughout its entire execution lifecycle, not just at boot time, maintaining security against runtime compromises.

Inventive Principle:
Principle #20Continuity of useful action

4Reliability

If virtual machine introspection is used for run-time verification, then code sections can be scanned and hashed to verify integrity, but the system does not ensure that code currently being executed is safe as buffer overflow exploits can jump to new memory regions

Engineering Contradiction:
Improveexecuting code verificationVSAvoidvirtualization requirement
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system implements a universal verification mechanism that works across different hardware architectures without requiring virtualization. By computing hash values of code pages and comparing them against expected values, the system verifies integrity of currently executing code regardless of memory architecture or virtualization status.

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

Data Source

PatentUS7984304B1Dynamic verification of validity of executable code
Publication Date: 2011.07.19 VMWARE INC
  • US7984304B1 patent drawing
  • US7984304B1 patent drawing
  • US7984304B1 patent drawing

AI summary

Computer-executable instructions in a computer are verified dynamically, after they have been identified for submission for execution, but before they are actually executed. In particular, for at least one current instruction that has been identified for submission to the processor for execution, an identifying value, for example, a hash value, is determined for a current memory block that contains the current instruction. The identifying value of the current memory block is then compared with a set of reference values. If the identifying value satisfies a validation condition, then execution of the current instruction by the processor is allowed. If the validation condition is not satisfied, then a response is generated: In the common case, execution of the current instruction is not allowed, or some other predetermined measure is taken.