バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • IoTエッジ・デバイスのセキュリティ・ガイド~シリコンからソフトウェアまで

2017 May Spring vol.106

IoTエッジ・デバイスのセキュリティ・ガイド~シリコンからソフトウェアまで

シノプシス シニア・スタッフ・エンジニア Ruud Derwig

信頼のおけるセキュア・ソフトウェアと信頼性の低いノーマル・ソフトウェアを分離する最も単純で伝統的な方法は、コアを複数用意してソフトウェアをセキュリティ・プロファイルに基づいて各コアに割り当てるというものです(図2の左側)。エンドユーザーがプログラムしたコードなど、厳密な信頼性が保証されていないソースから取得した通常のアプリケーション・ソフトウェアは汎用CPUで実行します(CPUとアプリケーション・ソフトウェアの間にオプションで軽量なリアルタイム・オペレーティング・システム(RTOS)を置くこともあります)。セキュリティに関係するソフトウェアについては、もう1つのセキュアCPUで他のプロセッサから完全に隔離された専用のソフトウェア・スタックを実行します。このプロセッサは他のプロセッサとリソースを共有しないため、汎用CPUに秘密が漏洩したり、汎用CPUによって不正な変更が加えられたりするリスクがありません。ただしこの方式では、各CPUのメモリーを物理的に分離する必要があります。その方法としては、別々のバスを使用してメモリーとプロセッサを密結合する方法と、別のバスおよびアドレス・マップ保護メカニズムを使用する方法があります(後述)。いずれにしても、ノーマル・ワールドとセキュア・ワールドをハードウェア・レベルで厳密に分離すると必然的に両者間の通信が複雑になってしまい、小容量の共有メモリーのような共有リソースを追加するか、両方のCPUを接続する専用の通信チャネルを追加することを余儀なくされます。ARCプロセッサ向けARConnectのようなプロセッサ間通信専用ハードウェアは、ノーマル・コアとセキュア・コアの間でセキュアな通信を実現します。

図2:システム・プロセッサの分割方法の比較

図2:システム・プロセッサの分割方法の比較

もう1つの方法は、図2の右側に示したように信頼性の高いソフトウェアとノーマル・ソフトウェアの両方をシングルコアで実行するというものです。この場合、セキュア・ワールドとノーマル・ワールドを分離する何らかのメカニズムが必要です。これを実現する技術としては、いくつか有名なものがあります。1つは、信頼性の高いソフトウェアを仮想マシン内で実行するという完全なソフトウェア・ベースのソリューションです。性能を重視する場合は、ソフトウェア実装による仮想マシンではなく、プロセッサ・ハードウェアを使用して複数の実行コンテキストを切り換え、各コンテキストのシステム・リソースへのアクセスもプロセッサ・ハードウェアで制限します。たとえばARC SecureShield™テクノロジを使用すると、複数の特権レベルとメモリー保護ユニット(MPU)を使用してCPUでこの保護を実現できます。

図2の左右どちらの実装にも、右下にはCPU以外のセキュア・システム・リソースを示すボックスがあり、この部分を保護する必要があります。これに該当するリソースとしては、秘密鍵やペリフェラル(指紋リーダーなど)があります。ハードウェア・リソースへのアクセスを保護する方法はいくつかあります。バス・ベースのインフラストラクチャを使用した従来のデザインでは、セキュアなバスと非セキュアなバスを分離する方法と、バス・トランザクションがセキュアかどうかを示すサイドバンド信号をバスに追加する方法があります。図3は、サイドバンド信号の使用例を示したものです。メモリーやペリフェラルなどのスレーブへのアクセスは、「セキュア」であることを示すサイドバンド信号がアクティブな場合のみ許可されます。このサイドバンド信号は、要求を開始するマスタによって駆動されるもので、信頼できる信号でなければなりません。この方式では、セキュアなCPUプロセッサがこのサイドバンド信号を正しく生成する必要があると同時に、同じバスに接続するすべてのマスタ(通常のオープンなCPU、あるいは信頼されていないソフトウェアによってプログラムされるDMA対応ペリフェラル・コントローラなど)もこれらの信号を実装する必要があります。

図3:セキュアかどうかを示すバス・サイドバンド信号を利用したアクセス制御

図3:セキュアかどうかを示すバス・サイドバンド信号を利用したアクセス制御

セキュアなハードウェア・リソースを保護するもう1つの方法は、これらのリソースにオープンな共有バス経由でアクセスするのではなく、CPUから直接アクセスするというものです。これは「密結合」と呼ばれ、もともとは面積と消費電力を削減するために開発されたものです。ARCプロセッサのAPEXのようなCPU拡張機能を利用すると、通常のバス経由でペリフェラル・コントローラの制御レジスタにアクセスする代わりに、制御レジスタをプロセッサのレジスタ空間に直接マッピングできます。この場合、CPU特権レベルという既存のメカニズムを利用してペリフェラルへのアクセスを制御します。このようなシステムを図4に示します。

図4:密結合メモリー/ペリフェラルを利用したアクセス制御

図4:密結合メモリー/ペリフェラルを利用したアクセス制御

このテクノロジは信頼性の低いアクセスからペリフェラルを保護するだけでなく、CPUが命令およびデータ・メモリーの密結合をサポートしている場合はセキュアなメモリー・アクセスにも使用できます。

カテゴリートップ