Intel® Stratix® 10 Device Security User Guide

ID 683642
Date 12/15/2021

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 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 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.
    Option Description
    With passphrase
    quartus_sign --family=stratix10 --operation=make_private_pem \
    --curve=secp384r1 root_private.pem
    Enter the passphrase when prompted to do so. 
    Without passphrase
    quartus_sign --family=stratix10 --operation=make_private_pem \
    --curve=secp384r1 --no_passphrase root_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=stratix10 --operation=make_public_pem \
    root_private.pem root_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=stratix10 --operation=make_private_pem \
    --curve=secp384r1 design0_sign_private.pem
    quartus_sign --family=stratix10 --operation=make_public_pem \
    design0_sign_private.pem design0_sign_public.pem