Arria 10 SoCセキュア・ブート・ユーザーガイド

ID 683060
日付 3/29/2016
Public
ドキュメント目次

1.9.2. 暗号化された第2ステージ・ブートローダ・イメージの作成

以下は、暗号化された第2ステージ・ブートローダ・イメージを作成する手順の一例です。

  1. 暗号化鍵を作成します。
  2. SoC EDSを使用して、暗号化されたブートローダ・イメージを生成・ビルドします。
  3. 暗号化鍵をデバイスの揮発性鍵ストレージ内に保存します。
  4. 暗号化されたブート・イメージと暗号化鍵を使用してセキュア・ブートを実施します。
  1. 以下のコマンドを使用し、エンベデッド・コマンドシェルからブートローダ・ジェネレータを起動します。
    $ bsp-editor &
    ブートローダ・ジェネレータについての基本的な情報は、Altera SoC Embedded Design Suite User Guideの「Second Stage Bootloader Support Package Generator」を参照してください。
  2. Arria 10 HPSに向けて新たにブートローダ BSPを作成します。
    ブートローダの作成方法については、Altera SoC Embedded Design Suite User Guideの「BSP Generator Graphical User Interface」を参照してください。また、「署名付きの第2ステージ・ブートローダ・イメージの作成」の図「ートローダ・ジェネレータを使用した新規の第2ステージ・ブートローダの作成」も参照してください。
  3. Quartus Prime Convert Programming Fileツールのquartus_cpfを使用して、AES暗号化鍵ファイルを作成します。
    詳細は、AN-566Using the Design Security Features in Altera FPGAsの「How to Generate the Single-Device .ekp File and Encrypt Configuration File Using Software with the Command-Line Interface」を参照してください。
  4. 以下の図で示すように、セキュリティ設定を暗号化に適用します。
    図 13. ブートローダ・ジェネレータを使用した暗号化された第2ステージ・ブートローダ・イメージの作成
    • メイン・ブートローダ生成設定でenable_bootloader_encryptionをオンにします。
    • quartus_cpfによって生成された)encryption key fileの名称を指定します。
    • (暗号化鍵ファイルにみられるような)encryption key nameを指定します。
  5. Generateをクリックして、セキュア・ブートローダ・ソースを生成します。
  6. ブートローダ・ジェネレータを閉じます。
  7. コマンド・ラインで、ブートローダ・ソース・フォルダに移動します。
  8. makeコマンドを使用し、ブートローダ・イメージをビルドします。
    $ make
  9. 以下のファイルが存在することを確認し、暗号化されたブートローダ・イメージがビルドされたことを検証します。
    u-boot_w_dtb-mkpimage-encrypted-x4.abin
  10. AES暗号化鍵をデバイス内に格納します。

    詳細は、AN-566Using the Design Security Features in Altera FPGAsの「Steps for Implementing a Secure Configuration Flow」を参照してください。

  11. 手順9の暗号化されたブートローダ・イメージを、SDカード・ブート・ユーティリティを使用して適切なフラッシュ・ブート・デバイスのパーティションに保存します。
    注: 詳細は、Altera SoC Embedded Design Suite User GuideSD Card Boot Utilityの章を参照してください。
  12. 手順3で生成された暗号化鍵を使用して、暗号化鍵のプログラミング・ファイルを生成します。
    Usage:
    quartus_cpf --key <encryption key file: key name> <design.sof> \
     <encryption key programming file>
    Example:
    $ quartus_cpf --key encrypt_key.key:key1 ghrd_10as066n2.sof encrypt_key.ekp
    This example generates encrypt_key.ekp.
  13. 更新されたSDカード(手順11)がキットに挿入されていることを確認します。
    注: この手順ではシステムに電源を投入しないでください。
  14. USB JTAGポートのUSB Blaster™ケーブルを使用してデバイスを開発プラットフォームに接続し、システムに電源を投入します。
    注: 暗号化鍵が格納されていないため、この段階ではブートローダ・コードは実行されません。
  15. SoC EDSエンベデッド・コマンドシェルからデバイスが接続されていることを確認し、以下のいずれかのコマンドを実行してJTAGインタフェースIDを取得します。
    • $ quartus_pgm -c USB-BlasterII –a
    • $ jtaconfig –N
    デバイスが正常に接続された場合、上記のいずれかのコマンドによりUSB Blaster IIデバイスJTAGインタフェースIDをはじめとする情報が表示されます。
    注: 注意!これより先の手順では、システムの電源を落とさないでください
  16. 手順12の暗号化プログラミング鍵ファイルを使用して暗号化鍵をプログラミングします。
    quartus_pgm -c USB-BlasterII -m jtag -o "p;encrypt_key.ekp;10AS066H2ES" \
        -o "s;SOCVHPS"
    注: 手順15で表示されるデバイスUSB Blaster IIインタフェースIDを参照してください。
    注: 鍵のプログラミングが完了するまでシステムの電源を落とさないでください
  17. 鍵が正常にプログラムされた後、システムは自動で暗号化されたブート・イメージをリセットし、実行します。
    注: システムの電源が投入されるごとに手順14を繰り返す必要があります。