Intel® Stratix® 10器件安全用户指南

ID 683642
日期 12/15/2021
Public
文档目录

4.6.1. AES根秘钥紧凑型证书

使用quartus_pfg命令行工具将AES根秘钥.qek文件转换成紧凑型证书.ccert格式。在创建紧凑型证书的同时指定秘钥存储位置。您可以使用quartus_pfg工具创建一个未签署的证书,稍后进行签署。您必须使用一个AES根秘钥证书签署权限(权限比特6)使能的签名链才能成功签署AES根密钥紧凑型证书。

  1. 使用下面其中一个命令示例来创建一个额外的秘钥对,用于签署AES秘钥紧凑型证书:
    quartus_sign --family=stratix10 --operation=make_private_pem \
    --curve=secp384r1 aesccert1_private.pem
    
    quartus_sign --family=stratix10 --operation=make_public_pem \
    aesccert1_private.pem aesccert1_public.pem
    pkcs11-tool --module=/usr/local/lib/softhsm/libsofthsm2.so \
    --token-label s10-token --login --pin s10-token-pin \
    --keypairgen –mechanism ECDSA-KEY-PAIR-GEN \
    --key-type EC:secp384r1 --usage-sign --label aesccert1 --id 2
  2. 使用下面其中一个命令创建一个具有正确权限比特设置的签名链:
    quartus_sign --family=stratix10 --operation=append_key \ 
    --previous_pem=root_private.pem \
    --previous_qky=root.qky \ 
    --permission=0x40 --cancel=1 \
    --input_pem=aesccert1_public.pem \
    aesccert1_sign_chain.qky
    quartus_sign --family=stratix10 --operation=append_key --module=softHSM \
    -–module_args="--token_label=s10-token \
    --user_pin=s10-token-pin \
    --hsm_lib=/usr/local/lib/softhsm/libsofthsm2.so" \
    --previous_keyname=root \
    --previous_qky=root.qky \
    --permission=0x40 --cancel=1 \
    --input_keyname=aesccert1 \
    aesccert1_sign_chain.qky
  3. 对所需的AES根秘钥存储位置创建一个未签署的AES紧凑型证书。可使用以下AES根秘钥存储选项:
    • EFUSE_WRAPPED_AES_KEY
    • IID_PUF_WRAPPED_AES_KEY
    • BBRAM_WRAPPED_AES_KEY
    //Create eFuse AES root key unsigned certificate 
    quartus_pfg --ccert -o ccert_type=EFUSE_WRAPPED_AES_KEY \ 
    -o qek_file=aes.qek unsigned_efuse1.ccert 
  4. 使用quartus_sign命令或者参考实现来签署紧凑型证书。
    quartus_sign --family=stratix10 --operation=sign \
    --pem=aesccert1_private.pem \
    --qky=aesccert1_sign_chain.qky \
    unsigned_<location>1.ccert signed_<location>1.ccert
    quartus_sign --family=stratix10 --operation=sign --module=softHSM \
    --module_args="--token_label=s10-token --user_pin=s10-token-pin \
    --hsm_lib=/usr/local/lib/softhsm/libsofthsm2.so" \
    --keyname=aesccert1 \
    --qky=aesccert1_sign_chain.qky \
    unsigned_<location>1.ccert signed_<location>1.ccert
  5. 使用 Intel® Quartus® Prime Programmer通过JTAG将AES根秘钥紧凑型证书编程到Intel Stratix 10器件中。当使用EFUSE_WRAPPED_AES_KEY紧凑型证书类型时, Intel® Quartus® Prime Programmer默认对虚拟eFuses进行编程。通过添加--non_volatile_key选项来指定编程物理熔断器。
    //For physical (non-volatile) eFuse AES root key 
    quartus_pgm -c 1 -m jtag -o "pi;signed_efuse1.ccert" --non_volatile_key  
    
    //For virtual (volatile) eFuse AES root key 
    quartus_pgm -c 1 -m jtag -o “pi;signed_efuse1.ccert”   
    //For BBRAM AES root key  
    quartus_pgm -c 1 -m jtag -o “pi;signed_bbram1.ccert” 

SDM供应固件和主固件支持AES根密钥证书编程。您还可以使用FPGA架构或HPS的SDM mailbox界面对AES根密钥证书进行编程。