マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > TrustZoneでハードウェアの複雑さとコストを最小限に抑えIoTデバイスのセキュリティを確保する方法

TrustZoneでハードウェアの複雑さとコストを最小限に抑えIoTデバイスのセキュリティを確保する方法

著者 Jacob Beningo 氏
Digi-Keyの北米担当編集者 提供
2020-07-23

マルツ掲載日:2020-11-16


 IoTエッジデバイスでは、組み込み製品で以前から必要とされているセキュリティとは別のセキュリティ対策を新たに講じる必要があります。暗号化やシステムセキュリティの専門知識を持たない電気工学分野に属する開発チームや開発者にとっては、セキュリティを理解して実際に実装しようとしても難しい場合が多々あります。

 現代の開発サイクルにおいて、開発者が一からセキュリティ構築を始めたりセキュリティの専門知識を蓄えたりする余裕は、時間と予算の面でほぼありません。代わりに、既存のセキュリティソリューションを特定のニーズに合わせながら活用できます。

 この記事では、ArmのTrustZoneについて紹介します。TrustZoneは、マイクロコントローラベースのシステムの設計者から幅広い支持を得ている注目のソリューションです。また、TrustZoneをサポートするデバイスの例として、STMicroelectronicsのSTM32L5シリーズ マイクロコントローラを紹介し、連携する開発キットとともにTrustZoneを使用する方法を示します。

分離によるセキュリティの実現

 安全な組み込みシステムの中核となる基本的な要素は、分離によるセキュリティを実現することです。これは、秘密鍵、ユーザーデータ、セキュア機能などの重要なデータ資産を、グラフィカルユーザーインターフェース要素やリアルタイムオペレーティングシステム(RTOS)などの一般的なデータおよび機能から分離する、という考え方です。

 ソフトウェアを分離させるために使用可能な方法はありますが、セキュリティ専門家の間で一致している見解は、組み込みシステムではハードウェアを分離しながらセキュリティを実装する必要がある、ということです。

 ハードウェアを使用して分離を可能にする方法はいくつかあり、たとえばマイクロコントローラとセキュリティプロセッサを使用する方法、またはマルチコアプロセッサを使用して1つのコアをセキュアプロセッシング専用に割り当てる方法などが挙げられます。

 Armの新しいCortex-M23、Cortex-M33、Cortex-M55プロセッサでは、ハードウェアベースの分離機能、いわゆるTrustZoneがオプションでサポートされます。

Arm TrustZoneとは?

 TrustZoneは、シングルコアのマイクロコントローラに実装されるハードウェアメカニズムで、実行環境がセキュアなメモリ/ペリフェラル/機能と、非セキュアなメモリ/ペリフェラル/機能に分けられます。

 また、それぞれの実行環境にはMPU(Memory Protection Unit)が含まれ、MPUを使用してメモリ領域をさらに分離することで、データ資産へのアクセスを狙う攻撃者を抑止する「玉ねぎ状の多層構造」を実現できます。

 通常、組み込みシステムの開発者は各自のシステムを2つ以上のプロジェクトに仕切ります。それらの1つは非セキュア実行プロジェクトでユーザープロジェクトとも呼ばれ、もう1つはセキュア実行プロジェクトでファームウェアプロジェクトとも呼ばれます。

 TrustZone対応のマイクロコントローラはセキュアステートにブートしてシステムを起動してから、非セキュアステートに入りユーザーアプリケーションを実行します(図1)。


図1:TrustZoneプロジェクトは、組み込みソフトウェアをユーザープロジェクト(非セキュア)とファームウェアプロジェクト(セキュア)に分けるハードウェアメカニズムにより分離を可能にします。(画像提供:Arm)

 ユーザープロジェクトは、ファームウェアプロジェクトとユーザープロジェクト間に作成されたセキュアゲートウェイを介してのみセキュア機能にアクセスできます。また、例外のトリガなしにはセキュアメモリロケーションにアクセスできません。

TrustZone対応開発ボードの選択

 TrustZoneについて理解する最も簡単な方法は、TrustZoneに実際に触れて使い始めることです。そこで、まず開発者に必要なのは開発ボードを選ぶことです。マイクロコントローラのサプライヤ各社から各種の開発ボードが提供されていますが、その中からボードを選ぶとき注意すべきなのは、すべてのボードでTrustZoneが同じ方法で実装されてはいないので、慎重に見分ける必要があることです。

 TrustZoneを試すために適する開発ボードの一例として、STMicroelectronicsのSTM32L562Eディスカバリキットがあります(図2)。


図2:STM32L562Eディスカバリキットには、オンボードセンサ、Bluetooth、I/O拡張ボードなどの各種機能が含まれるため、TrustZoneアプリケーションを簡単に試すことができます。(画像提供:STMicroelectronics)

 この開発キットには、TrustZoneを初めて使用するときに役立つ多くのサポート機能が含まれています。たとえば、タッチ制御パネルを含む1.54インチ、240×240ピクセルのTFT LCDモジュール、Bluetooth Low Energy v4.1モジュール、iNEMO 3D加速度センサとジャイロスコープ、オンボードSTLINK-V3E、そしてI/Oやペリフェラル拡張用の各種機能などがあります。

 TrustZoneを試すために適するもう1つの開発ボードには、STMicroelectronicsのNUCLEO-L552ZE-Q Nucleoボードがあります(図3)。

   
図3:STM32L552ZE-Q NUCLEO開発ボードには、TrustZone対応プロセッサ、ST-LinkV3、およびカスタム開発アクティビティ用の拡張ヘッダが含まれています。(画像提供:STMicroelectronics)

 STM32L562Eディスカバリキットとは異なり、NUCLEO-L552ZE-Qは入門レベルの開発ボードで、ST-LinkV3、STM32L552VET6マイクロコントローラ、拡張ポート、LEDが含まれています。この開発ボードは、TrustZoneを試して独自のハードウェアコンポーネントにできるだけ早く組み込みたいと考える開発者に最適です。

 NUCLEO-L552ZE-Qはオプション機能を幅広く備えてはいませんが、STM32L552VET6を搭載する点が注目されます。このマイクロコントローラのコアプロセッサはArm Cortex-M33で、浮動小数点ユニット(FPU)、最大512KBのフラッシュメモリ、256KBのSRAMを備えています。

 TrustZoneの上に他のセキュリティ機能もいくつか加えられており、固有のブートエントリによるルートオブトラスト、Trusted Firmware for Cortex-M(TF-M、Cortex-M用ファームウェア)によるセキュアなファームウェアインストールおよびセキュアなファームウェアアップグレードのサポートが含まれます。

 両方の開発ボードとも、プロセッサにはTrustZone SAU(Security Arbitration Unit)が含まれており、SAUを使用して、どのメモリやペリフェラルをTrustZoneで保護するかを設定します。マイクロコントローラのサプライヤによっては、TrustZone実装にSAUが含まれていない場合もあります。これは必ずしも問題ではありませんが、TrustZoneの設定に別の手順が必要になります。

初めてのTrustZoneベースアプリケーションの使用

 STMicroelectronicsのいずれかの開発ボードを使用するには、いくつかの手順を実行し、ソフトウェアパッケージを用意する必要があります。最初の手順は、STM32CubeIDEのダウンロードです。STM32CubeIDEには、コンパイラ、マイクロコントローラパッケージ、アプリケーション開発用のIDE、関連するアプリケーションノート(STM AN5394など)が含まれています。

 既存のTrustZoneサンプルプロジェクトを使用することで、アプリケーションをすばやく稼働させることができます。いくつかのプロジェクトが、STM32Cube_FW_L5ソフトウェアパッケージの中に含まれています。このソフトウェアは、STM32CubeL5ソフトウェアの一部としてダウンロードできます。ダウンロードしたら、次のようなディレクトリパスにあるTrustZoneEnabledプロジェクトをインポートできます。

STM32Cube_FW_L5_V1.2.0\STM32Cube_FW_L5_V1.2.0\Projects\STM32L552E-EV\Templates\TrustZoneEnabled\

 このプロジェクトをインポートすると、プロジェクトが階層的なプロジェクト構造になっており、その中でアプリケーションがセキュアなアプリケーションと非セキュアなアプリケーションに分かれていることがわかります(図4)。


図4:TrustZoneプロジェクトは階層的なプロジェクト構造で実装されており、セキュアなプロジェクトと非セキュアなプロジェクトが含まれています。(画像提供:Beningo Embedded Group)

 これらのプロジェクトには、詳しく検討すべき要素が数多くあります。AN5394には詳細が多岐にわたり示されており、それぞれのプロジェクトのDocフォルダにあるreadme.txtファイルには、セキュアなプロジェクトと非セキュアなプロジェクトが詳述されています。

 この記事の主旨に合わせて、ここではTrustZoneに関連する最も重要な概念について検討します。具体的には、TrustZoneがどのように構成されているかです。構成については、次の場所にあるpartition_stm32L562xx.hファイルに含まれています。

C:\STM32Cube_FW_L5_V1.2.0\Projects\STM32L562E-DK\Templates\TrustZoneEnabled\Secure\Inc

 このファイルには、SAUの設定が含まれています。例として、図5にSAU Region 0の設定を示します。現在この領域は、セキュアな実行に設定されています。一方、図6に非セキュアな設定の例としてSAU Region 1を示します。


図5:SAUを使用して、どのメモリ領域がセキュア領域および非セキュア領域かを設定します。上記のコードには、SAU Region 0をセキュアな実行に設定する方法が示されています。(画像提供:Beningo Embedded Group)


図6:SAUを使用して、どのメモリ領域がセキュア領域か非セキュア領域かを設定します。上記のコードには、SAU Region 1を非セキュアな実行に設定する方法が示されています。(画像提供:Beningo Embedded Group)

 開発者は、どの領域をセキュア領域や非セキュア領域に設定する必要があるかを決め、パーティションファイルを使用してSAUを構成します。これらの設定を行えばTrustZoneが有効になる、というわけではありません!

 TrustZoneベースのアプリケーションをターゲット上にプログラミングする場合、開発者はTZオプションバイトを1に設定してTrustZoneを有効にする必要があります。これで、起動時にTrustZoneが有効になり、SAUの構成が読み込まれて利用されます。

TrustZoneを使用するヒントとコツ

 TrustZoneを初めて使用するとき、そのハードルは高くありませんが、開発者は各自のアプリケーション設計についての考え方を多少変える必要があります。TrustZoneを使用するいくつかの「ヒントとコツ」を次に示します。

・すべてのデータを保護する必要はありません。保護が必要な重要なデータ資産を前もって特定します。

・既存のセキュリティフレームワーク、たとえばCMSIS-ZoneやTrusted Firmware for Cortex-M(TF-M)などを活用することで、開発が加速します。

・デバイスに対する潜在的な脅威を慎重に調べ、それらの脅威からの保護に必要なハードウェアとソフトウェアソリューションをサポートするマイクロコントローラを選択します。

・TrustZoneは、シングルレイヤの分離を可能にします。MPUなどのハードウェアメカニズムを利用することで、ハードウェアベースの複数の分離レイヤを形成します。

・実装時ではなくアーキテクチャフェーズで、セキュアなコードエレメントと非セキュアなコードエレメントを識別します。

 これらの「ヒントとコツ」に従えば、IoTデバイスのセキュリティ対策に取り組む場合に大幅に時間を節約でき、悩みが減ることでしょう。

結論

 TrustZoneは、IoTの開発者がデバイスのセキュリティを確保してデータ資産を保護しようとするときに利用できる重要なツールです。安全なソリューションはさまざまな方法で実装できますが、これまで述べたように、TrustZoneは従来のソフトウェア開発モデルを可能にするシングルコアソリューションを開発者にもたらします。

 従来との唯一の違いは、セキュアや非セキュアなコンポーネント、データ、スレッドという観点でシステム開発を考える必要があることです。



免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

 

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます

※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ