PSoC 64を使用した組み込みシステムのセキュリティ確保
DigiKeyの北米担当編集者の提供
2022-07-27
インターネットに接続される製品の数は、急激に増え続けています。多くの製品チームが直面している問題は、組み込みソフトウェア開発者がセキュリティの経験を十分に持っていないことです。経験不足は、セキュリティ要件の見落とし、セキュリティギャップ、実装の不備につながる可能性があります。その結果、接続されたシステムの保護が不十分になり、デバイスやユーザーのデータに加えて、知的財産も盗まれる危険性が高くなります。
マイクロコントローラベースのシステムの設計者は、セキュリティの実装を簡素化し、それを成功させるためのツールを提供する、いくつかのソリューションを利用できます。たとえば、シングルコアのマイクロコントローラでは、ArmのTrustZoneを使用できます。これは、Armv8-Mアーキテクチャ(およびそれ以降)の一部です。また、マルチコアマイクロコントローラに対応するソリューションもあります。
この記事では、開発者がマルチコアプロセッサを使用して組み込みソリューションのセキュリティを確保する方法について説明します。具体的には、CypressのPSoC 64セキュアマイクロコントローラと、セキュアソリューションを実装するためのツールについて考察します。
組み込みセキュリティの基礎
セキュアな製品を設計するための基本の1つは、ハードウェアベースの分離を活用することです。この分離には、実行環境の分離や、メモリ保護ユニット(MPU)によるメモリの分離など、さまざまな形態があります。マイクロコントローラは、最高レベルで、その実行環境をセキュア処理環境(SPE)と非セキュア処理環境(NSPE)に分離できる必要があります。
SPEは、メモリ、コンポーネント、アプリケーションコードをNSPEから分離したままに維持する分離実行環境です。SPEは、セキュリティプロセッサとして考えることができます。SPEは、セキュアオペレーティングシステムやルートオブトラスト(RoT)などのセキュアなコードやオペレーションを実行します。また、SPEは、暗号化、セキュアストレージ、認証、セキュアロギングなどのトラステッドサービスも実行します。SPEでは、セキュアオペレーションに関連する限られた数のトラステッドアプリケーションが実行されます。
NSPEの場合は、セキュアオペレーション以外のすべてを実行する、機能豊富な実行環境として考えることができます。実際、NSPEは、ほとんどの組み込み開発者が慣れ親しんだプログラミングモデルであり、アプリケーションの大部分のコンポーネントとRTOSを備えています。
ハードウェアベースの分離は、セキュアシステムを構築するためにArm® Platform Security Architecture(PSA)が提供するコアテナント、つまりベストプラクティスの1つです。先ほど説明したさまざまな分離層は、PSoC 64を例にとると、図1に示すように実装できることがわかります。この例では、SPEとNSPE(1)が別々のプロセッサにランタイム環境を持つことで、ハードウェアの分離を実現しています。ランタイムの分離に加え、RoTとトラステッドサービスがさらに分離されています(2)。最後に、SPE内の各トラステッドアプリケーションも、トラステッドパーティションやMPUなどのツールを使用して分離されます(3)。
図1:セキュアアプリケーションは、ハードウェアベースの分離を用いて実行環境を分離します。1)NSPEとSPEが分離される 2)RoTとトラステッドサービスが分離される 3)各トラステッドアプリケーションが分離される(画像提供:Arm/Cypress)
PSoC 64は、NSPEをArm Cortex®-M4プロセッサで、SPEをArm Cortex-M0+プロセッサで実行するデュアルコアマイクロコントローラです。Arm Cortex-M0+は、すべてのセキュリティ機能を実行し、プロセッサ間通信(IPC)バスを介してCortex-M4と通信できます。このアーキテクチャでは、ハードウェアが分離されたSPEへのアクセスが制限されます。
PSoC 64を使用したセキュリティ保護に着手するために、開発者はPSoC 64セキュアブートパイオニアキットを確認したいと考えるでしょう。
PSoC 64セキュアブートパイオニアキット
PSoC 64セキュアブートパイオニアキット(図2)には、開発者がアプリケーションのセキュリティ保護に着手するために必要なものがすべて揃っています。まず、このキットには、PSoC 64マイクロコントローラ、外部メモリ、サポート回路をすべて備えたPSoC 64モジュール(赤色で表示)が搭載されています。外部メモリは、アプリケーションコードの保存や、セキュアなFirmware-Over-The-Air(FOTA)更新用の新しいファームウェアイメージの保存に使用できます。
図2:PSoC 64セキュアブートパイオニアキットには、セキュアIoTアプリケーションの開発に着手するために必要なものがすべて揃っています。(画像提供:Cypress)
次に、このキットには、ボードをネットワークに接続できるようにするためのWi-Fiモジュールが搭載されています。Wi-Fiモジュールは、ボードがAWSやAzureなどのクラウドサービスに接続するIoTアプリケーションで特に役立ちます。開発ボードは、次のセクションで説明するAmazon FreeRTOSに対応しています。
最後に、パイオニアキットは、ピンヘッダ、Arduinoヘッダ、各種センサなど、幅広い拡張機能に対応しています。開発者は、オンボードのタッチスライダやタッチボタン、プッシュボタン、ポテンショメータなどを活用できます。また、このボードは、ほぼすべてのアプリケーションで非常に容易にカスタマイズできるように設定されています。
PSoC 64セキュアソフトウェアスイート
セキュアな組み込みアプリケーションの設計は、時間がかかり、困難な場合があります。開発者は、アプリケーションのセキュリティを確保しながら、コストと市場投入までの時間を低減するためのソリューションを探す必要があります。これを支援するため、PSoC 64は、開発者がセキュアアプリケーションを迅速に構築できるよう、さまざまなソフトウェアを提供します。
たとえば、CySecureToolsは、鍵や証明書を作成するためのツールセットおよび、ユーザーアプリケーションの署名やCypressマイクロコントローラのプロビジョニングを行うためのツールも提供します。このツールにより、CypressのRoTを転送し、独自のセキュリティ資産を注入することができます。CySecureToolsの設定方法と使用方法についての情報は、GitHubリポジトリのREADMEファイルに記載されています。
FreeRTOSを使用したAWSのために、IoT開発者が重宝するツールがサポートされています。GitHubリポジトリには、PSoC 64でFreeRTOSとAWSを使用するための便利な例が含まれています。開発者が興味を持つであろう最初の例は、MQTTメッセージをPSoC 64からAWSクラウドに送信する「Hello World」アプリケーションです。この例では、プロビジョニングプロセス、鍵生成、および展開フェーズが順を追って示されています。この例の最後で、開発者はAWSに接続されたセキュアな組み込みデバイスを手に入れることができます。開始方法の詳細は、CY8CKIT-064S0S204343入門キットガイドに記載されています。
Trusted Firmware-M(TF-M)を使用したセキュアアプリケーション
PSoC 64は、アプリケーションに合わせて簡単にカスタマイズできる、すぐに使用可能なセキュリティフレームワークを提供します。開発者は、背後で何が起きているのかをソフトウェアの観点から理解するのに、これが役立つと思うかもしれません。具体的に言うと、PSoC 64のファームウェアは、Trusted Firmware-M(TF-M)として知られるオープンソースのベースラインセキュリティフレームワークを利用します。
TF-Mは、Arm PSA IoTセキュリティフレームワークのリファレンス実装です。これは、デバイス認証、ファームウェア検証、暗号化サービス、デバイスのシークレット管理、セキュアパーティショニングなど、便利なセキュリティツールを提供します。Cypressは、TF-Mを利用してセキュリティフレームワークを構築し、開発者がアプリケーションで使用できるようにしました。
開発者は、独自のコードを追加したり、セキュリティプロファイルを追加したりして、セキュリティフレームワークを変更できます。ただし、SPEソフトウェアに変更を加えれば加えるほど、脆弱性が増大する可能性が高くなることに留意してください。開発者は、ベースラインファームウェアに対する変更、追加、または削減に関連するリスクを、注意深く検討する必要があります。
組み込みアプリケーションのセキュリティを確保するためのヒントとコツ
組み込みアプリケーションのセキュリティ確保を初めて検討する開発者には、考慮事項がたくさんあります。ここでは、開発の簡素化やスピードアップに役立つ「ヒントとコツ」をいくつか紹介します。
- 開発サイクルの早い段階で、脅威モデルとセキュリティ分析(TMSA)を実施します。
- 開発ボードを使用して、デバイスのRoT、セキュアブートローダ、デバイスのプロビジョニングプロセス、およびファームウェア更新を試します。
- セキュリティだけを実装するのはやめてください。既存のオープンソースやセキュアなファームウェアスタックを活用して、リワークを最小限に抑えます。
- デバイスを安全に廃棄する方法を含め、デバイスのライフサイクルをよく考えてください。
- CySecureToolsのようなツールには、サンプルセキュリティテンプレート、ソフトウェア、および使用例が用意されています。
- FreeRTOSのGitHubリポジトリをクローニングする場合は、最新のタグ付きバージョンをクローニングしてください。アクティブなメインラインをクローンニングすると、ツールの非互換性や、まだ進行中のバグが見つかることがよくあります。
- CypressのCY8CKIT-064S0S2-4343W入門キットを参照しながら、プロジェクトを開始してください。ここでは、特定の製品目的に合わせて変更可能なベースラインアプリケーションを実行するために必要なすべての情報が提供されています。
これらの「ヒントとコツ」を実践する開発者は、大幅に時間を節約でき、悩み事も減るでしょう。
まとめ
セキュリティは、決して難しいものではありません。組み込み開発者は、秘伝のソースのように、自社製品の差別化要因に焦点を合わせる必要があります。ほとんどの場合、それはセキュリティではありません。この記事では、PSoC 64がハードウェアベースの分離環境だけでなく、ソフトウェアツールのフレームワークも提供することで、アプリケーションのセキュリティを迅速に確保するのにどう役立つかを考察しました。ハードウェアとソフトウェアのソリューションを組み合わせることにより、開発者はセキュリティ開発サイクルを加速させることができます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。