FPGA Key Storage Register Access Control
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for storing and using decryption keys in programmable logic devices (PLDs) are insecure, as they can be vulnerable to piracy through 'Trojan-horse' configuration boot programs that access and steal decryption key data.
Innovation Solution
A system and method that securely manages decryption keys by using a microcontroller with a key storage register and a decryptor, where only the decryptor can read from the key storage register, and access to the configuration data register is restricted after the decryptor is used, employing hardware or software decryptors and logic circuitry to limit access using specific memory addresses.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If decryption keys are stored in a memory-mapped register accessible to the microcontroller, then the microcontroller can easily read and use the keys for decryption, but the system becomes vulnerable to piracy and Trojan-horse configuration boot programs that can steal key data
Solution Approach 1:
The system divides the key storage function into separate components: a dedicated key storage register that is physically separated from the microcontroller's general memory space, and a decryptor module that acts as an intermediary. This segmentation prevents direct access to key data while maintaining the ability to perform decryption operations.
Solution Approach 2:
The decryptor serves as an intermediary between the key storage register and the microcontroller. Instead of the microcontroller directly accessing the key register, all key access goes through the decryptor, which validates permissions and performs decryption operations securely without exposing the raw key data to the microcontroller.
2Productivity
If the microcontroller can read from the configuration data register, then the configuration process is simple and fast, but the microcontroller can steal decrypted design data after configuration
Solution Approach 1:
The system performs the decryption operation before the configuration data is made accessible to the microcontroller. The decryptor decrypts the configuration data in advance and loads it into a protected register, ensuring that the microcontroller only receives decrypted data that cannot be stolen, rather than allowing access to encrypted or plaintext data that could be copied.
Solution Approach 2:
The system extracts the decryption function from the microcontroller and places it in a dedicated decryptor module. This separation ensures that the microcontroller never holds the encryption keys or access to the configuration data register, removing the capability for data theft while maintaining efficient configuration operations.
3Reliability
If a hardware decryptor is embedded in the integrated circuit with the PLD, then security is improved by limiting access to key data, but the device complexity increases
Solution Approach 1:
The decryptor is designed as a multi-functional module that handles multiple tasks: storing encryption keys, performing decryption operations, validating access permissions, and interfacing with both the microcontroller and configuration memory. By combining these functions into a single integrated module, the system achieves high security without proportionally increasing overall device complexity.
Data Source
AI summary
A system for securely using decryption keys during FPGA configuration includes a FPGA having a microcontroller for receiving a bitstream having an encrypted bitstream portion as well as a configuration boot program. The configuration boot program can be code that runs on an embedded hardware microcontroller or a software microcontroller. The system further includes a key storage register coupled to the microcontroller for storing key data from the microcontroller, a decryptor coupled to the key storage register, and a configuration data register in the FPGA. Preferably, only the decryptor can read from the key storage register and the configuration data register cannot be read by the microcontroller after the decryptor is used.


