UltraScale and UltraScale+ FPGAs have the capability of loading the entire encrypted bitstream into the device and then authenticating it before sending it to the on-chip decryption engine (“authenticate-then-decrypt”). If the bitstream has been modified in any way (including only a single bit change), the device’s asymmetric authentication function detects these change(s) and not only disables the decryption engine (if enabled for an encrypted bitstream) but also prevents the startup of the device. In short, if this feature is enabled, only an authorized bitstream can configure the UltraScale or UltraScale+ FPGA. When asymmetric authentication is enabled, the symmetric authentication functions of the AES-GCM algorithm are not performed (that is, the periodic and complete symmetric authentication checks are not performed).
Because this method uses the RSA-2048 asymmetric digital signature (authentication) algorithm, it does not require the device to contain a “secret” to accomplish this authentication task. Instead, the asymmetric authentication function contains user-defined public key information. Due to limited space, the feature uses a 384-bit SHA-3 hash of the 2048-bit public key and is programmed into the eFUSE bits of the UltraScale or UltraScale+ FPGA. It is up to you to define the private and public key pairs for this operation. There are a number of open source and commercial products that can be used to create these key pairs (such as OpenSSL and SafeNet). Because this authentication scheme does not require a secret to operate, adversarial attacks such as side channel analysis do not reveal any information that is useful to an attacker.
There are several reasons to use the RSA asymmetric authentication:
- Authenticate the entire bitstream before decrypting it. This method is part of a DPA attack countermeasure described in the DPA Protections section.
- Prevent unauthorized users from ever running their own (potentially malicious) designs on the UltraScale or UltraScale+ FPGA. When an authorized user programs the public key hash into the eFUSE bits and the RSA_AUTH eFUSE has been programmed (forcing RSA authentication), only authorized bitstreams can be loaded.
The following figure illustrates (at a high-level) how the bitstream is constructed using RSA/SHA-3 and how the entire bitstream is authenticated internally on-chip. The top portion of the figure is performed by the software tools to create the RSA authenticated bitstream and the bottom portion of the figure is done inside the UltraScale or UltraScale+ FPGA to authenticate the bitstream.
- Bitstream can be encrypted (ciphertext) or unencrypted (plaintext).
- Private/public key pair generated by the user.
- PKCS #1 v1.5 padding scheme.
The following figure provides details on the actual format of an encrypted and RSA authenticated bitstream and further describes which parts are plaintext, authenticated plaintext, and authenticated ciphertext.
Because the entire bitstream is loaded into the device and then authenticated prior to use, there is a configuration time penalty when using the RSA asymmetric authentication scheme (with an encrypted bitstream). However, depending on the configuration port used, the increase in overall configuration time might not be very significant. This is due to the fact that after the entire bitstream has been loaded and authenticated, the decryption process can take advantage of a full 32-bit wide data bus. Consult the UltraScale Architecture Configuration User Guide (UG570) for precise configuration time details.
Due to certain silicon design constraints, there are some limitations when using the RSA asymmetric authentication scheme on UltraScale and UltraScale+ FPGAs:
- RSA authenticated bitstreams cannot be compressed. For details on compression, see the UltraScale Architecture Configuration User Guide (UG570).
- Partial reconfiguration (PR) bitstreams cannot be RSA authenticated with the built-in silicon feature. (You can put your own authentication function in the FPGA logic.) For details on PR, see the Partial Reconfiguring section of Vivado Design Suite Tutorial: Dynamic Function eXchange (UG947).
- Tandem bitstreams cannot be RSA authenticated. Tandem configuration is the AMD solution for fast configuration of PCIe® designs to meet enumeration needs within open PCIe systems.
- For UltraScale FPGAs only, there are limitations on bitstream configuration widths when RSA is enabled. Some of the narrow configuration widths are not supported. See UltraScale FPGA RSA Authentication and Supporting Configuration Modes (XCN15038) for additional details.