このことは、先頃オーストラリア政府が「IoT セキュリティコード」の草案を発表したことからも明らかです。この草案は、2020 Cyber Security Strategy(サイバーセキュリティ戦略2020)の一環としてモノのインターネット(IoT)のセキュリティに対する取り組みをまとめたもので、その方針は、IoT Security FoundationがIoT Security Best Practice Guidesで公開している内容と基本的に同じです。IoT製品やサービスの開発者にとって、こうした無料で入手できるガイドラインは、安全でセキュアな信頼性の高い成熟した最終製品を提供するために取り組むべき様々なセキュリティの問題を解決する上で助けとなります。
IoT Security Foundationによると、IoT製品およびサービスの開発者は、規格に忠実に準拠した信頼性の高い製品を提供しなければならないというプレッシャを常に抱えています。
このガイドラインの適用対象には、セキュアなデバイスブートからオペレーティングシステム、クリデンシャル管理、暗号化まで、ソフトウェアおよびソフトウェア更新ポリシーを守るためのあらゆるものが含まれます。最新の第2版では、これまでの11のガイドラインの見直しと更新が行われたほか、下記の3項目が追加されています。
- セキュアブートプロセスの評価
- 署名付きのソフトウェアイメージおよび更新
- サイドチャネル攻撃
セキュアブートプロセスのガイドライン
新しいセキュアブート評価ガイドは、以下のようなブートプロセスを設計するのに役立ちます。すなわち、セキュアなブートプロセスであること、セキュアな開発手法を使用して作成されたソフトウェアによって補完されていること、さらに、通常動作時も、デバッグ、開発、解析時も、悪意ある攻撃に対して耐性があることが確保されるということです。また、主要な要件として、ブートプロセスの一部としてロードされるコードはすべて、ROMから直接実行する場合を除き、以下であることを検証することを推奨しています。
- 認可された然るべきソースによって作成されている
- 作成後に変更されていない
- コードが実行されるデバイスのタイプに合わせて作成されている
このようにして作成されたコードは、RAMにロードされた後に検証する必要があります。ブートシーケンスはROMから開始され、不変ルートキーを使って最初にロードするコードを検証します。複数の不変ルートキーを使用することで、異なるブートステージを検証したり、派生キーを生成可能で、後に起こり得る侵害に備えて予備のルートキーを準備することもできます。
コードモジュールは順次ロードされますが、ロードされる前の段階で検証とブートが完了している必要があります。デバイスにインストールされている既存データのうち、ブート設定の一部として使われるデータはいずれも、ブートプロセスで使用される前に、長さ、タイプ、範囲などがチェックされます。ブートプロセスの各ステージでは、ハードウェアの設定が、そのステージに対して設定されたパラメータと一致することをブートソフトウェアが可能な限りチェックします。
ブートプロセスでは、プロセスのどの段階でエラーが発生しても、デバイスは「止む無く停止」して、RAMに残されたコードのないセキュアな状態となります。停止する際、デバイスが「機能不全」に陥ったり、許可されていないアクセスが基本システムやコード、データに対して(U-Bootプロンプト経由等で)行われないことを確保する必要があります。
デバイスの鍵や証明書については、メーカがそれらを生成するためにセキュアなプロセスを実装しており、鍵および証明書のプロビジョニング、保管、使用の安全性が確保されます。デバイスのEnd of Lifeを管理することで、鍵や証明書のセキュリティが確保されます。
このようなセキュアブートプロセスのガイドラインは、ガイドの一つの要素にすぎませんが、IoT向けのセキュアなコネクテッドデバイスを開発するためには不可欠なものです。IARはSecurity from Inception Suiteにより、開発、製造、製品管理プロセスの期間中、ニーズに応じた適切なレベルのセキュリティを、セキュリティガイドラインに合わせて構築するための明確な手法を提供します。
組込みアプリケーションにセキュリティを実装しカスタマイズするための独自のツールとサービスを備えたSecurity from Inception Suiteには、セキュリティ開発環境であるEmbedded Trustのほか、IAR Embedded Workbenchを使用した完全統合型の開発ツール一式が含まれています。またセキュリティ開発ツールC-Trustや静的解析ツールC-STATも装備されています。