セキュアライフサイクルステージにTRAVEO™ T2Gを移行する – KBA234640
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Translated by: keni_4440091
Original KBA: Migrate a TRAVEO™ T2G device to the SECURE lifecycle stage - KBA234640
Version: **
デバイスライフサイクルは、TRAVEO™ T2G MCUセキュリティの重要な側面です。ライフサイクルステージは、eFuseが飛ぶことにより決定される厳密な不可逆的な進行に従います(ヒューズの値を「0」から「1」に変更)。このシステムは、お客様の要求レベルでの内部のデバイスデータ、およびコードを保護するために使用されます。図1は、TRAVEO™ T2Gでサポートされるライフサイクルステージを示します。
図1.TRAVEO™ T2Gでサポートされるライフサイクルステージ
セキュアなライフサイクルステージ
このステージは、セキュアデバイスのライフサイクルステージです。このステージに移行する前に、SECURE HASHはeFuseで飛ばされ、有効なアプリケーションコードが、コードflashにプログラムされている必要があります。このステージでは、プロテクション状態は、SECUREに設定され、SECUREアクセス制限が展開されます。
SECURE HASHは、SROM API「TransitionToSecure」を使用してNORMAL_PROVISIONEDライフサイクルステージからSECUREまたはSECURE_W_DEBUGライフサイクルステージへの移行の際に、SROMファームウェアにより計算され、eFuseに書かれます。このSROM APIのパラメータとして(外部デバッガと接続する時にTRAVEO™ T2Gを接続可能にする方法を定義する)SECUREアクセス制限を指定することもできます。これらのトピックの詳細については、デバイスアーキテクチャTRMおよびAN228680を参照してください。
TRAVEO™ T2GをSECUREライフサイクルステージに移行することは、デバイスをセキュアにするのに有効です。例えば、パスワード認証が成功した後にのみデバイスがロック解除できるように、SECUREアクセス制限がeFuseにプログラムできます。SECUREステージでは、内部ブートがすべてのSFLASHオブジェクトの整合性を検証し、オプションで認証し、認証された場合のみユーザーイメージを起動するセキュアブート機能を利用することも可能です。
SECUREライフサイクルステージへの移行は、デバイスの障害解析を実行するためにも有効です。これは、TRAVEO™ T2Gが有効な障害解析が必要な場合、RMAという別のライフサイクルステージに移行する必要があり、RMAへの移行は図1に示すようにSECUREまたはSECURE_W_DEBUGからしか行えないためです。このトピックの詳細は、AN230102を参照してください。
SECUREとSECURE_W_DEBUGの違い
SECURE_W_DEBUGは、量産ライフサイクルステージではなく、開発中のみの使用を目的としています。SECUREは、TRAVEO™ T2Gの量産ライフサイクルステージです。
SECURE_W_DEBUGでは、アクセス制限はNORMAL Access Restrictions (NAR) SFLASH rowから適用されますが、SECUREステージでは、SECUREアクセス制限はeFuseから適用されます。
TRAVEO™ T2GがSECURE_WITH_DEBUGからRMAライフサイクルステージに移行した場合、「OpenRMA」システム呼び出しはスキップされ、デバイスはOpenRMAの実行を待ちません。従って、デバイスへのフルアクセスはロック解除され、ユーザーアプリケーションは実行されます。TRAVEO™ T2GがSECUREからRMAライフサイクルステージに移行した場合、RMAステージでデバイスのロック解除にために「OpenRMA」が必須で、毎回リセットの後に実行する必要があります。「OpenRMA」の詳細は、AN230102を参照してください。
SECUREステージへの移行前に考慮する点
ポイント1、2、および3に示す要件は、TRAVEO™ T2GがNORMAL_PROVISIONEDライフサイクルステージにある場合に最初に構成され、評価される必要があります。TRAVEO™ T2Gが正常に動作し、ユーザーアプリケーションが実行されることを確認した後、ユーザーはTRAVEO™ T2GのSECUREまたはSECURE_W_DEBUGライフサイクルステージへの移行する操作を実行できます。
要件に基づいて必要なSFLASH全てのrowにプログラム
デバイスが、一旦SECUREまたはSECURE_W_DEBUGライフサイクルステージに移行されると、ユーザーによってプログラムされることを許可されたSFLASHの場所は、もはや再プログラム不可能となります。従って、SFLASH rowは必要な構成に基づいて慎重にプログラムされる必要があります。システム呼び出し「WriteRow」は、SFLASH rowをプログラムために使用できます。ユーザーがプログラムできるSFLASH rowは、以下の表に示されます。
表1: ユーザーがプログラム可能なSFLASH row
アドレス領域 |
概要 |
0x1700 0800 - 0x1700 0FFF |
ユーザー領域。 2KBは任意のデータを保存するために使用されます。 |
0x1700 1A00 - 0x1700 1A03 |
NORMAL Access Restrictions (NAR)。NORMAL Life Cycleステージのチップ保護のために使用されます。 |
0x1700 1A04 - 0x1700 1A07 |
NORMAL DEAD Access Restrictions (NDAR)。NORMAL DEAD Life Cycleステージのチップ保護のために使用されます。 |
0x1700 6400 - 0x1700 6FFF |
公開鍵。アプリケーションのデジタル署名のために使用されます。 |
0x1700 7600 - 0x1700 77FF |
アプリケーション保護設定。 |
0x1700 7C00 - 0x1700 7DFF |
目次、Part 2(TOC2)。OEMオブジェクトの検索に使用されます。 |
これらSFLASH rowの詳細および構成は、デバイスアーキテクチャTRMおよびAN228680で利用できます。
ソフトウェアイメージアプリケーションフォーマット
SECUREまたはSECURE_W_DEBUGライフサイクルステージでは、内部Flashブートは、Cypressセキュアアプリケーションフォーマット(CySAF)と呼ばれるフォーマットに基づいたアプリケーションでのみを起動できます。これは、目次 2 (TOC2) の「第1/第2ユーザーアプリケーションオブジェクト(offset= 0x10/0x18)のフォーマット」として指定されるユーザーアプリケーションフォーマットが「1」であることを意味します。このフィールドの初期値は「0」です。ユーザーは、SECUREステージに移行する前に、システム呼び出し「WriteRow」を使用してこのエントリを更新し、またコードFlashにプログラムされているCySAF(図2参照)に従ったイメージを確認する必要があります。各々のTOC2フィールドの詳細は、AN228680を参照してください。
注: CySAFフォーマットは、TOC2_FLAGS.APP_AUTH_CTLによって指定されたユーザーアプリケーション認証が無効化されていてもSECUREライフサイクルステージでは必須です。ユーザーアプリケーション認証が無効化されている場合、デジタル署名は必要ありません。
3. 有効な公開鍵のプログラム
ユーザーは、デバイスがSECUREまたはSECURE_W_DEBUGライフサイクルステージに移行する前に有効な公開鍵をプログラムする必要があります。公開鍵フォーマットは図3を参照してください。
図3: 公開鍵フォーマット
公開鍵は、「WriteRow」システム呼び出しを使用してSFLASHロケーション0x1700 6400 - 0x1700 6FFFにプログラムする必要があります。また、公開鍵構造アドレス(例えば0x1700 6400など)は、TOC2で指定されるオフセット0x104の「署名検証鍵のアドレス」にプログラムされることを確認してください。
この公開鍵は、TOC2_FLAGS.APP_AUTH_CTLによって指定されるユーザーアプリケーション認証が有効の場合、アプリケーションイメージ認証に使用されます。
注: SECUREまたはSECURE_W_DEBUGライフサイクルステージでは、認証がTOC2_FLAGS.APP_AUTH_CTLで無効になっている場合でも、有効な公開鍵は常にデバイス内に配置する必要があります。
4. 内部CAN/LINブートローダーが無効になっている
TRAVEO™ T2Gは、内部CAN/LINブートローダーをサポートします。この機能の詳細は、AN227076を参照してください。
注: この内部ブートローダーは、SECUREおよびSECURE_W_DEBUGライフサイクルステージで無効になっているため、起動できません。ブートローダーに関連するアクティビティが必要な場合、TRAVEO T2GをSECUREまたはSECURE_W_DEBUGステージへ移行する前に完了する必要があります。
5.e-Fuseを飛ばすためのクロック要件
システム呼び出し「TransitionToSecure」は、TRAVEO™ T2GをSECUREおよびSECURE_W_DEBUGライフサイクルステージへの移行に使用できます。このAPIはデバイスライフサイクルステージ、アクセス制限、およびSECURE_HASHを定義する必要なe-Fuseを飛ばします。BlowFuseBitおよびTransitionToSecureなどのe-Fuseを飛ばす目的のAPIには、clk_hf0のいくつかの要件があります。複雑さを避けるため、これらのAPIは、アプリケーションがclk_hf0の設定を変更する前に、内部ブート(TOC2_FLAGS_CLOCK_CONFIGで指定される)によって使用される任意のクロック設定を使用してトリガできます。アプリケーションがclk_hf0のブートによって使用される設定を変更する場合、clk_hf0のソースクロックがFLLで、かつclk_hf0の周波数が最大100 MHzに制限されていることを確認してください。clk_hf0がFLLからソースされておらず、FLLが無効になっている場合、clk_hf0の最大周波数は8 MHzである必要があります。