認証と暗号化の両方を含む HSM フロー - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語

ステージ 0: ダミー キーを使用してプレーンなビットストリームを暗号化し、認証。keyrolling が必要な場合は、keylife パラメーターを追加

.nky ファイルを指定することも、Bootgen で暗号化用のキーを含む .nky ファイルを生成することもできます。難読化された AES キー生成は Bootgen ではサポートされません。keyrolling 機能には keylife パラメーターが必要です。

the_ROM_image:

{

[aeskeyfile] encrypt.nky

[sskfile] dummykey.pem

[encryption=aes, authentication=rsa,keylife =32] plain-system.bit

}

bootgen -arch fpga -image stage0.bif -w -o auth-encrypt-system.bit -log info
このステップの後、暗号化が有効になっている場合は .nky ファイルが生成されます。このファイルにはすべてのキーが含まれています。

ステージ 1: ハッシュを生成

次にそのコード例を示します。

the_ROM_image:

{

[authentication=rsa] auth-encrypt-system.bit

}

 

bootgen -arch fpga -image stage1.bif -generate_hashes -log info

ステージ 2: ハッシュ HSM に署名

ここでは、例として OpenSSL が使用されています。

openssl rsautl -sign -inkey rsaPrivKeyInfo.pem -in auth-encrypt-system.sha384 > auth-encrypt-system.sha384.sig

HSM サーバーを使用してハッシュに署名します。SSI テクノロジ デバイスの場合、各 SLR (Super Logic Region) の署名を生成します。次の例は、4 つの SLR を持つデバイスの署名を生成するコードを示しています。

openssl rsautl -sign -inkey rsaPrivKeyInfo.pem -in auth-encrypt-system.0.sha384 > auth-encrypt-system.0.sha384.sig

openssl rsautl -sign -inkey rsaPrivKeyInfo.pem -in auth-encrypt-system.1.sha384 > auth-encrypt-system.1.sha384.sig

openssl rsautl -sign -inkey rsaPrivKeyInfo.pem -in auth-encrypt-system.2.sha384 > auth-encrypt-system.2.sha384.sig

openssl rsautl -sign -inkey rsaPrivKeyInfo.pem -in auth-encrypt-system.3.sha384 > auth-encrypt-system.3.sha384.sig

ステージ 3: RSA 証明を実際の署名で更新

次にそのコード例を示します。

the_ROM_image:

{

[spkfile] rsaPubKeyInfo.pem

[authentication=rsa, presign=auth-encrypt-system.sha384.sig] auth-encrypt-system.bit

}

Command:bootgen -arch fpga -image stage3.bif -w -o rsa_encrypt.bit -log info
注記: SSI テクノロジ デバイスの場合は、presign=<first presign filename>:<number of total presigns> を使用します。たとえば、4 つの SLR を持つデバイスには、<first presign filename:4> が必要です。