プロダクションの FPGA では HSM モードを使用しますが、標準モードでも選択できます。
標準モード
標準モードでは、認証署名が埋め込まれたビットストリームが生成されます。このモードでは、認証されたビットストリームを生成するための秘密キーがユーザーに提供されていると想定されます。次のコマンドを使用して Bootgen を実行します。
bootgen -arch fpga -image all.bif -o rsa_ref.bit -w on -log error
次に、HSM モードで認証されたビットストリームを生成する手順を示します。このモードでは、秘密キーはセキュア チームが管理し、ユーザーには提供されません。次の図に、HSM モードのフローを示します。
図 1. HSM モードのフロー
ステージ 0: ダミー キーで認証
これは、1 つのビットストリームに 1 回だけ実行するタスクです。ステージ 0 では、Bootgen により stage0.bif ファイルが生成されます。
bootgen -arch fpga -image stage0.bif -w -o dummy.bit -log error
stage0.bif
の内容は次のとおりです。フォーマットについては、次のステージを参照してください。
the_ROM_image:
{
[sskfile] dummykey.pem
[authentication=rsa] plain.bit
}
注記: 認証されたビットストリームには、ヘッダー、実際のビットストリーム、署名およびフッターが含まれます。この dummy.bit は、認証されたビットストリームのフォーマットのビットストリームを取得するために作成され、ダミー署名を含みます。ダミー ビット ファイルが Bootgen に渡されると、署名が計算されてオフセットに挿入され、認証されたビットストリームが生成されます。
ステージ 1: ハッシュを生成
bootgen -arch fpga
-image stage1.bif -generate_hashes -log error
Stage1.bif は次のとおりです。
the_ROM_image:
{
[authentication=rsa] dummy.bit
}
ステージ 2: ハッシュ HSM に署名
ここでは、例として OpenSSL が使用されています。
openssl rsautl -sign
-inkey rsaPrivKeyInfo.pem -in dummy.sha384 > dummy.sha384.sig
ステージ 3: RSA 証明を実際の署名で更新
Stage3.bif は次のとおりです。
bootgen -arch fpga -image stage3.bif -w -o rsa_rel.bit -log error
the_ROM_image:
{
[spkfile] rsaPubKeyInfo.pem
[authentication=rsa, presign=dummy.sha384.sig]dummy.bit
}
注記: eFUSE に書き込む必要のある公開キー ダイジェストは、HSM モードのステージ 3 で生成された rsaPubKeyInfo.pem.nky ファイルに含まれます。