バックナンバーはこちら

today&tomorrow

Technology Update

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

2017 May Spring vol.106

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

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

IoT(Internet of Things)は今、最も注目を集めているキーワードの1つです。IoTデバイス(機器)は厳密な定義もまだ1つに決まっておらず、IoT機器が将来どのような役割を果たし、人々の生活をどのように変えていくのかについてもさまざまな議論があります。しかしどのような種類のIoTデバイス/アプリケーションであれ、セキュリティの重要性は共通しています。セキュリティはもちろん機能的な側面もありますが、まったく新しいシステム属性として捉える必要があり、何か1つのセキュリティIPブロックをSoCに統合したり、何か1つのアルゴリズムをソフトウェア・スタックに埋め込むだけですべてのIoTシステムのセキュリティを達成できるような簡単なものではありません。IoTアーキテクトはセキュリティを全体的な視点から捉え、多分野にわたって相互に絡み合った複雑なトレードオフを行う必要があります。それと同時に、ハードウェアとソフトウェアのバランス、スループットと面積/消費エネルギーのバランス、セキュリティ・レベルとコストのバランスをとることも求められます。なお、本稿ではIoTエッジ・ノードに話を絞ってご説明します。

システム・レベルの保護メカニズム

IoTエッジ・デバイスの設計では、システム・レベル、プロセッサ・レベル、ソフトウェア・レベルでアーキテクチャに関する重要な判断が求められます。たとえばシステム・レベルでは、(1)ハードウェア/ソフトウェア分割の方法(2)セキュアなシステム・リソースの厳密な分離を保証する方法を決定する必要があります。システム・レベル、プロセッサ・レベル、ソフトウェア・レベルのセキュリティはいずれも複雑さ、設計時間、コストの面で何らかのオーバーヘッドを伴うため、ハードウェアおよびソフトウェア開発チームは他のチームがどのようなセキュリティ・メカニズムを採用しているのか、そしてどのような選択肢を利用できるのかを理解しておくことも重要です。

(1)のハードウェア/ソフトウェア分割に関しては、暗号アルゴリズムなどの基盤機能をハードウェア実装した場合とソフトウェア実装した場合のトレードオフを検討します。考えられる実装方法としては完全なソフトウェア実装、ソフトウェアとハードウェア・アクセラレータの組み合わせ、完全なハードウェア実装の3つがあり、これらを混在させることも可能です。どのアプローチがデザインに最適かは、システムで求められるスループット/レイテンシとシリコン面積/電力効率を考慮して決定します。図1は、セキュリティに使用するハッシュ関数SHA-256の3つの実装方法を比較したものです。一番左はDesignWare® ARC® EMプロセッサをベースにしたソフトウェア実装で、これを比較の基準とします。中央はソフトウェアとハードウェア・アクセラレータを組み合わせた実装です。ここでは、ARCプロセッサ・エクステンション(APEX)テクノロジを利用してARC EMプロセッサに暗号処理を高速化する命令を追加するCryptoPackオプションを使用しています。CryptoPackは、面積の増大を僅少に抑えつつ性能を大幅に向上できるように設計されています。

暗号機能のソフトウェア実装とハードウェア実装の比較

図1:暗号機能のソフトウェア実装とハードウェア実装の比較

CryptoPackによる実装では、基準となるARC EMプロセッサによる完全なソフトウェア実装に比べSHA-256アルゴリズムの実行速度が7倍以上向上し、ゲート数の増加は10%未満です。さらに高いシステム性能が必要な場合は、完全なハードウェア暗号エンジンを使用します。図1の一番右に示したハードウェア実装は、DesignWareセキュリティIPコアを使用しています。この実装はCryptoPackによる実装に比べ性能はほぼ2倍に達しますが、面積の増加も著しく、必要なゲート数が約70%増大します。このようなセキュリティ基盤機能の実装方式に見られるトレードオフは、高次通信プロトコルなど、ほかのソフトウェアにも当てはまります。より高いスループットが必要な場合、またはプロトコル処理の一部をオフロードしてプロセッサ・リソースを解放する必要がある場合は、DesignWareセキュリティ・プロトコル・アクセラレータによるハードウェア・アクセラレーションを使用できます。

セキュリティ・ソフトウェアを含め、機器で実行するすべてのソフトウェアで必要となるCPUサイクルを合計すると、システムで必要なプロセッサ・リソース量を求めることができます。たとえば簡単なIoTエッジ・ノードなら、通常はシングルコアが適しています。しかし高機能なシステムの場合は、マルチコアを使用してチップの動作周波数と電圧を抑えた方がシステム全体の消費電力を削減できることがあります。システムで使用するコアの数を検討する際には、冒頭の(2)に示したセキュアなシステム・リソースの厳密な分離をどのような方法で保証するかを検討する必要があります。

カテゴリートップ