検索
特集

つながる時代のセキュリティ、チップと組み込みOSの連携で守る組み込みソフトウェア技術(3/4 ページ)

もはや携帯電話機やPCだけではない。あらゆる組み込み機器がネットワークにつながる時代である。そうした機器をクラッカーの脅威から守り、データ保護を実装するには、半導体チップ上にハードウェアとソフトウェアの両方の形態で搭載された信用基盤を活用する必要がある。ただし、実際のセキュリティ設計には、制約条件や技術的な選択肢が数多く待ち受けている。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

信頼できる組み込みOSが不可欠

 もしハードウェアベースの信頼基盤がバグのあるソフトウェアを認可し、立ち上げてしまうようならば、その信頼基盤は当然ながら役割を果たせない*2)。従って、信頼されるアプリケーションを設計者が開発し、配布するには、ソフトウェアベースの信頼基盤、すなわち信頼できるOSが不可欠になる。

 モノリシック型のOSは、ネットワークスタック、ファイルシステム、デバイスドライバといったシステムソフトウェアのコンポーネントからなり、各コンポーネントが単一のメモリ空間を共有し、特権モードで動く。この構造はTCBの巨大化につながり、クラッカーからの攻撃の機会を増大させてしまう。モノリシックOSにはMicrosoftのWindows、Linux、Wind River SystemsのVxWorksなどがある。

 一方、マイクロカーネル型のOSはどうだろうか。スレッド管理や例外処理、プロセス間通信など、最小限の基本的サービス群のみがスーパーバイザ(管理者)モードで走り、その他のシステムコンポーネントはユーザーモードで動く。このような構成では、設計者が必要と判断したリソースだけにアクセスを許可できる。あるコンポーネントでの障害が、別のリソースを管理する他のコンポーネントに影響することはない。マイクロカーネルOSはモノリシックOSよりもシンプルなので、マイクロカーネルのセキュリティは保証と検証が比較的容易である(図3)。

図3
図3 マイクロカーネル型OS(図の上側)は、モジュール化されたプロセスによって各種のシステムサービスを実行する。一方でモノリシック型OS(図の下側)は、単一の大型カーネルがそれらを実行する。

 汎用OSのほとんどはモノリシック型だ。これは20年ほど前に、当時のマイクロプロセッサの性能限界の観点から、モノリシック型が有利だとして導入されたことが背景にある。この方式では、ユーザーアプリケーションがサービスにアクセスする場合、ほとんどが効率的なシステムコールを使う。

 一方、マイクロカーネル型ではサービスが通信プロセスとして実装される。例えば、アプリケーションがNFS(Network File System)を介してファイルにアクセスする場合、そのアプリケーション、TCP/IPプロセス、デバイスドライバプロセスおよびNFSプロセスの間の通信が必要だ。この作業は裏に隠れて進む。つまり、アプリケーションは通常、read() やwrite()のインタフェースを呼び出し、次に、マイクロカーネルがシステムプロセス間でのデータ移動を指定する。

 これまで一般に、マイクロプロセッサの処理速度はマイクロカーネルに付随するプロセス/通知のオーバヘッドとは無関係だとされてきた。現在では、主要なOSの全てがマイクロカーネルにより設計され、事実上あらゆるエレクトロニクス製品、スマートフォンや航空エレクトロニクス機器、ネットワーク接続用機器、プロセス制御システムなどを稼働させている。マイクロカーネルベースのOSとしては、Green Hills SoftwareのIntegrity、LynuxWorksのLynuxSecure、QNX Software SystemsのNeutrino、SysgoのPikeOSなどがある。

 もしLinuxが今の時代に作られたならば、モノリシック型になることはあり得ないだろう。Linuxの開発者であるLinus Torvalds(リーナス・トーバルズ)氏自身が、コンピュータ科学者のAndrew Tanenbaum(アンドリュー・タネンバウム)氏が1992年に発行したオープンソースOSに関する評論に応えて、「そうだ、Linuxはモノリシックであり、マイクロカーネルの方が素晴らしいことは同感だ。理論的(および審美的)な観点ではLinuxは失敗である」と述べたことはよく知られている*3)

 しかしLinuxは、設計者が活用したいと望むアプリケーションにとっての(言い換えればプログラマにとっての)“巨大で成長しつつある基盤”を有している。マイクロカーネルOSあるいはモノリシックOSのどちらを使用するかの判断は、必ずしも排他的なものではない。仮想化技術を活用すれば、両方を組み込むことも可能だ。

*2)Kleidermacher, David and Kleidermacher, Mike; Embedded Systems Security: Practical Methods for Safe and Secure Software Systems Development; Elsevier, 2012

*3)Kleidermacher, David, “Monolithic stupidity,” EETimes.com, Nov 18, 2011, www.eetimes.com/4230750.

セキュリティに効く仮想化技術

 データセンターにおいてシステム仮想化が推進された要因は、リソースの最適化やサービスの利便性などだ。仮想化技術は、エレクトロニクスの世界でも広範囲にわたって活用されているが、セキュリティ面では非常にクリティカルな役割を果たす。

 Intelは2005年に仮想化支援機能「Intel VT(Virtualization Technology)」の提供を開始し、仮想化を簡単に利用できる環境を整え、普及を加速させた。最近では、同社の組み組み用プロセッサである「Atom」にもIntel VTが導入されている。同様な仮想化支援ハードウェアがARMなど他のCPUアーキテクチャでも登場し、エレクトロニクスのあらゆる形態において効率的な仮想化が可能になった。

 マイクロカーネルをベースとするハイパーバイザアーキテクチャには、コンピュータ仮想化を信頼できるマイクロカーネルの上位のサービスとして構成する方式がある(図4)。マイクロカーネルハイパーバイザの例としては、Green Hills SoftwareのIntegrity MultivisorやL4マイクロカーネルの派生版がある。このようなソフトウェア製品を利用すれば、マイクロカーネルの高信頼化とともに、Linuxなどの汎用OSの再利用が可能となる。このアーキテクチャをうまく適用することで、少数のクリティカルなセキュリティ機能を旧来(レガシー)環境の外に移し、マイクロカーネルTCB上でダイレクトにホストすることになり、トータルシステムとしてのセキュリティの大幅な改善が可能になる。

図4
図4 マイクロカーネルをベースとするハイパーバイザアーキテクチャでは、ゲストOSと軽負荷のアプリケーションの両方をマイクロカーネル上で直接実行することが可能になる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る