Software Component Randomization for Reconnaissance Defense

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing systems are vulnerable to reconnaissance attacks as attackers can gather crucial information about operating systems and applications, which can be exploited to infiltrate the system, despite efforts to limit information disclosure.

Innovation Solution

The system generates unique configuration information to create randomized instances of software components, such as operating system kernels, applications, and libraries, with each instance having different operating characteristics, providing false information to attackers and evolving over time to prevent exploitation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If the system provides consistent server information (name, version, configuration), then ease of operation and user trust are improved, but security against reconnaissance attacks deteriorates

Engineering Contradiction:
Improveserver information consistencyVSAvoidreconnaissance attack vulnerability
Core Design Contradiction:
Ease of operationVSObject-affected harmful factors

Solution Approach 1:

The patent applies dynamics by making server information change over time through randomization. Instead of providing consistent, static server information, the system dynamically generates different configuration information for software components on different executions or time periods. This includes randomizing parameters such as port numbers, memory addresses, and configuration values, causing the server to appear different each time to prevent attackers from gathering reliable reconnaissance information.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements parameter changes by modifying configuration parameters of software components before execution. The system generates unique configuration information that varies across different instances or executions, changing parameters like port assignments, memory layouts, and operational characteristics. This ensures that even though the same software component is deployed, its observable parameters differ, thwarting reconnaissance efforts while maintaining functional consistency.

Inventive Principle:
Principle #35Parameter changes

2Object-affected harmful factors

If the system randomizes software component configurations, then security against fingerprinting attacks is improved, but device complexity increases

Engineering Contradiction:
Improvefingerprinting attack resistanceVSAvoidconfiguration management complexity
Core Design Contradiction:
Object-affected harmful factorsVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by preparing and storing multiple pre-generated configuration variations before they are needed. The system pre-generates a pool of random configuration information and selects from these pre-prepared variations when deploying software components, rather than generating configurations on-demand during execution. This reduces runtime complexity while maintaining security benefits of randomization.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses copying by creating multiple copies of software components with different configuration information. Instead of modifying a single original component, the system generates copies that vary in their configuration parameters (such as different port numbers, memory addresses, or operational settings). These copies are then deployed to provide randomized behavior while the underlying component structure remains the same, simplifying management.

Inventive Principle:
Principle #26Copying

3Reliability

If the system generates multiple unique instances of software components, then reliability against exploitation is improved, but productivity and system performance deteriorate

Engineering Contradiction:
Improveexploitation resistanceVSAvoidsystem execution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies segmentation by dividing the software component into modular units that can be independently configured and instantiated. Instead of creating entirely new software systems, the system segments the component into configurable parameters and core functionality, allowing efficient generation of multiple instances with different configurations. This modular approach maintains productivity while enabling reliable randomization for security.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements parameter changes by modifying non-critical configuration parameters rather than fundamentally changing software behavior. The randomization affects observable parameters like port numbers, memory addresses, and configuration values, while the core execution logic and performance characteristics remain optimized and consistent. This ensures multiple unique instances can be generated without sacrificing system productivity or execution efficiency.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10402179B1Application randomization mechanism
Publication Date: 2019.09.03 ARCHITECTURE TECH CORP
  • US10402179B1 patent drawing
  • US10402179B1 patent drawing
  • US10402179B1 patent drawing

AI summary

An example method includes generating, by a computing system, first unique configuration information, generating, by the computing system and based on the first unique configuration information, a first unique instance of a software component, generating second unique configuration information, wherein the second unique configuration information is different from the first unique configuration information, and generating, based on the second unique configuration information, a second unique instance of the software component that is executable on the runtime computing system. The first and second unique instances of the software component comprise different instances of the same software component that each are configured to have uniquely different operating characteristics during execution on the runtime computing system.