AR# 76171

|

デザイン アドバイザリ: フィールド システム用の独自のキーを生成して、開発ツールにそれらのキーを使用することを推奨

説明

最も安全なキー情報は、脆弱なキーを回避する真のランダム プロセスからのみ取得されます。

確定プロセス (つまり、真のランダム プロセスではないプロセス) からのキーは弱くなる可能性があり、予測可能であったり、総当たり攻撃 (ブルート フォース) を受ける可能性があることを意味します。

このため、フィールド システム用の独自のキーを生成して、開発ツールにそれらのキーを使用することをお勧めします。

このデザイン アドバイザリの内容は、Zynq-7000 SoC、Zynq UltraScale+ MPSoC/RFSoC、Versal ACAP、UltraScale、UltraScale+ および以前の FPGA ファミリ (Virtex-2 Pro、Virtex-4、Virtex-5、Virtex-6、7 シリーズ) に該当します。

ソリューション

FPGA (UltraScale、UltraScale+):

Bootgen または write_bitstream のいずれかにより提供されるキー生成用の NIST 承認済みのカウンター モード KDF を使用する場合、KDF に必要なシードはユーザーが指定するようになっています。
ユーザーがシードを指定しない場合、Bootgen は OpenSSL の RAND_Bytes を使用してシードを生成します。

このシード生成は暗号的に強力なはずですが、Vivado や Vitis で生成されたシードをユーザーのプロダクション キーの生成に使用することはお勧めしません (1)。
OpenSSL を使用して乱数を生成する方法の詳細は、https://wiki.openssl.org/index.php/Random_Numbers を参照してください。

Bootgen または write_bistream のいずれかでタイム ベースの疑似ランダム プロセスを使用する場合、生成されたキーは真のランダム プロセスではないため、脆弱になる可能性があります。

フィールド システムの場合は、必ず独自のキーを指定することをお勧めします。

Zynq UltraScale+ MPSoC/RFSoC および Versal ACAP:

Bootgen はキー生成に NIST 承認済みのカウンター モード KDF を使用しますが、KDF に必要なシードはユーザーが指定するようになっています。

ユーザーがシードを指定しない場合、Bootgen は OpenSSL の RAND_Bytes を使用してシードを生成します。

このシード生成は暗号的に強力なはずですが、Vivado や Vitis で生成されたシードをユーザーのプロダクション キーの生成に使用することはお勧めしません (1)。

OpenSSL を使用して乱数を生成する方法の詳細は、https://wiki.openssl.org/index.php/Random_Numbers を参照してください。

Zynq-7000:

Bootgen ツールは、現在の日付と時刻でシードされた疑似ランダム プロセスを使用して、AES および HMAC キーを生成します。その結果、生成されたキーは真のランダム プロセスではないため、脆弱になる可能性があります。

フィールド システムの場合は、必ず独自のキーを指定することをお勧めします。

Bootgen でのこのキー生成は、開発中にエンジニアが実際のキーやプロダクション キーを使用できない場合のテストに使用できます。

FPGA (Virtex-2 Pro、Virtex-4、Virtex-5、Virtex-6、7 シリーズ):

ISE の BitGen および Vivado の write_bitstream は、現在の日付と時刻でシードされた疑似ランダム プロセスを使用して、AES および HMAC キーを生成します。

その結果、生成されたキーは真のランダム プロセスではないため、脆弱になる可能性があります。フィールド システムの場合は、必ず独自のキーを指定することをお勧めします。

ザイリンクスのキー生成は、開発中にエンジニアが実際のキーやプロダクション キーを使用できない場合のテストに使用できます。

注記 1: ザイリンクスでは、追加の検査や検証なしに、OpenSSL ライブラリのスナップショットをそのまま使用しています。

AR# 76171
日付 04/23/2021
ステータス アクティブ
種類 一般
デバイス 詳細 概略
ツール
People Also Viewed