2つ目は、システムを監視して悪さをしていないことを確認する動作モニタリングです。実際のところこのアプローチは、ホストが利用者のコードから予想される動作を把握できない可能性があるデータセンターより、正しくない動作を明確に定義できるエンベデッドシステムにおいて、より利用価値が高くなります。
幾つかの高信頼性システムで使用される極端な例は、図3に示す三重化モジュールによる冗長性(TMR)です。TMRでは、動作が同じ(ただし、理想的には実装が異なる)3つのモジュールがロックステップで動作し、各ステップの結果を多数決で決定します。攻撃者がシステム動作に影響を及ぼすには、2つの異なるモジュールが同じステップで同じように誤った結果を得るようにしなければなりません。
TMRには、3つの完全なモジュールの他に比較、投票、エラー回復ハードウェアが必要です。これらがセキュアなハードウェアでなければ、冗長化による保護は投票または回復プロセスへの攻撃によって帳消しになります。モジュールを2つにすればコストの節約にはなりますが、システムはエラーを検出するだけで、オンザフライで訂正することはできなくなります。
コストを節約できる、ほかのアプローチもあります。冗長モジュールの代わりに、システムの状態と、許容可能な動作を完全に定義する一連のルールを重要なステップごとに比較するステートマシンを作成するのです。
このアプローチによって、許容可能な動作を簡潔に定義できるエンベデッドシステムの多くのコストと消費電力を節約できます。このアプローチはまた、不安全な行動を定義できる機能的に安全なシステムでも使用されます。しかし、適切なルールセットを見つけ出すことは実際には極めて困難です。
ここで、現時点ではまだ実験段階にある3つ目の代替策であるディープラーニングが登場します。システムの重要な状態変数をディープラーニングのニューラルネットワークに接続します。このネットワークを、正常動作、既知の攻撃、ランダムに挿入されるフォルトの組み合わせで訓練します。
その結果得られたネットワークがどのように動作するかを知ることはできず、ネットワークが十分であるか、正しいかどうかさえ証明できません。しかし、複雑なシステムは人間が考え出したルールリストより優れた性能を発揮するでしょう。言うまでもありませんが、訓練したネットワーク自体を攻撃から保護しなければなりません。
このような能動的な対策はどのレベルに適用すべきかという重要な問題が提起されます。チェックするモジュールは、個々のレジスタ、プロセッサ内部の機能ブロック、SoC内部のプロセッサ全体、それともエンベデッドシステム全体という場合もあるでしょう。モジュールがきめ細かくなるほどコストは増加し、皮肉なことに攻撃によっては検出が困難になるものもあります。完璧に機能するCPUはマルウェアも完璧に実行してしまいます。全システムレベルでチェックするのは経済的かもしれませんが、許容できる動作の範囲を定義し、システム内部に損害を与える前に攻撃を発見するのがはるかに難しくなる可能性があります。
ここでは「境界の保全」「極めて重要な資産の確保」「能動的なモニタリング」という3種類の防衛方法を提起しました。外壁、そして城の砦、機動力のある護衛兵といった、中世には珍しくない防衛方法ですが、ハードウェア機能の仮想化によって実現されたクラウドデータセンターが引き受けるセキュリティ上重要なタスクが増える中、これらの考え方はサーバ、ネットワーク、ストレージハードウェアでのイノベーションに見えます。
エンベデッドシステムがますますミッションクリティカルになり、ネットワークに接続されるにつれて、これらの考え方はエンベデッドシステムにも導入されるでしょう。
城を守るために、準備しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.