Intel® Agilex™ Device Security User Guide

ID 683823
Date 11/09/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.3.4. Partial Reconfiguration Bitstream Encryption

You can enable bitstream encryption on some  Intel® Agilex® FPGA designs that use partial reconfiguration.

Partial reconfiguration designs utilizing the Hierarchical Partial Reconfiguration (HPR) or Static Update Partial Reconfiguration (SUPR) do not support the bitstream encryption. You must use the same encryption key to encrypt the static region and all personas unless multi-authority support is enabled. If your design contains multiple PR regions, you must encrypt all personas. To enable partial reconfiguration bitstream encryption, follow the same procedure in all design revisions.

You enable partial reconfiguration bitstream encryption by selecting Assignments > Device > Device and Pin Options > Security menu. Select the desired encryption key storage location.
Figure 6. Partial Reconfiguration Bitstream Encryption Setting

After you compile your base design and revisions, the software generates a .sof file and one or more .pmsf files, representing the personas. You create encrypted and signed programming files from .sof and .pmsf files in a similar fashion to designs with no partial reconfiguration enabled.

Use the following command to convert the compiled persona .pmsf file to a partially encrypted .rbf file:
quartus_pfg -c -o finalize_encryption_later=ON \ 
-o sign_later=ON encryption_enabled_persona1.pmsf persona1.rbf
You use the quartus_encrypt command line tool to finalize bitstream encryption.
quartus_encrypt --family=agilex \  
--operation=ENCRYPT --key=aes_root.qek persona1.rbf encrypted_persona1.rbf
You use the quartus_sign command line tool to sign the encrypted configuration bitstream.
quartus_sign --family=agilex --operation=SIGN \ 
--qky=design0_sign_chain.qky \ 
--pem=design0_sign_private.pem encrypted_persona1.rbf \ 
signed_encrypted_persona1.rbf 
quartus_sign --family=agilex--operation=SIGN \ 
--module=softHSM --module_args="--token_label=agilex-token \
--user_pin=agilex-token-pin --hsm_lib=/usr/local/lib/softhsm/libsofthsm2.so" \
--qky=design0_sign_chain.qky --cancel=svnA:0 \
--pem=design0_sign encrypted_persona1.rbf signed_encrypted_persona1.rbf