2401970_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2401970_ja-JP

2401970_ja-JP

AB_SWAPアップデート失敗時のフォールバックメカニズム

こんにちは、
私たちは、S32K342のHSEファームウェアのAB_SWAPメカニズムを利用してOTAアップデートを行うアプリケーションを開発しています。現在、フラッシュメモリのパッシブ領域への書き込みが完了した時点で、パッシブブロックをアクティブ化するように設定しています。
起動元イメージが破損していないか確認できるフォールバックの仕組みがあるのか、またリセット後にパッシブ領域になった「既知の有効」領域にフォールバックできるのか知りたいです。
これは、時にはリセットを出さずにパッシブ領域を上書きし、途中でプロセッサをリセットしてしまい、フラッシュの映像が破損してしまうことがあるためです。

Re: Fallback mechanism for failed AB_SWAP update

やあ、 @lukaszadrapa
ご説明ありがとうございます。私たちはまだ、アプリケーションでどのタイプのセキュアブート戦略を使うべきかを理解しようとしています。高度なセキュアブートは、SMRとCRをインストールする必要があるため、少し複雑に思える。

一方、ベーシックセキュアブートはインストールがやや容易なようだが、具体的な実装方法やインストール手順は不明瞭なようだ。
これらの選択肢について何かアドバイスをいただけませんか?私はHSE Bリファレンス・マニュアルを指しており、これに関して参照すべき追加ドキュメントがあるかどうかも知りたいです。

よろしくお願いいたします。
シヴ

Re: Fallback mechanism for failed AB_SWAP update

こんにちは、 @Shiv_peak さん。


数日前に非常によく似た質問に回答しましたので、そちらをご覧ください。

https://community.nxp.com/t5/S32K/S32K-OTA-Rollback/m-p/2400332/highlight/true#M60125


さらに詳しい情報が必要な場合は、遠慮なくお申し付けください。


よろしくお願いいたします。

ルーカス

Re: Fallback mechanism for failed AB_SWAP update

下記の私のコメントをご覧ください。


  • イメージ検証が失敗した場合、基本セキュアブートはリカバリーモードに移行します。
    はい。
  • このリカバリーモードは、属性HSE_SECURE_RECOVERY_CONFIG_ATTR_IDを使ってSecure Recoveryとして設定できます。
    はい。
  • このモードを設定するには、UTESTモードをプログラミングする必要があります。
    UTESTは、設定属性HSE_SECURE_RECOVERY_CONFIG_ATTR_IDサービスを呼び出す際にHSEによってプログラムされます。共通の問題は、フラッシュブロック0とUTESTが同じ読み取りパーティション内にあることに注意することです。この属性をプログラムする際、フラッシュブロック0からはコードが実行できません。
  • これを設定するには、IVTでBOOT_SEQ == 1にする必要もあります。
    はい。
  • GMACを計算するには、ADKPをHSE_APP_DEBUG_KEY_ATTR_IDを使用して構成する必要があります。
    はい。

この件について理解を深めるにあたり、いくつか補足させてください。

  • あなたが共有したアプリケーションノートには、ADKPの設定はCUST_DELライフサイクル内でしかできないと書かれていました。システムのライフサイクルをどのように確認すればよいのでしょうか?また、それは安全でしょうか?
    はい、ADKPが設定されるまでライフサイクルを進めることはできません。ライフサイクルが進んだらセキュアデバッグが有効になるので、接続を確立するためにデバッガの設定が必要です。この投稿をご覧ください:
    https://community.nxp.com/t5/S32K/S32K3-HSE/m-p/2066312/highlight/true#M47070
    ライフサイクルの状態はDCMモジュールのレジスタDCMLCCから読み取ることができます。
  • AppBLは、Basic Secure BootにおけるIVTと同じものですか?
    AppBLとIVTは同じ方法で署名・検証されます。IVとGMACもIVTに付録されています。それは「表118」で見ることができます。 HSEファームウェアリファレンスマニュアルの「IVT構造」と記載されています。
  • IVTにGMACアドレスとリカバリイメージのアドレスを追加する必要がありますか?
    IVTを検証する場合は、前述のとおりIVとGMACをIVTに追加する必要があります。セキュアリカバリイメージを使用する場合は、イメージへのポインタとイメージの長さをIVTに追加する必要があります。

よろしくお願いいたします。

ルーカス

Re: Fallback mechanism for failed AB_SWAP update

ルカスさん、返信ありがとうございます。おかげでよく分かりました!Basic Secure Bootの実装を始め、ご質問やご不明点があればご連絡いたします。

よろしくお願いいたします。
シヴ

Re: Fallback mechanism for failed AB_SWAP update

「2.6.1.3」の項をご覧ください。HSEファームウェアのリファレンスマニュアルに記載されている「リカバリーモード」と記載されています。2.7.

つまり、2つのモードがあります。

JTAGベースのリカバリーモードでは、デバイスはRAM上で無限ループにハングする(このコードはSBAFによってRAMにロードされます)。ユーザーがデバッガに接続していくつかのリカバリーステップを実行できます。

セキュアリカバリーモード - これは属性 HSE_SECURE_RECOVERY_CONFIG_ATTR_ID によって有効にする必要があります。これはUTESTメモリにプログラムされたOTP属性であることに注意してください。これによりリカバリイメージが起動しますが、まずこれを検証する必要があります。つまり、基本的なセキュアブートに似ています。検証に失敗した場合は、JTAGリカバリモードに移行します。

セキュアリカバリモードは実行時のリカバリーやロールバックに使用できます。しかし、パッシブパーティションからこれを実行することはお勧めしません。すべてのコードはアクティブパーティションから実行される必要があります。ABスワップモードでは、いずれにせよ両方のパーティションにセキュアリカバリイメージのコピーが存在します。

別の選択肢としては、十分な空き容量があれば、このコードをデータフラッシュメモリに保存する方法もあります。

Re: Fallback mechanism for failed AB_SWAP update

私たちはこのアプリケーションノートを提供します:

https://www.nxp.com/webapp/Download?colCode=AN13465

 

Secure Bootアプリケーションノートの最新バージョンv0.1.1.0です(AN744511)2021年にリリースされ、以下からダウンロード可能です:

https://www.nxp.com/products/S32K3

申請書はこちらでご覧いただけます:

ドキュメント -> Secure Files -> Secure Boot アプリケーションノート v0.1.1.0(AN744511)

関連するデモプロジェクトはこちらからダウンロードできます:

Design Resources - > ソフトウェア - > Secure Files - > SecureBootAppNoteDemo(SW745310)


ソフトウェアは更新されていないので、 興味があれば前述SW745310を使ってください。


セキュアブートの他の例は、HSEデモ例(推奨)で見つけることができます:

https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples

高度なセキュアブート、基本的なセキュアブート、およびSHEセキュアブートの3つのモードすべてについて例があります。


一般的に、高度なセキュアブートモードが推奨されます。はい、このモードでセキュアブートを設定するのは簡単な作業ではありません。しかし、最高の保護性能と設定の柔軟性を提供します。利点は、好きな署名方式を選べ、複数の地域をカバーでき、セキュアブートが失敗した場合に異なる制裁を設定できることです。

一方、基本的なセキュアブートモードは常にGMACタグのみを使用し、これはADKPから派生したキーで計算され、1つの地域のみをカバーできます。失敗した場合、デバイスは直接リカバリーモードに移行します。

HSE DemoExamplesに掲載されている以下のプロジェクトを学習することをお勧めします。

S32K344_アドバンストセキュアブート

S32K344_ベーシックセキュアブート

これらは、それらにリンクされたアプリケーションS32K344_SecureBootBlinkyを保護するための構成プロジェクトです。

よろしくお願いいたします。

ルーカス

Re: Fallback mechanism for failed AB_SWAP update

なるほど、これでよく分かりました。ありがとうございます!
私の理解では:

  • イメージ検証が失敗した場合、基本セキュアブートはリカバリーモードに移行します。
  • このリカバリーモードは、属性HSE_SECURE_RECOVERY_CONFIG_ATTR_IDを使ってSecure Recoveryとして設定できます。
  • このモードを設定するには、UTESTモードをプログラミングする必要があります。
  • これを設定するには、IVTでBOOT_SEQ == 1にする必要もあります。
  • GMACを計算するには、ADKPをHSE_APP_DEBUG_KEY_ATTR_IDを使用して構成する必要があります。

この件について理解を深めるにあたり、いくつか補足させてください。

  • あなたが共有したアプリケーションノートには、ADKPの設定はCUST_DELライフサイクル内でしかできないと書かれていました。システムのライフサイクルをどのように確認すればよいのでしょうか?また、それは安全でしょうか?
  • AppBLは、Basic Secure BootにおけるIVTと同じものですか?
  • IVTにGMACアドレスとリカバリイメージのアドレスを追加する必要がありますか?

実装と基板上でのテストを開始する前に、これらの点についてもう少し明確な情報を得たいと思っています。ご連絡いただき、疑問を解消してくださり本当にありがとうございます!

よろしくお願いいたします。
シヴ

Re: Fallback mechanism for failed AB_SWAP update

ルーカスさん、分かりやすく説明してくれてありがとう。
I will look into the アプリケーションノート and the HSE demo examples and revert back in case of any queries.

よろしくお願いいたします。
シヴ

Re: Fallback mechanism for failed AB_SWAP update

基本的なセキュアブートが失敗した場合に「デバイスがリカバリーモードに入る」とはどういう意味か、もう少し詳しく教えてもらえますか?これはつまり、コアはリセットから解放されず、フォールバックやリカバリーも存在しないということですか?
セキュアブートが失敗した場合に、別のイメージ(おそらくパッシブバンクにあるイメージ)を起動する機能を持たせたいので、この質問をしています。

Tags (1)
No ratings
Version history
Last update:
Thursday
Updated by: