平成 21 年度 修士論文 機密情報ファイルの安全な閲覧作成方式の開発 指導教官 齋藤 彰一 准教授 名古屋工業大学 情報工学専攻 平成 20 年度入学 20417539 番 栗本 裕司 i 目次 第 1 章 はじめに 1 第 2 章 関連研究 4 2.1 基本的な手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 ファイルの暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.2 ファイアウォール . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 リモートデスクトップ . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.4 シンクライアント . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 既存研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1 仮想マシンモニタによるゲスト OS のファイル保護 . . . . . . . 6 2.2.2 SAccessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.3 VOFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.4 DOFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.5 HiGATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.6 問題点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 第 3 章 提案手法 13 3.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 全体構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.1 機密情報保護ファイルシステム . . . . . . . . . . . . . . . . . . 16 3.3.2 ダミーファイルシステム . . . . . . . . . . . . . . . . . . . . . . 17 3.3.3 監視デーモン . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ii 3.4 機密情報漏洩防止処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.1 ゲスト OS 側の漏洩の可能性がある出力デバイスの無効化 . . . 19 3.4.2 スナップショットの作成 . . . . . . . . . . . . . . . . . . . . . . 21 3.5 機密情報漏洩防止処理の終了 . . . . . . . . . . . . . . . . . . . . . . . 第 4 章 実装 21 23 4.1 実装に必要な手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1.1 Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1.2 libvirt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.3 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.4 FUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.5 AUFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 機密情報のファイルフォーマット . . . . . . . . . . . . . . . . . . . . . 29 4.3 機密情報保護ファイルシステム . . . . . . . . . . . . . . . . . . . . . . 30 4.3.1 実装概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.3.2 データメッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.3 サーバ部の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3.4 クライアント部の実装 . . . . . . . . . . . . . . . . . . . . . . . 34 4.3.5 ファイルの暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 ダミーファイルシステム . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.1 実装概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.2 ディスク擬似書き込み機能の実装 . . . . . . . . . . . . . . . . . 37 4.4.3 ディスク擬似書き込み機能の有効化 . . . . . . . . . . . . . . . . 38 4.4.4 rootfilsesystem へのマウント . . . . . . . . . . . . . . . . . . . . 40 4.5 ネットワークの無効化と有効化 . . . . . . . . . . . . . . . . . . . . . . 41 4.6 スナップショット作成と仮想マシンの復元 . . . . . . . . . . . . . . . . 41 4.7 監視デーモン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.7.1 監視デーモン本体 . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.7.2 機密情報漏洩防止処理 . . . . . . . . . . . . . . . . . . . . . . . 44 iii 4.7.3 ゲスト OS の正当性の保証 . . . . . . . . . . . . . . . . . . . . . 第 5 章 評価 46 48 5.1 性能評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1.1 評価環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1.2 機密情報漏洩防止処理の開始と終了に要する時間 . . . . . . . . 48 5.1.3 機密情報保護ファイルシステムの性能評価 . . . . . . . . . . . . 49 5.2 想定される攻撃とその対処法の検討 . . . . . . . . . . . . . . . . . . . . 50 5.2.1 外部からの攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2.2 内部からの攻撃 . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 第 6 章 まとめ 54 謝辞 55 1 第1章 はじめに 現在,機密情報が計算機上で扱われることが一般的になっている.しかし,インター ネットや記憶デバイスの紛失による機密情報の漏洩の事件が頻繁に発生し,漏洩によ る被害が甚大となっている.このため,機密情報の保護が計算機システムにおける大 きな課題である. ファイアウォールや暗号化といった従来のセキュリティ対策のほとんどは,侵入や マルウェアといった外部からの不正アクセスから情報を守ることが主目的としている. そのため,内部者による情報漏洩に対して従来のセキュリティ対策は完全ではない.な ぜなら,内部者の中には機密情報を扱う権限を持つユーザがいるためである.もし,権 限を持つユーザが意図的に漏洩をさせようとした場合には,従来のセキュリティ対策で は防ぐことはできない.例えば,権限をもつユーザが USB メモリ等のリムーバブルメ ディアやネットワークを用いて機密情報を持ち出す漏洩では,従来のセキュリティ対策 では正常な動作とみなされるため情報の漏洩を発見することはできない.また,機密 情報を持ち出せない場合でも,権限を持つユーザは閲覧することは可能なため,情報 の複製は容易であり簡単に漏洩することができる.例えば,機密情報をビューワで閲 覧している際に表示内容をコピーして別ファイルにペーストして複製された場合,複 製されたファイルは機密情報ではない.この複製を持ち出すことで,容易に漏洩して しまう.そして,機密情報の漏洩は一般ユーザが使用する個人端末からがほとんどと なっている.これは,一般ユーザにはセキュリティに対する知識を持たない者や,セ キュリティに対する意識が低い者が存在することが原因である.もし,このユーザが 2 使用している計算機が不正者に攻撃を受けた場合,簡単に攻撃を許してしまい,機密 情報が漏洩する可能性は高くなってしまう. このような問題を防ぐために,機密情報を安全に取り扱うシステムが必要となる.こ こでいう安全とは,機密情報を取り扱う作業中に,機密情報の内容がどこにも漏れな いことを指す.機密情報を安全に取り扱うためには,次の 3 点が挙げられる. • 機密情報を安全に保存できること • 機密情報を安全に閲覧できること • 機密情報を安全に作成できること ファイアウォールや暗号化といった従来のセキュリティ対策の他に,不正ファイル アクセス防止システム [2] が存在する.しかし,外部からの攻撃しか想定していないた め権限をもつユーザからの漏洩を防止できない.また,機密情報を安全に閲覧できる 手法 [3] がある.しかし,閲覧だけに限っているため,作成については考慮されていな い.さらに,機密情報をサーバで管理して閲覧作成要求があった場合,データの表示 のみおこなう手法 [4] がある.しかし,ユーザの権限によっては,データを持ち出すこ とが可能であるため悪意あるユーザが権限を持っていた場合には漏洩を防ぐことはで きない.そして,計算機の所持者や使用者であってもデータの改竄や持ち出しを防ぐ 手法 [5] も存在するが,使用するアプリケーション等が制限されておりユーザビリティ に欠けるという問題点がある. 本稿では,機密情報を安全に扱うことができる機密情報閲覧作成システムを提案す る.提案手法は,仮想マシンモニタを用いて管理用のオペレーティングシステムを独立 して設ける.機密情報の閲覧作成時には,ユーザの権限に関係なく,ディスクやネット ワークといった出力を無効化することで漏洩を防ぐ.また,機密情報の作成には,ディ スク擬似書き込みによる任意のアプリケーションを使用可能とする.そして,仮想マ シンモニタのスナップショット機能を用いて機密情報の閲覧作成中の状態を残さない. 以上により,機密情報作成閲覧後の主記憶内容の覗き見による漏洩を防ぎ,機密情報 を安全に扱うことが可能となる. 3 本論文では,2 章で提案手法について述べる,3 章で提案手法の実装について述べる. 4 章で本提案手法の評価について述べ,5 章で既存手法について述べる.そして,6 章 でまとめについて述べる. 4 第2章 関連研究 本章では,本提案手法に関する,関連研究について述べる.まずはじめに,今まで に情報漏洩対策に使われている基本的な手法を述べ,次に基本的な手法を用いている 既存研究について述べる. 2.1 基本的な手法 本節では,現在使用されている情報漏洩対策の基本的な手法について述べる. 2.1.1 ファイルの暗号化 暗号化は,第三者に内容を知られないように,特別な知識をなしでは読めないよう に変換する手法である.ファイルを暗号化することで,第三者からファイルの内容を 秘匿することが可能となる.暗号化と復号するためには,“鍵” が必要となる.鍵の種 類として,対になる 2 つの鍵を使って暗号化と復号をおこなう公開暗号と,暗号化と 復号を同一の鍵でおこなう共通鍵暗号が存在する. しかし,ファイルの暗号化だけではファイルの内容を外部者から防ぐことは可能だ が,だけでは内部者からの漏洩を防ぐことはできない.内部者は,暗号化されたファ イルを復号する権利をもつため,ファイルを復号した後に,その内容を漏洩すること が可能となる. 5 2.1.2 ファイアウォール ファイアウォールとは,ある特定のコンピュータネットワークとその外部との通信を 制御して,内部ネットワークの安全を維持することを目的としたシステムである.ファ イアウォールはインターネットなどの外部との境界を流れるデータを監視し、不正な アクセスを検出・遮断する.これにより,第三者による不正アクセスを防止して,デー タやプログラムの盗み見・改ざん・破壊などを防ぐことができる. ファイアウォールは,信頼できないネットワークからの通信の遮断が目的である. よってファイアウォールでは,第三者による不正アクセスの防止や,内部からの信頼 できないネットワークへの通信を防ぐことが可能である.しかし,ファイアウォール では内部者が機密情報を漏洩を防止することができない.なぜなら,信頼できるネッ トワークが必ずしも機密情報を扱う権限をもっているとは限らないからである.内部 者は,権限をもたないネットワークに意図的に漏洩をすることが可能である.またファ イアウォールだけでは,ネットワークを使用しない漏洩を防ぐことはできない. 2.1.3 リモートデスクトップ リモートデスクトップとは手元の計算機からネットワークで接続された他の計算機の GUI 操作する技術である.リモートデスクトップのサーバ内に機密情報を保存してお けば,ユーザのミスやマルウェアによるクラックからの漏洩を防ぐことは可能である. しかし,リモートデスクトップだけでは機密情報の閲覧,作成時の機密情報の内容 の複製を完全には防ぐことはできない.なぜなら,リモートデスクトップクライアン トはクリップボードの共有が可能である.このため,機密情報の閲覧,作成をおこなっ ているとき,機密情報の内容をコピーしてローカル計算機に機密情報の内容を複製す ることが可能である. 2.1.4 シンクライアント シンクライアントとは,ユーザが使用するクライアント端末に必要最低限の処理を させ,ほとんどの処理をサーバ側に集中させたシステムである.シンクライアントは, 6 表示装置や入力装置など必要最低限の機能をもったクライアントでサーバに接続する. サーバはクライアントから受けた処理を実行させ,その結果をクライアント側が受け 取り表示する. シンクライアントは,ファイルやアプリケーションといった資源はすべてサーバ側 で一元的に管理するため,ユーザの設定ミスによる機密情報の漏洩や持ち出し権限の 無いユーザの不正持ち出しによる漏洩を防止することができる. しかし,シンクライアントでは機密情報の持ち出し権限をもつユーザからの漏洩は 防止することができない.もし,悪意のあるユーザが機密情報の持ち出し権限を持っ ていた場合,機密情報を持ち出すことが可能ため漏洩してしまう.また,クライアン トは一般ユーザが使用するため,外部ネットワークへの通信を許可している可能性が 高い.この場合,外部ネットワークへ機密情報が漏洩してしまう可能性も考えられる. 2.2 既存研究 本節では,既存研究について述べる. 2.2.1 仮想マシンモニタによるゲスト OS のファイル保護 忠鉢らが提案している仮想マシンモニタによるゲスト OS のファイル保護 [1] は,仮 想マシンモニタのデバイスドライバにアクセス制御機能を取り込むことにより,OS か ら独立したファイルアクセス制御を実現するシステムである.この手法は,“ポリシー 作成フェイズ” と “アクセス制御実施フェイズ” の 2 つのフェーズを経て有効化される. ポリシー作成フェイズでは,OS が信頼できる状態の時にファイルに対するポリシー を作成する.アクセス制御実施フェイズでは,ポリシー作成フェイズで作成したポリ シーに従い,仮想マシンモニタがデバイスドライバの I/O に対してコマンド発行の可 否を制御する.これにより,OS が信頼できない状態においてもファイルアクセス制御 は正常に動作する. この手法はシステムファイルの改竄やマルウェアの隠蔽工作には有効な手段である. しかし,この手法で機密情報の漏洩を防止をするには完全とはいえない.なぜなら,こ 7 図 2.1: SAccessor の構成図 の手法はファイルアクセス制御を確実にする手法であるため機密情報の不正な改竄や 持ち出しを防止できるが,ファイル内容の複製して漏洩する攻撃については防ぐこと ができない. 2.2.2 SAccessor SAccessor[2] は計算機において重要なファイルのアクセス制御を攻撃対象の OS から 分離することで,OS への攻撃の影響を受けずにアクセスを制御することが可能なシ ステムである.SAccessor の構成図を図 2.1 に示す.図 2.1 より,SAccessor は仮想マシ ンモニタを用いて計算機上に認証 OS と作業 OS という 2 つの OS を動作させる.認証 OS は重要なファイルを保存するファイルサーバの役割を担い,重要なファイルのアク セス制御を提供する.作業 OS は一般ユーザが使用する OS で,認証 OS と通信するこ とでのみ重要なファイルにアクセスすることが可能となる.このような構成にするこ とで,ファイル単位のアクセス制御が可能となり,作業 OS がクラックされたとして も認証 OS でアクセス制御を強制でき,需要なファイルの不正アクセスを防止するこ とができる. SAccessor は忠鉢らの手法と同様システムファイルの改竄やマルウェアの隠蔽工作に 8 は有効な手段である.また,SAccessor は本提案手法の機密情報保護ファイルシステム と酷似している.しかし,SAccessor は攻撃者は遠隔地におり,攻撃対象の計算機へ物 理的にアクセスできないと仮定しているため,内部者による攻撃については想定され ていない.SAccessor においては,内部者は重要なファイルを改竄することはできな くとも,閲覧することは可能なため,閲覧した内容を複製し漏洩させることが可能と なる. 2.2.3 VOFS VOFS[3](View-Only File System) はユーザの権限に関係なく,機密情報を閲覧する 場合には閲覧のみを許可する機密情報漏洩防止システムである.VOFS の構成図を図 2.2 に示す.図 2.2 より,VOFS は仮想マシンモニタを用いて,Guest VM,SVFS VM, Domain0 VM の 3 つの仮想マシンを用いている.Guest VM は一般ユーザが使用する VM である.また,SVFS VM は,機密情報の保存と管理をおこなう VM である.こ の SVFS VM は著者らが提案する重要ファイル保護を実現する遠隔ファイルシステム である SVFS[6] を用いてる.そして,Domain0 VM はシステム全体の管理する VM で ある. 次に,VOFS の動作について述べる.まず,Guest VM を使用する一般ユーザは機 密情報をサーバからダウンロードして SVFS VM 内の SVFS に保存する.次に,一般 ユーザは機密情報を閲覧するためにアプリケーションを起動し,機密情報を SVFS に アクセスする.このとき SVFS は,Guest VM が正常に動作しているかチェックする. ゲスト OS が正常に動作しているかを確認した後,SVFS VM は Domain0 VM に対し て,スナップショットの作成と出力デバイスの無効化する.これらの動作が終了しと 時に,SVFS は機密情報を復号し,そのデータを Guest VM に渡す.これにより,一 般ユーザは機密情報を閲覧することができるが,出力デバイスが無効化されているた め漏洩を防止することができる.そして,一般ユーザが機密情報の閲覧を終了した際, 一般ユーザは機密情報の閲覧を終了したことを明示するために,“閲覧終了ボタン” を 押す.閲覧終了ボタンが押された時,現在使用している Guest VM を破棄して,スナッ プショットから機密情報の閲覧前の状態に復元するとともに,出力デバイスの有効化 9 図 2.2: VOFS の構成図 する.これにより,メモリ内容からの機密情報の盗み見を防ぐことができる. しかし,VOFS は機密情報を閲覧する場合に,閲覧のみを許可するシステムである ため,機密情報の作成については考慮していない.また,機密情報の終了時には自分 で終了することを明示しなければならないため,ユーザビリティに欠ける.しかも,現 在においても実装されていない. 2.2.4 DOFS DOFS[4](Display Only File Server) は,リモートデスクトップを用いた機密情報漏 洩防止システムである.DOFS は機密情報を DOFS サーバで一括管理をおこなってい る.ユーザは機密情報を閲覧,作成する際には,DOFS サーバに対して DOFS クライ アントを通してリクエストを発行する.リクエストを受けた DOFS サーバはリクエス ト内容を解釈して機密情報の内容をリモートデスクトップクライアントを用いて表示 する.DOFS を用いることにより,機密情報は DOFS サーバの中でのみ運用されるた め,DOFS サーバが安全である限り,機密情報を不正に持ち出すことができない.ま 10 図 2.3: HiGATE の構成図 た,DOFS はリモートデスクトップクライアントで機密情報の内容を画面に表示する だけであるため,ローカル計算機には機密情報のデータ内容がローカル計算機には渡 ることがない.このため,機密情報のデータ内容の複製による漏洩は不可能となる. しかし,DOFS でリモートデスクトップ機能を使用しているため,リモートデスク トップ機能と同様の問題点を持つ.また,機密情報の管理をアクセス制御のみでおこ なっているため,機密情報を持ち出す権限をもっているユーザが悪意を持っていた場 合,漏洩を防ぐことはできない.そして,DOFS サーバ内しか使用不可能なため,ア プリケーションの自由が効かないため,ユーザビリティに欠ける. 11 2.2.5 HiGATE HiGATE[5] は,計算機の所持者や使用者であってもデータの中身を見ずに大量のデー タ処理をおこなうことができる計算機ベース型大容量耐タンパ装置である.HiGATE の構成図を図 2.3 に示す.図 2.3 より,HiGATE は一般計算機にハードウェアとソフ トウェア両面を改良することにより耐タンパ装置を実現している.HiGATE はハード ウェア部の改良として,計算機のケースが開けていないことを証明する機能を追加し た.この機能は無理にケースを開けたときに電源などがダウンする機能と開封防止ラ ベルを使用して実現している.これにより,メモリ内の情報を抜き出すことを防止す ることが可能となる.HiGATE のソフトウェアの改良としては主に,HDD の暗号化 とプログラムの起動制御を追加した.HDD 暗号化を使用することにより,使用して いる HDD を持ち出して,別の計算機に取り付けて改竄,または情報の取得を防ぐこ とが可能である.また,プログラムの起動制御をおこなうことで不正プログラムによ る,プログラムの改竄や情報の盗み見を防ぐことが可能である.よってこれらの機能 より,HiGATE は耐タンパな領域内でプログラムを不正されずに正しく実行すること ができる. しかし,HiGATE はユーザビリティに欠けるという問題点がある.HiGATE は情報 の改竄や盗み見を防ぐために登録したアプリケーションのみが起動できるよう制限し ている.このため,一般ユーザが使用するアプリケーションに大きな制限がかけられ てしまう.また,アプリケーションのアップデートをおこなった場合,アプリケーショ ンを再度登録しなおさなければならない.よってこれらより,一般ユーザに対する自 由度が著しく低下する. 2.2.6 問題点 本稿では,機密情報を安全に取り扱うための要件として,機密情報を安全に保存で きること,機密情報を安全に閲覧できること,機密情報を安全に作成できること,の 3 点を挙げた.この 3 点がすべて満たされた場合のみ,機密情報を安全に取り扱うこと ができるといえる.1つ目の機密情報を安全に保存できることについては,機密情報 12 が保存された場所から不正持ち出しを防止する必要がある.従来のシステムでは,OS によるファイルアクセス制御により不正アクセスを防いできた.しかし,OS にも脆弱 性が報告されており,不正者が脆弱性を攻撃してファイルアクセス制御を無効化する ことも考えられ,同一 OS 内で保存することは危険である.この点については,関連 研究のすべてが満たしているといえる.SAccessor と VOFS では仮想マシンを用いて 別 OS で保存し,管理している.また,DOFS ではサーバで機密情報を一括管理して おり,HiGATE は耐タンパ領域内で管理する. 2 つ目の機密情報を安全に閲覧できることと,3 つ目の機密情報を安全に作成できる ことについては,機密情報の閲覧,作成中における漏洩を防止する必要がある.ビュー アを用いた機密情報の閲覧や,エディタを用いた機密情報の作成時には,ディスプレイ 上に機密情報の内容が表示される.一般的なアプリケーションを用いた場合,表示内 容をコピーすることを許可されているため容易に機密情報の内容をコピーできる.ま た,主記憶内にはアプリケーションデータが存在するため,主記憶内からアプリケー ションで表示中の機密情報の内容を盗み見ることができる.これらの手段から機密情 報の内容をコピーできた場合,容易に機密情報を複製することが可能となり,情報が 漏洩する.これらの点については,HiGATE は所持者や使用者であってもデータの改 竄や持ち出しを防ぐことができるため満たしているといえる.しかし,SAccessor や DOFS では権限を持つユーザであれば容易にファイルを複製できる.VOFS は閲覧の みこの点を満たすが,作成については考慮していないのため,完全に満たしていると はいえない. HiGATE は機密情報を安全に取り扱う 3 点を満たしているが,使用するプログラム を制限しているため,ユーザビリティに欠ける.ユーザビリティに欠けると使用者に 使用法を強いるため,非常に使いにくいものになる.これは VOFS の閲覧以外の行為 の無効化の開始は手動であることも同様である. 13 第3章 提案手法 本章では,提案手法について述べる.まず,本提案手法の概要を述べ,本提案手法 の前提条件について述べる.次に,本提案手法の全体構成について述べ,機密情報の 漏洩を防止する機密情報漏洩防止処理について述べる. 3.1 概要 本論文では 2.2.6 節で述べた問題点を解決し,一般ユーザが使用する個人端末で機密 情報を安全に扱うための,機密情報閲覧作成システムを提案する.問題点を解決し機 密情報を安全に扱うためには,機密情報のファイルアクセスを外部で制御し,機密情 報の閲覧作成中にその内容を漏らさないことが必要である.本論文ではこれらの問題 点を解決する機密情報閲覧作成システムを提案する.提案手法では,機密情報を安全 に扱うために次の 3 点をおこなう. • ユーザが使用する OS とは別の OS でファイルアクセスを制御する. • ユーザが機密情報を閲覧作成する時は,全ユーザに対して,ユーザアプリケー ションの漏洩以外の動作を阻害しない出力デバイスの無効化処理を実施する. • ユーザが機密情報の閲覧作成作業を終了する時に,機密情報の閲覧作成前の状態 に戻す. 機密情報をユーザが使用する OS とは別の OS でファイルアクセスを制御することに より,ユーザが使用する OS が乗っ取られてもアクセス制御は正常に機能する.この 14 ために,仮想マシンモニタを用いる.以下,一般ユーザが使用する OS をゲスト OS, システム全体を管理する OS をホスト OS という.ユーザが機密情報を閲覧作成する 時に,提案手法では管理者を含むすべてのユーザの権限に関係なく,作業 OS に対し てディスクとネットワークへの出力の無効化処理を実行する.これによって,ユーザ は,機密情報の内容を複製できたとしてもディスク書き込みとネットワークへの流出 ができないため情報の漏洩手段がない.よって,ユーザアプリケーションの実行を確 保しつつ機密情報を保護できる.そして,ユーザが機密情報の閲覧作成を終了した時 に,作業 OS を機密情報の閲覧作成前の状態に戻す.作業 OS を機密情報の閲覧作成前 の状態に戻すことにより,機密情報の閲覧作成中の主記憶内容を残さない.これによ り,出力デバイスの無効化が終了した後に主記憶から機密情報の閲覧作成時の内容の 盗み見を防ぐことができる.以下,出力デバイス無効化処理と作業 OS の状態復元処 理を合わせて,機密情報漏洩防止処理という.本提案手法では機密情報を安全に保存 するために,ユーザが使用するゲスト OS とは別のホスト OS に機密情報を保存する. これにより,ファイルアクセス制御をゲスト OS と別にすることができるため,ゲス ト OS が乗っ取られてもアクセス制御が正常に機能する. 3.2 前提条件 本項では,本提案手法における前提条件について述べる.本提案手法における前提 条件は次のとおりである. • 計算機内の仮想マシンモニタ,ホスト OS は信頼する • 攻撃者は任意のアプリケーションをゲスト OS にインストール可能 • 機密情報の閲覧時に内容を紙に書き写す,画面を写真で撮るといった行為は考慮 しない 15 図 3.1: 提案手法の全体構成 3.3 全体構成 本提案手法の全体構成を図 3.1 に示す.図 3.1 より,本提案手法は機密情報保存サー バと一般ユーザが使用するクライアントによって構成される.機密情報保存サーバは, 機密情報を共有,管理をおこなうサーバである.ユーザは機密情報を閲覧する場合に は,機密情報保存サーバから必要な機密情報を適宜ネットワークを通じてダウンロー ドする.機密情報を作成した場合には,機密情報保存サーバに自動的にアップロード される.機密情報はサーバから取得時の盗聴と不正持ち出しを防止するために暗号化 を施す.これにより,盗聴と不正持ち出しによって不正に持ち出したとしても,復号 する手段がない限り機密情報を閲覧することができない.また,機密情報保存サーバ は機密情報のための鍵を管理する. クライアント内では仮想マシンモニタを用いてゲスト OS,ホスト OS の 2 つの OS を動作させる構成となっている.ホスト OS は提案手法のシステムを管理する OS で, ホスト OS はシステム管理者のみが操作可能であり,一般ユーザは操作することがで きない.ホスト OS は計算機上の物理デバイスやゲスト OS を管理する能力を持つ.ま た,ホスト OS は機密情報を閲覧,作成するために必要な鍵を機密情報保存サーバか ら取得して保持する.ゲスト OS は一般ユーザが使用するもので,ユーザがログイン し,一般的な作業をおこなう OS である.本提案手法では,図 3.1 よりゲスト OS の方 にも手を加えている.前提条件により,ホスト OS は信頼できるがゲスト OS は信頼す ることができない.このため,ゲスト OS が乗っ取られてしまった場合,ゲスト OS 内 16 に存在する機能が正常に動作しないことが考えられる.この問題を解決するため本提 案手法ではゲスト OS の正当性を保証して,提案手法の動作が正常に動作することを 保証する. クライアント内には機密情報保護ファイルシステムが存在する.機密情報保護ファ イルシステムは機密情報を安全に保存する遠隔ファイルシステムであり,ゲスト OS 内 にクライアント,ホスト OS 内にサーバを持つ.また,ゲスト OS 内にはダミーファイ ルシステムが存在する.ダミーファイルシステムはディスク擬似書き込み機能を有す るファイルシステムで,機密情報の閲覧,作成時に機能が有効化されディスク書き込 みを無効化する.そして,ホスト OS 内には監視デーモンが存在する.監視デーモン はゲスト OS の挙動と機密情報のクライアントとサーバのやりとりを監視して,ゲス ト OS の正当性を保証と機密情報漏洩防止処理をおこなう.機密情報漏洩防止処理に ついては 3.4 節で詳しく述べる.次に,これらの機能について詳しく述べる. 3.3.1 機密情報保護ファイルシステム 機密情報保護ファイルシステムは,仮想マシンモニタの独自の通信機構を用いた遠 隔ファイルシステムである. 機密情報保護ファイルシステムは図 3.1 のように,ゲスト OS 側にクライアントがあ り,ホスト OS 側にサーバが存在し,サーバで機密情報のデータを管理する.機密情 報保護ファイルシステムは遠隔ファイルシステムであるため,ゲスト OS は機密情報 をローカルファイルシステムに保存しないため,機密情報保護ファイルシステムをと おしてしか機密情報にアクセスすることができない.また,機密情報はゲスト OS の 外側のホスト OS に保存されるため,ゲスト OS のファイルアクセス制御と独立してア クセスを制御を行うことが可能である.これにより,ゲスト OS が乗っ取られてファイ ルアクセス制御を奪われたとしても,機密情報のファイルアクセス制御が奪われない ため,機密情報を許可なく外部に漏洩させることが不可能となる. 本提案手法における機密情報は暗号化されているため,一般のファイルシステムに 保存してそのまま閲覧しても機密情報を閲覧することはできない.機密情報保護ファ イルシステムのサーバ部分は,閲覧するために,復号する機能を備える.このため,機 17 密情報は機密情報保護ファイルシステムに保存すれば機密情報を閲覧することができ る.機密情報保護ファイルシステムのクライアント側が read オペレーションを発した 際は,暗号化されている情報を復号してクライアント側に送信する. また,機密情報保護システムは機密情報を作成する機能を備える.機密情報を作成 するには,機密情報保護ファイルシステムに対して単にファイルを作成するだけであ る.新たに作成されたファイルは暗号化がおこなわれ機密情報化する. 機密情報保護ファイルシステムを利用するには,通常のファイルシステムと同様に ある一つのディレクトリをルートディレクトリとしてマウントして利用する. 3.3.2 ダミーファイルシステム ダミーファイルシステムは,機密情報閲覧,作成時にディスク擬似書き込みを実現 し,ディスクによる書き込みを無効化する仮想ファイルシステムである. ダミーファイルシステムは機密情報閲覧,作成時以外では一般的なファイルシステ ムと同様にディスク書き込む.しかし,機密情報閲覧,作成時には,機密情報を漏洩 させないためにディスク書き込みをおこなわず,ディスクに書き込んだように見せか けるディスク擬似書き込み機能を有効化する.これにより,機密情報の閲覧,作成時 にディスク書き込みによる漏洩を防止することが可能となる. ダミーファイルシステムは,ゲスト OS のルートファイルシステムとしてマウント して使用する. 3.3.3 監視デーモン 監視デーモンはホスト OS 内に存在して,機密情報保護ファイルシステムのクライア ント部とサーバ部のやりとりを監視し,機密情報閲覧ファイルシステムの行動によっ て様々な処理を実行するデーモンである.監視デーモンは,ゲスト OS が機密情報ファ イルシステムに対して,機密情報の閲覧,作成を要求したときに,機密情報が漏洩し ないように機密情報漏洩防止処理を実行する.そして,機密情報の閲覧,作成を終了 したときに監視デーモンはこれを検知して機密情報漏洩防止処理を終了する. 18 図 3.2: 漏洩防止処理の流れ また,監視デーモンはゲスト OS の正当性を保証する.まず,監視デーモンはゲス ト OS の起動を検知してゲスト OS が改竄されているかチェックをする.ゲスト OS が 改竄されていなければ,そのままゲスト OS を起動し,改竄されていれば正常に動作 しない可能性があるためゲスト OS を起動しない.これにより,改竄された OS を起動 することを防止できる.そして,機密情報漏洩防止処理実行時に処理が正常に動作し たかをチェックする.もし,機密情報漏洩防止処理が正常に動作したと確認がとれな ければ機密情報の閲覧と作成を許可しない.これにより,機密情報漏洩防止処理の動 作を保証することができる. 3.4 機密情報漏洩防止処理 本提案手法では取得した機密情報を閲覧,もしくは新たに機密情報を作成しようと した時に,自動的に機密情報の漏洩防止する処理を行う.これにより機密情報の操作 中の漏洩を防止することが可能となる.機密情報漏洩防止処理の流れを図 3.2 に示し, 動作について述べる. (1) ゲスト OS のアプリケーションは機密情報を閲覧,もしくは作成するために,機 19 密情報保護ファイルシステムのクライアントに対して open オペレーションを発 行する. (2) open 命令を受けた機密情報保護ファイルシステムのクライアントは,サーバに対 して open 命令をリクエストする. (3) ホスト OS 側にある監視デーモンはこの open オペレーションを検知しする. (4) open オペレーションを検知した監視デーモンはゲスト OS に対して,機密情報漏 洩防止処理を施す.機密情報漏洩防止処理は,次の 2 点をおこなう. • ゲスト OS 側の漏洩の可能性がある出力デバイスの無効化 • ゲスト OS のスナップショットを作成 (5) 機密情報漏洩防止処理がすべて成功した場合にのみ,監視デーモンは機密情報保 護ファイルシステムのサーバに対し,機密情報の操作の許可をだす. (6) 許可を受けたサーバはゲスト OS 内にあるクライアントに対して機密情報のデー タを渡す. (7) データを受け取ったクライアントはアプリケーションにデータを渡す. これらの動作がすべて正常に機能した時にのみ,機密情報の閲覧と作成が許される. 次に,機密情報漏洩防止処理の内容について詳しく述べる. 3.4.1 ゲスト OS 側の漏洩の可能性がある出力デバイスの無効化 本項では,ゲスト OS 側の漏洩の可能性がある出力デバイスの無効化について述べ る.本提案手法において漏洩の可能性がある出力デバイスは次の 2 つとする. • ネットワークデバイス • ディスクデバイス 次に,各デバイスの無効化処理について述べる. 20 ネットワークデバイスの無効化 ネットワークデバイスの無効化は監視デーモンが機密情報の閲覧,作成を検知した ときに,監視デーモンがゲスト OS の通信を遮断することによって実現する. 監視デーモンはホスト OS に存在するため,物理デバイスの操作が可能である.こ れにより,ホスト OS は物理ネットワークデバイスに対してゲスト OS が持つ仮想ネッ トワークデバイスに対する通信を遮断することが可能である.ゲスト OS は物理デバ イスを操作することができないため,ゲスト OS はネットワークを自力で有効化する ことができない. ディスクデバイスの無効化 ディスクデバイスの無効化はディスク擬似書き込みによって実現した. 本来ならば,ルートファイルシステムを読み取り専用にして書き込みを防げばよい. しかし,ファイルの書き込みを制限してしまうと正常に動作しないアプリケーション が存在する.例えば,アプリケーション自体がファイルの書き込み領域を必要とする ものや,排他制御のためのロックファイルを作成するものが存在する.前者は DBMS, 後者はデーモンタイプのプログラムの多くが該当する.これらのアプリケーションが 正常に動作しないと,システム全体に支障を来してしまう可能性が非常に高いため, ルートファイルシステムを読み取り専用にして書き込みを防ぐことはできない. 本提案手法ではこの問題を解決するために,ダミーファイルシステムによるディス ク擬似書き込みによって実現している.ダミーファイルシステムは 3.3.2 項で述べたよ うに,ファイルを書き込もうとした際,ディスク書き込みをおこなわず,ディスクに書 き込んだように見せかける擬似書き込み機能を持つファイルシステムである.ダミー ファイルシステムを用いることによって,ディスクには書き込まれないが擬似的にファ イルを作成することができる.このため,ファイル書き込みが必要なアプリケーショ ンも正常に動作することができる. ダミーファイルシステムのディスク擬似書き込み機能は,監視デーモンがゲスト OS に対して命令することによって有効化される. 21 3.4.2 スナップショットの作成 機密情報を閲覧,作成前のゲスト OS の状態を保存するために,スナップショットの 作成する.このスナップショットを用いた処理は 3.5 節で述べる.スナップショットの 作成は監視デーモンがおこない,ホスト OS 内で保存する. 3.5 機密情報漏洩防止処理の終了 機密情報漏洩防止処理が施された中で機密情報の閲覧,作成が終了したとき,機密 情報漏洩防止処理を終了して,もとの状態に戻す必要がある. ゲスト OS を使うユーザが機密情報の閲覧,作成を終了するためアプリケーション を終了したとき,監視デーモンは,アプリケーションが終了したことを検知する.そ して,機密情報を扱うすべてのアプリケーションの終了を検知したとき,監視デーモ ンは機密情報漏洩防止処理を終了させる.機密情報漏洩防止処理を終了するには次の (a)∼(d) の 4 つのことを実行する. (a) 作成した機密情報のアップロード 作成した機密情報を機密情報保存サーバにアップロードし公開できるようにする. (b) スナップショットによるゲスト OS の閲覧,作成前の状態復元 現在使用しているゲスト OS の破棄をおこない,3.4.2 で作成したスナップショット を用いて機密情報の閲覧,作成前の状態のゲスト OS を復元する.なぜスナップショッ トを用いてゲスト OS を復元するかというと,機密情報の閲覧,作成中の状態を残さ ないようにするためである.この処理をおこなわないと主記憶内容から漏洩してしま う可能性がある. 例えば,漏洩防止処理時に機密情報の内容をクリップボードにコピーしたままで,機 密情報の閲覧,作成を終了したとする.このとき,スナップショットによる復元がおこ なわれずに,他の停止処理をおこなった場合,主記憶内容がそのままなため,クリッ プボードに存在する機密情報の内容もそのまま残ってしまう.よって,クリップボー 22 ドの内容を使うことによって機密情報の漏洩が可能となってしまう.このため,機密 情報の閲覧,作成時の主記憶内容が残ることは好ましくないといえる. そこで,機密情報の閲覧,作成が終了したときに,スナップショットを用いてゲス ト OS を機密情報の閲覧,作成前の状態に復元すると閲覧,作成中の状態が破棄され て残らなくなる.これにより主記憶内容からの漏洩を防ぐことができる. (c) ゲスト OS のネットワークデバイスの有効化 監視デーモンが物理デバイスを操作してゲスト OS の通信の遮断を解除しネットワー クを有効にする. (d) ゲスト OS のディスク書き込みの有効化 監視デーモンがゲスト OS に対してディスク書き込みを有効化するように命令する. 命令を受けたゲスト OS は,まずディスク擬似書き込みによって書き込まれたファイ ルをすべて破棄する.その後に,ディスク擬似書き込み機能を停止してディスク書き 込みができるようにする. 23 第4章 実装 本章では,本提案手法の実装について述べる.本提案手法は VMM として Xen[7] を 用いて,各 OS には Linux を用いて実装をおこなった.また,機密情報の暗号化と復 号には共通鍵暗号を使用し,方式として AES[8] を採用した.また,機密情報保護ファ イルシステムを FUSE[9] と Xen のドライバモデルをもちいて実装をおこなった.そし て,ダミーファイルシステムを AUFS[10] をベースとして実装をおこなった. 本章では,まず本提案手法に必要な手法について述べから,本提案手法の機能の実 装について述べる. 4.1 実装に必要な手法 本節では,本提案手法の実装に必要な手法について述べる. 4.1.1 Xen Xen は Citrix 社が提供するハイパーバイザ型のオープンソース仮想マシンソフトウェ アである.ハイパーバイザ型の仮想マシンソフトはハードウェアの BIOS から直接仮 想化ソフトを起動し,その上で仮想マシンを実行するタイプを指す.このため,仮想 マシンソフトウェアを動作させる OS が必要なタイプと違い,仮想マシンがハードウェ アにアクセスする際に仮想マシンソフトウェアを動かす OS を経由する必要が無い.こ のためハードウェアアクセスのオーバーヘッドが小さいという利点を持つ.また,仮想 24 マシン一つ一つが独立しているため,その他の仮想マシンへ影響を与えることがない. Xen では仮想マシンの実現方法に “完全仮想化” と “準仮想化” の 2 通りが存在する. 完全仮想化は,ソフトウェア的に 1 台の PC を丸ごとエミュレートする方法で,Windows などの OS に手を加えることができないものをそのまま使用できる利点がある.しかし, 物理ハードウェアをエミュレートして使用するため,エミュレーションのためのコス トが大きくなってしまう.一方準仮想化は,ハードウェアのエミュレーションオーバー ヘッドを最小限にするために,仮想マシン環境に都合のよい仮想的なハードウェアを 提供する.よって準仮想化は,高いパフォーマンスを得ることができる.しかし,準仮 想化はこのハードウェアを使用するために OS 自体に手を加える必要があり,Windows のような OS 内部に手を加えることができない OS は使用することができない欠点をも つ.本提案手法では,実用に耐えうる高いパフォーマンスを実現するために準仮想化 方式で仮想マシンを作成した. また,Xen には domain0 と domainU という 2 種類の仮想マシンが存在する.domain0 は,特権的なドメインであり,実ハードウェアに直接アクセスでき,domainU を管理 する.domainU は,domain0 のような特権をもたない仮想マシンである.domainU で 実ハードウェアにアクセスする場合には,domain0 を介してアクセスする必要がある. Xen のアーキテクチャでは,1 つの Xen では domain0 は 1 つで,その他は domainU と なる.本実装では,ホスト OS を domain0,ゲスト OS を domainU で動作させる. 次に,Xen のデバイスドライバモデルについて説明する. Xen デバイスドライバモデル 前述したように,Xen の domainU で実ハードウェアにアクセスする場合には,do- main0 を介してアクセスするため,domain 間で情報をやりとりする必要がある.その ため,Xen では domain 間で通信するための単純なメカニズムとして共有メモリを提 供している.共有メモリを用いた Xen のデバイスドライバのモデルを図 4.1 に示す. 図 4.1 より,Xen のデバイスドライバは domain0 にバックエンドドライバ,domainU にフロントエンドドライバを持つ.両デバイスドライバは Xen 内にある共有メモリをも ちいて情報のやりとりをおこなう.デバイスドライバモデルの動作例として,domainU 25 図 4.1: Xen のデバイスドライバモデル のアプリケーションがドライバに対して物理デバイスに対するリクエストを送ったと きの,domainU のデバイスアクセスの流れについて図 4.1 を用いて述べる.以下の番 号は図 4.1 の番号にそれぞれ対応する. (1) 物理デバイスのアクセス要求を受けたフロントエンドドライバは Xen の共有メモ リにリクエストした内容を書き込む. (2) リクエストを書き込んだ後フロントエンドドライバは “イベント” という割り込み 処理を発行して domain0 に存在するバックエンドドライバに通知する. (3) 通知を受けたバックエンドドライバはリクエスト内容を Xen の共有メモリから読 み取る. (4) バックエンドドライバはリクエストを解釈して,実デバイスドライバに処理を要 求する. 処理結果を返送する時は,(1)∼(3) の内容をフロントエンドドライバとバックエンド ドライバが逆におこなってデータをやりとりする. 26 4.1.2 libvirt libvirt[11] は仮想マシンの制御を抽象化したライブラリである.libvirt は様々な仮想 マシンに対応していることである.現在では,Xen と KVM[12] や Q EMU [13] をはじ め様々な仮想マシンをサポートしている.また,libvirt はハードウェアプラットフォー ムも幅広くサポートされているため仮想マシンを制御する I/F ではデファクトスタン ダードになりつつある.そして,libvirt のライセンスは,LGPL で提供されており,ア プリケーション開発者の視点では使い勝手がよいものとなっている. 本実装ではこれらの利便性から,Xen 独自の制御ライブラリである libxc より libvirt を用いて Xen を制御することとした. 4.1.3 AES AES はアメリカ合衆国の新暗号化企画として規格化された共通鍵暗号方式である. AES は固定長のデータを単位として処理するブロック暗号で,ブロック長は 128bit で ある.AES の鍵長は 128bit,192bit,256bit が選択可能である. 鍵の難読性を優先し鍵長を 256bit の物を選択した. 4.1.4 FUSE FUSE(Filesystem in Userspace) とは,ファイルシステムをユーザプログラムとして 作成するオープンソースソフトウェアのことである.FUSE は,FUSE 自身がファイ ルシステム機能を持つのではなく,作成したファイルシステムプログラムと通信する 機能のみを持つ.FUSE を利用することにより,open,read,write のようなシステム コールはアップコールの形に変換されユーザプログラムに渡される.この FUSE を用 いてファイルシステムを作成するには,FUSE のカーネルモジュールから渡されるファ イルオペレーション関数を作成すればよい. 本提案手法では,実装の容易性から機密情報保護ファイルシステムの実装に使用した. 27 図 4.2: AUFS の概要図 4.1.5 AUFS AUFS(Another UnionFS) とは union mount を実装するファイルシステムである. AUFS は主に FreeBSD 向けのファイルシステムである,UnionFS[14] を Linux 向けに したものの中の一つである.AUFS は UnionFS を完全に書き換えるもので,信頼性と パフォーマンスの改善を狙いとして開発されている.2006 年の終わりから Knoppix[15] の LiveCD ディストリビューションで採用されて以降,徐々にディストリビューション 採用数を増やしている. AUFS は,ブランチとして知られる,分離したファイルシステムのファイルやディ レクトリを透過的に重ねることができ,単一の一貫したファイルシステムを形成する. これにより,ブランチ内のファイルを単一のマージされたディレクトリ内で一緒に見 ることが可能となる仮想ファイルシステムを実現する.AUFS をマウントする際にブ ランチの優先度を指定できるため,両方のブランチで同じな名前のファイルを含むと き,優先度が高いブランチが優先される.AUFS の概要図を図 4.2 に示す.図 4.2 では, ブランチ X とブランチ Y が存在し,それぞれファイルを所有している.また,ブラン チ X とブランチ Y では,ブランチ X の方が優先度が高い. 図 4.2 より,AUFS のファイルシステム内では,ブランチ X とブランチ Y が持つファ 28 図 4.3: ブランチ Y のファイルの変更 図 4.4: ブランチ Y のファイルの削除 イルが表示される.ここで AUFS が,ブランチ Y 内のファイル A の内容を変更して ファイル A’ を作成したとする.このとき,ファイル A’ はブランチ Y 内のファイル A を変更せずにブランチ X に作成される (図 4.3).これは,ブランチ X がブランチ Y よ り優先度が高いためで,優先度が高いブランチにファイルの変更が反映されるからで ある.また,ブランチ Y に存在するファイル D を削除しようとしたときには,ブラン チ Y のファイル D を削除せずにブランチ 1 に「ファイル D を削除した」という結果 を残したファイルを作成する (図 4.4).これにより,ファイル D を削除されなくても, AUFS では削除されたように見えることができる.これは,優先度が一番高いブランチ 以外にあるファイルは変更対象としないためで,優先度が一番高いブランチにしかファ イル変更を受け付けない.これらの機能はコピーオンライト機能として知られ,読み 込み専用のファイルシステムでも書き込み可能のように見せかけることができる.こ の機能は,LiveCD のようにメディアが物理的に読み込み専用のときに有用である. 次に,AUFS のデータ構造について述べる.AUFS も他の Linux のファイルシステム と同様にファイル情報を持つ.ここでいうファイル情報は,superblock,dentry,inode, file である.しかし,これらは一つのファイル情報を管理することができるが,AUFS のように複数のファイルを管理するようには作られていない.そのため,AUFS では 独自のデータ管理によって複数のブランチにあるファイル情報を管理している.AUFS のファイル情報管理を図 4.5 に示す.図 4.5 では,AUFS 内に存在するディレクトリ L の dentry を表示している.このディレクトリ L は,ブランチ X とブランチ Y の両方 に存在している.図 4.5 より,各ブランチの情報は dentry 内の固有データとして管理 している.固有データ内はポインタ配列となっており,ポインタは各ブランチのディ 29 図 4.5: AUFS のデータ管理 レクトリ L の dentry を指している.またポインタ配列の上位であればあるほど,優先 順位は高くなる.また,固有データは,superblock や inode も保有しているため同様 のデータ管理をおこなっている.AUFS でこれらの情報を使うときには,まずポイン タ配列を上位から検索して一番上位に存在する情報を読み込んで使う.例えば,ディ レクトリ L であった場合にはブランチ X のディレクトリ情報を用いる.また,ディレ クトリ N であった場合にはブランチ X にディレクトリ N は存在しないので下位を検索 してブランチ Y のディレクトリ N の情報を使う. 4.2 機密情報のファイルフォーマット 本提案手法において機密情報はファイルを暗号化したものとしている.本実装では 共通鍵暗号である AES を用いてファイルを暗号化する.しかし,ファイルを暗号化し てしまうともとのファイルサイズがわからなくなってしまう.しかも,AES はブロッ 30 ク暗号であるため,ブロックサイズの倍数でない限り,最終ブロックに余分なデータ が入り込んでしまう.このため,ファイルを復号した際にもとのファイルデータの他 に余分なデータが入ってしまうという問題がでてきてしまう.この問題を解決するた めに,暗号化前のファイルにファイルサイズを記録した 128bit のデータ領域を付加し て暗号化する.なお,データ領域の 128bit というサイズは AES の 1 ブロックのサイズ である.これにより,ファイルの先頭の 1 ブロックを復号することでもとのファイル サイズが容易に知ることができる. 機密情報は他のファイルと区別するために,名前と拡張子の間に “enc” を挿入する. 例えば, 「hoge.txt」であった場合, 「hoge.enc.txt」となる. 4.3 機密情報保護ファイルシステム 本節では機密情報保護ファイルシステムの実装について述べる. 4.3.1 実装概要 機密情報保護ファイルシステムは FUSE と Xen のデバイスドライバモデルを用いた 遠隔ファイルシステムとして実装した.この実装は,Xen のデバイスドライバモデル を用いて Xen 内部で通信するため,通信内容が外部に漏れないという利点を持つ.機 密情報保護ファイルシステムの実装図を図 4.6 に示す. 図 4.6 より,ホスト OS 側には機密情報保護ファイルシステムのサーバ部,ゲスト OS 側にはクライアント部が存在する.機密情報保護ファイルシステムのサーバ部には通 信バックエンドドライバとリクエスト解釈デーモンが存在する.通信バックエンドド ライバは,ゲスト OS にある通信フロントエンドドライバやホスト OS 上にリクエスト 解釈デーモンと情報のやりとりをおこなう.通信バックエンドドライバは,ホスト OS のカーネル空間に実装した.リクエスト解釈デーモンはゲスト OS からくリクエスト を解釈,実行をおこなうデーモンである.解釈実行デーモンはホスト OS 上のユーザ 空間に実装した. 機密情報保護ファイルシステムのクライアント部には通信フロントエンドドライバ 31 とファイルシステムクライアントが存在する.通信フロントエンドドライバは,ホス ト OS にある通信バックエンドドライバやファイルシステムクライアントと情報のや りとりをおこなう.ファイルシステムクライアントは,ゲスト OS が機密情報保護ファ イルシステムのファイルアクセス要求を受け付ける部分である.このファイルシステ ムクライアントは通常のファイルシステムと同様にマウントして使用する. 機密情報保護ファイルシステムの動作をファイルのオープンを例にとって説明する. まず,ゲスト OS 上のアプリケーションがマウントされているファイルシステムクラ イアントに対して open 命令を出す.open 命令を受けたファイルシステムクライアン トは,サーバ部に対して対象ファイルを open するようリクエストを作成して通信フロ ントエンドドライバに作成したリクエストを渡す.リクエスト受け取った通信フロン トエンドドライバは Xen の共有メモリにリクエストを書き込んだ後,イベントを発行 して通信バックエンドドライバに通知する.通知を受けた通信バックエンドドライバ は,共有メモリからリクエストを読み取って,そのリクエストをリクエスト解釈デー モンに渡す.リクエストを受け取ったリクエスト解釈デーモンはリクエストを解釈し 対象ファイルを open し,その結果を得る.オープン結果を得たリクエスト解釈デーモ ンは,オープン結果を通信バックエンドドライバに渡す.オープン結果を受け取った通 信バックエンドドライバは Xen の共有メモリにオープン結果を書き込んだ後,イベン トを発行して通信フロントエンドドライバに通知する.通知を受けた通信フロントエ ンドドライバは共有メモリからオープン結果を読み取り,ファイルシステムクライア ントに渡す.オープン結果を受けたファイルシステムクライアントはアプリケーショ ンに対してオープンした結果を返す.このように動作することにより,機密情報保護 ファイルシステムは遠隔地にあるファイルに対してオープンすることができる.以降 同様に read,write などのファイルオペレーションを処理していく. 次項より,機密情報保護ファイルシステムの細かな実装について述べていく. 4.3.2 データメッセージ 本項では機密情報保護ファイルシステム内で情報をやりとりする際に使用するデー タメッセージについて述べる.データメッセージはファイルシステムクライアントから 32 図 4.6: 機密情報保護ファイルシステムの構成図 リクエスト解釈デーモンまでの情報のやりとりの全行程で一貫して使用される.よっ て,ファイルシステムクライアントが作成するリクエストとリクエスト解釈デーモン が得る処理結果はこのデータ形式を用いて伝達される.データメッセージの内容を図 4.7 に示す. 図 4.7 より,データメッセージの buffer 以外の部分ではデータ部はファイルオペレー ションを実行するのに必要なデータを格納する.例えば,open オペレーションの場合 では opp に open ファイルオペレーションの識別子を記入し,path にファイルパスを 記入する.データメッセージの buffer には,返り値やエラー以外のオペレーションの 処理結果が格納される.例えば,write オペレーションの場合には書き込む内容が格納 され,read では読み込んだ内容が格納される.データメッセージの buffer の容量は実 装を簡略化するために固定長とし,サイズを 3KB とした.これは,Xen の共有メモリ のページが 4KB しかないためである.よって,ヘッダ部とデータ部を合わせても 4KB を越えないようにするためデータ部を 3KB に設定した. 33 uint8_t opp; size_t size; uint64_t rdev; int offset; int flag; uint64_t fi_fh; uint32_t uid; uint32_t gid; int ret; int errno; char path[256]; char buffer[3072]; // // // // // // // // // // // // ファイルオペレーション識別子 ファイルサイズ デバイス識別子 ファイルオフセット アクセス権指定変数 ファイルハンドラ ユーザ ID グループ ID 返り値 エラーナンバー ファイルパス データ格納部 図 4.7: データメッセージの内容 4.3.3 サーバ部の実装 本項では,機密情報保護ファイルシステムのサーバ部の実装について述べる. (b) 通信バックエンドドライバ 通信バックエンドドライバはホスト OS のカーネル内で動作するキャラクタデバイ スドライバとして実装した.通信バックエンドドライバは大別すると,通信フロント エンドドライバからのイベントをキャッチするイベントハンドラ部とリクエスト解釈 デーモンとデータをやりとりするデータ授受部に分けられる. イベントハンドラ部は,他の割り込み処理と同様に IRQ ハンドラとして実装した. イベントハンドラ部の動作は,まずイベントをキャッチした後共有メモリからデータ メッセージを読み込む.次に,読み取ったメッセージデータをデータ授受部にコピー する.コピーが終了したらリクエスト解釈デーモンに対してシグナルである SIGIO を 発行し,処理すべきデータがあることを伝える. リクエスト解釈デーモンとデータのやりとりをおこなうデータ授受部は,デバイス ドライバが提供する API 用いて実装した.データ授受部は,リクエスト解釈デーモン から読み込み命令が出されたときには受け取ったデータメッセージを送信する.また, 34 リクエスト解釈デーモンがリクエストの処理結果をもつデータメッセージを送信した ときは,データメッセージを受け取って共有メモリに書き込みむ.その後,通信フロ ントエンドドライバに対してイベントを発行して処理結果が書き込まれたことを通知 する. (b) リクエスト解釈デーモン リクエスト解釈デーモンはホスト OS 上のユーザ空間に実装した.リクエスト解釈 デーモンは起動時に,まず通信バックエンドドライバのデバイスファイルを open して 通信バックエンドドライバと情報のやりとりができる状態にする.次に,通信バック エンドドライバからくる SIGIO を登録して,SIGIO とシグナルハンドラを関連付ける. これらの処理が正常に終了した場合,シグナルが発行されるまで sleep して待機する. シグナルハンドラでは通信バックエンドドライバからデータメッセージを受け取り, 内容を解釈してファイルオペレーションを実行する.まず,通信バックエンドドライ バから SIGIO にが発行された場合に SIGIO をキャッチする.シグナルをキャッチした シグナルハンドラは,デバイスファイルを通して通信バックエンドドライバからデー タメッセージを受け取る.シグナルハンドラは受け取ったデータメッセージを解釈し てファイルオペレーションを実行する.read オペレーション以外の場合では,データ メッセージに記述されているオペレーションに従い,ファイルオペレーションを実行し て処理結果をデータメッセージに書き込む.read オペレーションの場合は,まずデー タメッセージのオペレーションに従いファイルを read する.しかし,read した内容は 暗号化されているため,read した内容を AES の鍵を用いて復号する.そして復号した データをデータメッセージのデータ部に書き込み,返り値やエラーナンバー等の処理 結果をデータメッセージに書き込む.処理結果を記述したら,データメッセージをデ バイスファイルを通して通信バックエンドドライバに送信する. 4.3.4 クライアント部の実装 本項では,機密情報保護ファイルシステムのクライアント部の実装について述べる. (b) 通信フロントエンドドライバ 35 通信フロントエンドドライバはゲスト OS のカーネル内で動作するキャラクタデバ イスドライバとして実装した. 通信フロントエンドドライバは,ファイルシステムクライアントからデバイスファ イルを通してデータメッセージが送られてきたとき,データメッセージを受け取って, 共有メモリに書き込んで,通信バックエンドドライバに対してイベントを通知する.イ ベントを通知した後,通信バックエンドドライバからイベントが通知するまで処理を 中断する.通信バックエンドドライバからイベントが通知されたとき,フロントドラ イバは処理を再開して,共有メモリからデータメッセージを受け取る.データメッセー ジを受け取った通信フロントエンドドライバは,デバイスファイルを通してファイル システムクライアントにデータメッセージを送信する. (b) ファイルシステムクライアント ファイルシステムクライアントは FUSE を用いて実装した.ファイルシステムクラ イアントは FUSE のカーネルモジュールから渡される各ファイルオペレーション関数 内で,リクエストとして対応するファイルオペレーションと必要なデータをデータメッ セージに記述する.例えば,write オペレーションでは write オペレーションであるこ とと,ファイルディスクリプタ,ファイルサイズ,オフセット,書き込む内容を記述す る.データメッセージの記述が終了したら,通信フロントエンドドライバのデバイス ファイルに通して通信フロントエンドドライバにデータメッセージを転送して,処理 結果を待つ.処理結果が帰ってきたとき,データメッセージに記述されている返り値 等を関数内に反映させる. 4.3.5 ファイルの暗号化 本項では,ファイルの暗号化について述べる.本提案手法では,機密情報保護ファ イルシステムに作成されたファイルは,暗号化されて機密情報となる.しかし,実装 においてファイル作成のための write オペレーション毎にファイルの暗号化すると処 理が複雑となり,書き込み速度が低下する. 36 そこで,本実装では write オペレーション毎に暗号化するのではなくファイルが完 成したときのみ暗号化を施すこととした.これにより,ファイルにたいして一度だけ 暗号化するため,処理が簡略化されて書き込み速度の遅延を低減することができる. 暗号化するタイミングとして,機密情報の閲覧と作成が終了した時に暗号化する.す なわち,機密情報漏洩防止処理の終了時におこなう.これを実現するために,作成し たファイルを暗号化するプログラムを新たに作成した.これを機密情報漏洩防止処理 の終了時に呼ばれることで,ファイルの暗号化を実行する. 4.4 ダミーファイルシステム 本節では,ダミーファイルシステムの実装について述べる. 4.4.1 実装概要 ダミーファイルシステムは 3.3.2 項で述べたように,機密情報の閲覧,作成時以外は ディスクに書き込みをおこない,閲覧,作成時にはディスク擬似書き込みによってディ スク書き込みの無効化するファイルシステムである.本実装では,ダミーファイルシ ステムを実現するために,AUFS を用いた. ダミーファイルシステムは,AUFS の機能を用いてブランチに,OS が本来 rootfilesys- tem でマウントするファイルシステム (以下,rootFS) と擬似書き込みを有効化するた めのファイルシステム (以下,擬似 FS) を用いてマウントする.マウントした直後のダ ミーファイルシステム状態を図 4.8 に示す.図 4.8 より,マウントした直後では rootFS の方が擬似 FS よりも優先度が高い.これは,マウントした直後では機密情報の閲覧, 作成時以外ではないため擬似書き込み機能を有効化しないためである.この状態では, 普段どおりにディスクに書き込むことが可能である. 機密情報の閲覧,作成が開始された際,ダミーファイルシステムはディスク擬似書 き込み機能を有効化する.ディスク擬似書き込みを有効化は,擬似 FS を rootFS より 優先度を高くする.擬似書き込みを有効化したときにダミーファイルシステムの状態 を図 4.9 に示す.図 4.9 の状態にすることにより,rootFS に対するコピーオンライト 37 図 4.8: マウント直後のダミーファイルシス 図 4.9: ディスク擬似書き込みを有効化した ダミーファイルシステム テム 機能が有効化される.これにより,rootFS にあるファイルを変更しようとしても変更 内容は優先度の高い擬似 FS に書き込まれるため,rootFS に書き込むことが不可能と なる. 次項より,ダミーシステムの詳細な実装について述べていく. 4.4.2 ディスク擬似書き込み機能の実装 本項ではダミーファイルシステムの要であるディスクの擬似書き込み機能について述 べる.4.4.1 で述べたように,ディスク擬似書き込みを有効化するには擬似 FS を rootFS より優先度を高くしてコピーオンライト機能を有効化する.しかし,擬似 FS がディス クに書き込むファイルシステムであった場合,ディスクに書き込んでしまうためディ スク擬似書き込みと言えなくなってしまう.そこで,本実装では擬似 FS に,tmpfs[16] を用いることとした.tmpfs とは,Linux が稼働しているマシンの主記憶上に ramdisk を提供するファイルシステムである.tmpfs に書き込んだファイルは主記憶上に作成 するため,作成されたファイルはディスクに書き込まれることはない.また,tmpfs の ファイルは主記憶上に存在するため,OS がダウンして主記憶が揮発したときに tmpfs のファイルも一緒に消去される.よって tmpfs を擬似 FS にすることで,機密情報漏洩 防止処理終了時におけるゲスト OS の破棄と同時に擬似 FS のファイルも破棄すること ができる. 38 4.4.3 ディスク擬似書き込み機能の有効化 4.4.2 項で述べたように,ディスク擬似書き込み機能を有効化するためには tmpfs を 一番高い優先度に変更する必要がある.AUFS の機能にブランチの優先順位を変更す る仕組みが存在するが,この機能は AUFS 内のファイル参照が無い時にしか動作しな い.しかし,ダミーファイルシステムは rootfilesysytem として使用するため,アプリ ケーションが何らかのファイル参照をおこなっている可能性が高い.よって,AUFS があらかじめ備えている機能では,ブランチの優先順位を変更することができない. 本実装では,ファイル参照をおこなっている最中であっても,ブランチの優先順位 の変更が可能となるように AUFS を拡張した.拡張方法としては,AUFS の root が持 つファイル情報にアクセスして,tmpfs の優先順位を一番にする関数を新たに作成し た.なぜ,AUFS の root が持つファイル情報のみの変更で優先順位を変更できるかと いうと,AUFS は root 以下のファイルやディレクトリは,root のファイル情報から検 索して作成するからである.例えば,ファイルパスが “/hoge.txt” のファイルが dentry 等のファイル情報を作成する場合,まず “/” のファイル情報を参照して一番優先順位 の高いブランチから順番にファイルシステム “/” から “hoge.txt” が存在するか検索を する.このとき,“hoge.txt” が存在した場合,自身のファイル情報にその情報を関連 付けていく.このようにして,ファイル情報を作成するため root の情報のみの書き換 え順位変更を反映させることができる.また,作成した関数はカーネル内で使用でき るように実装し,他のプロセスから呼ぶことができるようにした.これにより,機密 情報の機密情報閲覧,作成時に監視デーモンからの変更要請に応じることができる. しかし,root が持つファイル情報のみを変更しただけでは,完全に変更が反映され ないという問題が発生する.この問題は,カーネルが持つキャッシュ内に変更前のファ イル情報が存在した時に発生する.これは,カーネルはキャッシュ内に存在する情報 を優先的に使うことが原因である.もし,キャッシュ内に変更前のファイル情報が存在 した場合,そのファイル情報を使うため,状態の変更はされないままである.よって, 状態変更をしてディスク擬似書き込み機能を有効化しても,そのファイルだけディス クに書き込むことが可能となってしまう.この問題を解決するために 3 つの解決策を 検討し,実装をおこなった.次に,3 つの解決案について述べる. 39 解決案 1:キャッシュの強制開放 問題の解決策として,まずキャッシュの強制開放が挙げられる.これは,変更前の キャッシュが残っていることが原因であるため,そのキャッシュを強制的に開放してや れば,新たに変更後のファイル情報がつくられるはずである. これを実現するために,ディスク擬似書き込み機能が有効になったとき,カーネル 内にある VFS に対してキャッシュの強制削除を命令した.しかし,キャッシュを強制 削除した瞬間にシステムがフリーズするという問題が発生した.これは,キャッシュ にあるファイル情報を参照していたアプリケーションがその情報見失って機能不全に 陥ったと考えられる.よって,この方法ではシステムは正常に動作しないことが判明 した. 解決案 2:キャッシュの無視 次に,キャッシュにあるファイル情報を無視して新たに情報を作成させる方式を考 案した.解決案 1 ではキャッシュの強制開放することが問題となったので,今回では キャッシュにある情報を無視しすることとした. これを実現するために,VFS を改良してダミーファイルシステムのファイル情報の みキャッシュの検索をおこなわないようにした.しかし,ダミーファイルシステムを rootfilesystem にマウントして OS を起動した際にカーネルパニックを起こす問題が発 生した.これは,起動時に問題が発生するため原因の調査が難航しており特定できな かったが,おそらく,キャッシュのバッティングによるものと思われる.ファイルキャッ シュを無視するとはいえ,ファイル情報作成される毎にキャッシュに登録してしまう ため,同じキャッシュが存在してしまい,矛盾が発生すると考えられる. 解決案 3:キャッシュ改変方式 3 つ目の解決策として,root が持つファイル情報のみの変更と同様に,キャッシュに 存在するファイル情報にアクセスし状態の変更を反映させる.このようにすることで, 解決案 1 のようにキャッシュを強制開放する必要がなく,また解決案 2 のようにキャッ 40 シュを無視する必要がない.このため,解決案 1 と解決案 2 で発生した問題は,この 方式では発生しない. この方式を実現するために,本実装では VFS の変更をおこなった.変更点としては, VFS 内でファイル情報のキャッシュを検索するところで,ダミーファイルシステムの ファイル情報がヒットしたときに,そのファイル情報が現在の状態と違っていれば状 態変更をおこなうような機能を追加した.この機能を実装したところ,動作に問題が でなかったため,この方式をもちいてダミーファイルを実装した. 4.4.4 rootfilsesystem へのマウント 本項ではダミーファイルシステムを rootfilesystem にマウントする方法について述べ る.一般的に OS が起動してログイン画面まで来てしまったときにはすでに rootfilesys- tem はマウントして使用されているため,rc.local のような起動スクリプトを用いて ダミーファイルシステムを rootfilesystem にマウントしようとしてもできない.また, pivot root のような rootfilesystem を変更するようなコマンドが存在するが,rootfilesystem を変更した際に変更前の rootfilesystem のファイルを参照しているアプリケーショ ンが rootfilesystem を変更した後に参照ファイルを見失ってしまうという問題がある. 参照していたファイルを見失ってしまうと,アプリケーションに異常をきたしてまい 操作不能に陥ってしまう可能性がある.よって,これらの問題を防止するために OS の 起動時にダミーファイルシステムをマウントしなければならない. 本実装では,ダミーファイルシステムを rootfilsesystem をマウントするために initrd に変更をおこなった.initrd は Linux のカーネルのブート時によく使われる一時的な ファイルシステムである.Linux カーネルが使用する rootfilsesystem をマウントでき るようになる前にファイルシステムを必要とする場面で使用される.本実装では,本 来マウントする rootfilsesystem をマウントするのではなくダミーファイルシステムを マウントするように initrd に対して変更をおこなった.ダミーファイルシステムのマ ウント手順は次のとおりである. 1. 本来マウントする rootfilsesystem と tmpfs をあるディレクトリにマウントする 41 2. ダミーファイルシステムを 1 でマウントしたファイルシステムを用いて,あるディ レクトリにマウントする 3. ダミーファイルシステムのマウントポイントを root(/) に変更する この手順を踏むことによって,ダミーファイルシステムは OS の起動時に rootfilesystem としてマウントすることが可能となる. 4.5 ネットワークの無効化と有効化 ネットワークの無効化と有効化には iproute2 を用いて物理デバイスのルーティング 操作により実現した.iproute2 は、パケットのルーティングテーブルを操作するパッ ケージである. 本実装では,ゲスト OS が使用する仮想ネットワークデバイスのルーティングを変 更して外部へ通信が届かないように設定して無効化する.このようにすることで,ゲ スト OS 側の外側から無効化するためゲスト OS 側から無理やりネットワークを有効 化することはできない.また,有効化する場合には仮想ネットワークデバイスのルー ティングを変更して外部への通信ができるようにする. 4.6 スナップショット作成と仮想マシンの復元 スナップショットの作成と仮想マシンの復元は Xen が自身の機能として持っている 物を使用した.これらの機能を使用する際には,libvirt を通して Xen に対して命令を おこない,実行する. 4.7 監視デーモン 本節では監視デーモンの実装について述べる.監視デーモンとして,次の 3 つの機 能を作成した. • 監視デーモン本体 42 • 機密情報漏洩防止処理 • ゲスト OS の正当性の保証 次にこれらの機能の実装について述べる. 4.7.1 監視デーモン本体 本項では監視デーモンの本体の実装について述べる.監視デーモンの本体は機密情 報保護ファイルシステムのリクエスト解釈デーモンに対して追加実装することで実現 した.リクエスト解釈デーモンは機密情報保護ファイルシステム内で実質的にファイ ルオペレーションを実行する部分であるため,ここを監視することで機密情報のファ イルアクセスの流れを容易に知ることができる.追加実装としては,リクエスト解釈 デーモンが実行するファイルオペレーションを監視して機密情報の閲覧と作成の開始 と終了を検知できる機能を追加した. 次に作業開始と終了の検知の実装について述べる. 作業開始の検知 本提案手法では,機密情報を閲覧または作成を検知したときに機密情報漏洩防止処 理を実行する.そこで,本実装ではリクエスト解釈デーモンを改良することで,機密 情報の閲覧と作成を検知することを実現した.改良点として,リクエスト解釈デーモ ンで open オペレーションを実行しようとしたとき,open オペレーションのアクセス モードを監視するようにした.これにより,ファイルのデータをゲスト OS に渡す前 にファイルの閲覧や作成が容易に知ることができる. 本実装では open オペレーションのアクセスモードが読み込み専用もしくは読み書き モードで open するときは,機密情報を操作するため,機密情報漏洩防止処理を実行す る.しかし,書き込み専用モードで open しようとした際には機密情報漏洩棒防止処理 をおこなわない.これは,機密情報を機密情報保存サーバから保存する処理と判断す るためである.この処理は単に機密情報を保存するだけなので機密情報漏洩防止処理 をする必要が無い. 43 作業終了の検知 本提案手法では,機密情報に対する操作が終了したときに機密情報漏洩防止処理を 終了して元の状態に戻す.しかし,監視デーモンが機密情報の閲覧もしくは作成の終 了を検知するためには,ゲスト OS 上で機密情報を操作しているアプリケーションが すべて終了したことを知らなければならない. 本実装では,監視デーモンがアプリケーションの終了を検知できるように機密情報 保護ファイルシステムのファイルシステムクライアントに対して追加実装をおこなった をおこなった.追加実装として,ファイルシステムクライアントにアプリケーションの 終了を検知するスレッドを作成する.そして,機密情報を操作しているアプリケーショ ンがすべて終了したら,監視デーモンに終了メッセージを送信する機能を追加した. まず,終了検知スレッドの作成について述べる.アプリケーションの終了の検知に は ptrace を用いて実装をおこなった.ptrace とは,システムコールに一種で実行中の プロセスに対してトレースをおこない,プロセスの実行の監視と制御をおこなうこと ができる.ptrace による終了の検知は次のようにしておこなう. 1. あるアプリケーションが機密情報に対して open オペレーションを発行したとき に,カウンタをインクリメントして終了検知スレッドを作成し監視を開始する . 2. 終了検知スレッドカウンタをは ptrace によるアプリケーションの監視する. 3. ptrace によって終了を検知したとき,カウンタをデクリメントする. 4. カウンタをデクリメントてカウンタが 0 になったとき,すべてのアプリケーショ ンが終了したため監視デーモンに終了メッセージを送信する. 次に,終了メッセージ送信機能について述べる.監視デーモンに終了メッセージを 送信するために,本実装ではデータメッセージに終了メッセージ用のオペレーション を追加した.また,監視デーモン側は終了メッセージを受信したら機密情報漏洩防止 処理を終了する関数を追加した. 44 4.7.2 機密情報漏洩防止処理 本項では機密情報漏洩防止処理の開始と処理の終了時の実装について述べる.機密 情報漏洩防止処理は,監視デーモンが機密情報の閲覧もしくは作成を検知したときに 実行される.また,監視デーモンが機密情報の操作の終了を検知したときに処理を終 了する. 次に,機密情報漏洩防止処理の開始と終了の実装についてそれぞれ述べる. 機密情報漏洩防止処理の開始 提案手法では機密情報漏洩防止処理は 3.4 節で述べたように次の 3 つの動作をおこ なう. • ネットワークデバイスの無効化 • ディスクデバイスの無効化 • スナップショットの作成 ネットワークデバイスの無効化については,4.5 節で述べたように,iproute2 を用い てルーティングを変更して,外部ネットワークとの通信を遮断する. ディスクデバイスの無効化には,ゲスト OS 側に存在するダミーファイルシステムの ディスク擬似書き込み機能を有効化する必要がある.しかし,監視デーモンはホスト OS 側に存在するため,ゲスト OS に対して伝達する手段が存在しない.そこで,本実 装では監視デーモンがゲスト OS のダミーファイルシステムに対して伝達できるよう に,機密情報保護ファイルシステムのデータメッセージと通信フロントエンドドライ バに対して追加実装をおこなった.追加実装として,データメッセージで使用するオ ペレーションにディスク擬似書き込み有効化オペレーションを追加する.また,通信フ ロントエンドドライバに対して追加オペレーションに対する処理関数を追加して,ダ ミーファイルシステムに対してディスク擬似書き込みを有効化を命令できるようにし た.監視デーモンからディスク擬似書き込み命令を伝達する手順は次のとおりである. 1. 監視デーモンはデータメッセージを作成して通信バックエンドドライバに送る. 45 2. データメッセージを受けたバックエンドドライバは通信フロントエンドドライバ にデータメッセージを送る. 3. データメッセージを受けたフロントエンドドライバはデータメッセージのオペレー ションを参照してディスク擬似書き込み有効化オペレーションであるか確認する. 4. ディスク擬似書き込み有効化オペレーションであった場合,ファイルシステムク ライアントには送らず,4.4.3 項で実装した関数を用いてディスク擬似書き込みを 有効化する. スナップショットの作成は 4.6 節で述べたように,libvirt を通して Xen に対して命令 を出して実行する. 機密情報漏洩防止処理の終了 本提案手法では機密情報漏洩処理の終了処理は 3.5 節で述べたとおり次の 4 つの動 作をおこなう. • 作成した機密情報のアップロード • スナップショットによるゲスト OS の閲覧,作成前の状態復元 • ゲスト OS のネットワークデバイスの有効化 • ゲスト OS のディスク書き込みの有効化 作成した機密情報のアップロードは,新たに作成されたファイルを認識して機密情 報保存サーバにアップロードする.認識方法としては,ファイルの作成日時を参照す る方法を検討している.ファイル作成日時が機密情報漏洩防止処理を開始したあとの 日時であれば,その機密情報をアップロードする.しかし,この時点ではまだ作成さ れたファイルは暗号化されていないため,作成したファイルを 4.3.5 項で実装した暗号 化プログラムを用いて暗号化する. スナップショットによるゲスト OS の閲覧,作成前の状態に復元するには,4.6 節で 述べたように,libvirt を通して Xen に対して命令を出して実行する. 46 ゲスト OS のネットワークデバイスの有効化は 4.5 節で述べたように,iproute2 を用 いてルーティングを変更して,外部ネットワークに通信ができるようにする. ゲスト OS のディスク書き込みの有効化は,スナップショットで復元した時には有効 化されている.これは,ダミーファイルシステムの root のファイル情報は主記憶上に 存在するため,復元した時には変更前の状態に戻っている.そして,キャッシュ内に 存在するファイル情報も同様で復元時に変更前の状態に戻る. また本実装では,4.3.5 で述べたように機密情報保護ファイルシステムに作成された ファイルの暗号化もおこなう. 4.7.3 ゲスト OS の正当性の保証 本項では,ゲスト OS の正当性を保証する実装について述べる.3.3.3 項で述べたよ うにゲスト OS の正当性を保証するためには次の 2 点が必要となる. • ゲスト OS の起動時にカーネルの正当性の保証 • 機密情報漏洩防止処理の動作確認 次に,この 2 点の実装について述べる. ゲスト OS 起動時のカーネルの正当性保証 本実装では,ゲスト OS の起動時にカーネルの正当性を保証するために監視デーモン がゲスト OS の起動する.まず,あらかじめゲスト OS のカーネルイメージのハッシュ 値を取得しておく.そして,監視デーモンの起動時に監視デーモンがゲスト OS を起 動する.この時,ゲスト OS のカーネルのハッシュ値をとり,あらかじめ取得してお いたハッシュ値と比較する.ハッシュ値を比較してゲスト OS のカーネルが同一であっ たと確認できた場合のみゲスト OS を起動する.もし,ハッシュ値が違う物であった 場合,ゲスト OS のカーネルが改竄された可能性が高いためゲスト OS を起動しない. これにより,改竄されたゲスト OS が起動することなく,正常なゲスト OS を使用する ことができる. 47 本実装を実現するためにリクエスト解釈デーモンの起動時にゲスト OS の起動がで きるように追加実装をおこなった.ゲスト OS の起動は libvirt を用いておこない,ハッ シュ値には SHA1 を用いた.また,ゲスト OS の起動を監視デーモンのみおこなうよ うにするため,ホスト OS が持つ仮想マシンを立ち上げる機能を削除した. 機密情報漏洩防止処理の動作確認 機密情報漏洩防止処理の動作確認は機密情報漏洩防止処理を実行する部分に正常に 動作したかをチェックする機構を追加して実現した.すべての機密情報漏洩防止処理 が正常にどうさしたかチェックし,正常だった場合のみ read や write オペレーション の実行を許可する. 機密情報漏洩防止処理の内,スナップショットの作成とネットワークの無効化は監視 デーモン自体が実行するため,処理が正常に動作を確認することは容易である.しか し,ダミーファイルシステムはゲスト OS 内に存在するため容易に動作確認をすること ができない.本実装では,ダミーファイルシステムを改良して擬似書き込み機能が正 常に動作した場合,監視デーモンに対して終了メッセージを送信することとした.こ れにより,ゲスト OS のカーネルが改竄されていない限り,正常に動作したことを通知 することができる.しかし,ゲスト OS の改竄されている場合には,起動時にチェック が入るため改竄されたカーネルでは起動することができない.よって,終了メッセージ は正常に送信できることが保証される.監視デーモンはこの終了メッセージを受け取 ることにより,ダミーファイルシステムが正常に動作したこと知ることが可能となる. 48 第5章 評価 本章では提案手法の性能の評価と,本提案手法に対する攻撃とその対処法について 述べる. 5.1 性能評価 本提案手法の性能評価として次の 2 点を評価して,考察する. • 機密情報漏洩防止処理開始と終了に要する時間 • 機密情報保護ファイルシステムの性能評価 5.1.1 評価環境 提案手法を評価するための表 5.1 に示す. 5.1.2 機密情報漏洩防止処理の開始と終了に要する時間 機密情報漏洩防止処理の開始と終了に要する時間を計測した.計測方法として,ゲ スト OS の主記憶量が 1024MB のときの処理の開始と終了に要する時間を計測した.ま た,スナップショットの保存場所を HDD と tmpfs を用いた ramdisk の場合と分けて計 測をおこなった.機密情報の開始と終了に要する時間の計測結果を表 5.2 に示す. 表 5.2 の結果よりスナップショットの保存場所が HDD の場合と比べ ramdisk の場合 49 表 5.1: 機密情報漏洩防止処理の開始に終了に要する時間 CPU intel Core2 Quad 2.66GHz メモリ 4GB HDD 500GB(7200rpm,2 プラッタ) ホスト OS Linux 2.6.25 ゲスト OS Linux 2.6.24 Xen 3.2.1 表 5.2: 機密情報漏洩防止処理の開始に終了に要する時間 スナップショットの保存場所 HDD ramdisk 処理の開始に要する時間 (sec) 13.465 4.551 処理の終了に要する時間 (sec) 10.678 3.556 で約 3 倍早くなっていることがわかる.これは,HDD より速度が速い ramdisk にス ナップショットを保存することによる,スナップショットの作成時間と読み込み時間が 短縮されたものと考えられる. また,表 5.2 の結果より ramdisk を用いた場合では,ゲスト OS のメモリ量が 1024MB の時で機密情報漏洩防止処理の開始に約 4.5 秒,終了に約 3.5 秒要することが分かった. それぞれの所要時間が 5 秒未満であるため,実用する場合でも,あまりストレスがか からない時間と思われる. 5.1.3 機密情報保護ファイルシステムの性能評価 機密情報保護ファイルシステムの性能評価として,ファイルの読み込みと書き込み のスループットを測定した.スループットの測定法方として,ファイルの読み込みは 300MB のファイルをブロックサイズを 3KB で読み込んだ際の速度を測定し,ファイ ルの書き込みは 300MB のファイルをブロックサイズを 3KB で書き込んだ際の速度を 測定した.機密情報保護ファイルシステムの比較対象は次のとおりである. • ext3 • FUSE 50 表 5.3: 機密情報漏洩防止処理の開始に終了に要する時間 ext3 FUSE FUSE+Xen 保護 FS 読み込み速度 (MB/sec) 84.91 57.98 48.25 33.13 書き込み速度 (MB/sec) 72.82 46.04 33.53 23.00 • FUSE と Xen のデバイスドライバモデルを用いた遠隔ファイルシステム • 機密情報保護ファイルシステム スループットの測定結果を表 5.3 に示す.表 5.3 中の FUSE+Xen は FUSE と Xen のデ バイスドライバモデルを用いた遠隔ファイルシステムを表し,保護 FS は本提案手法 の機密情報保護ファイルシステムを表す. 表 5.3 の結果より,ext3 と機密情報保護ファイルシステムの速度を比較すると約 62%の オーバーヘッドであることが分かった.また,ext3 と FUSE を比較すると約 34%,FUSE と Xen のデバイスドライバを用いた遠隔ファイルシステムを比較すると約 48%のオー バーヘッドであることが分かった.これにより,機密情報保護ファイルシステムのう ち 14%が FUSE によるオーバーヘッドで,14%が Xen のデバイスドライバモデルによ るオーバーヘッドであることがわかった.そして,残りの 14%が AES 暗号を用いた処 理のオーバーヘッドであることが分かった. また,機密情報保護ファイルシステムは ext3 より約 5 分の 2 程度の速度ながら,読 み込み速度が約 33MB/sec であり書き込み速度は約 23MB/sec であるため,実用はす る分には問題ないといえる. 5.2 想定される攻撃とその対処法の検討 本節では,本提案手法に対しての想定される攻撃手法とその対処できるかについて 検討をおこなった.想定される攻撃として,大きく外部からの攻撃と,内部からの攻 撃に分けられる.まず,外部からの攻撃について述べ,次に内部からの攻撃について 述べる. 51 5.2.1 外部からの攻撃 本項では,外部からの攻撃方法についてと,その対処法について述べる. 機密情報取得時の盗聴 提案手法では機密情報保存サーバから機密情報ファイルをネットワークを介して取 得する時に,盗聴される可能性がある. 提案手法では,機密情報は暗号化されているため,盗聴されていたとしても盗聴者 が復号する鍵を持っていない限り,機密情報の内容を知り得ることは不可能である.ま た,機密情報を暗号化と復号する鍵は機密情報保存サーバと提案手法のホスト OS に 存在するが,3.2 節で示した前提条件により,両方とも信頼するため,鍵が漏洩するこ とはない. 不正侵入 外部不正者が計算機へ不正侵入をおこない,その後機密情報を漏洩させる攻撃が考 えられる.不正者は侵入後,計算機上のすべての情報を知ることが出きるとする.も し,計算機内に機密情報が存在していた場合,不正者は機密情報を知ることができる. 提案手法では,機密情報ファイルを open した際に機密情報漏洩防止処理によってネッ トワークが無効化される.このため,外部からリモートで不正侵入しているユーザは その時点で通信が遮断される.よって,不正侵入をおこなう不正者は機密情報を閲覧 することができない. マルウェアによるクラッキング マルウェアとは,不正かつ有害な動作をおこなう意図で作成された悪意のあるソフ トウェアや悪質なコードのことである.マルウェアには計算機に感染後,OS をクラッ キングして OS レベルの特権を取得して,感染した計算機内部の情報を使用者に気付 かれないようにネットワークに放流して漏洩させる攻撃をするものが存在する.提案 手法では,ゲスト OS の起動時にカーネルをチェックするため,無断でカーネル内容が 52 変更された場合,ゲスト OS を起動ができなくなり,機密情報の流出を防ぐことが可 能である.また,ゲスト OS 内にあるダミーファイルシステムが改竄されて,機密情 報の閲覧作成時に機密情報漏洩防止処理が機能しない場合,監視デーモンが正常動作 とみなさないため,機密情報ファイルを open することはできない. 以上により,提案手法では外部から機密情報を漏洩させることは困難であり,外部 からの攻撃に対して安全な機密情報閲覧作成環境が実現できるといえる. 5.2.2 内部からの攻撃 本項では,外部からの攻撃方法についてと,その対処法について述べる. 不正持ち出し 内部者は機密情報を扱う権限をもつため,もし内部に悪意のある者がいれば容易に 漏洩する.提案手法では,機密情報を open した際に機密情報漏洩防止処理が作動し出 力デバイスを無効化する.よって,ネットワークを通じて流出させることは不可能で ある.また,ディスクデバイスやリムーバブルメディアに書き込もうとしてもダミー ファイルシステムの擬似書き込み機能により書き込むことは不可能である. 機密情報の閲覧,作成中の内容の複製 機密情報を持ち出す権限がないとしても,機密情報を閲覧できた場合,機密情報の 内容は簡単に複製することが可能である.例えば,機密情報を一般的なビューアソフ トで閲覧した場合,その内容をコピーアンドペーストをおこない,別ファイルに複製 することができてしまう.複製したファイルは,機密情報ではなく一般ファイルとなっ てしまうため,漏洩が容易になってしまう.また,機密情報の作成者が悪意を持つ者 であれば,機密情報を作成中にその内容をバックアップしておき,バックアップを漏 洩させるということも考えられる.また,ファイル内容のコピーを無効とするプログ ラムも存在するが,主記憶内容から情報を読み取ることは可能である. 53 提案手法では,機密情報の閲覧作成中は機密情報漏洩防止処理が動作し,ファイル を作成したとしてもディスク擬似書き込み機能により,ディスクには書き込むことが できない.また,機密情報の閲覧や作成が終了した場合,スナップショットを用いて 機密情報の閲覧や作成前の状態に戻すため,コピーした内容を主記憶領域内に保持し ておくことは不可能である. スクリーンショットを取得 スクリーンショットは計算機のモニタ領域をすべて画像として保存することができ る.このため,機密情報の閲覧作成時にスクリーンショットを撮った場合,スクリー ンショットの画像内に機密情報が記憶される.この画像が外部に流出した場合,機密 情報の内容を見ることが出きるため,機密情報が漏洩する.提案手法では,機密情報 の閲覧,作成中は機密情報漏洩防止処理が動作し,スクリーンショットを撮ったとし ても漏洩させる手段が無い. 以上により,提案手法では内部から機密情報を漏洩させることは困難であり,内部 からの攻撃に対して安全な機密情報閲覧作成環境が実現できるといえる. 54 第6章 まとめ 機密情報を安全に取り扱うために仮想化と出力デバイスの無効化による機密情報閲 覧作成システムを提案した.提案手法では,仮想マシンを用いて同一計算機上で一般 ユーザが使用するゲスト OS とシステムを管理するホスト OS を動作させる.機密情報 の保存と管理を安全にするために,機密情報を一般ユーザが使用するゲスト OS の外 側に存在するホスト OS に保存する.ゲスト OS とホスト OS 間は仮想マシン独自の通 信を利用することで,ネットワークからの盗聴を防ぐことが可能となるまた,使用す る OS の外側に機密情報を保存することにより,ゲスト OS と独立したファイルアクセ ス制御をおこなうことができる.また機密情報の閲覧,作成時にはディスクやネット ワークといった出力デバイスを無効化することによって機密情報の漏洩を防ぐことが できる.さらに,スナップショットを用いて機密情報の閲覧,作成中の状態を残さな いことにより,機密情報作成,閲覧中の主記憶内容の覗き見による漏洩を防ぐことも 可能とした.これで,機密情報の漏洩を防ぐことが可能となり,機密情報を安全に扱 うことが可能となる. また,本提案手法を仮想マシンに Xen を用いて実装をおこない,評価をおこなった. 評価をおこなったところ,実用に耐えうることを確認し,想定される攻撃に対する対 処法の検討をおこなった. 今後の課題として,提案手法のさらなる最適化をおこない,システムの高速化と安 定性の向上について検討していく予定である. 55 謝辞 本研究のために多大な御尽力を頂き,日頃から熱心な御指導を賜った名古屋工業大 学の齋藤彰一准教授に深く感謝致します. また, 本研究の際に多くの助言,協力をして頂いた松尾啓志教授,津邑公暁准教授, 松井俊浩助教,及び齋藤研究室ならびに松尾・津邑研究室の皆様に深く感謝致します. 56 参考文献 [1] 忠鉢洋輔,品川高廣,加藤和彦:仮想マシンモニタによるゲスト OS のファイル 保護,情報処理学会研究報告書,Vol. 2009-OS-111-31 (2009). [2] 滝沢裕二,光来健一,千葉 滋,柳沢佳里:SAccessor: デスクトップ PC のため の安全なファイルアクセス制御,情報処理学会論文誌コンピューティングシステ ム (ACS), Vol. 1, No. 2, pp. 1–9 (2008). [3] Borders, K., Xhao, X. and Prakash, A.: Securing Sensitive COntent in a ViewOnly File System, DRM ’06: Proceedings of the ACM workshop on Digital rights management, pp. 27–36 (2006). [4] Yu, Y. and Chiueh, T.: Display-Only File Server: A solution against Information Theft Due to Insider Attack, Fourth ACM workshop on Digital Rights Managment, pp. 31–39 (2009). [5] 桜井裕唯,芦野佑樹,吉浦 裕,佐々木良一:大容量耐タンパ領域装置 HiGATE の試作と e-Discovery への適用,情報処理学会,Vol. CSS2009-E2-2 (2009). [6] Xhao, X., Borders, K. and Prakash, A.: Towards Protecting Sensitive Files in a Compromised System, SISW ’05: Proceedings of the Third IEEE International Security in Strage Workshop, pp. 21–28 (2009). [7] The Xen Project: Xen, http://www.xen.org. 57 [8] CSRC: AES, http://csrc.nist.gov/archive/aes/index.html. [9] SourceForge project: File Space in User Space, http://fuse.sourceforge.net/. [10] SourceForge project: AUFS, http://aufs.sourceforge.net/. [11] libvirt community: libvirt: The virtualization API, http://www.libvirt.org. [12] linux-kvm.org: Kernel-based Virtual Machine, http://www.linux-kvm.org/. [13] Bellard, F.: QEMU, a fast and portable dynamic translator, ATEC ’05: Proceedings of the annual conference on USENIX Annual Technical Conference, Berkeley, CA, USA, USENIX Association, pp. 41–41 (2005). [14] Wright, C. P. and Zadok, E.: Unionfs: Bringing File Systems Together, Linux Journal, Vol. 2004, No. 128, pp. 24–29 (2004). [15] Klaus Knopper: OpenNebula: KNOPPIX, http://www.knopper.net/. [16] Snyder, P.: tmpfs: A virtual memory file system, In Proceedings of the Autumn 1990 European UNIX Users ’Group Conference,pp. 241–248 (1990).
© Copyright 2024 ExpyDoc