認証の使用 - 2022.1 日本語

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

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

AES 暗号化は対称キーを用いた自己認証アルゴリズムで、暗号化と復号化に同じキーを使用します。したがって、このキーは非公開キーとして保護する必要があり、キーを格納するための領域が内部に必要になります。RSA (Rivest Shamir Adleman) による認証手段もあります。RSA は非対称アルゴリズムで、署名に使用するキーと検証に使用するキーが異なります。認証には一対のキーが必要です。

  • 署名には、秘密キーを使用します。
  • 検証には、公開キーを使用します。

この公開キーは保護の必要がないため、セキュアな格納領域は不要です。この認証方式と暗号化を組み合わせることにより、真正性と機密性の両方を確保できます。RSA は、暗号化されているパーティションと暗号化されていないパーティションのいずれにも使用可能です。

RSA のメリットは、公開キーを使用することだけではなく、復号化する前に認証を実行できることが挙げられます。RSA 公開キーのハッシュ値は eFUSE に格納する必要があります。ザイリンクス SoC デバイスでは、パーティション データは AES 復号化エンジンに送信される前に認証されます。この方法では、パーティション データの真正性を確認してから復号化を実行することになるため、復号化エンジンへの攻撃を防ぐことができます。

ザイリンクス SoC では、公開キーと秘密キーの 2 つのペアが使用されます (プライマリおよびセカンダリ)。プライマリ公開/秘密キーは、セカンダリ公開/秘密キー ペアを認証します。セカンダリ キーは、パーティションを署名/検証します。

キーを示す頭文字の最初のアルファベットは、プライマリの場合 P、セカンダリの場合 S となります。キーを示す頭文字の 2 番目のアルファベットは、公開の場合 P、秘密の場合 S となります。キーの種類は次の 4 つです。

  • PPK = プライマリ公開キー
  • PSK = プライマリ秘密キー
  • SPK = セカンダリ公開キー
  • SSK = セカンダリ秘密キー

Bootgen は、次の 2 つの方法で認証証明を作成できます。

  • PSK と SSK を供給します。これらの 2 つの入力を使用し、SPK 署名がオンザフライで計算されます。
  • PPK、SSK、および SPK 署名を入力として供給します。この方法は、PSK がわからない場合に使用されます。

プライマリ キーはハッシュ化されて eFUSE 内に格納されます。このハッシュ値は、FSBL によってブート イメージに格納されたプライマリ キーのハッシュ値と比較されます。このハッシュは、Vitis に付属するスタンドアロン ドライバーを使用して PS の eFUSE メモリに書き込むことができます。

BIF ファイルの例を次に示します。

image:
{ 
	[pskfile]primarykey.pem
	[sskfile]secondarykey.pem
	[bootloader,authentication=rsa] fsbl.elf
	[authentication=rsa]uboot.elf
}

デバイス固有の認証の詳細は、次の資料を参照してください。