Software Module Separation Using Ephemeral Realm Keys
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software code can be accessed and reverse engineered by unauthorized users, leading to a loss of valuable intellectual property.
Innovation Solution
A software protection device establishes realms in a memory device using ephemeral encryption keys, encrypts payloads within these realms, and manages memory transactions to protect software from unauthorized access.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If software code is stored in memory device for execution, then software functionality is enabled, but code can be accessed and reverse engineered by unauthorized users
Solution Approach 1:
The patent divides the software protection mechanism into separate functional modules: a protection device that manages encryption keys and a core device that executes code. The protection device segments the encryption key management from the code execution, allowing the code to be stored in an accessible memory while the keys remain protected in a separate secure storage location. This segmentation enables the code to be freely accessed for execution while preventing unauthorized access to the decryption keys.
Solution Approach 2:
The patent introduces a protection device as an intermediary between the code storage and the execution environment. This intermediary device manages the encryption and decryption processes, controlling access to the code without preventing its execution. The protection device acts as a mediator that allows authorized access for execution while blocking unauthorized access for reverse engineering, thus resolving the contradiction between code accessibility and protection.
2Reliability
If encryption is applied to protect software, then security is improved, but access and execution by authorized users may be hindered
Solution Approach 1:
The patent implements dynamic encryption key management where the protection device can switch between different encryption states based on access requirements. When authorized access is needed, the protection device dynamically provides the appropriate decryption keys to the core device. This dynamic approach allows the system to maintain strong encryption for security while enabling seamless authorized access when needed, resolving the contradiction between security and ease of operation.
Solution Approach 2:
The protection device is designed to automatically manage encryption and decryption operations without requiring manual intervention from authorized users. The device self-services by monitoring access requests, verifying authorization, and providing decryption keys as needed. This automation eliminates the operational burden that would otherwise be required to manage encrypted code access, maintaining both security and ease of operation.
3Reliability
If permanent cryptographic keys are used for code protection, then long-term security is achieved, but compromise of a single key exposes all protected code
Solution Approach 1:
The patent segments the cryptographic protection into multiple ephemeral encryption keys, each associated with specific code segments or execution contexts. Instead of using a single permanent key for all code, the system generates multiple temporary keys that are valid only for specific periods or purposes. This segmentation ensures that if one key is compromised, only the code protected by that specific key is affected, while other code segments remain secure through their separate keys.
Solution Approach 2:
The patent employs ephemeral (temporary) encryption keys that have limited lifetimes rather than permanent keys. These short-lived keys are generated for specific code execution sessions and automatically invalidated afterward. This approach is analogous to using disposable security measures - each key is used once or for a limited time and then discarded, eliminating the long-term security risk associated with permanent keys while maintaining adequate protection throughout the code's lifecycle.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
In an aspect, a method for protecting software includes obtaining a payload including at least one of instructions or data, establishing a realm in a memory device, encrypting the payload based on an ephemeral encryption key (EEK) associated with the realm, and storing the encrypted payload in the realm of the memory device. In another aspect, a method for protecting software includes receiving a memory transaction associated with the memory device, the memory transaction including at least a realm identifier (RID) and a realm indicator bit, obtaining the EEK associated with the RID when the RID indicates the realm and when the realm indicator bit is enabled, decrypting an instruction and/or data retrieved from the realm based on the EEK when the memory transaction is a read transaction, and encrypting second data for storage in the realm based on the EEK when the memory transaction is a write transaction.