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

4.3. Programming Key Cancellation ID Fuses

Starting with Intel® Quartus® Prime Pro Edition software version 21.1, programming Intel and owner key cancellation ID fuses requires the use of a signed compact certificate. The key cancellation ID compact certificate may be signed with a signature chain that has FPGA section signing permissions. You create the compact certificate with the programming file generator command line tool. You sign the unsigned certificate using the quartus_sign tool or reference implementation.

Intel® Agilex™ devices support separate banks of owner key cancellation IDs for each root key. When an owner key cancellation ID compact certificate is programmed into an Intel® Agilex™ FPGA, the SDM determines which root key signed the compact certificate and blows the key cancellation ID fuse that corresponds to that root key.

The following examples create an Intel key cancellation certificate for Intel key ID 7. You may replace 7 with the applicable Intel key cancellation ID from 0-31.

Run the following command to create an unsigned Intel key cancellation ID compact certificate.
quartus_pfg --ccert -o ccert_type=CANCEL_INTEL_KEY -o cancel_key=7 \
unsigned_cancel_intel7.ccert 
Run one of the following commands to sign the unsigned Intel key cancellation ID compact certificate.
quartus_sign --family=agilex--operation=SIGN \
--qky=design0_sign_chain.qky --pem=design0_private.pem \
--cancel=svnA:0 unsigned_cancel_intel7.ccert signed_cancel_intel7.ccert 
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" --pem=design0_sign \
--qky=design0_sign_chain.qky \
--cancel=svnA:0 unsigned_cancel_intel7.ccert signed_cancel_intel7.ccert
Run the following command to create an unsigned owner key cancellation ID compact certificate.
quartus_pfg --ccert -o ccert_type=CANCEL_OWNER_KEY -o cancel_key=2 \
unsigned_cancel_owner2.ccert
Run one of the following commands to sign the unsigned owner key cancellation ID compact certificate.
quartus_sign --family=agilex --operation=SIGN \
--qky=design0_sign_chain.qky --pem=design0_private.pem \
--cancel=svnA:0 unsigned_cancel_owner2.ccert signed_cancel_owner2.ccert
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" --pem=design0_sign \
--qky=design0_sign_chain.qky --cancel=svnA:0 \
unsigned_cancel_owner2.ccert signed_cancel_owner2.ccert
Once you have created a signed key cancellation ID compact certificate, you use the Intel® Quartus® Prime Programmer to program the compact certificate to the device via JTAG.
//For physical (non-volatile) eFuses 
quartus_pgm -c 1 -m jtag -o "pi;signed_cancel_intel7.ccert" --non_volatile_key 
quartus_pgm -c 1 -m jtag -o “pi;signed_cancel_owner2.ccert” --non_volatile_key 
 

//For virtual (volatile) eFuses 
quartus_pgm -c 1 -m jtag -o "pi;signed_cancel_intel7.ccert"  
quartus_pgm -c 1 -m jtag -o “pi;signed_cancel_owner2.ccert”  

You may additionally send the compact certificate to the SDM using the FPGA or HPS mailbox interface.