PUF-Based Control Flow Encryption for Processor Security
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing defense methods against control flow attacks, such as code injection attacks, often result in significant performance loss and are ineffective in preventing alterations to program control flow, posing a substantial security threat to computer systems.
Innovation Solution
An apparatus and method utilizing a Physical Unclonable Function (PUF) module to generate unique keys for encrypting and decrypting target execution data, including function call return addresses and indirect jump destination addresses, within a processor's control flow, ensuring secure execution by preventing unauthorized alterations to program control flow.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If existing defense methods are used to prevent control flow attacks, then security protection is provided, but performance loss increases significantly
Solution Approach 1:
The patent applies preliminary action by encrypting control flow data (return addresses and indirect jump targets) before they are executed. The encryption is performed in advance during function call instructions, and the decrypted data is stored in the stack for later execution. This preliminary encryption protects control flow data from attacks while maintaining performance because the decryption only occurs when needed during normal execution, not continuously during attack detection.
2Reliability
If existing defense methods are used to prevent control flow attacks, then some security protection is provided, but the defense effectiveness is insufficient against determined attackers
Solution Approach 1:
The patent applies local quality by selectively encrypting only critical control flow data (function call return addresses and indirect jump destination addresses) rather than encrypting all program data. This targeted approach provides strong defense effectiveness for the most vulnerable control flow paths while keeping the defense mechanism relatively simple and focused on specific high-risk areas.
Solution Approach 2:
The patent introduces an intermediary encryption/decryption mechanism between the control flow data and the execution unit. The encryption module encrypts control flow data using keys from the PUF module, and the decryption module decrypts it when needed for execution. This intermediary layer provides strong security against determined attackers while maintaining a manageable system architecture through dedicated hardware modules.
3Reliability
If control flow data is encrypted to prevent attacks, then security is improved, but access and execution speed may be reduced
Solution Approach 1:
The encryption is performed in advance during function call instructions, and the decrypted data is stored in the stack for later execution. This preliminary action ensures that when the control flow data is needed during execution, it is already prepared and decrypted, minimizing the impact on execution speed.
Solution Approach 2:
The decryption module automatically decrypts the control flow data when it is fetched from the stack for execution. This self-service mechanism ensures that the execution unit always receives decrypted data without manual intervention, maintaining execution speed while ensuring security.
Data Source
AI summary
An apparatus for defending against control flow attack, including: a key acquisition module, configured to acquire response data, which is output by a physical unclonable function PUF module to an input stimulus, and store the response data in a register as key data to be used; an encryption module, configured to encrypt target execution data in a program control flow based on the key data in the process of the processor executing the program control flow, the target execution data including at least one of a target instruction at an indirect jump destination address and a function call return address; a decryption module, configured to decrypt the encrypted target execution data when the processor is to execute the target execution data; and an execution module, configured to continue to execute the program control flow based on the decrypted target execution data.


