Software License Protection via PKI Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software protection mechanisms, such as encoded digital licenses with secret product keys, are vulnerable to hijacking and unauthorized use, especially with the advent of programming languages like Java, which can easily bypass license checks.

Innovation Solution

A system and method utilizing Public Key Infrastructure (PKI) with a management component to generate and encrypt license keys, and a runtime component to verify their validity, ensuring only authorized use by embedding the license issuer's public key with the software, and using Java annotations to obfuscate and enforce license checks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If encoded digital licenses with secret product keys are used, then software protection is implemented, but the system becomes vulnerable to hijacking and unauthorized use

Engineering Contradiction:
Improvesoftware protectionVSAvoidunauthorized use vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The license verification system is segmented into multiple independent components: license issuance module, license embedding module, license verification module, and feature activation module. This segmentation isolates the secret product keys within encrypted license files that are distributed separately from the software code, preventing hijacking of the verification logic while maintaining protection reliability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An intermediary license file acts as a mediator between the software code and the verification mechanism. The license file contains encrypted product keys and feature information that are verified by the license verification module, creating a secure intermediary layer that prevents direct access to secret keys and eliminates vulnerabilities to hijacking

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If license verification is implemented, then unauthorized use is prevented, but performance overhead increases

Engineering Contradiction:
Improvelicense verificationVSAvoidsoftware execution speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

License verification is performed as a preliminary action during software initialization and feature activation rather than during every operation. The license verification module checks the validity of license keys and caches the verification results, enabling fast feature activation without repeated verification overhead during runtime

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The license verification system implements self-service through automatic verification of license files during software startup and feature access. The license verification module automatically checks license validity and caches results, eliminating the need for manual verification and reducing performance overhead through automated optimization

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8725649B2System and method to protect computer software from unauthorized use
Publication Date: 2014.05.13 RAYTHEON CO
  • US8725649B2 patent drawing
  • US8725649B2 patent drawing
  • US8725649B2 patent drawing

AI summary

A system and method encrypt a license file associated with computer software using a private key. The license file includes one or more license keys, and each license key is associated with a feature of the computer software. The license file associated with the computer software is decrypted at runtime using a public key. A module determines whether a user is permitted to execute the computer software. The module is authenticated by one or more of a determination of whether a hash code included within the module matches a hash code generated by a user of the computer software at run time of the computer software, and an encryption of the module prior to run time of the computer software using the private key and a decryption of the module at run time of the computer software using the public key.