Quartus® Prime Pro Edition User Guide: Programmer

ID 683039
Date 4/01/2024
Document Table of Contents

1.3.1. Enabling Bitstream Authentication (Programming File Generator)

Bitstream authentication requires that you generate a first level signature chain (.qky) that includes the root key and one or more design signing keys. The root key enables the base security features and authenticates the design signing key through the public signature chain. The root key stores the SHA-256 or SHA-384 hash of the key in eFuses.

You can also optionally enable firmware co-signature capability to require signing the version of configuration firmware that runs on your device. The FPGA device then can load only authenticated firmware.

Note: For step-by-step first level signature chain key generation instructions, refer to one of the following guides:

After you specify the .qky in Assembler settings, the Assembler appends the first level signature chain to the configuration .sof that you generate.

Use the Programming File Generator to generate the signed configuration bitstream for an .sof file. The JTAG Indirect Configuration File (.jic) and Raw Programming Data File (.rpd) formats are available for Active Serial (AS) configuration. The Programmer Object File (.pof) and Raw Binary File (.rbf) are available for Avalon® Streaming configuration.

Follow these steps to enable bitstream authentication:

  1. Generate a first level signature chain (.qky) that includes the root key and one or more design signing keys, as Stratix® 10 Device Security User Guide and Agilex™ 7 Device Security User Guide describe.
  2. To add the first level signature chain to a configuration bitstream, click Assignments > Device > Device and Pin Options > Security, and then specify the first level signature chain .qky for the Quartus key file option.
  3. To enable more physical device security options, click the More Options button on the Security page. More Security Options Dialog Box describes all options.
    Figure 13. Security Tab (Device and Pin Options)
  4. Generate primary device programing files in the Assembler, as Generating Primary Device Programming Files describes. The primary device programming file now contains data to enable first level authentication.
  5. To optionally enable co-signing device firmware authentication, generate a .jic or .rbf secondary programming file with the following options, as Generating Secondary Programming Files describes:
    1. In Programming File Generator, click the Properties button. The Input File Properties dialog box appears.
      Figure 14. Enabling Co-Signing Device Firmware Authentication ( Stratix® 10 Devices)
    2. Set Enable signing tool to On.
    3. For Private key file, specify a design signing key Privacy Enhanced Mail Certificates file (.pem) for firmware co-signing. This key can be separate from the FPGA design signing key.
    4. For Co-signed firmware, specify a Quartus Co-Signed Firmware file (.zip).
    5. Click OK.
  6. Use the Programmer to configure the device with the .jic or .rbf.