Encrypted Functional Block Protection via Dynamic Memory Loading
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for protecting programs against unauthorized execution and analysis are inadequate as they leave the decrypted program in memory, allowing attackers to copy and analyze the unprotected program.
Innovation Solution
A computer-implemented method that encrypts a functional block of a program and adds additional code to ensure the decrypted block is only temporarily present in the working memory, using a protection module to decrypt and execute the block only when a valid license is present, and removing it immediately after execution, preventing unauthorized copying and analysis.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the program is encrypted and decrypted for execution, then the program can be protected against unauthorized execution, but the decrypted program remains in working memory allowing attackers to copy and analyze it
Solution Approach 1:
The patent applies dynamics by making the functional block's state change over time - it is loaded into working memory only when needed for execution and automatically removed after execution completes. This dynamic loading and unloading ensures the decrypted code exists in memory only temporarily during its functional execution, preventing attackers from copying or analyzing the complete unprotected program.
Solution Approach 2:
The patent applies preliminary action by encrypting the functional block before execution and preparing it for secure loading. The encryption is performed in advance, and the decryption occurs only at the moment of execution need, with immediate removal afterward. This preliminary encryption and controlled decryption timing prevents unauthorized access to the unprotected code.
2Ease of operation
If the decrypted functional block is kept in working memory for execution, then the program can run correctly, but the block remains accessible for reverse engineering
Solution Approach 1:
The patent makes the presence of the decrypted functional block in working memory dynamic rather than static. The block is loaded only when execution is required and is automatically removed after execution completes. This dynamic approach allows correct program execution while minimizing the time the unprotected code exists in memory, thereby preventing reverse engineering.
Solution Approach 2:
The decrypted functional block is treated as a temporary, short-lived object that exists in working memory only for the duration of its execution. After execution, it is immediately removed and discarded, similar to a disposable object. This approach allows the program to function correctly while ensuring the unprotected code does not persist in memory for analysis.
3Reliability
If multiple functional blocks are encrypted at different locations, then comprehensive protection is achieved, but the complexity of the protection system increases
Solution Approach 1:
The patent applies segmentation by dividing the program into multiple encrypted functional blocks located at different positions within the program code. Each functional block is independently encrypted and can be loaded and executed separately. This segmentation provides comprehensive protection coverage while allowing the protection mechanism to be applied modularly to each block.
Solution Approach 2:
The patent creates a universal protection mechanism that can be applied to multiple functional blocks throughout the program. The same encryption, decryption, loading, and removal process is used for each functional block regardless of its location, making the protection system multi-functional and applicable to the entire program structure without requiring different mechanisms for each block.
Data Source
AI summary
A program comprises a functional block. The functional block is encrypted, additional code is added to the program and a protected program is generated that is executable only in the presence of a predetermined license in a computer system which comprises a protection module for protection against unauthorized execution of the protected program. If the encrypted functional block is to be executed, the additional code is executed. If a license is present, the additional code and/or the protection module causes decryption of the functional block, allows execution of the decrypted functional block, and upon completion of execution of the functional block, causes removal of the decrypted functional block from the working memory.


