Volatile and Non-Volatile Key Storage - Volatile and Non-Volatile Key Storage - XAPP1098

Developing Tamper-Resistant Designs with UltraScale and UltraScale+ FPGAs (XAPP1098)

Document ID
XAPP1098
Release Date
2025-05-22
Revision
1.5.1 English

The 256-bit symmetric AES-GCM key can be loaded into either volatile BBRAM or non-volatile eFUSE one-time programmable (OTP) storage locations within the FPGA. To decide which storage location to use for the key, an understanding of the advantages and disadvantages of BBRAM and eFUSE storage is necessary. Refer to the following tables.

Table 1. BBRAM Storage Location: Advantages and Disadvantages
Advantages Disadvantages
  • Volatile and reprogrammable.
  • Passive and active key clearing (that is, the evidence can be removed).
  • Tamper resistant. 1
  • Requires an external battery.
  • Many battery vendors do not specify operation at high temperature and/or long lifetimes (although some vendors are now starting to offer betavoltaic type batteries to help address these issues).
  1. There is no physical path to read the key out of BBRAM (write-only access).
Table 2. eFUSE Storage Location: Advantages and Disadvantages
Advantages Disadvantages
  • No external battery required.
  • Passive and active key clearing (the evidence can be removed).
    • Only a bitstream encrypted with the eFUSE key can configure the FPGA. All others are rejected if the cfg_aes_only 1 eFUSE bit is also blown.
  • Permanent; the key cannot be cleared or updated 2 .
  • Less secure than BBRAM solution (the device level evidence remains).
When using the cfg_aes_only option (located in the eFUSE control register FUSE_SEC) there are two important points to consider:
  1. If using the indirect flash programming method (see Vivado Design Suite User Guide: Programming and Debugging (UG908)) for the bitstream, ensure that this option (cfg_aes_only) is enabled after the on-board flash has been loaded with the encrypted bitstream. This is because the indirect programming core bitstream from AMD is unencrypted. Otherwise, the FPGA attempts to decrypt the indirect programming bitstream using the eFUSE key and fails configuration (and thus the update of the external flash fails as well). This also has implications for subsequent field updates of flash-stored firmware.
  2. The permanent AES-GCM decryptor disable feature (via eFUSE) can be used in lieu of erasing the eFUSE-based key which prevents a DPA attack but the eFUSE key still remains in the device and is subject to a more sophisticated physical attack.

Additional details concerning bitstream encryption and key storage can be found in the UltraScale Architecture Configuration User Guide (UG570), Vivado Design Suite User Guide: Programming and Debugging (UG908), Vivado Design Suite Tcl Command Reference Guide (UG835), Using Encryption and Authentication to Secure an UltraScale/UltraScale+ FPGA Bitstream (XAPP1267), and Answer Record AR 73459.