バックナンバーはこちら

today&tomorrow

Technology Update

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

2017 May Spring vol.106

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

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

ソフトウェア・レベルの保護メカニズム

ここまでエッジ・ノードのIoTアプリケーションにおけるシステム・レベルおよびプロセッサ・レベルの保護メカニズムについてご説明しました。次は、ハードウェア・メカニズムを補完する多くのソフトウェア・テクノロジについて見ていきます。ここでのソフトウェアは広義のソフトウェアとし、最終製品の一部となるランタイム・ソフトウェアやIoT機器のセキュリティ強化に使用するソフトウェア・ツールも含めます。

セキュアなIoT機器を構築するために必要なソフトウェア・ツールとしてまず挙げられるのは、機器固有および製品ファミリ共通の秘密(対称鍵、デバイス識別子、公開鍵証明書など)を管理するためのツールです。複雑さを避けるために製品ファミリ全体で共通の鍵を用いて機器を保護することもよく行われていますが、この場合、1つの機器で攻撃者に秘密が知られてしまうと同じ鍵を使用している同じファミリのすべての機器のセキュリティがただちに危うくなることを意味します。このため、機器固有の鍵を使用するか、機器固有の鍵とプラットフォーム共通の鍵を組み合わせて使用する方が安全です。これらの鍵、デバイス識別子、およびその他の秘密データの生成、管理、そして機器へのプロビジョニングはすべて製造時にセキュアな方法で行う必要があります。鍵生成は、標準の暗号化ツールで実行できます。鍵インジェクションは、IoT製品ファミリで鍵の格納に使用する不揮発性ソリューション(NVM、ヒューズ、PUFなど)に応じたツールを使用し、通常は信頼されたセキュアな環境で鍵のプロビジョニングを行う必要があります。

前のセクションで説明したメモリー暗号化、およびファームウェア認証および完全性チェックに関しては、ファームウェア・イメージの署名/暗号化ツールを使用する必要があります。これらは認証コード、証明書、暗号鍵用の鍵管理ツールを発展させたもので、ソフトウェア・ビルド・ツールによって生成されたバイナリ・イメージに対するポスト・プロセス工程として使用することも、ソフトウェア・ビルド環境に統合して使用することもできます。地域によって異なる暗号化が必要な場合は、バイナリ・イメージの部分ごとに異なるアルゴリズムまたは鍵を使用できるツールが必要です。

このほか、設計時に使用するソース・コード解析ツールや検証時に使用する自動セキュリティ・テストもソフトウェアの潜在的なセキュリティ・ホールを検出、予防するのに役立ちます。ソフトウェア全体の品質向上を目的としたソフトウェア品質ツールも数多く存在します。バグが少ない方がセキュリティ・リスクも抑えられます。また、Cコードのバッファ/スタック・オーバーランやNULLポインタ・デリファレンス、SQLインジェクション、JavaScriptなどのウェブ言語におけるクロスサイト・スクリプティングなど、各種プログラミング言語で攻撃の標的となりやすいソフトウェア・エラーを検出する専用機能を備えたスタティック解析ツールもあります。こうしたツールの代表例として、シノプシスのCoverity® SAST(Static Application Security Testing)ツール・スイートがあります。

プラットフォーム・ソフトウェアによって提供されるセキュリティ・サービスのうち、IoTシステムにとって特に重要なものとしてプラットフォーム・セキュリティとセキュアな通信プロトコルの2つも検討する必要があります。

プラットフォーム・セキュリティ機能によってカバーされるサービスとしては、セキュア・ブート、アクセス制御、識別/認証、ファームウェア完全性保証、ランタイム保護/アプリケーション・サンドボックス、セキュア・ストレージ、セキュアなフィールド・アップデート、セキュア・プロビジョニング、鍵/証明書/その他データの保管と管理、デバイス/機能のアクティベーション、無効化/リカバリ、パーソナライズなどがあります。プラットフォーム・セキュリティは、ハードウェアで保証されたルート・オブ・トラストを起点とします。一般に、ハードウェアによる保証は改ざん不可能な固定ブートROMソフトウェアで実現します。または、ハードウェアが何らかの形でオンザフライの完全性/真正性チェックをサポートするか、個々のIoT機器で想定される攻撃シナリオに対して十分に強力な命令暗号化をサポートしている場合、書き換え可能な不揮発性ストレージにプロセッサの開始コードを配置することもできます。後者の場合、プロセッサ・ハードウェアがルート・オブ・トラスト・ファームウェアの改ざんを検出します。この信頼されたブート・ソフトウェアを起点として、プラットフォーム・インフラストラクチャ・コードやアプリケーション・コードをフラッシュまたはその他のバックグラウンド・ストレージからロードした後、デバイスのハードウェア/ソフトウェア暗号化機能を利用してこれらをチェックします。

カテゴリートップ