組込みシステムを守る具体的な方法とは?

(画像提供:Nikolay N. Antonov - stock.adobe.com)
組み込みシステムは、サーバーはもちろん、最新のパソコンほどの処理能力もないかもしれませんが、デバイスの数が膨大であるため、不正なボットネットや暗号通貨マイニングの格好の標的になっています。組み込みシステムの設計者にとって、セキュリティへの最初の大きな警鐘となったのは、2016年のネスト社製サーモスタットへのボットネット攻撃でした。これが消費者向けIoT製品であったことから、当時、プライバシーとセキュリティに対する意識の高まりもあり、ネスト社のボットネットは大きな議論を巻き起こしました。ただし、こうした議論は、企業はどうすれば低価格のIoT製品にセキュリティを組み込めるのか、消費者はどうすれば家や職場で安全にIoTを利用できるのかという点に終始しがちでした。
サイバー攻撃の脅威がますます激化する今日、開発者は設計プロセスを通じてセキュリティへの配慮を怠らないことが極めて重要です。以下にご紹介する実践的なヒントと推奨事項に従うことで、さまざまな攻撃シナリオから機器を守ることができます。この記事では、開発者が組み込み設計に採用できるセキュリティ対策の概要について解説したいと思います。
セキュアに構築する
チップのアーキテクチャ、OS、通信プロトコルは数多くありますが、IoTデバイスの多くはArm®ベースのアーキテクチャを中心に構築され、動作するOSもLinux ディストリビューションであることが多いようです。このような共通性には、コストの削減や開発期間の短縮など、多くのメリットがありますが、同時に多くのマイナス面もあります。特にLinuxベースのOSを搭載したデバイスの場合、1つの攻撃ベクトルですべてを攻撃できることになります。共通のアーキテクチャを持つ多くのデバイスへの脅威を軽減するには、開発者は次の効果的なセキュリティ設計原則を実践する必要があります。
- ファームウェアにパスワードを絶対にハードコードしないでください。また、すべてのデバイスに共通のデフォルトパスワードは使用しないでください。デバイスの初期化時に、カスタムユーザー名とパスワードをユーザーに作成させるようにしてください。
- HTTP、FTP、Telnet などの安全でないプロトコルをデフォルトで有効にしないでください。有線または無線プロトコルでデバイスから送信されるデータは、強力に暗号化されている必要があります。「自前の」暗号化処理は避けてください。
- 可能な限り制限された設定でデバイスを出荷し、エンドユーザーが自分の判断でセキュリティ設定を解除できるようにします。
- デバイスへのアクセスに使用するあらゆるメカニズムには、認証と承認の制御を必須にします。可能であれば、2要素認証 (2FA) を使用します。
- インジェクション型攻撃を避けるために、ユーザー入力はすべてフィルタリングする必要があります。
- エンドユーザー向けに、資産管理、デバイスの更新、デバイスの監視、および生産終了 (EOL) デバイスの安全な廃棄などを可能にする、安全なデバイス管理インターフェイスを実装します。
- OTA (Over-The-Air) 更新メカニズムは、デバイス上で検証する必要があります。更新ファイルは、デバイスへの送信中に暗号化されなければなりません。最後に、デバイスが安全でない古いファームウェアにダウングレードすることを防ぐアンチロールバック機能があることを確認します。
- デバイスの設計にサードパーティのソフトウェア・ライブラリを使用する場合、サードパーティのアップデートが統合され、非推奨にならないよう継続的に監視する必要があります。使われていないソフトウェアプロジェクトは、デバイスにとって脆弱性になる可能性があります。サードパーティのソフトウェアのデフォルトパスワードは、プロジェクトにコミットする前に変更してください。
- デバイスに保存する機密データは制限するようにします。機密情報は、安全なエンクレーブに保存してください。
- IoTでは、組み込みシステムは大きなエコシステムの一部にすぎません。クラウド、デスクトップ、モバイルの各アプリケーションにも、セキュリティが組み込まれていることを確認してください。エコシステムのセキュリティは、最も弱いリンクによってのみ強化できるのです。
- エンドユーザとセキュリティ研究者が安全で責任ある方法で欠陥の報告ができるよう、バグ報奨金プログラムの設立を検討しましょう。
デバイスへの物理的なアクセスが、デバイスにとって致命的になることがあります。しかし、このような物理的なアクセスを防ぐ方法がないわけではありません。回路基板やエンクロージャーの耐タンパー性を向上させる方法については何冊もの本が書かれていますが、素早く成果を上げる方法としては、次の物理設計の鉄則に注意して、デバイスの強化を図ることをお勧めします。
- JTAG、UARTなどのデバッグポート端子は、デバイスの開発・テストに非常に有益です。同時に、悪意を持ってデバイスのリバースエンジニアリングを目論む者たちにとっては、格好の標的でもあります。これらの端子を見えにくくしたり、生産ユニットのヘッダ端子を取り除くことをお勧めします。ただし、その場合、現場でのトラブルシューティングが困難になることに注意してください。設計者はセキュリティと保守性の両立を考慮する必要があります。
- 粘着剤、超音波溶接、特殊な安全ネジを使用することで、デバイスの開封をより困難にすることができます。
- 機密性の高い部品に非導電性のエポキシ樹脂を塗布することで、部品の識別や用途をわかりにくくすることができます。
- 脆弱性を持つ可能性のある古い部品を使いたくなるかもしれませんが、偽造部品に注意してください。あまりにも好条件で入手できる場合は、 おそらくその可能性があります。セキュリティと早期製品化の両立は、そう簡単ではありません。
- 多層基板を使用してトレースの配線を行えば、基板の機能を判別しにくくすることができます。
以下の推奨事項の中には、消費者向けIoTデバイスには少し難しいものもあるかもしれません。しかし、後ほど説明するように、産業用制御システムや防衛システムでは、こうしたより堅固な物理的セキュリティ対策が有効になります。
- マイクロスイッチ、水銀スイッチ、磁気スイッチなど、セキュリティ機能を基板自体に組み込むことで、意図せずに基板が開けられたり、操作されたりした場合を検知できます。ニクロム線や光ファイバーも使用できます。誰かがデバイスの改ざんを試みて、ニクロム線や光ファイバーが不正に操作された場合は、電流や光子の挙動の変化によって検知できます。
- サイドチャネル攻撃やグリッチ攻撃は、あまり一般的ではないかもしれませんが、物理法則を使ってデバイスを攻撃するため、検出はできても防止することが極めて困難なため、攻撃者に非常に有利です。CPUの電子の流れを制限したり、タイミングを攻撃することで、デバイスに意図しない動作をさせて、セキュリティ機能を無効にすることができます。これには、誤検出の可能性はありますが、圧力・電流センサを基板に実装することで、グリッチ攻撃を検出することができます。
- X線を使ってマイクロチップの中を覗き、ランジスタのトポグラフィからその機能などを探り出す攻撃者もいます。X線を検出するセンサを実装すれば、改ざんは検出できるのですが、攻撃者が大切な情報を引き出すのを防ぐことはできません。
セキュリティとオープン性というパラダイムには、相対立する概念があることに注意する必要があります。セキュリティに大切なのは難解であること、 それに対して、オープンハードウェアに大切なのは理解しやすいことです。いずれにせよ、「鍵は正直者だけのためにある」という古い格言がありますが、これはセキュリティ全般に言えることです。安全なIoTデバイスを構築する方法についてさらに詳しくは、OWASP (Open Web Application Security Project) IoTプロジェクトにアクセスしてください。
セキュアに操作する
たとえメーカーが最高の安全設計原則をすべて製品に実装できたとしても、エンドユーザーがそのデバイスを安全に操作できなければ、すべてが水の泡になります。
- デフォルトのルーター名、ルーターパスワード、ネットワーク名 (SSID)、ネットワーク暗号化キーを変更します。必ず強力なパスワードを使用し、2つのネットワークで同じパスワードを使用しないでください。
- ホームネットワークを2つの「仮想」ネットワークに分割し、デスクトップコンピュータやネットワーク接続ストレージ (NAS) デバイスなどからIoTデバイスが「見えない」ようにします。これを迅速かつ簡単に行うには、IoTネットワークにゲストネットワーク機能を使用します。
- ほとんどのIoTデバイスはデバイスの制御をスマートフォンアプリに依存しています。アプリを常に最新の状態に保ち、可能であればログインには2要素認証 (2FA) を使用してください。
- 使用する予定のないIoTデバイスの機能はすべて無効にしてください。
- ルーターとIoTデバイスの両方のファームウェアは定期的にアップデートしてください。
- IoTデバイスが生産終了 (EOL) を迎え、アップデートが受けられなくなったら、新しいモデルへの置き換えを検討してください。
産業レベルの強力なセキュリティ
消費者向けIoT製品は数多くありますが、産業用のIoT製品は、産業用制御システム (ICS) と呼ばれ、極めて重要で潜在的に危険なプロセスを数多く管理します。エネルギー生産から工場まで、こうしたさまざまなプロセスを実行する設備や関連機械を制御するために、組み込みデジタル技術 (オフィスを中心とした情報技術 (IT) に対し、オペレーショナルテクノロジー (OT) と呼ばれる) が使用されています。ICS環境は厳密な意味でのIT環境とは大きく異なるため、OTデバイスやICSネットワークを強化するには特別な配慮が必要です。最も基本的な原則とは、ICSをインターネットに接続してはならないということです。これは当たり前のことにように思えますが、この基本なルールは驚くほど頻繁に破られています。ICSネットワークとデバイスを保護する方法については、ICS向けMITRE ATT&CK とエンタープライズ向けMITRE ATT&CKという2つのセキュリティフレームワークがありますので、参照してください。
ICSシステムが通常導入されている環境の性質 (例えば、環境的、化学的、またはその他の危険性のある場所) からもわかるように、ICSは機密性よりもシステムの可用性を優先するように設計されています。つまり、積極的な見方をすれば、通常、システムには冗長性があり、システムが故障しても安全が確保されるように設計されています。しかし、ICSシステムは、何十年も運用され続けていても、常に最新の状態に保たれているとは限りません。さらに、プロトコルの多くは古いもので、効率性を重視して構築されており、セキュリティは考慮されていません。結論としては、ICSやIIoT分野でのセキュリティには、独特な難しさがあり、ベストプラクティスの実行は難しいのかもしれません。しかし、今後、このような機器の組み込み開発者は、最新の設計手法を取り入れ、セキュリティは後から追加するのではなく、設計に組み込む必要があることを認識しておくべきでしょう。