学位論文要旨



No 117806
著者(漢字) 品川,高廣
著者(英字)
著者(カナ) シナガワ,タカヒロ
標題(和) 開放型分散システムのためのカーネルによる細粒度保護ドメイン
標題(洋) A Kernel Support of Fine-grained Protection Domains for Open Distributed systems
報告番号 117806
報告番号 甲17806
学位授与日 2003.03.28
学位種別 課程博士
学位種類 博士(理学)
学位記番号 博理第4277号
研究科 理学系研究科
専攻 情報科学専攻
論文審査委員 主査: 東京大学 教授 米澤,明憲
 東京大学 教授 小柳,義夫
 東京大学 教授 平木,敬
 東京大学 助教授 石川,裕
 東京工業大学 助教授 千葉,滋
内容要旨 要旨を表示する

 インターネットのような開放型の分散環境では、セキュリティの確保が重要な課題である。従来のLAN等の閉じた環境とは異なり、開放型分散環境は匿名性が高いため,悪意を持ったユーザが存在する可能性がある.従って開放型分散システムでは、匿名ユーザによる不正アクセスからローカルのコンピュータ資源を保護するための機構が不可欠である。

 インターネット接続環境の普及にともない、不正アクセスの手法も多様化している。従来はサーバマシンに侵入して不正アクセスを行なう手法が多かったが,近年ではクライアントマシンに対して任意のコードを送り込んで不正アクセスを行なう手法が増加している.コードを送り込む手段としては,JavaアプレットやActiveXなどの実行可能コンテンツとして送り込む方法の他に,PDFやPostscript等のように一見静的なコンテンツの中にコードを埋め込んで送り込む手法も存在する.この手法では、バッファ溢れ攻撃などを用いることで,埋め込んだコードを閲覧プログラムの権限で実行させることができる。このような不正アクセスの手法の多様化に対応するためには,様々なプログラムに対して保護機構を組み込む必要がある.

 しかし従来のオペレーティングシステムは、このような不正アクセスに対して十分な保護機構を提供していない。これは,従来のプロセスによる保護モデルが基本的にLAN等の閉じた環境を想定して設計されており、開放型分散環境のように匿名ユーザが作成したコードを実行するような状況は想定していないためである.例えば、プロセスによる保護では,ActiveXなどの実行可能コンテンツに対して,通常よりもアクセス権を制限して実行するといったことは難しい.また、プロセスによる保護はプロセス間通信のコストが大きいため,保護のオーバーヘッドが非常に大きくなってしまう。本研究の実験では、実行可能コンテンツの保護にプロセスを用いると,約102%ものオーバーヘッドが生じるという結果が出ている。従って、開放型分散システムのための保護機構では、アクセス権限を細かく設定できる柔軟性と、保護ドメイン間の通信を効率よく行える高い性能を合わせ持った保護機構が必要ある。

 従来の研究でも、オペレーティングシステムのカーネルを拡張して保護機構を強化する試みが行われている.しかしこれらの研究では、保護機構が特定の目的に特化されたものが多い。カーネルによる保護機構は,様々なプログラムで用いられるものであるので、特定の目的に特化したものではなく汎用的な機構であることが望ましい。また,言語処理系の機能によりユーザレベルで保護機構を実現する研究も数多く行なわれているが,既存のバイナリに対して十分な保護を行なうことは難しい.

 本論文では、オペレーティングシステムの保護モデルにおける新しい概念である細粒度保護ドメインを提案する。細粒度保護ドメインとは、従来プロセスと一体になっていた保護ドメインの概念をプロセスから分離して、一つのプロセスに複数の保護ドメインを持てるようにしたものである。細粒度保護ドメインを用いると、一つのプロセス内のコードを異なるアクセス権限で実行させることができる。例えばプロセス内でメモリ保護を行うために、細粒度保護ドメインごとにページ単位で異なるメモリ保護モードを設定することができる。また、ファイルやネットワークに対して,より制限されたアクセス権限を設定することができる。これによって、悪意を持ったユーザによって送り込まれた可能性のあるコードに対するアクセス権限を制限して,不正アクセスを未然に防止することができる.細粒度保護ドメインをカーネルレベルで効率よく実現するために,本論文ではマルチプロテクションページテーブルと呼ばれる仮想的な機構を導入する(図1参照)。マルチプロテクションページテーブルとは、従来のページテーブルを拡張して、一つのページエントリに対して複数個の保護モードを設定できるようにしたものである。ある時点では複数個の保護モードのうちの一つだけが有効であり、保護ドメインの切り替えと連動して有効な保護モードが切り替わる。マルチプロテクションページテーブルを利用すると,同じ仮想アドレス空間を共有しながらも細粒度保護ドメインごとに異なるページ保護モードを持たせることが可能になる.また保護ドメインの切り替え時にページテーブルを切り替える必要が無いため,TLBフラッシュなどを避けて軽量な保護ドメイン切り替えを提供できる.また,軽量な保護ドメイン切り替えをベースにシステムコール横取り機構を実現することで、ファイルなどの資源に対してユーザーレベルで柔軟かつ効率の良いアクセス制御が可能になる.

 マルチプロテクションページテーブルを既存のプロセッサ上で実装するためには,プロセッサごとに異なる手法を用いる.本論文では、特にインテルのIA-32アーキテクチャ上での実装について詳しく説明する,IA-32は世界中で最も多く使われているプロセッサのアーキテクチャであり、その上での実装を示すことは細粒度保護ドメインの実用性を示す意味で重要である。本論文で述べる実装では、IA-32アーキテクチャのセグメント機構とリングプロテクション機構を活用することにより、マルチプロテクションページテーブルの効率の良い実装を実現している.

 細粒度保護ドメインの有用性を実証するために、本論文では三種類のアプリケーションに対して細粒度保護ドメインを適用した例を示す。一つ目は、実行可能コンテンツをWebブラウザ内で安全に実行する環境である。実行可能コンテンツに対して細粒度保護ドメインを割り当てることで、実行可能コンテンツによる不正アクセスを防止する。二つ目は、柔軟でかつ効率の良い汎用サンドボックス機構である。細粒度保護ドメインを用いることで,サンドボックスのリファレンスモニタをユーザレベルで実装しつつも,保護のオーバーヘッドを低く抑えることができる.三つ目は、特権コードを最小化したsetuidプログラムである。細粒度保護ドメインを活用してsetuidプログラム中の本当に必要なコードにのみroot権限を与えることで、setuidを乗っ取ることによるroot権限の不正取得が行われる可能性を減らす。これらのアプリケーション例を通じて、細粒度保護ドメイン機構の有効性を検証する.

 また,細粒度保護ドメインの性能を検証するために、IA-32アーキテクチャ上での実装を用いた性能実験の結果を示す。細粒度保護ドメイン間呼び出しにかかる時間の測定結果はPentiumプロセッサ上で103サイクルであり,極めて高速な保護ドメイン間呼び出しが実現できることを確認した.また、実際のアプリケーションを用いてオーバーヘッドを測定した結果、マンデルブロ集合を描く実行可能コンテンツでは平均22.6%、サンドボックスしたAcrobat Readerでは約1.5%、特権コードを最小化したpasswdコマンドでは3.8%程度であることがわかった。

図1:細粒度保護ドメインとマルチプロテクションページテーブル

審査要旨 要旨を表示する

 本論文は7つの章からなる.第1章は序論であり,本論文の研究の動機となった背景について論じている.近年,インターネットのような開放型分散環境では,匿名ユーザによる不正アクセスヘの対処が重要な課題となっている.特に最近では,ウィルスやワームに代表されるように,不正なコードをネットワーク経由で送り込んでインターネット上の計算機に対して不正アクセスを行う攻撃が頻繁に行われており,このようなコードからローカルの計算機を保護する機構が不可欠になっている.しかし従来のオペレーティングシステムは主にLANのような閉じた環境を想定して設計されており,匿名ユーザからの攻撃を防ぐための強固な保護機構を実現することが難しくなっている.本論文では,オペレーティングシステムが提供する保護機構のモデルを再設計し,インターネットに接続された計算機上で安全に動作できるアプリケーションを作成するための基盤となる柔軟かつ効率の良い保護機構を提供することを目的としている,この主題の設定は,学位論文の主題として十分かつ妥当であると認められる.

 本論文では,オペレーティングシステムの新しい抽象概念として,細粒度保護ドメインを提案している.細粒度保護ドメインとは,一つのプロセスの中に複数個持つことができる保護ドメインであり,プロセス内で動作するスレッドをアクセス権限が制限された環境で動作させることを可能にしている.細粒度保護ドメインを用いることによって,インターネットから送り込まれたコードに対してローカルの計算機資源に対するアクセスを制限し,不正アクセスによる被害を最小限に抑えることを可能にしている.また,保護ドメイン切り替えのコストを大幅に削減し,保護によるオーバーヘッドを低く抑えている.

 第2章では,ソフトウェアによる保護機構に関する研究についてまとめている.従来の保護機構を,(1)オペレーティングシステムによるカーネルレベルのアプローチ,(2)言語処理系などユーザレベルのソフトウェアによるアプローチの大きく2つに分けて,それぞれの方式における利害得失や本研究との位置づけについて述べている.

 第3章では,本論文で提案する細粒度保護ドメインの概要およびその実現機構について述べている.従来の保護モデルではプロセスと一体になっていた保護ドメインの概念をプロセスから分離して,一つのプロセスに複数個の保護ドメインを持たせられるように拡張している.保護ドメインをプロセスから分離することによって,プロセスよりも細かい単位での柔軟な保護を可能にするとともに,スケジューリングなどを不要にして保護ドメイン切り替えのコストを大幅に削減している.また,細粒度保護ドメインをカーネルレベルで効率よく実現するために,(1)マルチプロテクションページテーブル,(2)システムコールフックの2つの技術から成る機構を提供している.マルチプロテクションページテーブルとは細粒度のメモリ保護を実現するためのカーネル内の抽象的な機構であり,システムコールフックはファイルなどのシステム資源に対する柔軟な保護を実現するための機構である.

 第4章では,細粒度保護ドメインを既存のプロセッサ上で実装する技術について述べている.本論文では,主として最も普及しているプロセッサであるIA-32アーキテクチャ上での実装について述べている,細粒度保護ドメインを効率よく実装するために,IA-32のセグメント機構を巧みに活用して,保護ドメイン切り替え時にTLBフラッシュ等のコストが発生しないように工夫している.また,セグメント機構の存在を意識せずに済むように,セグメントの配置を工夫してプログラマからは透過的に扱えるようにしている.さらに,IA-32のリング保護機構を活用することによって,頻繁使われる2つの保護ドメイン間の呼び出しを最適化する機構も実現している.

 第5章では,細粒度保護ドメインの応用について述べている.細粒度保護ドメインを実際のアプリケーションに適用して,その汎用性・有用性を示している.応用例としては,(1)実行可能コンテンツを安全に実行できるWebブラウザ,(2)インターネットアプリケーションのための軽量サンドボックス,(3)特権コードを最小化したsetuidプログラムの3種類について,実際に設計および実装を行って実用性を示している.

 第6章では,細粒度保護ドメインの性能を分析する実験の結果について述べている.細粒度保護ドメイン間の呼び出しにかかる時間を測定する実験を行い,103〜378プロセッササイクルという極めて高速な保護ドメイン間呼び出しが実現されていることを確認している.また,第5章で述べているアプリケーションを用いた実験を行って,保護によるオーバーヘッドがいずれも実用的なレベルに抑えられていることを示している.

 第7章では,論文全体の内容をまとめ,今後の研究の方向性について述べている.

 本学位論文は,開放型分散環境において安全なアプリケーションを構築するための基盤となるオペレーティングシステムの新しい保護モデルを提案し,その有効性について確認を行っている.細粒度保護ドメインという新しい抽象概念を提案し,その設計および実装を行うにとどまらず,複数の応用例を示して実際に細粒度保護ドメインを適用した実装を行い,その有用性について総合的に検証している点で,今後の関連分野の研究に寄与するところ大であると認められる.この点において,本論文は高く評価され,審査委員全員で,博士(理学)の学位を授与するにふさわしいと判断した.

 なお本論文の一部は,共著論文として印刷公表済みであるが,論文提出者が主体となって研究および開発を行ったもので,論文提出者の寄与は十分である.

UTokyo Repositoryリンク