Binary Integrity Verification via Self and Link Hashes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for verifying the integrity of multiple binary files within a program lack efficiency and security, particularly due to time gaps in verification and vulnerability to code exposure, as they either rely on a single binary for verification or require loading of files at specific times.

Innovation Solution

A method combining self hash verification and link hash verification, where each binary loaded into memory verifies its own integrity and the integrity of subsequent binaries, minimizing time gaps and enhancing security by distributing verification across loaded binaries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If one binary file verifies the integrity of all other binary files in a program, then the verification structure is simple and easy to implement, but security vulnerability increases because when the verification code is exposed, all hash verifications can be invalidated by simple code changes

Engineering Contradiction:
Improveease of implementationVSAvoidsecurity
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The verification function is segmented and distributed across multiple binary files. Each binary file verifies the integrity of specific other binary files (adjacent ones in the loading order) rather than one binary verifying all others. This distribution of verification responsibilities prevents a single point of failure and reduces security vulnerability when verification code is exposed.

Inventive Principle:
Principle #1Segmentation

2Reliability

If binary files are arranged in a circulating form with each binary verifying adjacent binaries, then security is improved because two binaries verify each other making it difficult to determine verification code location, but a time gap hole is generated because verification occurs when files are loaded rather than before loading

Engineering Contradiction:
ImprovesecurityVSAvoidtime gap in verification
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The verification of the next binary file's hash is performed in advance, before the next binary file is actually loaded into memory. When binary file K is currently loaded, it verifies the hash of binary file K+1 (the next file to be loaded) before K+1 is loaded. This preliminary verification action eliminates the time gap hole where unverified files could be loaded and executed.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If verification is performed when binary files are loaded into memory, then the verification process is straightforward, but integrity verification may not be fundamental because a time gap hole due to loading order is generated allowing potential attacks

Engineering Contradiction:
Improveverification simplicityVSAvoidintegrity verification validity
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

Instead of waiting until binary files are loaded to verify their integrity, the system performs preliminary verification of the next binary file's hash before it is loaded. This ensures that integrity verification occurs at the most critical moment - before the file enters memory and could be executed - eliminating the time gap vulnerability.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9842018B2Method of verifying integrity of program using hash
Publication Date: 2017.12.12 INKA ENTWORKS INC
  • US9842018B2 patent drawing
  • US9842018B2 patent drawing
  • US9842018B2 patent drawing

AI summary

In a method for verifying the integrity of first to Nth binaries (N is a natural number greater than or equal to 2), the method may comprise: loading the first to Nth binaries into a main memory in order to execute the binaries; verifying a self hash to verify, by the Kth binary (K=1, . . . , N−1) which has been loaded into the main memory, the integrity thereof by using a hash; and verifying a link hash by setting any one of the first to Kth binaries as a verification binary and setting a (K+1)th binary to be loaded into the main memory as a binary to be verified so that the verification binary verifies the integrity of the binary to be verified by using a hash.