Intel Agilex® 7 Device Security User Guide

ID 683823
Date 7/07/2023
Document Table of Contents

2.1.1. Creating Authentication Key Pairs on the Local File System

You use the quartus_sign tool to create authentication key pairs on the local file system using the make_private_pem and make_public_pem tool operations. You first generate a private key with the make_private_pem operation. You specify the elliptic curve to use, the private key filename, and optionally whether to protect the private key with a passphrase. Intel recommends the use of the secp384r1 curve and following industry best practices to create a strong, random passphrase on all private key files. Intel also recommends restricting the file system permissions on the private key .pem files to read by owner only. You derive the public key from the private key with the make_public_pem operation. It is helpful to name the key .pem files descriptively. This document uses the convention <keyuse><cancelID>_<keytype>.pem in the following examples.
  1. In the Nios® II command shell, run the following command to create a private key. The private key, shown below, is used as the root key in later examples that create a signature chain. Intel Agilex® 7 devices support multiple root keys, so you repeat this step to create your required number of root keys. Examples in this document all refer to the first root key, though you may build signature chains in a similar fashion with any root key.
    Option Description
    With passphrase
    quartus_sign --family=agilex --operation=make_private_pem \
    --curve=secp384r1 root0_private.pem
    Enter the passphrase when prompted to do so. 
    Without passphrase
    quartus_sign --family=agilex --operation=make_private_pem \
    --curve=secp384r1 --no_passphrase root0_private.pem
  2. Run the following command to create a public key using the private key generated in the previous step. You do not need to protect the confidentiality of a public key.
    quartus_sign --family=agilex --operation=make_public_pem \
    root0_private.pem root0_public.pem
  3. Run the commands again to create a key pair used as the design signing key in the signature chain.
    quartus_sign --family=agilex --operation=make_private_pem \
    --curve=secp384r1 design0_sign_private.pem
    quartus_sign --family=agilex --operation=make_public_pem \
    design0_sign_private.pem design0_sign_public.pem

Did you find the information on this page useful?

Characters remaining:

Feedback Message