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

2.1.1. Creating Authentication Key Pairs on the Local Filesystem

You use the quartus_sign tool to create authentication key pairs on the local filesystem using the make_private_pem and make_public_pem tool operations. You first use the make_private_pem operation to generate a private key. 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 use the make_public_pem operation to derive the public key from the private key. It is helpful to name the key .pem files descriptively. This document generally 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™ 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