Source Code Authentication via Compound Key Validation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The complexity of software build processes, particularly in delivering fix packs, often results in incorrect or unauthorized files being inadvertently included, which can lead to inconsistencies and errors in the final product.

Innovation Solution

A method and system for authenticating source code by generating a compound key during extraction and embedding unique keys in each file during the build process, allowing for validation of the delivered product by comparing the compound key with embedded keys in the final binaries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If standard fix pack building procedures are used to extract and build files, then the build process can be completed efficiently, but incorrect or unauthorized files may be inadvertently included in the final product

Engineering Contradiction:
Improvebuild process efficiencyVSAvoidfile authenticity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies preliminary action by generating a compound key during the source code extraction phase before the build process begins. This compound key is created by hashing the source code files and storing the hash values, so that any changes or substitutions to the source files during extraction or build will be detected when the compound key is validated against the built files. This advance preparation ensures file authenticity without slowing down the actual build process.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If multiple fix packs are delivered over time to meet customer needs, then the software can be continuously updated with bug fixes and enhancements, but the complexity of tracking and validating all delivered files increases

Engineering Contradiction:
Improvesoftware update capabilityVSAvoidfile validation complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies segmentation by dividing the validation process into discrete, manageable components. Each fix pack or software delivery is assigned a unique compound key that is generated independently for that specific build. The validation process then simply compares the compound key of the delivered files against the expected compound key, reducing the complexity of tracking multiple files across multiple deliveries to a simple key matching operation.

Inventive Principle:
Principle #1Segmentation

3Adaptability or versatility

If source code is extracted from central repositories and built on customized platforms, then the build process can accommodate different platforms and customized fixes, but the risk of including incorrect files increases

Engineering Contradiction:
Improveplatform customization capabilityVSAvoidfile correctness
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent applies feedback by implementing a validation mechanism that provides immediate feedback on file correctness after the build process. The compound key, which is generated from the source code files during extraction, is stored and later used to validate the built files. When validation occurs, the system compares the compound key against the actual files in the build output, providing feedback on whether the files match the expected source code. This feedback loop ensures file correctness while allowing platform customization during the build process.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9965639B2Source authentication of a software product
Publication Date: 2018.05.08 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US9965639B2 patent drawing
  • US9965639B2 patent drawing
  • US9965639B2 patent drawing

AI summary

Embodiments of the present invention provide systems and methods for authenticating the source code of a software end product. The method includes generating a compound key, which is composed of a set of unique keys generated from a source file. A set of files are separately build based on a received source code, and a key generated and embedded into the files at the time of the build. A validation tool is used to compare the values of the generated compound key to the values of the embedded key to determine if the values match.