2つのTrustZone開発方法

セキュアマネジャ利用対2領域開発
セキュアマネジャ利用対2領域開発

STマイクロ)STM32H5とSTM32U5は、どちらもTrustZone対応Cortex-M33マイコンです。しかし、そのTrustZone開発方法は、STM32H5がSecure Manager利用、STM32U5がSecure/Non Secureの2領域開発など大きく異なります。

本稿は、これら2つのTrustZone開発方法の概要と特質を説明します。どちらが一般のMCU開発者向けかも示します。詳細は、STM32H5はコチラ、STM32U5はコチラのウェビナー資料を参照ください。

STM32H5とSTM32U5

STM32 TrustZome対応MCUポートフォリオ(STM32H5ウェビナー資料P3を編集)
STM32 TrustZome対応MCUポートフォリオ(STM32H5ウェビナー資料P3を編集)

STマイクロのTrustZone対応Cortex-M33コアマイコンファミリは、現在上図の4種類あります。最高動作周波数や内蔵周辺回路が想定アプリケーションにより異なりますが、どれもTrustZone対応のセキュアマイコンです。

※TrustZone基本は、コチラの投稿参照。

Cortex-M33マイコンのセキュリティ機能

STM32 Cortex-M33ハードウェアセキュリティ機能一覧(STM32U5ウェビナー資料P36を編集)
STM32 Cortex-M33ハードウェアセキュリティ機能一覧(STM32U5ウェビナー資料P36を編集)

4種セキュアマイコンのハードウェアセキュリティ機能一覧が上図です。基本機能のTrustZoneやSecure Memory利用セキュアブートは、4種マイコン共に持っています。

これらセキュリティ機能一覧から、必要性に応じて開発ユーザアプリへセキュリティ機能を追加することをセキュリティ開発、その中心がTrustZoneなのでTrustZone開発と言います。

※Secure Memory利用セキュアブートは、コチラの投稿参照。

STM32U5セキュリティ開発方法

マイコンセキュリティの目的は、ハッカー攻撃などによる開発ソフトウェアの改ざん防御です。従って、想定アプリにより多少の違いがあっても、基本となるセキュリティの開発方法は、マイコンにかかわらず同じと考えるのが普通です。

事実、STM32U5やSTM32L5、STM32WBAは、以下の同じセキュリティ開発方法です。

STM32U5セキュリティ開発方法(STM32U5ウェビナー資料P52を編集)
STM32U5セキュリティ開発方法(STM32U5ウェビナー資料P52を編集)

つまり、TrustZone基本投稿で示したように、マイコンハードウェアをSecure領域とNon Secure(Normalと図示)領域に分離、Non Secureソフトウェア(Firmwareと図示)のSecure領域直接アクセス禁止により改ざん防御を行います。

この方法は、Secure領域とNon Secure領域の2プロジェクト開発が必須です。

具体的な2領域分割や領域間アクセス方法などは、STM32U5ウェビナー資料3章に記載されています。

筆者は、開発当初からの2プロジェクト開発は、困難と考えています。最初は領域を分けず一般的な1プロジェクトアプリを開発し、動作確認後にSecure/Non Secureの2プロジェクトへ分離する手順になると思います。

STM32H5セキュリティ開発方法

STM32H5のセキュリティ開発方法は、前章とかなり異なります。

STM32H5セキュリティ機能は、STマイクロがバイナリ形式でIPを提供し、これをセキュア領域へ保存します。MCU開発者は、このIPセキュリティ機能を、Arm PSA API互換のAPI経由で、Non Secure領域のユーザアプリから利用します。

STM32H5セキュリティ開発方法(STM32H5ウェビナー資料P9を編集)
STM32H5セキュリティ開発方法(STM32H5ウェビナー資料P9を編集)

簡単に言うと、Non Secure領域の動作アプリに、必要に応じてセキュリティ機能APIを追加すればセキュリティ開発ができます。セキュア領域のセキュリティ機能は、ST提供IPのためユーザ開発不要です。

このSTM32Trust TEE Secure Managerが使えるのは、現在STM32H5のみです。しかし、今後増えるそうです。

具体的なSecure Manager利用方法や評価ボードなどが、STM32H5ウェビナー資料3章に記載されています。

筆者は、このSecure Manager利用の方が、前章の2プロジェクト開発方法よりもシンプル、かつ、セキュリティ本体コーディングも不要なため優れていると思います。PSA API利用ソフトのSTマイコン横展開が、現在STM32H5に限られるのは残念です。逆に、他ベンダマイコンへの流用は、Arm PAS API互換のため容易かもしれません。

Summary:2つのTrustZone開発方法

セキュアマネジャ利用対2領域開発
セキュアマネジャ利用対2領域開発

STマイクロのTrustZone対応Cortex-M33マイコンSTM32H5とSTM32U5の2セキュリティ開発方法と特質を示しました。

セキュリティ開発は、その用語や費用対効果などが、一般のMCU開発者に判り難い領域です。また、Cortex-M33のTrustZone理解も必要です。

このTrustZoneに対し正攻法のセキュリティ開発方法は、STM32U5ウェビナー資料方法です。STM32L5やSTM32WBAへの開発セキュリティソフト横展開も可能です。

STM32H5ウェビナー資料方法は、Arm PAS API互換APIを利用し、かつ、セキュリティソフト開発を簡素化できるなど、正攻法比、優れた方法だと思います。

Afterword:どちらが一般MCU開発者向けか?

Secure Managerは、無償利用できます。また、RTOS以外のベアメタル開発にも使えます。さらに、STM32H5ウェビナー資料P6右側の暗号化エンジンなど全12セキュリティ機能も提供します。左側が、このセキュリティ開発方法の優位性を示しています。

最適STM32セキュリティ開発を実現するセキュアマネジャ(STM32H5ウェビナー資料P6を編集)
最適STM32セキュリティ開発を実現するセキュアマネジャ(STM32H5ウェビナー資料P6を編集)

STマイクロ以外のベンダでも、無償IPとArm PAS API互換のセキュリティ開発が多くなるかもしれません。一般のMCU開発者にとって、正攻法のセキュリティ開発は、障壁がかなり高いからです。


MCUセキュアブート【組込み開発 基本のキ】

ランサムウェア攻撃による企業活動停止やWindowsブルースクリーン大規模障害など、重大セキュリティインシデントが急増中です。MCU開発者にとっても、他人事ではありません。

そこで、MCUセキュリティの基礎、MCUセキュアブートとArm TrustZoneを2回に分けて解説します。セキュアブート編が本稿です。

MCUセキュリティが判り難い原因は、ベンダ、MCU毎にセキュリティレベルや実装が大きく異なるからです。そこで、個別セキュリティの前に、基本知識としてMCUセキュアブート(本稿)とArm TrustZone(次稿)を解り易く示し、その後、実装例を示す2段構えの方法で解説します。

MCUセキュリティ背景

MCUソフトウェアは、悪意を持つ第3者による改ざんやウイルス感染などで書き換わる可能性があります。一方、改ざんの可能性が無く安全なのは、MCUハードウェアです。

従来のMCU開発は、サイバー攻撃などのソフトウェア書き換えは、想定外でした。

しかし、PCセキュリティトラブルやランサムウェア被害などが増え、MCUも攻撃対象となりました。特にIoT MCUは、ネットにつながるため防御が必須です。この防御全般がIoT MCUセキュリティ(以下MCUセキュリティ)です。

セキュリティリスクを下げるには、開発コストが上がる。MCU開発者は、費用対効果バランスも考える必要がある。
セキュリティリスクを下げるには、開発コストが上がる。MCU開発者は、費用対効果バランスも考える必要がある。

今後のMCU開発では、MCUセキュリティ対策が望まれます。しかし、ソフトウェアのみでは対処できないため、セキュリティレベルに応じた追加ハードウェアが必要です。また、セキュリティオーバーヘッドのため、通常のセキュリティ無しソフトウェアに比べ処理能力も低下します。

MCUセキュリティ開発は費用対効果、つまり、これら追加効果とセキュリティリスク、セキュリティ開発コストのバランスを、どう解決するかがポイントです。

実装セキュリティがベンダやMCU毎に異なるのは、このポイントにバラツキがあるためです。顧客が、起きるか起きないか判らないMCUセキュリティインシデントに対し、どの程度開発コストを負担するか不明なのと同じです。

MCUセキュアブート基本

セキュアブート解説の前に、通常のMCUブートを簡単に説明します。

通常のMCUブートは、リセット→動作クロック設定→RAMゼロクリア→RAM初期値設定などを経て、Flash格納ユーザアプリケーションを起動します。格納ソフトウェアに、ハッカー攻撃などの改ざんが無いことが大前提です。

関連投稿3章に通常ブート説明。

MCUセキュアブートと通常ブート
MCUセキュアブートと通常ブート

一方セキュアブートでは、最初にFlash格納ソフトウェアに改ざんが無いことを、暗号化技術を使って検証します。このため暗号化アクセラレータや暗号鍵の専用ストレージが必要になります。

検証失敗時は、動作停止、またはリカバリーモードへ移行し、検証成功時のみ通常ブートを行います。つまり、起動ソフトウェアの信頼検証をハードウェアのみで行うのが、MCUセキュアブートです。

通常ブートと比べると、事前に改ざんソフトウェアの実行が防げますが、検証時間が余分に掛かります。このセキュアブートハードウェアをRoot of Trustと呼び、専用ハードウェアとしてMCUに内蔵されます。例えば、Arm Cortex-M33コアMCUなどがこれに相当します。

Root of Trust(RoT)は、最も基本的なセキュリティ領域の保証概念。ここが信頼できることを前提にセキュリティが構築されるため、信頼根と呼ばれる。

高度車載セキュアブート実装例

前章でMCUセキュアブートの基本を解説しました。しかし、実際のセキュアブートは、もっと複雑です。

例えば、ルネサス車載MCU RH850セキュアブートが、コチラです。

高度なセキュリティレベルが求められる車載MCUのセキュアブート例で、豊富な図を使って解説しています。セキュリティ専門用語も多いため、用語や略称集も添付されています。

しかし、前章基本を理解していれば、高度車載MCUセキュアブートでも掲載図だけで概ね把握できると思います。

車載ソフトウェアイメージ検証(出典:ルネサスRH850セキュアブート)
車載ソフトウェアイメージ検証(出典:ルネサスRH850セキュアブート)

Summary:MCUセキュアブート基本知識

MCUセキュリティの実装は、セキュリティ対策効果とリスク、その開発コストにより大きく変わります。Root of Trustを持つCortex-M33コアの汎用MCUでさえ、アプリケーションや顧客要求に応じ実装セキュリティは変わります。

例えばセキュアブートは、MCU起動時処理のため常時運用など再起動が少ない場合は効果も期待薄です。

MCU開発者のセキュリティ実装を困難にする原因の1つが、この多様性です。

そこで、組込み開発基本のキを示す本稿は、MCUセキュリティ基本知識として、起動時ソフトウェア信頼検証をハードウェアのみで行うMCUセキュアブートと、そのセキュアブート実現基盤のRoot of Trustを解説しました。

基本知識があれば、様々なセキュリティ実装開発にも対応できるからです。

次回は、MCU運用中セキュリティを確保するArm TrustZoneを解説します。

Afterword:Windowsブルースクリーン記事

Windowsブルースクリーン記事や解説が、ITmediaにまとまっています。業務の合間などリフレッシュを兼ねて目を通してはいかがでしょうか?