Software Component Update via Hash Chain Verification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for updating software components are coarse-grained, slow, and limited in granularity, often requiring the software to be offline, and lack effective security measures against attacks, such as roll-back and differential attacks.

Innovation Solution

A method and system for dynamically updating software components using fine-grained mechanisms, including cryptographic hash chains and data tables, that allow for anti-rollback, anti-roll-forward, and forced updates, enabling hot-swappable components with dynamic loading and entanglement of state data with application data for enhanced security and flexibility.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If full program update is performed at any renewal, then any part of the program may be changed at any renewal, but it requires a sizable amount of upload data and code

Engineering Contradiction:
Improveprogram changeabilityVSAvoidupload data and code
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent segments the program into updatable software components that can be independently updated. Instead of updating the full program, only specific components are updated by loading them into loadable regions of the program memory space, reducing the amount of data that needs to be uploaded and processed.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If dynamic or shared library mechanisms are used for updating components, then component updates are enabled, but it requires a dynamic linking phase to resolve relocatable symbols at run-time giving a performance overhead

Engineering Contradiction:
Improvecomponent update capabilityVSAvoidrun-time performance
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The patent performs preliminary actions by pre-resolving symbol references and preparing the component loading mechanism before runtime updates. The base component contains pre-configured information about loadable regions and component interfaces, allowing updated components to be loaded and executed without requiring dynamic linking and symbol resolution at runtime, thus eliminating performance overhead.

Inventive Principle:
Principle #10Preliminary action

3Ease of manufacture

If coarse-grained update mechanisms are used, then updates can be applied, but the granularity of what functionality lies within the dynamic library is fairly rigid with regards to the overall system

Engineering Contradiction:
Improveupdate applicationVSAvoidfunctionality granularity
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent segments software functionality into fine-grained updatable components that can be independently selected and updated based on specific needs. Each component can be loaded into appropriate loadable regions, allowing precise control over which functionalities are updated without requiring coarse-grained updates of entire libraries or modules.

Inventive Principle:
Principle #1Segmentation

4Productivity

If software components are updated dynamically at run-time, then updates can be applied without stopping the program, but existing methods lack effective security measures against attacks such as roll-back and differential attacks

Engineering Contradiction:
Improvecontinuous operation during updateVSAvoidsecurity against attacks
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies preliminary anti-action by implementing security measures before updates are applied. Hash chain values are computed and stored associated with updated components, creating a cryptographic verification mechanism that prevents roll-back attacks (by ensuring components are updated in the correct sequence) and differential attacks (by verifying component integrity). This preliminary security setup allows dynamic updates to proceed safely without stopping the program.

Inventive Principle:
Principle #9Preliminary anti-action

Data Source

PatentUS10318271B2Updating software components in a program
Publication Date: 2019.06.11 IRDETO BV
  • US10318271B2 patent drawing
  • US10318271B2 patent drawing
  • US10318271B2 patent drawing

AI summary

A method and system for renewing software at the component-level is provided. A client program includes a base component for loading a software component into at least one loadable region of the program to update the program. Code in the software component is for writing state data associating the state of the update in storage, upon execution of the software component, and testing the state data to verify condition of the updated program and disallowing rollback and roll-forward attacks, the state data comprising hash chain values. The state data for verifying the correctness of the updated program is entangled with application data used for the program functionality. A server includes: an update pool having a plurality of software updates deployed in each client, and a policy control for monitoring and controlling at least one of: the length of time the client runs until the software update is invoked, a chain of the updates; and the granularity of the update.